В предыдущей статье Светофор на ПЛК – 30 блоков Программа для ПЛК светофора написана только на FBD. Новая программа использует все 5 языков стандарта МЭК 61131-3. Первый раздел по Иллинойс .
Это язык, похожий на ассемблер.
В разделе всего 2 строки: LD - загрузка значения в аккумулятор S — установка переменной значения true, если аккумулятор равен true, в противном случае переменная не изменяется.
Генератор импульсов с периодом 0,5 секунды записан в ФБД , как и в предыдущей версии.
Основная часть написана на СФК .
Мне кажется, что это самый сложный язык для использования в стандарте MЭK 61131-3. Программа состоит из шагов и переходов.
При запуске программы выполняется шаг Init. Следующий шаг выполняется, если условие, следующее за ним, истинно.
Шаг можно выполнять с задержкой, время шага можно ограничить.
На рисунке ниже только один переход содержит условие.
Остальные переходы выполняются всегда.
В конце цепочки осуществляется безусловный переход на метку WaitPeople.
Каждый шаг выполняется с задержкой, соответствующей необходимому времени пребывания светофора в заданном состоянии.
Каждый шаг выполняет определенное действие.
Моя программа настроена на выполнение раздела на языке ST.
В проект добавлена переменная uState, соответствующая состоянию светофора.
Вот содержание всех разделов, выполненное пошагово:
Раздел о СТ в зависимости от состояния uState записывает значение в логические переменные, которые затем будут записаны на выходы.
Это можно было бы сделать в разделах stStep_1.stStep_8, но тогда вы бы не увидели оператор CASE и не поняли бы, что ST — наиболее близкий для программиста язык из стандарта МЭК 61131-3. В этом разделе также представлена защита от ошибок программного обеспечения в виде мигания желтым цветом в неопределенном состоянии.
Язык ЛД вблизи релейных логических цепей.
Основа ЛД — контакты и катушки.
На схеме видно, что слева находится проводник, от которого «напряжение» (истинное) распространяется вправо по ветвям.
Нормально открытый контакт (похожий на конденсатор) закрывается, если привязанная к нему переменная имеет истинное значение.
Нормально закрытый контакт (похожий на конденсатор с косой чертой внутри) замыкается, если присоединенная к нему переменная ложна.
Катушка (2 скобки) пропускает через себя «напряжение» и переписывает его значение (ложное или истинное) в привязанную к нему переменную.
В программе этот раздел используется для перезаписи промежуточных переменных в переменные, привязанные к выходам, с защитой от ошибок программы.
Зеленый свет загорается только в том случае, если на этом светофоре нет красного, а на другом – зеленого.
Результат программы: http://youtu.be/FkFliyZVwtw
Использование всех 5 языков в одной программе не оправдано.
Но в реальных проектах иногда приходится использовать 2.3 языка одновременно.
Чаще всего использую СТ, реже ФБД и еще реже ИЛ.
Мне не приходилось использовать SFC и LD в реальных проектах.
УПД.
Сделал исправление - убрал лишний ноль из названия стандарта как отмечено РуР УПД2. Незначительные изменения в описании LD. УПД3. Исправлены грамматические ошибки.
Теги: #plc #PLC #IEC 61131-3 #Quantum #unity #fbd #S@T #il #ld #SFC #программирование #Промышленное программирование
-
Эволюция Photoshop (Инфографика)
19 Oct, 24 -
Код Игры, Который Программирует Сам Себя
19 Oct, 24 -
Как Стать Zce
19 Oct, 24