- PVSM.RU - https://www.pvsm.ru -

Светофор на ПЛК – все языки МЭК 61131-3

В прошлой статье Светофор на ПЛК – 30 блоков [1] программа для ПЛК светофора была написана только на FBD.
Новая программа использует все 5 языков стандарта МЭК 61131-3.

Первая секция на IL.
Это похожий на ассемблер язык.
В секции всего 2 строки:
LD — загрузка значения в аккумулятор
S — установка переменное в true, если в аккумуляторе true, иначе переменная не изменяется.
Светофор на ПЛК – все языки МЭК 61131 3
Генератор импульсов периодом 0,5 секунды написан на FBD, как и в предыдущей версии.
Светофор на ПЛК – все языки МЭК 61131 3
Основная секция написана на SFC. Как мне кажется, это самый сложный для применения язык в стандарте МЭК 61131-3.
Программа состоит из шагов и переходов.
При запуске программы выполняется шаг Init.
Следующий шаг выполняется, если усовие перехода за ним истинно. Шаг может быть выполнен с задержкой, время шага может быть ограничено.
На рисунке ниже только однин переход содержит условие. Остальные переходы выполняются всегда.
В конце цепочки выполняется безусловный переход на метку WaitPeople.
Светофор на ПЛК – все языки МЭК 61131 3
Каждый шаг выполняется с задержкой, соответсвующей требуемому времени пребывания светофора в заданном состоянии.
Светофор на ПЛК – все языки МЭК 61131 3
При выполнении каждого шага выполняется опеределенное действие. В моей программе задано выполнение секции на языке ST.
Светофор на ПЛК – все языки МЭК 61131 3
В проекте добавлена переменная uState, соответсвующая состоянию светофора.
Вот содержимое всех секций, выполнемых по шагам:
Светофор на ПЛК – все языки МЭК 61131 3
Секция на ST в зависимости от состояния uState записывает значение на булевские переменные, которые потом будут переписаны на выходы. Это можно было сделать в секциях stStep_1..stStep_8, но тогда бы вы не увидели оператора CASE и не поняли бы, что ST — самый близкий для программиста язык из стандарта МЭК 61131-3. Так же в этой секции введена защита от программных ошибок в виде мигающего желтого при неопределенном состоянии.
Светофор на ПЛК – все языки МЭК 61131 3
Язык LD создан специально для электриков, которым пришлось от разработки релейных схем перейти к ПЛК. Основа LD — контакты и катушки. На схеме видно, что слева расположен проводник, от которого «напряжение» (true) распростроняется направо по ответвлениям.
Нормально разомкнутый контакт (похож на конденсатор) замыкается, если привязанная к нему переменная истинна.
Нормально замкнутый контакт (похож на конденсатор со слэшем внутри) замыкается, если привязанная к нему переменная ложна.
Катушка (2 скобки) пропускает «напряжение» через себя и переписывает его значение (false или true) в привязанную к ней переменную.
В программе данная секция используется для того, чтобы переписать промежуточные переменные в переменные, привязанные к выходам, с защитой от программной ошибки. Зеленый свет загарается только если нет красного на данном светофоре и зеленого на другом светофоре.
Светофор на ПЛК – все языки МЭК 61131 3
Результат работы программы:

Применение всех 5 языков в одной программе не оправдано. Но в реальных проектах иногда приходится применять одновременно 2..3 языка. Чаще всего я использую ST, реже FBD, еще реже IL. SFC и LD в реальных проектах мне применять не приходилось.

UPD. Сделал исправление — убрал лишний ноль из названия стандарта по замечанию RouR [2]

Автор: leon78

Источник [3]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/programmirovanie/52928

Ссылки в тексте:

[1] Светофор на ПЛК – 30 блоков: http://habrahabr.ru/post/208560/

[2] RouR: http://habrahabr.ru/users/rour/

[3] Источник: http://habrahabr.ru/post/209290/