Светофор на ПЛК – все языки МЭК 61131-3
В прошлой статье Светофор на ПЛК – 30 блоков программа для ПЛК светофора была написана только на FBD.
Новая программа использует все 5 языков стандарта МЭК 61131-3.
Первая секция на IL.
Это похожий на ассемблер язык.
В секции всего 2 строки:
LD — загрузка значения в аккумулятор
S — установка переменное в true, если в аккумуляторе true, иначе переменная не изменяется.
Генератор импульсов периодом 0,5 секунды написан на FBD, как и в предыдущей версии.
Основная секция написана на SFC. Как мне кажется, это самый сложный для применения язык в стандарте МЭК 61131-3.
Программа состоит из шагов и переходов.
При запуске программы выполняется шаг Init.
Следующий шаг выполняется, если условие перехода за ним истинно. Шаг может быть выполнен с задержкой, время шага может быть ограничено.
На рисунке ниже только один переход содержит условие. Остальные переходы выполняются всегда.
В конце цепочки выполняется безусловный переход на метку WaitPeople.
Каждый шаг выполняется с задержкой, соответствующей требуемому времени пребывания светофора в заданном состоянии.
При выполнении каждого шага выполняется определённое действие. В моей программе задано выполнение секции на языке ST.
В проекте добавлена переменная uState, соответствующая состоянию светофора.
Вот содержимое всех секций, выполняемых по шагам:
Секция на ST в зависимости от состояния uState записывает значение на булевские переменные, которые потом будут переписаны на выходы. Это можно было сделать в секциях stStep_1..stStep_8, но тогда бы вы не увидели оператора CASE и не поняли бы, что ST — самый близкий для программиста язык из стандарта МЭК 61131-3. Так же в этой секции введена защита от программных ошибок в виде мигающего желтого при неопределенном состоянии.
Язык LD близок к схемам релейной логики. Основа LD — контакты и катушки. На схеме видно, что слева расположен проводник, от которого «напряжение» (true) распространяется направо по ответвлениям.
Нормально разомкнутый контакт (похож на конденсатор) замыкается, если привязанная к нему переменная истинна.
Нормально замкнутый контакт (похож на конденсатор со слэшем внутри) замыкается, если привязанная к нему переменная ложна.
Катушка (2 скобки) пропускает «напряжение» через себя и переписывает его значение (false или true) в привязанную к ней переменную.
В программе данная секция используется для того, чтобы переписать промежуточные переменные в переменные, привязанные к выходам, с защитой от программной ошибки. Зеленый свет загорается только если нет красного на данном светофоре и зеленого на другом светофоре.
Результат работы программы:
Применение всех 5 языков в одной программе не оправдано. Но в реальных проектах иногда приходится применять одновременно 2..3 языка. Чаще всего я использую ST, реже FBD, еще реже IL. SFC и LD в реальных проектах мне применять не приходилось.
UPD. Сделал исправление — убрал лишний ноль из названия стандарта по замечанию RouR
UPD2. Небольшое изменение в описании LD.
UPD3. Исправлены грамматические ошибки.
Программирование ПЛК на языках стандарта IEC 61131-3
Определение и типы ПЛК. Общая организация и структура ПЛК. Анализ цикла работы ПЛК. Инструменты комплексов программирования ПЛК. Интеграция ПЛК в АСУТП.
Тема 2. Стандарт IEC 61131-3
Инструменты и состав комплекса программирования ПЛК, программная модель. Данные и переменные, стандартные функции, функциональные блоки. Языки программирования стандарта IEC 61131-3.
Тема 3. Система программирования OpenPCS
Общие сведения о системе программирования OpenPCS: проект, работа с проектом, браузер проекта. Редактор программных модулей (POU Editor). Отладка и тестирование программ. Имитатор ПЛК (SmartSim).
Тема 4. Сетевые технологии автоматизации
Локальные сети и их топология. Типы линий связи информационно-вычислитеных сетей, подключение линий связи и коды передачи информации. Эталонная модель взаимодействия открытых систем OSI (Open System Interconnection), аппаратура локальных сетей и стандартные сетевые протоколы. Методы управления обменом в локальные сетях. Интерфейсы и протоколы, применяемые в системах автоматики.
Тема 5. Программирование и конфигурирование контроллера ЭЛСИ-ТМ в OpenPCS
Технические характеристики, модули контроллера ЭЛСИ-ТМ. Общие принципы, структура программного обеспечения. Конфигурирование ПЛК, использование ElsyTMManager. Работа с ElsyTMPultPC.
Тема 6. Cерверная часть ПК InfinitySCADA
Понятие сигнала, дерева сигналов. Конфигуратор серверов. Организация взаимодействия с внешними системами по интерфейсам ОРС.
Тема 7. Сопряжение контроллеров с программным обеспечением верхнего уровня
ПК «InfinitySCADA»: коммуникационные модули. Конфигурирование коммуникационных модулей. Сопряжение контролера с сервером. Отображение получаемых данных.
Учебный план
Дисциплины и их содержание
1. Программируемые логические контроллеры
Определение и типы ПЛК. Общая организация и структура ПЛК. Анализ цикла работы ПЛК. Инструменты комплексов программирования ПЛК. Интеграция ПЛК в АСУТП.
2. Стандарт IEC 61131-3
Инструменты и состав комплекса программирования ПЛК, программная модель. Данные и переменные, стандартные функции, функциональные блоки. Языки программирования стандарта IEC 61131
3. Система программирования OpenPCS
Общие сведения о системе программирования OpenPCS: проект, работа с проектом, браузер проекта. Редактор программных модулей (POU Editor). Отладка и тестирование программ. Имитатор ПЛК (SmartSim).
4. Сетевые технологии автоматизации
Локальные сети и их топология. Типы линий связи информационно-вычислитеных сетей, подключение линий связи и коды передачи информации. Эталонная модель взаимодействия открытых систем OSI (Open System Interconnection), аппаратура локальных сетей и стандартные сетевые протоколы. Методы управления обменом в локальные сетях. Интерфейсы и протоколы, применяемые в системах автоматики.
5. Программирование и конфигурирование контроллера ЭЛСИ-ТМ в OpenPCS
Технические характеристики, модули контроллера ЭЛСИ-ТМ. Общие принципы, структура программного обеспечения. Конфигурирование ПЛК, использование ElsyTMManager. Работа с ElsyTMPultPC.
6. Cерверная часть ПК InfinitySCADA
Понятие сигнала, дерева сигналов. Конфигуратор серверов. Организация взаимодействия с внешними системами по интерфейсам ОРС.
7. Сопряжение контроллеров с программным обеспечением верхнего уровня
ПК «InfinitySCADA»: коммуникационные модули. Конфигурирование коммуникационных модулей. Сопряжение контролера с сервером. Отображение получаемых данных.
В результате освоения программы слушатель должен:
— особенности разработки программного обеспечения на языках стандарта IEC 61131-3;
— архитектуру и организацию программируемых логических контроллеров;
— принципы построения промышленных сетей, их основные топологии, интерфейсы и протоколы, применяемые в системах автоматики.
— пользоваться средой программирования OpenPCS разработки прикладных программ для ПЛК;
— создавать конфигурацию ПЛК ЭЛСИ-ТМ в ElsyTMManager;
— разрабатывать прикладные программы для ПЛК на языках программирования стандарта IEC 61131-3;
— осуществлять организацию передачи данных с ПЛК на верхний уровень SCADA-системы используя промышленные протоколы.
— представлениями о тенденциях применения ПЛК в современных системах автоматизации;
— информацией об основных промышленных сетях и их назначении.
Форма обучения
Обучение производится в форме теоретических и практических занятий в компьютерном классе, состоящем из рабочих станций, объединенных в локальную вычислительную сеть. Компьютерный класс оснащен мультимедийным оборудованием (проектор, экран, акустическая система).
На компьютерах установлено лицензионное программное обеспечение (операционная система Windows 7, MS Office 2007, пакеты прикладных программ).
Понимание языков программирования IEC61131-3
Сложность программного обеспечения, возможности PLC/PAC и возможность портировать программный код являются ключевыми факторами при выборе языка программирования контроллера. Около 120 лет назад Марк Твен сказал «есть несколько способов снять шкуру с кошки». Это клише все еще актуально в мире программирования контроллеров.
Благодаря IEC (International Electrotechnical Commission, МЭК — Международная Электротехническая Комиссия) появились пять наиболее часто используемых стандартных языков программирования, которые в настоящее время используются для разработки программного обеспечения контроллеров. IEC – это организация, которая разрабатывает и публикует международные стандарты для всех технологий, связанных с электрикой и электроникой, включая контроллеры.
Долго считавшиеся чисто европейским феноменом, языки программирования контроллеров IEC получают распространение в Соединенных Штатах. IEC разработала данные стандарты программирования, реагируя на увеличивающееся количество разработчиков систем автоматизации, возрастающую сложность приложений, и множество методов реализации функций управления.
Многие инженеры в области АСУ ТП интересуются возможностями каждого языка программирования. В каких случаях предпочесть тот или иной язык? Какие преимущества и недостатки каждого? В данной статье содержится краткий обзор и сравнение каждого из пяти основных языков программирования контроллеров.
Язык релейно-контактных схем (LD)
Этот язык программирования, изобретенный в США десятилетия назад, получил наиболее широкое распространение. Изначально изобретенный для замены логических схем, выполненных на релейной технике, язык релейно-контактных схем является базовым в США на сегодняшний день, и применяется в 95% всех приложений. Визуально этот язык напоминает последовательность цепей управления, в которой все входы должны быть установлены в значение «истина» для активации одного или нескольких выходов.
Язык релейно-контактных схем получил такое широкое распространение, потому что на нем могут писать практически все программисты в любой стране.
Поскольку он напоминает знакомый всем формат электрических цепей, даже не специалист в области программирования, знакомый с электроникой может разобраться в программе для поиска ошибок в ней. На этом языке легко писать программы. Имея базовое представление о входных и выходных сигналах, можно начать писать код. Большинство других языков IEC требуют большей подготовки, например, прорисовки диаграмм всех потенциальных процессов. Наконец, программа, реализованная в виде релейно-контактных схем, может быть организована в виде папок или подпрограмм, которые загружаются в контроллер, позволяя проводить легкую сегментацию программы.
Рис. 1. Этот язык напоминает последовательность цепей управления, в которой все входы должны быть установлены
в значение «истина» для активации одного или нескольких выходов.
Язык релейно-контактных схем идеален для простых приложений перемещения материалов. Например, когда один датчик распознает наличие коробки, другой датчик проверяет наличие препятствий, а затем выходной сигнал, при соответствующем условии, запускает привод для перемещения коробки на другой конвейер. В данном случае дискретные входы контролирую текущие условия, базовая программа анализирует эти входы и подает соответствующие сигналы на выходы. В программе могут быть использованы таймеры, некоторые базовые сравнения или математические операции, но нет возможности использовать сложные функции.
На языке релейно-контактных схем затруднительно реализовывать более сложный функционал ПЛК (программируемый логический контроллер, англ.: PLC), сохраняя парадигму легкой визуализации и понимания. Такие функции как ПИД-регулирование, тригонометрия и анализ данных в приложении реализовать трудно. Другой сложностью является то, что по мере роста объема программы, ее становится сложно читать и интерпретировать, если нет подробнейшей документации. Наконец, реализация полного процесса управления на языке релейно-контактных схем может быть чрезвычайно трудным.