Введение
Международная электротехническая комиссия
Языки стандарта МЭК
1. Диаграммы SFC
2. Список инструкций IL
3. Структурированный текст ST
4. Релейные диаграммы LD
5. Функциональные диаграммы FBD
Основные недостатки МЭК 61131
.
Возможные альтернативы стандарту МЭК61131-3.
Заключение
Список литературы
Введение
На современном этапе в качестве ядра любой системы промышленной автоматизации используется программируемый логический контроллер (ПЛК), к которому со стороны объекта автоматизации подключаются датчики и исполнительные органы.
Через датчики в ПЛК поступает информация о текущем состоянии объекта, а через исполнительные органы ПЛК может изменять состояние управляемого объекта. Эта базовая схема может усложняться. Например, ПЛК могут подключаться к автоматизированному рабочему месту (АРМ) оператора для супервизорного управления или к базе данных (БД) для накопления информации и интеграции в АСУ предприятия. Поскольку все ПЛК строятся на базе цифровой техники, естественным образом предполагаются некоторые языковые средства их программирования. Причем в силу специфики задачи алгоритмические языки программирования, такие как Си, Паскаль, Си++, не годятся для этих целей.
Специфика автоматизации предполагает наличие собственно системы управления, включающей датчики обратной связи и органы управления, и внешней (по отношению к системе управления) среды, на которую система управления воздействует через органы управления, – объекта управления
– технической системы, реализующей некоторую производственную технологию. Воздействия – или, другими словами, реакция
системы управления – определяются алгоритмом управления в зависимости от событий
на объекте управления, информация о которых поступает через датчики обратной связи. Для цифровых систем это обстоятельство обусловливает цикличность
управляющего алгоритма по схеме: считывание состояния входных сигналов через датчики – их обработка и формирование выходных сигналов – выдача выходных сигналов на исполнительные органы. Событийность
предполагает алгоритмические изменения программы и набора обрабатываемых ею входных/выходных сигналов в зависимости от происходящих на объекте событий.
Алгоритм управления предполагает синхронизацию
своего исполнения с физическими процессами во внешней среде, что обусловливает необходимость развитой службы времени и активную работу с временными объектами: задержками, паузами, таймаутами. Другая характерная особенность алгоритмов управления – логический параллелизм
, отражающий
существование множества параллельно протекающих процессов в объекте управления. (Поскольку события, происходящие в различных компонентах системы, возникают независимо и в произвольной последовательности, то попытка задать реакцию системы единым блоком означает комбинаторный перебор большого числа вариантов и неоправданный рост сложности описания). Логический параллелизм предполагает наличие в алгоритме управления независимых или слабо зависимых частей – логически обособленных потоков управления.
Поскольку программы пишутся человеком и исключительно для человека, то в силу особенностей человеческой психики языки должны быть просты в изучении. Кроме того, языки должны предоставлять механизмы структуризации
алгоритма (в нашем случае – языковые средства организации совместного функционирования логически параллельных частей) и механизмы абстрагирования
(в нашем случае –понятийный переход от датчиков и исполнительных органов к целевому технологическому процессу). Т.е. программа должна быть организована в виде обозримых, информационно-изолированных компонентов, возможно иерархически вложенных друг в друга, и на некотором уровне иерархии программирование должно вестись в естественных терминах технологического процесса.
Перечисленные обстоятельства обусловливают разработку специализированных языков промышленной автоматизации.
Международная электротехническая комиссия
Современные программируемые логические контроллеры (ПЛК) программируются в соответствии со стандартом Международной электротехнической комиссии. В 1993 г. Международная электротехническая комиссия выпустила в свет стандарт МЭК 61131-3. Этот международный стандарт входит в группу МЭК 61131 стандартов, в котором описаны стандартизованные языки программирования, представляющие интерес для практического использования.
Международная электротехническая комиссия – это международный орган стандартизации, создающий базовые стандарты для последующей адаптации в национальных комитетах. Что касается стандартизации языков, используемых для программирования ПЛК, то эта проблема назрела давно. К концу 80-х десяток базовых концепций на практике был представлен более сотней вариаций. Их унификация сулила ощутимый экономический эффект. Для решения этой проблемы была создана рабочая группа, состоящая из представителей ведущих игроков на рынке автоматизации, которая начала работу.
Если посмотреть на языки стандарта МЭК с точки зрения современной информатики, то каждый их них можно подвергнуть оправданной критике. Вероятно, было бы более разумным, опираясь на опыт использования наиболее популярных языков, создать один хороший универсальный язык. Эта идея не нова. Все старое программное обеспечение для контроллеров просто нужно будет переписать с нуля. В условиях конкурентного производства очень важно проводить внедрение новой техники быстро. А для этого необходимо максимально задействовать отработанные решения.
Включение в стандарт пяти языков объясняется в первую очередь историческими причинами. Разработчики стандарта столкнулись с наличием огромного количества различных вариации похожих языков программирования ПЛК. Вошедшие в стандарт языки созданы на основе наиболее популярных языков программирования наиболее распространенных в мире контроллеров. Если взять любой контроллер, работающий в современном производстве, то его программу можно перенести в среду МЭК 61131 с минимальными затратами. Речь не идет о том, что программу можно будет использовать без какой-либо правки. Безусловно, потребуется некоторая адаптация и отладка, но несравненно меньшая, чем при создании проекта с нуля.
После принятия стандарта появилась возможность создания аппаратно - независимых библиотек.
Это регуляторы, фильтры, управление сервоприводом, модули с нечеткой логикой и т. д. Наиболее удачные, отработанные востребованные библиотеки становятся коммерческими продуктами.
Среди языков , вошедших в МЭК оказались:
• язык последовательных функциональных схем SFC
(Sequential Function Chart) для программирования алгоритмических действий
• язык релейных диаграмм LD
(Ladder Diagram) только для булевых операций
• язык функциональных блоков FBD
(Functional Block Diagram) для сложных циклических операций.
• язык структурированного текста ST
(Structured Text) для циклических операций и уточнения шагов SFC
.
• язык инструкций IL
(Instruction List) для операций низкого уровня.
Языки стандарта МЭК
1. Диаграммы
SFC
Язык последовательных функциональных схем
SFC (Sequential Function Chart) -это графический язык, который используется для описания последовательных операций. Происхождение - язык Grafcet (Telemechanique-Groupe Schneider).
Язык используется для описания алгоритма в виде набора связанных пар: шаг (
step
)
и переход (
transition
).
Шаг представляет собой набор операций над переменными. Переход - набор логических условных выражений, определяющий передачу управления к следующей паре шаг-переход.
Процесс управления представляется в виде набора определенных шагов
(автономных ситуаций), связанных переходами.
SFC программа - это набор шагов и переходов,
соединенных вместе направленными связями. Действия внутри шагов описаны более детально при помощи других языков (ST, IL, LD, FBD), к каждому переходу прикреплено логическое условие. Основные графические правила для SFC:
- шаги не могут следовать подряд;
- переходы не могут следовать подряд.
Основные компоненты
SFC
Основными компонентами языка являются:
- шаги и начальные шаги;
- переходы;
- ориентированные связи;
- прыжок на шаг;
- схождения и расхождения;
- макро шаги.
Описание действий выполняемых во время активности шага называют вторым уровнем шага SFC. Такое описание выполняется с использованием обычно языка ST (хотя и возможно использование и других языков) и дополнительных возможностей языка SFC так называемых текстовых возможностей. К ним относятся:
1) булевы действия
2) puls-действия
3) non-stored-действия
4) SFC-действия
Булевы действия
Они присваиваются булевой переменной значение активности шага. Булева переменная может быть выходной или внутренней. Ей присваивают значение каждый раз, когда активные шаги начинаются или заканчиваются. Синтаксис основных булевых действий и соответствующие им временные диаграммы приведены ниже.
PULS-действия
Это список команд на языке ST или IL, которые выполняются только один раз в момент активизации шага.
Синтаксис описания puls-действий
ACTION(P);
Операторы языка ST или IL;
END_ACTION;
NON-STORED-действия
Это список команд на языке ST или IL, которые выполняются на каждом цикле работы контроллера в течении всего периода активности шага.
Синтаксис
ACTION(N);
Операторы языка ST или IL;
END_ACTION;
SFC действия
Это дочерняя последовательность на языке SFC, запускаемая или уничтожаемое в соответствии с изменением сигнала активности шага. Кроме указанных возможностей в каждом шаге может осуществляться вызов подпрограмм, написанных на любом из остальных языков.
В отличии от макрошага, который пока не выполнится до конца, не происходит дальнейшего перехода, SFC-действие сразу прекращается при выполнении условия перехода.
Описание условий прикрепленных к переходу.
К каждому переходу пишется булево выражение, которое называют вторым уровнем перехода. Описание условия обычно выполняется на языке ST или IL. Выражение должно быть булевым (не арифметическим) и заканчиваться точкой с запятой. Когда к переходу не прикреплено условие, то оно по умолчанию питается истинным, т.е. принимает значение TRUE.
Динамические правила языка SFC.
В этом языке есть пять динамических правил, которым подчиняется логика выполнения программ :
1. В каждой программе должен присутствовать, по крайней мере, один шаг инициализации, который в начале выполнения программы находится в активном состоянии.
2. Правило выполнения перехода – переход либо разрешён, либо запрещён. Считается что он разрешён, когда все непосредственно предшествующие шаги, присоединённые к нему, активны. В противном случае он запрещён. Переход происходит если выполнены два условия: а) переход разрешён б) условие перехода истинно. Если одно из условий не выполняется, переход не может быть произведен.
3. Изменение состояния активности шагов - удаление переходов немедленно приводит к активному состоянию непосредственно следующих за ним шагов и неактивному состоянию непосредственно предшествующих шагов.
4. Правило одновременного удаления переходов , применяется в случае конвергенции и дивергенции.
5. Если во время выполнения программы шаг одновременно активизирован и деактивизирован приоритет отдаётся активизации.
Основные достоинства SFC можно определить следующим образом.
Высокая выразительность. Язык SFC имеет те же возможности, что и диаграммы состояний, и является наиболее подходящим средством для описания динамических моделей.
Графическое представление. Благодаря графической мнемонике SFC максимально прост в использовании и изучении. Вместе с тем, он является наглядным средством представления логики на разных уровнях детализации.
2. Список инструкций
IL
Язык IL (Instruction list) дословно — список инструкций. Это типичный ассемблер с аккумулятором и переходами по меткам. Набор инструкций стандартизован и не зависит от конкретной целевой платформы. Поскольку IL самый простой в реализации язык, он получил очень широкое распространение до принятия стандарта МЭК. Точнее, не сам IL, а очень похожие на него реализации. Практически все производители ПЛК Европы создавали подобные системы программирования, похожие на современный язык. IL. Наибольшее влияние на формирование современного IL оказал язык программирования STEP контроллеров фирмы Siemens. Язык IL позволяет работать с любыми типами данных, вызывать функции и функциональные блоки, реализованные на любом языке. Таким образом, на IL можно реализовать алгоритм любой сложности, хотя текст будет достаточно громоздким.
В составе МЭК - языков IL применяется при создании компактных компонентов, требующих тщательной проработки, на которую не жалко времени. При работе с IL гораздо адекватнее, чем с другими языками, можно представить, как будет выглядеть оттранслированный код. Благодаря чему, IL выигрывает там, где нужно достичь наивысшей эффективности. К компиляторам это относится в полной мере. В системах исполнения с интерпретатором промежуточного кода выигрыш не столь значителен.
3. Структурированный текст
ST
Язык ST (Structured Text) — это язык высокого уровня. Синтаксически ST представляет собой несколько адаптированный язык Паскаль. Вместо процедур Паскаля в ST используются компоненты программ стандарта МЭК.
Происхождение: Grafcet (Telemechanique-Groupe Schneider). Язык по умолчанию используется для описания действий внутри шагов и переходов.
Для специалистов, знакомых с языком С, освоение ST также не вызовет никаких сложностей. В качестве иллюстрации сравним эквивалентные программы на языках ST и С:
ST:
С
:
WHILE
Counter<>0 DO
while
(Counter - ! = 0)
Counter := Counter-1; {
Var1 := Var1*2; V
IF
Var1 > 100 THEN
if
(Var1 > 100)
Var1 := 1; {
Var2 := Var2 + 1; Var1 = 1;
END_IF
++Var2;
END
_
WHILE
}
}/* while
*/
Основной синтаксис языка.
Программа на языке ST - это список операторов, каждый из которых заканчивается «;».
В программе имена переменных и констант разделяются либо неактивными разделителями: ENTER, ТАБ , либо активными , которые имеют заранее определённое значение. Комментарии могут вставляться в текст произвольным образом и оформляются следующим образом: ( * комментарий * ).
Основные операторы языка.
- ( ) - для выделения частей выражения с целью изменения приоритета выполнения операций , в их отсутствии используется приоритет по умолчанию.
- := - присваивает переменной значение некоторого выражения или константы:
< переменная > := <любое выражение или константа >
X1:= a+b.
Переменная должна быть внутренней или входной , также иметь один тип с выражением.
- Return завершает выполнение текущей программы.
- If … then … else …
If < условие >
Then < оператор1 >;
< оператор2 >;
…
else < список операторов >;
end_if
- While – это циклическая структура для группы операторов на языке ST , условие продолжения которой вычисляется до каждой итерации.
While < условие > do
< оператор 1 >;
< оператор 2 >;
end while;
Примечание.
Т.к. система программирования и исполнения программ на языке ST является циклической синхронизации, то исходные переменные не обновляются в течение операции while и следовательно изменение состояния входной переменной не может быть использовано для описания условия оператора while.
- Repeat – циклическая структура , условие продолжения которой вычисляется после каждой итерации .
Repeat
< оператор 1 >;
< оператор 2 >;
until < условие >;
end repeat;
Примечание аналогичное для while.
- For - выполняет ограниченное количество итераций , используя целочисленную переменную (integer) для ограничения.
For < index > := < min > to < max > by <step >
Do < оператор 1 >;
< оператор 2 >;
end for;
где index – внутренняя переменная , step – шаг изменения переменной.
- Булевы операторы: NOT , AND , OR , XOR ,
REDGE – обнаружение переднего фронта ,
FEDGE – обнаружение спада или заднего фронта.
- Арифметические операторы:
+ сложение , - вычитание , умножение , / деление.
- Операторы сравнения: < , > , = , <> , <= , >= .
- Операторы управления таймерными параметрами.
TSTART пуск обновление таймерной переменной , после выполнения этого оператора таймерная переменная наращивается на каждом временном цикле выполнения программы вплоть до остановки оператором TSTOP.
4. Релейные диаграммы
LD
Язык релейных диаграмм
LD (Ladder Diagram) или релейно-контактных схем
(РКС) — графический язык, реализующий структуры электрических цепей. РКС — это американское изобретение. В начале 70-х гг. XX в. релейные автоматы сборочных конвейеров начали постепенно вытесняться программируемыми контроллерами. Некоторое время те и другие работали одновременно и обслуживались одними и теми же людьми.
Так появилась задача прозрачного переноса релейных схем в ПЛК. Различные варианты программной реализации релейных схем создавались практически всеми ведущими производителями ПЛК. Благодаря простоте представления РКС обрел заслуженную популярность, что и стало основной причиной включения его в стандарт МЭК.
Слова «релейная логика» звучат сегодня достаточно архаично, почти как «ламповый компьютер». Тем более в связи с созданием многочисленных быстродействующих и надежных бесконтактных (в частности, оптоэлектронных) реле и мощных переключающих приборов, таких как мощные полевые транзисторы, управляемые тиристоры и приборы IGBT. Но, несмотря на это, релейная техника все еще очень широко применяется.
Язык
LD
-
это графическое представление булевых функций содержащее контакты (входные переменные) и обмотки (выходные переменные). Графические символы языка LD очень похожи на изображение в релейно-контактных схемах, при этом приняты следующие условные изображения.
Для изображения входных контактов существует несколько символов:
Прямой(замыкающий)
Обратный контакт(размыкающий)
Контакт с обнаружением нарастания фронта
Контакт с обнаружением падающего фронта
Используется несколько типов обмоток:
Прямая обмотка
Обратная обмотка
Логически последовательное (И), параллельное (ИЛИ) соединение контактов и инверсия (НЕ) образуют базис Буля. В результате LD идеально подходит не только для построения релейных автоматов, но и для программной реализации комбинационных логических схем. Благодаря возможности включения в LD функций и функциональных блоков, выполненных на других языках, сфера применения языка практически не ограничена.
Типовой пример использования – реализация аварийных блокировок системы, включающая преимущественно логические сигналы. Вполне приемлем в случаях, когда задачей предполагаются частные коррекции несложного логического алгоритма неквалифицированным (с точки зрения программирования) персоналом (ремонтники, механики и т.п.).
5.
Функциональные диаграммы
FBD
FBD (Function Block Diagram) — это графический язык программирования. Диаграмма FBD очень напоминает принципиальную схему электронного устройства на микросхемах. Позволяет создать программную единицу практически любой сложности на основе стандартных кирпичиков (арифметические, тригонометрические, логические блоки, PID-регуляторы, блоки, описывающие некоторые законы управления, мультиплексоры и т.д.). Это языковое средство использует технологию инкапсуляции алгоритмов обработки данных и законов регулирования. Все программирование сводится к "склеиванию" готовых компонентов. В результате получается максимально наглядная и хорошо контролируемая программная единица.
Этот язык позволяет пользователю строить сложные процедуры обработки данных и управления объектами. В языке используются существующие библиотеки функций и связывание их в функциональную схему или диаграмму решающую данную задачу. Основной формой представления функциональных блоков являются следующие изображения.
Входные и выходные переменные присоединяются к блоку линиями соединения. Входные и выходные переменные присоединяются к блоку линией. Выходная функция блока может быть присоединена к входу любого другого блока.
Типовой пример использования – алгоритмы регулирования, обработка (например, фильтрация) аналоговых сигналов. В качестве пользователей предполагаются специалисты в области автоматического регулирования с привлечением квалифицированных системных программистов в сложных случаях.
Основные недостатки МЭК 61131
.
Даже при первом взгляде виден перекос в выборе языков. С одной стороны
, в стандарт попадает ассемблер (IL), с другой стороны
, чрезвычайно мощная ветка т.н. языков машин конечных состояний FSM оказывается за рамками рассмотрения. Другим
, некорректным и дезориентирующим пользователей, решением МЭК стала группировка языков в едином стандарте, что в корне отличается от общепринятых подходов к стандартизации языков программирования. Третьим
, технически слабым, местом стандарта стало исключение вопросов унифицированного представления графических языков стандарта, что автоматически обусловило проблемы совместимости продуктов разных производителей. Кроме этого, в стандарте МЭК61131-3 не рассматривается вопрос привязки алгоритма к интерфейсной аппаратуре, которая с необходимостью присутствует в любой системе управления.
Возможные альтернативы
стандарту МЭК61131-3.
В качестве альтернативы можно попытаться использовать средства, встроенные в SCADA-системы.
Разумеется, такое решение допустимо лишь в некритичных задачах супервизорного контроля. В большинстве случаев штатная эксплуатация систем управления не предусматривает наличие средств проектирования алгоритмов. Стандартный подход – это создание базового алгоритма с возможностью его настройки через ограниченное число доступных пользователю параметров. Это позволяет проектировать базовый алгоритм управления квалифицированными специалистами и адекватными языковыми средствами, а сопутствующую этому сложность “скрывать” за дружественным интерфейсом оператора, который создается, например, с помощью тех же SCADA-пакетов.
В принципе, допустимо решение об использовании для задач управления языков Си/Си++. Такой подход может быть оправдан при наличии штата квалифицированных специалистов, отлаженной культуре разработки ПО и больших объемах тиражируемых изделий. Си++ предоставляет хорошие возможности для адаптации языка к широкому спектру задач, так что создание паттернов и набора классов, ориентированных на приведенную выше специфику, вполне осуществимо. Однако при использовании алгоритмического языка для задач автоматизации невозможно обеспечить должный уровень контроля корректности программ, ее семантическую целостность. Сложность подхода – высокие квалификационные требования к программистам, существенные затраты на обеспечение надежности и низкая сопровождаемость программ, трудности с вовлечением в процесс разработки конечного пользователя.
Достаточно популярно в России обсуждение т.н. switch-технологии. В основе подхода лежит известная реализация конечного автомата, в котором состояния автомата (некий набор функций) пронумерованы, а номер текущего состояния хранится в выделенной ячейке памяти. Текущая функция определяется через Си-конструкцию табличного выбора switch (этот факт и был использован при выборе названия). Дополнительно к этой базе предлагается набор приемов по разработке алгоритма, его отладке, специфицируется идентификационная система для переменных. Подход обеспечивает цикличность, логический параллелизм, достаточную свободу в организации вычислений и, несомненно, имеет право на рассмотрение как вариант “пишу на Си”. Switch-подход успешно используется в учебном процессе. К сожалению, подход нуждается в проработке методов синхронизации, структуризации и абстрагирования.
Особый интерес вызывает работа над стандартом МЭК-61499, в котором разработчики предприняли попытку преодолеть ограничения языков МЭК61131-3 и скомбинировать в одном языковом средстве и поддержку логического параллелизма, и поддержку событийности. Цель стандарта – предоставить методологию разработки сложных алгоритмов. Программные компоненты представлены функциональными блоками специального вида: кроме обычных для языка FBD входных и выходных данных, интерфейс функционального блока стандарта МЭК-61499 предполагает событийные входы/выходы. Несомненно, это нововведение частично решает проблему событийности для классических функциональных блоков. К сожалению, этот несомненно прогрессивный стандарт не поддержан ведущими производителями ПЛК, и известные в настоящий момент реализации стандарта носят скорее исследовательский характер.
Для преодоления ограничений языков МЭК61131-3 на сложность алгоритма и недостатков прямого Си подхода в Институте автоматики и электрометрии СО РАН был разработан специализированный язык программирования Reflex, который также может рассматриваться в качестве варианта. По своим свойствам язык вполне конкурентоспособен. При его разработке ставилась цель легкости освоения, сопровождения и соответствия задачам автоматизации.
Язык Reflex выполнен как диалект Си, что обеспечивает его легкое освоение. В проекте Reflex язык Си расширен понятием процесса – циклически исполняемой, параллельной сущности. Программа описывается как совокупность взаимодействующих процессов. Процессы можно запускать, останавливать, проверять их текущее состояние. Поэтому язык Reflex иногда называют “Си с процессами”. Предусмотрена гибкая структуризация алгоритма управления. Событийность алгоритма обеспечивается через механизм состояний процесса. Синтаксис Си расширен средствами синхронизации. При программировании на языке Reflex пользователь освобожден от рутинных действий и может полностью сконцентрировать свое внимание на сути создаваемого алгоритма. Математическая модель программы терминологически ориентирована на современные тенденции в образовании, что позволяет снять психологические проблемы при освоении методики.
Язык (используется с 1990 г.) прошел серьезную проверку в серии проектов. В частности, в задаче автоматизации выращивания монокристаллического кремния, предполагающей работу с типичными для промышленной автоматизации устройствами (сетевые интеллектуальные датчики, 4-координатную систему перемещений, приводы, дублированную газовакуумную станцию, систему охлаждения, термосистему, контроль и упреждение аварийных ситуаций, набор аналоговых и дискретных входов).
Заключение
Несмотря на недостатки, существуют вполне определенные ситуации, когда языки МЭК 61131-3 могут быть использованы на практике. В относительно простых задачах, не предъявляющих строгих требований по надежности, языки МЭК могут оказаться экономически эффективными. Даже в ситуации, когда языки МЭК слабо подходят для практической задачи, отказ от их использования совсем не очевиден. В первую очередь, это вызвано тем обстоятельством, что конечному пользователю или системному интегратору тяжело конкурировать с мега-корпорациями, разрабатывать и поддерживать альтернативные решения. Ведь, кроме собственно языка, в среду разработки входит набор вспомогательных программ и библиотек, существенно облегчающих работу по тестированию и настройке системы. Поэтому, несмотря на недостатки, языки МЭК 61131-3 вполне допустимо использовать.
Следует добавить, что использование языков МЭК 61131-3 может обеспечить упрощение программирования и системную интеграцию, т.к. для имеющихся на рынке МЭК-средств, как правило, существуют более-менее апробированные решения, которые можно использовать в качестве прототипов вашей системы. С другой стороны, решение об использовании МЭК-средства имеет смысл предварять тщательным анализом требований задачи.
Использование одного из языков стандарта МЭК61131-3 в реальных проектах может быть вполне успешным, но при условии тщательной проработки вопроса соответствия свойств выбранного языка и требований задачи. Существенное преимущество МЭК 61131-3 подхода – наличие на рынке развитых сред разработки. При определенных обстоятельствах вполне допустимо использовать альтернативные средства программирования ПЛК, либо на основе FSM, таких, как язык Reflex, либо при известной осторожности и наличии высококвалифицированных кадров на основе чистого Си/Си++.
Список литературы
1 Анисимов Н.А., Голенков Е.А., Харитонов Д.И.
Композиционный подход к разработке параллельных и распределенных систем на основе сетей Петри // Программирование. 2001. №6.
2 Арнольд Д.
Смысл графических стандартов: коммерческая выгода и риск // Программирование. 1996. №6.
3 Зюбин В.Е.
К пятилетию стандарта IEC 1131-3. Итоги и прогнозы // Приборы и системы управления. 1999. №1.
4 Зюбин В.Е.
Графика или текст: какой язык нужен программисту? // Открытые системы. 2004. №1.
5 Любченко В.
О бильярде с Microsoft Visual C++ 5.0 // Мир ПК. 1998. № 1.
6 Петров И.В.
Стандартные языки и приемы прикладного программирования // М.: СОЛОН-Пресс. 2004.
7 Шалыто А.А., Туккель Н.И.
SWITCH-технология автоматный подход к созданию программного обеспечения “реактивных” систем // Программирование.
8 2001. №5.
9 Шопырин Д.Г., Шалыто А.А.
Объектно - ориентированный подход к автоматному программированию. 2003.
10 Яков Розенберг
Динамическая модификация алгоритмов. 2003.
11 PLCopen
Устав Ассоциации. 1997. (http://www.PLCopen.org/artass.htm)