ЖУРНАЛ «СТА» 4/2016

системы, среды исполнения и сетевые протоколы конфигурирования ПЛК. Также в них используется виртуаль- ная регистровая машина. Её байт-код имеет полуофициальное название MC с добавлением номера версии. В ПЛК SIEMENS S5-101U он именуется MC5, а в SIEMENS S7-300 – MC7. Данный набор команд является практически прямым отображением STL – интер- претации компанией SIEMENS языка IL стандарта МЭК 61131-3. Другие под- держиваемые языки также трансли- руются в этот байт-код, но по-разному. Для большинства из них возможно од- нозначное восстановление исходного кода из MC5/7 (ярким исключением яв- ляется SCL). На рис. 2 изображён уча- сток STL-кода, вызывающий функцию FC6. Он обрамляется фиктивными ин- струкциями BLD, что позволяет среде (в данном случае – TIA Portal, но меха- низм одинаков во всех версиях) точно определить границы кода вызова. Вы- полнив эту задачу, она декодирует пере- даваемые параметры (рис. 3), располо- женные за инструкцией UC вызова бло- ка. Так как виртуальный процессор вы- полняет выборку команд, строго руко- водствуясь их последовательным распо- ложением, то компилятору приходится вставлять инструкцию безусловного пе- рехода JU. Она обходит участок с адреса 0x7084 по адрес 0x709f включительно, тем самым пропуская данные парамет- ров. Это позволяет называть архитекту- ру виртуальной машины фоннейманов- ской – данные размещаются в той же области памяти, что и код. В конечном счёте среда сможет совершенно точно получить прообраз MC-кода вызова блока AG_RECV на языке FBD. Несколько слов стоит сказать о язы- ках SIEMENS, не входящих в стандарт- ную поставку программного обеспече- ния. Наиболее старый из них –GRAPH, имеющий реализации для обеих рас- сматриваемых серий контроллеров. Его генератор кода обладает рядом интерес- ных особенностей. Результат компиля- ции даже небольших программ занима- ет весьма внушительный объём. Напри- мер, для тестового примера ZEn02_01_ S7GRAPH_Drill финальный размер функционального блока больше 5 кбайт, и это при том, что длина инструкции MC-кода в среднем не превышает 4 бай- та. Пользовательский код, прикрепляе- мый к шагам и переходам, выглядит на фоне автоматически сгенерированного очень скромно – всего лишь 6 процен- тов от тела подпрограммы. Размещается 58 СТА 4/2016 ОБ ЗОР / П РОГ РАММНОЕ ОБ Е СП Е Ч Е НИЕ www.cta.ru Рис. 4. Идущие друг за другом тела шагов (в терминологии GRAPH) Рис. 3. Передача параметров в AG_RECV Рис. 5. Соответствие LAD-кода перехода № 6 MC-коду

RkJQdWJsaXNoZXIy MTQ4NjUy