Лекция CoDeSys (Новиков).
реализации действия произвольный Дополним блока SYNCSWITCH действием Break. Пусть вызов
данного действия приводит к безударному переключению выходов. Для определения действия
необходимо выбрать блок в организаторе объектов и дать команду ADD ACTION. Опишем
действия на языке ST как Q:=False. Вызвать действие из ST программы можно так:
SYNCSWITCH1.BREAK(Q=>q);
В графических языках прямоугольник представляющий данное действие будет иметь заголовок
SYNCSWITCH1.BREAK (обратим внимание на то что окно редактора для действия не имеет радела
объявления переменных). Компоненты программ с действиями имеют раскрывающиеся списки в
организаторе объектов. Список действий в разделе объявлений POU не отражается. В CoDeSys
действия можно использовать как код программы.
ПРОГРАММЫ
Программа – глобальный программный глобальный компонент, отображающий множество
значений входных параметров на множество выходных. Программа похожа на функциональный
блок. Она является самым крупным компонентном. При помощи программ организуется верхний
уровень проекта и управление многозадачностью.
ИСПОЛЬЗОВАНИЕ ПРОГРАММ
Обращение к переменным и вызов программ ничем не отличается от работы с экземпляром FB.
Правильные, с точки зрения стандарта проект должен включать одну или несколько программ,
ассоциированных с задачами. При этом число функций и FB не ограниченно. Экземпляров
программ не существует в отличие от FB. Все программы определены глобально, существуют в
единственном экземпляре. Ограничений на количество и способ использования программ в
CoDeSys нет. При создании проекта codesys автоматически создаёт программу PLC_PRG в
однозадачном проекте она является главной. Цикл выполнения в пользовательской задаx
сводится циклическому вызову PLC_PRG, которая в свою очередь содержит вызовы всех почих
необходимых компонент.
СТРУКТУРА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ПЛК
Назначение задача – это управление работой, проекта, используемых одним процессором. Как и
программы задача должна иметь собственный уникальный идентификатор. Задачи бывают
циклическими и разовыми. Выполнение разовой задачи запускается по фронту логической
тригерной переменной. Циклические задачи выполняются через определённые промежутки
времени. Каждая задача может включать вызов одной или нескольких программ. Если программа
имеет входные переменные VAR_INPUT они задаются в описании задачи. Все программы одной
задачи выполняются в одном рабочем цикле ПЛК. Описание задач в системах программирования
ПЛК выполняется по-разному, это может быть текстовое описание или графическое
представление. CoDeSys содержит специальный инструмент – менеджер задач (Task
Con|gura~on). В любом проекте всегда как минимум существует одна задача. ПО умолчанию – это
циклическая задача, вызываемая в каждом рабочем цикле. В CoDeSys она включает единственную
программу PLC_PRG. Каждая задача обладает определённым приоритетом. Приоритет лежит в
пределах от 0 до 32. Чем выше число тем меньше приоритет. Если две или более задач должны
получить управление одновременно, то побеждает задача с более высоким приоритетом. Так
если две или более задачи всегда совпадают по времени и имеют разные приоритеты, то задача с
меньшим приоритетом не будет работать. При одинаковом приоритете управление получает
задача имеющая большее время ожидания. Т.е. две равно-приоритетные задачи будут работать
поочерёдно. В системе исполнении CoDeSys реализована не вытесняющая многозадачность – это
означает, что любая задача, даже более приоритетная даёт работать текущей задаче до конца
одного, рабочего цикла. Работа циклических задач является аппаратно независимой. Механизм
управления задачами всегда опирается на аппаратный системный таймер, поэтому нельзя
гарантировать, что будет обеспечена точность вызова задач в миллисекундах. (до 1ой
миллисекунды). Как правило минимальная дискретность временного интервала на который мы
можем рассчитывать = 10 миллисекунд. Для CoDeSys = 10микросекунд. Когда речь идёт для
медленных задачах интервалы измеряются десятыми долями секунды. При таких интервалах