На современном этапе в качестве ядра любой системы промышленной автоматизации используется программируемый логический контроллер (ПЛК), к которому со стороны объекта автоматизации подключаются датчики и исполнительные органы.
Через датчики в ПЛК поступает информация о текущем состоянии объекта, а через исполнительные органы ПЛК может изменять состояние управляемого объекта. Эта базовая схема может усложняться. Например, ПЛК могут подключаться к автоматизированному рабочему месту (АРМ) оператора для супервизорного управления или к базе данных (БД) для накопления информации и интеграции в АСУ предприятия. Поскольку все ПЛК строятся на базе цифровой техники, естественным образом предполагаются некоторые языковые средства их программирования. Причем в силу специфики задачи алгоритмические языки программирования, такие как Си, Паскаль, Си++, не годятся для этих целей.
объекта управления
синхронизацию
существование множества параллельно протекающих процессов в объекте управления. (Поскольку события, происходящие в различных компонентах системы, возникают независимо и в произвольной последовательности, то попытка задать реакцию системы единым блоком означает комбинаторный перебор большого числа вариантов и неоправданный рост сложности описания).
Логический параллелизм предполагает наличие в алгоритме управления независимых или слабо зависимых частей – логически обособленных потоков управления.
механизмы структуризации
Перечисленные обстоятельства обусловливают разработку специализированных языков промышленной автоматизации.
Международная электротехническая комиссия
Современные программируемые логические контроллеры (ПЛК) программируются в соответствии со стандартом Международной электротехнической комиссии. В 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. Диаграммы, Язык последовательных функциональных схем
Язык используется для описания алгоритма в виде набора связанных пар: шаг ( step ) и переход ( transition ).
Шаг представляет собой набор операций над переменными. Переход — набор логических условных выражений, определяющий передачу управления к следующей паре шаг-переход.
Процесс управления представляется в виде набора определенных шагов (автономных ситуаций), связанных переходами. SFC программа — это набор шагов и переходов, соединенных вместе направленными связями. Действия внутри шагов описаны более детально при помощи других языков (ST, IL, LD, FBD), к каждому переходу прикреплено логическое условие. Основные графические правила для 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.
В этом языке есть пять динамических правил, которым подчиняется логика выполнения программ :
Языки программирования, их классификация и развитие
... 2.1.1. Машинный язык Машинный язык В новых моднлях ЭВМ намечается тенденция к повышению внутренних языков машинно – аппаратным путем реализовывать более сложные команды, приближающиеся по своим функциональным действиям к операторам алгоритмических языков программирования. 2.1.2. Языки ...
1. В каждой программе должен присутствовать, по крайней мере, один шаг инициализации, который в начале выполнения программы находится в активном состоянии.
2. Правило выполнения перехода – переход либо разрешён, либо запрещён. Считается что он разрешён, когда все непосредственно предшествующие шаги, присоединённые к нему, активны. В противном случае он запрещён. Переход происходит если выполнены два условия: а) переход разрешён б) условие перехода истинно. Если одно из условий не выполняется, переход не может быть произведен.
3. Изменение состояния активности шагов — удаление переходов немедленно приводит к активному состоянию непосредственно следующих за ним шагов и неактивному состоянию непосредственно предшествующих шагов.
4. Правило одновременного удаления переходов , применяется в случае конвергенции и дивергенции.
5. Если во время выполнения программы шаг одновременно активизирован и деактивизирован приоритет отдаётся активизации.
Основные достоинства SFC можно определить следующим образом.
Высокая выразительность. Язык SFC имеет те же возможности, что и диаграммы состояний, и является наиболее подходящим средством для описания динамических моделей.
Графическое представление. Благодаря графической мнемонике SFC максимально прост в использовании и изучении. Вместе с тем, он является наглядным средством представления логики на разных уровнях детализации.
2. Список инструкций
Язык IL (Instruction list) дословно — список инструкций. Это типичный ассемблер с аккумулятором и переходами по меткам. Набор инструкций стандартизован и не зависит от конкретной целевой платформы. Поскольку IL самый простой в реализации язык, он получил очень широкое распространение до принятия стандарта МЭК. Точнее, не сам IL, а очень похожие на него реализации. Практически все производители ПЛК Европы создавали подобные системы программирования, похожие на современный язык. IL. Наибольшее влияние на формирование современного IL оказал язык программирования STEP контроллеров фирмы Siemens. Язык IL позволяет работать с любыми типами данных, вызывать функции и функциональные блоки, реализованные на любом языке. Таким образом, на IL можно реализовать алгоритм любой сложности, хотя текст будет достаточно громоздким.
В составе МЭК — языков IL применяется при создании компактных компонентов, требующих тщательной проработки, на которую не жалко времени. При работе с IL гораздо адекватнее, чем с другими языками, можно представить, как будет выглядеть оттранслированный код. Благодаря чему, IL выигрывает там, где нужно достичь наивысшей эффективности. К компиляторам это относится в полной мере. В системах исполнения с интерпретатором промежуточного кода выигрыш не столь значителен.
3. Структурированный текст
Язык ST (Structured Text) — это язык высокого уровня. Синтаксически ST представляет собой несколько адаптированный язык Паскаль. Вместо процедур Паскаля в ST используются компоненты программ стандарта МЭК.
Происхождение: Grafcet (Telemechanique-Groupe Schneider).
Язык по умолчанию используется для описания действий внутри шагов и переходов.
Для специалистов, знакомых с языком С, освоение ST также не вызовет никаких сложностей. В качестве иллюстрации сравним эквивалентные программы на языках ST и С:
ST: С :
WHILE Counter<>0 DO while (Counter — ! = 0)
Языки программирования
... и выполнение программы. ассемблер языка программирования pascal В своей работе я хочу проанализировать несколько современных основных языков, таких ... обычно компьютер) под своим управлением. Языки программирования классифицируются по различным критериям. Однако они обычно ... несколько дополнительных команд и операторов, но главное отличие — это подход к программированию. Основная причина, по которой ...
Counter := Counter-1; {
Var1 := Var1*2; Varl *= 2;
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. Релейные диаграммы, Язык релейных диаграмм
Так появилась задача прозрачного переноса релейных схем в ПЛК. Различные варианты программной реализации релейных схем создавались практически всеми ведущими производителями ПЛК. Благодаря простоте представления РКС обрел заслуженную популярность, что и стало основной причиной включения его в стандарт МЭК.
Слова «релейная логика» звучат сегодня достаточно архаично, почти как «ламповый компьютер». Тем более в связи с созданием многочисленных быстродействующих и надежных бесконтактных (в частности, оптоэлектронных) реле и мощных переключающих приборов, таких как мощные полевые транзисторы, управляемые тиристоры и приборы IGBT. Но, несмотря на это, релейная техника все еще очень широко применяется.
Язык LD — это графическое представление булевых функций содержащее контакты (входные переменные) и обмотки (выходные переменные).
Графические символы языка LD очень похожи на изображение в релейно-контактных схемах, при этом приняты следующие условные изображения.
Для изображения входных контактов существует несколько символов:
Прямой(замыкающий)
Обратный контакт(размыкающий)
Контакт с обнаружением нарастания фронта
Контакт с обнаружением падающего фронта
Используется несколько типов обмоток:
Прямая обмотка
Обратная обмотка
Логически последовательное (И), параллельное (ИЛИ) соединение контактов и инверсия (НЕ) образуют базис Буля. В результате LD идеально подходит не только для построения релейных автоматов, но и для программной реализации комбинационных логических схем. Благодаря возможности включения в LD функций и функциональных блоков, выполненных на других языках, сфера применения языка практически не ограничена.
Типовой пример использования – реализация аварийных блокировок системы, включающая преимущественно логические сигналы. Вполне приемлем в случаях, когда задачей предполагаются частные коррекции несложного логического алгоритма неквалифицированным (с точки зрения программирования) персоналом (ремонтники, механики и т.п.).
Автоматизированные системы управления дорожным движением
... программе Система должна обеспечивать выполнение следующих функций: Регистрацию автотранспортных средств, при совершении сделки купли-продажи; Меры, повышающие безопасность дорожного движения и ... принципу строятся глобальные информационные системы типа Internet. Для создания и обслуживания таких систем используется специализированное программное обеспечение - системы управления базами данных СУБД. ...
5. Функциональные диаграммы FBD
FBD (Function Block Diagram) — это графический язык программирования. Диаграмма FBD очень напоминает принципиальную схему электронного устройства на микросхемах. Позволяет создать программную единицу практически любой сложности на основе стандартных кирпичиков (арифметические, тригонометрические, логические блоки, PID-регуляторы, блоки, описывающие некоторые законы управления, мультиплексоры и т.д.).
Это языковое средство использует технологию инкапсуляции алгоритмов обработки данных и законов регулирования. Все программирование сводится к «склеиванию» готовых компонентов. В результате получается максимально наглядная и хорошо контролируемая программная единица.
Этот язык позволяет пользователю строить сложные процедуры обработки данных и управления объектами. В языке используются существующие библиотеки функций и связывание их в функциональную схему или диаграмму решающую данную задачу. Основной формой представления функциональных блоков являются следующие изображения.
Входные и выходные переменные присоединяются к блоку линиями соединения. Входные и выходные переменные присоединяются к блоку линией. Выходная функция блока может быть присоединена к входу любого другого блока.
Типовой пример использования – алгоритмы регулирования, обработка (например, фильтрация) аналоговых сигналов. В качестве пользователей предполагаются специалисты в области автоматического регулирования с привлечением квалифицированных системных программистов в сложных случаях.
Основные недостатки МЭК 61131
С одной стороны
Возможные альтернативы
В качестве альтернативы можно попытаться использовать средства, встроенные в SCADA-системы.
Разумеется, такое решение допустимо лишь в некритичных задачах супервизорного контроля. В большинстве случаев штатная эксплуатация систем управления не предусматривает наличие средств проектирования алгоритмов. Стандартный подход – это создание базового алгоритма с возможностью его настройки через ограниченное число доступных пользователю параметров. Это позволяет проектировать базовый алгоритм управления квалифицированными специалистами и адекватными языковыми средствами, а сопутствующую этому сложность “скрывать” за дружественным интерфейсом оператора, который создается, например, с помощью тех же SCADA-пакетов.
В принципе, допустимо решение об использовании для задач управления языков Си/Си++. Такой подход может быть оправдан при наличии штата квалифицированных специалистов, отлаженной культуре разработки ПО и больших объемах тиражируемых изделий. Си++ предоставляет хорошие возможности для адаптации языка к широкому спектру задач, так что создание паттернов и набора классов, ориентированных на приведенную выше специфику, вполне осуществимо. Однако при использовании алгоритмического языка для задач автоматизации невозможно обеспечить должный уровень контроля корректности программ, ее семантическую целостность. Сложность подхода – высокие квалификационные требования к программистам, существенные затраты на обеспечение надежности и низкая сопровождаемость программ, трудности с вовлечением в процесс разработки конечного пользователя.
Разработка информационной системы управления персоналом в ООО Люксофт
... по всему миру. Сайт компании: http://www.luxoft.ru. Услуги по разработке включают в себя проектирование, создание, внедрение, сопровождение, тестирование создаваемых систем, ... работу сотрудники. Пакет отчетности. Потоки управления: Внутренние стандарты компании по управлению персоналом. Потоки механизмов: Менеджер по работе ... резюме на русском и английских языках, резюме могут быть отправлены ...
Достаточно популярно в России обсуждение т.н. 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, либо при известной осторожности и наличии высококвалифицированных кадров на основе чистого Си/Си++.
Список литературы
[Электронный ресурс]//URL: https://inzhpro.ru/referat/promyishlennyiy-kontroller/
Анисимов Н.А., Голенков Е.А., Харитонов Д.И., Арнольд Д.
Зюбин В.Е.
Зюбин В.Е.
Любченко В., Петров И.В., Шалыто А.А., Туккель Н.И.
8 2001. №5.
Шопырин Д.Г., Шалыто А.А., Яков Розенберг
11 PLCopen Устав Ассоциации. 1997. )