Лекция CoDeSys (Новиков).
В стандарте Мэк есть понятие боле высокого уровня чем - это конфигурация – множество
ресурсов, взаимодействующих определённым образом (сконфигурированных). В одной системе
может быть несколько интеллектуальных ресурсов, каждый из которых обладает собственным
процессором, памятью и системой исполнения. Каждый из них можно программировать. Это
могут быть реальные модули или виртуальные машины, эмулируемые одним процессором. Все
они имеют доступ к определённым наборам входов и выходов, и координируют свою работу с
помощью глобальных переменных, расположенных в общедоступной памяти. Таким образом, для
программирования каждого ресурса (в рамках МЭК конфигурации) должен быть создан
отдельный проект. Т.к. система программирования универсальная, то различий между ресурсом и
конфигурацией не делается. Техника реализации, распределённых систем существенно зависит от
конфигурации конкретного ПЛК. Таким образом инструмент «PLC Con|gura~on» на вкладке
ресурсов проекта CoDeSys – это инструмент выполняющий конфигурирование ПЛК.
ЯЗЫКИ МЭК.
ПРОБЛЕМЫ ПРОГРАММИРОВАНИЯ ПЛК
Мы говорим, что ПЛК функционирует циклически – читает входы, выполняет прикладную
программу и записывает выходы. В результате прикладное программирование для МЭК-ПЛК
существенно отличается от традиционной модели, применяемой при работе с языками высокого
уровня. Рассмотрим простейшую задачу: Необходимо запрограммировать мерцающий
индикатор. Очевидно, что алгоритм проекта должен быть следующим.
1) Включить выход
2) Выдержать паузу
3) Включить выход
4) Выключить паузу
5) Переход к шагу 1 (начало цикла)
6) Конец программы.
Реализованная по этому алгоритму программа работать не будет. Во-первых, она содержит
бесконечный цикл. Весь код прикладной программы выполняется в каждом рабочем цикле от
начала и до конца, любая прикладная программа ПЛК является частью рабочего цикла и должна
возвращать управление системе исполнения. Следовательно, шаг 5 является лишним. Если его
удалить – программа работать будет, но не так как задумана. Выход всегда будет находиться во
включённом состоянии, т.к. его установка происходит по окончанию работы прикладной
программы 1 раз. Промежуточные изменения значений выходов не отображаются на аппаратные
средства. Что ещё плохо в данном алгоритме – это задержки времени. Вполне вероятно, что
кроме мерцания выхода ПЛК будет выполнять и другую работу, т.е. программу необходимо будет
дополнять, но, если контролер занят ожиданием это означает, что он ничего больше сделать не
сможет. Следовательно, задержки времени нужно реализовать иначе. Достаточно засечь время и
заняться другой работой, периодически контролировать часы. Также поступают и люди. С учётом
выше изложенного алгоритм станет следующим.
1) Проверить таймер, если время паузы вышло, то:
А) инвертировать выход ( включить если выключен и наоборот)
Б) начать отсчёт новой паузы
2) Конец программы.
Алгоритм получился гораздо проще. Технология ПЛК ориентирована именно на такие задачи.
ПЛК КАК КОНЕЧНЫЙ АВТОМАТ
Чтобы хорошо писать программы для ПЛК необходимо научиться думать определённым образом.
Секрет состоит в том, чтобы представить себе контроллер не как машину, непосредственно
выполняющую команды программы, а как конечный автомат. В любом автомате существует
множество входов (Х), множество выходов (Y) и множество состояний (S). В нашем случае – это
конечные множества, т.к. число входов и выходов ПЛК ограниченно также как и память
переменных. Начальные состояния однозначно определены, т.е. s нулевое принадлежит S.
Автомат работает по тактам. Для ПЛК – это рабочий цикл, в каждом такте значение входов
известно, значение выходов определяется текущим значением входов и текущим состоянием.