ЖУРНАЛ «СТА» 4/2016
он, что характерно, в конце блока. На рис. 4 показан ряд обработчиков, опре- делённых пользователем в терминоло- гии GRAPH, а на рис. 5 – один из пере- ходов в этой же программе. Впрочем, объём пользовательских программ на языке GRAPH может быть уменьшен за счёт выделения вспомога- тельного кода в отдельный блок – на- пример в FC72. По умолчанию включе- на опция компилятора, требующая это- го разделения. Из других особенностей результирующего байт-кода стоит выде- лить часто встречающийся в нём опера- тор множественного выбора (SWITCH… CASE). Представлен он инструкцией JL, неявно использующей регистр акку- мулятора для выбора одного из case-об- работчиков. Переходы на них коди- руются в инструкциях JU, следующих за JL. Таким образом, в листинге, приве- дённом на рис. 6, сначала выполнится команда L, затем JL, а после неё – JU loc_52C7. Ещё один достаточно распространён- ный язык в контроллерах SIEMENS, не- доступный, тем не менее, в базовой вер- сии среды разработки, –SCL. Он был до- бавлен в STEP 7 и выглядит надстрой- кой, так как полноценно в неё не интег- рируется. Для написания программы на нём необходимо перейти в раздел Sources дерева проекта и создать псевдофайл с исходным текстом на SCL (команда SCL Source из контекстного меню). Редактор, разработанный специально для данного языка, имеет функцию компиляции его кода в MC7-код, создающую на выходе полноценный блок. При попытке его от- крыть из STEP 7 c ИПП отображается оригинальная программа, доступная для редактирования и последующей сборки в тот же блок. Если же использовать функцию получения проекта Upload Station to PG в изолированном рабочем экземпляре среды разработки (не имею- щем исходного проекта), то доступен бу- дет только STL-код, так как средство его декомпиляции в SCL у SIEMENS отсут- ствует. В отличие от среды CODESYS STEP 7 не умеет передавать исходный текст на ПЛК, поэтому описанный факт имеет место. Рассмотрев в общих чертах наиболее интересные аспекты работы компиля- торов SIEMENS, следует обратить вни- мание на их отличия в средах STEP 5 и STEP 7. Самых заметных два: 1. Состав блоков. В STEP 5 есть допол- нительные кодовые блоки PB и SB, от которых отказались в следующей вер- сии среды. 2. Версии байт-кода. В MC5 присут- ствуют некоторые инструкции, кото- рых нет в MC7, например: • прямой доступ к памяти, в том чис- ле к её областям, которые в S7 бу- дут перемещены в SDB-блоки; • прямой доступ к регистрам вирту- альной машины (SA, BA, BR, RI, RJ, RS, RT); • динамическое создание DB-блоков; • динамическая генерация MC5-ко- да и его выполнение. Есть также немало различий, непо- средственно не затрагивающих резуль- таты работы компиляторов. Это, в пер- вую очередь, форматы исходных про- ектов. Для STEP 5 была разработана не- сложная FAT-подобная файловая си- стема, содержащая в себе предопреде- лённые каталоги, объединяющие блоки по их типу. Их существенно больше ре- ально устанавливаемых на устройство – в основном в дополнительных блоках содержатся символьная информация и комментарии. У СТРОЙСТВО СРЕДЫ РАЗРАБОТКИ ПУ ПЛК КОМПАНИИ «ПРОСОФТ- С ИСТЕМЫ » Epsilon LD – среда разработки, по- ставляемая компанией «ПРОСОФТ-Си- стемы» для программирования её про- мышленных контроллеров семейства REGUL, в частности R600. Построена она на базе платформы CODESYS 3, ге- нератор кода настроен на архитектуру микропроцессоров Intel семейства x86. Наибольший интерес в Epsilon LDпред- ставляют форматы файлов, так как они необходимы при автоматизации мигра- цииПУ на поддерживаемые этой средой контроллеры. Главный файл проекта имеет расширение project и является ZIP-архивом с содержимым, пример- ный вид которого показан на рис. 7. В целом структура проекта в Epsilon LD испытала на себе сильное влияние платформы Microsoft .NET, так как боˆльшая часть программных модулей среды реализована на ней. Основная идея архитектуры подсистемы приложе- ния, обрабатывающей файлы проектов, заключается в следующем. В процессе работы над ними в памяти среды соз- даются и модифицируются объекты определённых классов .NET. При вы- полнении же операции сохранения про- исходит их сериализация, и получив- шиеся представления сохраняются в от- дельных файлах. Далее приведены опи- сания содержимого некоторых из них, представляющих особый интерес: ● __shared_data_storage_string_table__.a uxiliary – глобальная таблица строк, которая необходима для уменьшения размера итогового файла. Каждая за- пись в ней адресуется своим иденти- фикатором и может быть задейство- вана в любом объекте, нуждающемся в хранении текстовой информации, например, строк кода для текстовых языков (IL, ST); ● __shared_data_storage_schema_table__ .auxiliary – глобальная таблица опи- саний классов (схема), экземпляры которых будут создаваться по запро- су при открытии проекта. Каждое описание содержит уникальный идентификатор (GUID) класса, по- рядковый номер и список полей с именами и типами; 60 СТА 4/2016 ОБ ЗОР / П РОГ РАММНОЕ ОБ Е СП Е Ч Е НИЕ www.cta.ru Рис. 6. Вид одной из конструкций SWITCH в GRAPH-программе Рис. 7. Состав тестового проекта
Made with FlippingBook
RkJQdWJsaXNoZXIy MTQ4NjUy