Релейные диаграммы (LD)
Язык релейных или релейно-контактных схем (Ladder Diagrams - LD) – графический язык, реализующий структуры электрических цепей.
Лучше всего LD подходит для построения логических переключателей, но достаточно легко можно создавать и сложные цепи, как в FBD. Кроме того, LD достаточно удобен для управления другими программными компонентами.
Релейная схема представляет собой вертикальную шину питания, которая всегда находится в состоянии "ON". Справа расположены горизонтальные цепи, образованные контактами и катушками. Количество контактов и катушек в цепи произвольно. Если последовательно соединенные контакты замкнуты, ток идет по цепи, и катушка включается ("ON"). При необходимости можно включить параллельно несколько катушек.
В LD каждому контакту ставится в соответствие переменная типа Boolean. Если переменная имеет значение TRUE, это значит, что условие передается с левого на правый полюс по соединительной линии. В противном случае, правый полюс получает значение OFF. Имя переменной или выражение пишется над контактом.
Последовательное соединение контактов или цепей равноценно логической операции И. Параллельное соединение образует ИЛИ. Цепь может быть либо замкнутой "ON", либо разомкнутой "OFF". Это как раз и отражается на катушке и, соответственно, на значении логической переменной катушки (TRUE/FALSE).
Приведенная выше схема эквивалентна выражению:
|
Контакты
Контакты обозначаются двумя параллельными линиями: | |, и могут иметь состояния "ON" или "OFF". Эти состояния соответствуют значениям TRUE или FALSE.
Каждому контакту соответствует выражение типа Boolean. Если переменная имеет значение TRUE, это значит, что состояние передается по соединению слева направо, в противному случае, правое соединение имеет значение "OFF".
Контакты могут быть соединены параллельно, тогда соединение передает состояние "ON", когда хотя бы одна из ветвей передает "ON". Если контакты соединены последовательно, то для того, чтобы соединение передало "ON", необходимо, чтобы оба контакта передавали "ON". Это соответствует электрической параллельной и последовательной схемам.
Типы контактов
Тип | Символ | Описание |
Нормально разомкнутый контакт | Состояние левого соединения копируется в правое соединение, если значение соответствующей логической переменной TRUE. В противном случае, состояние правого соединения OFF. | |
Нормально замкнутый контакт | Состояние левого соединения копируется в правое соединение, если значение соответствующей логической переменной FALSE. В противном случае, состояние правого соединения OFF. | |
Контакт для обнаружения заднего фронта (спад сигнала) | Правое соединение устанавливается в состояние ON, если переход связанного фактического параметра происходит из TRUE в FALSE, и состояние левого соединения далее остается FALSE. Иначе, состояние правого соединения OFF. | |
Контакт для обнаружения переднего фронта (нарастание сигнала) | Правое соединение устанавливается в состояние ON, если переход связанного фактического параметра происходит из FALSE в TRUE, и состояние левого соединения далее остается TRUE. Иначе, состояние правого соединения OFF. |
Катушки
В правой части схемы может находиться любое количество катушек, которые обозначаются круглыми скобками (). Катушка передает значение соединения слева направо и копирует его в соответствующую логическую переменную. На линии входа может быть значение ON (соответствует значению логической переменной TRUE), или значение OFF (соответствует FALSE).
Типы катушек
Тип | Символ | Описание |
Катушка | Состояние левого соединения передается в соответствующую логическую переменную и правое соединение. | |
Инверсная катушка | Состояние левого соединения передается в правое соединение. Инверсное состояние левого соединения передается в соответствующую логическую переменную. Таким образом, если состояние левого соединения OFF, состояние соответствующей переменной - TRUE, и наоборот. | |
Катушка по спаду | В катушке обнаружения спада фронта состояние левого соединения передается в правое соединение. Связанная логическая переменная будет установлена в состояние TRUE для цикла программы, если произошел переход левого соединения из ON в OFF. | |
Катушка по фронту | В катушке обнаружения нарастания фронта состояние левого соединения передается в правое соединение. Связанная логическая переменная будет установлена в состояние TRUE для цикла программы, если произошел переход левого соединения из OFF в ON. | |
Катушка сброса (RESET катушка) | В катушке сброса состояние левого соединения передается в правое соединение. Связанный логический фактический параметр устанавливается в состояние FALSE, если левое соединение имеет состояние ON, иначе он не изменяется. Связанный логический фактический параметр может устанавливаться только катушкой установки. | |
Катушка установки (SET катушка) | В катушке установки состояние левого соединения передается в правое соединение. Связанный логический фактический параметр устанавливается в состояние TRUE, если левое соединение имеет состояние ON, иначе он не изменяется. Связанный логический фактический параметр может сбрасываться только катушкой сброса. |
Функции и функциональные блоки
В LD-диаграмму можно вставить функции и функциональные блоки. Функциональные блоки должны иметь логические вход и выход и могут использоваться так же, как контакты.
Порядок исполнения диаграммы
Идеология релейных схем подразумевает параллельную работу всех цепей. Ток во все цепи подается одновременно. В LD решение диаграммы выполняется последовательно слева направо и сверху вниз. В каждом рабочем цикле однократно выполняются все цепи диаграммы, что и создает эффект параллельности работы цепей. Любая переменная в рамках одной цепи всегда имеет одно и то же значение. Если даже катушка в цепи изменит переменную, то новое значение поступит на контакты только в следующем цикле.
Цепи, расположенные ниже, получат новое значение переменной сразу. Цепи, расположенные выше, — только в следующем цикле. Строгий порядок выполнения схемы очень важен. Случайный или даже истинно параллельный порядок выполнения цепей может приводить к эффекту "гонок", встречающемуся в электронных схемах с триггерами. Благодаря жесткому порядку выполнения LD-диаграммы сохраняют устойчивость при наличии обратных связей.
В приведенной схеме включение Key вызовет мгновенное (в том же цикле) включение Р2 и отключение РЗ. Реле Р1 будет включено только в следующем цикле, причем даже если Key уже в обрыве (FALSE):
Управление порядком исполнения
Порядок выполнения цепей диаграммы можно принудительно изменять, используя переходы (jumps). Переход равнозначен выходной катушке и выполняется, если выходная переменная имеет значение TRUE. Переход осуществляется на начало цепи, номер которой указан в переходе. Используя переход, можно пропустить выполнение части диаграммы. Пропущенные цепи не сбрасываются, а именно не выполняются — замирают в том положении, в котором были ранее. Переход вверх допускается и позволяет создавать циклы. Проверка условий окончания цикла, естественно, лежит на совести программиста.
Специальный оператор RETURN прекращает выполнение LD диаграммы. Если RETURN встречается в основной программе, рабочий цикл прерывается. В функциях и функциональных блоках происходит возврат в место вызова. Иными словами, использование перехода RETURN аналогично по смыслу оператору RETURN в текстовых языках.