Особенности программирования ПЛК
на языках МЭКсергей неежмаков
эксперт,
Школа Fine Start
Прикладное программирование ПЛК существенно отличается от создания программных пакетов на языках высокого уровня для ПК. Основная причина этого заключается в том, что ПЛК функционирует циклически. Давайте посмотрим, в чем именно заключаются особенности программирования ПЛК на языках МЭК.
Давайте представим, что нам необходимо запрограммировать светофор в дежурном режиме: с определенной периодичностью должен мигать желтый свет.
Алгоритм работы будет выглядеть следующим образом:
- зажечь лампу (включить выход)
- выдержать паузу
- погасить лампу (выключить выход)
- выдержать паузу
- переход к шагу 1 (начало программы)
- конец программы
Вроде бы все правильно написано, ничего сложного, но реализованная по этому алгоритму программа для ПЛК работать не будет. Вы наверняка заметили, что данная программа содержит бесконечный цикл. Согласно идеологии работы ПЛК любая прикладная программа является частью рабочего цикла и должна возвращать управление системе исполнения. Весь код прикладной программы выполняется от начала и до конца в каждом рабочем цикле. Поэтому нет необходимости ставить безусловный переход на начало алгоритма.
Для работы программы достаточно будет исключить «переход на начало», однако светофор окажется всегда выключенным, поскольку физически установка значений выходов производится по окончании прикладной программы один раз, несмотря на множественные изменения значений выходов в процессе работы программы.
В нашем алгоритме есть ещё один недостаток – выдержка времени. Во время неё процессор ничем больше не занимается, то есть стоит без дела. Более оптимальный вариант - засечь время и заняться другими делами, контролируя периодически часы.
Тогда алгоритм работы светофора в дежурном режиме будет следующим:
1. Проверить таймер, если время паузы вышло, то:
- инвертировать выход (включить, если выключен, и наоборот)
- и начать отсчет новой паузы
2. Конец программы.
В конечном итоге алгоритм получился довольно простой. Технология ПЛК специально ориентирована на подобные задачи.
Для успешного написания программ для ПЛК необходимо научиться представлять себе контроллер как конечный автомат, а не как машину, последовательно выполняющую команды программы.
В автомате, представляющем собой ПЛК, существует конечные множества входов (X), выходов (У) и возможных состояний (S), поскольку число входов-выходов ПЛК ограничено, так же, как и объем памяти переменных (определяющих возможные состояния). Начальное состояние (s0 S) однозначно определено.
Как мы уже знаем ПЛК работает циклично, т.е. по тактам. В каждом такте значения входов известны. Значения выходов определяются (функция выходов λ) значениями входов и текущим состоянием. Предыстория смены значений не учитывается, и реакция автомата зависит только от текущего состояния. Вместе с тем текущее состояние также изменяется по тактам, автомат переходит в новое состояние (функция переходов δ). В теории автоматов описанные шесть объектов А = {X, Y, S, s0, λ, δ} принято называть конечным автоматом Мили.
В большинстве случаев ПЛК применяется для программной реализации автоматов. В каждом рабочем цикле ПЛК вычисляет программно-заданную функцию выходов и функцию переходов.
Переход значений переменной из одного состояния в другое можно рассматривать как функции событий. События являются абстрактным понятием и не обязательно должны быть связаны с входами.
Для удобства восприятия модель такой системы изображают в виде направленного графа состояний (state charts), который применяется для проектирования и анализа автоматов. Состояния отображаются овалами, содержащими значения набора переменных, а переходы — направленными дугами.
Реально же возможности ПЛК существенно превышают конечные автоматы. Далеко не все, что можно сделать на ПЛК, вписывается в рамки конечных автоматов. Это функции управления по времени, математическая обработка данных, регулирование и т. д. Тем не менее применение формализма конечных автоматов позволяет значительно упростить процесс программирования.
Сергей Неежмаков
ЭКСПЕРТ ШКОЛЫ FINE START
Кандидат технических наук, доцент кафедры горной электротехники и автоматики. Стаж научно-педагогической деятельности 19 лет. Является автором и соавтором более 50 научных статей.
Принимал участие в разработке государственных научно-исследовательских работ.
Заинтересовала статья?
Освоить востребованную профессию в сфере автоматизации производства вы можете в Школе Fine Start. Узнайте детали в каталоге наших профессий