Язык Ladder Diagram (LD)

Первоначально на языке LD (язык лестничных диаграмм или релейно-контакторных схем) программировались контроллеры производства компании Allen Bradley. Язык LD представляет собой графическую интерпретацию процесса разработки релейно-контакторных схем управления. Ввиду его удобства и значительного количества пользователей, обладающих навыками проектирования логических систем на базе реле и контакторов, язык LD был введен в стандарт IEC 61131-3 и в настоящее время является одним из наиболее распространенных языков программирования ПЛК. Этот язык наиболее удобен для программирования небольших задач дискретной логики, поэтому многие контроллеры младших классов имеют язык LD в качестве основного для разработки программ управления.

Программы, написанные на языке LD, состоят из последовательности ступеней, которые выполняются ПЛК последовательно, слева направо (рис. 3.1).

 

 

Рис. 3.1. Фрагмент программы на языке LD

 

Ступень состоит из набора графических элементов, ограниченных слева и справа условными шинами питания.

Ступень содержит до 7 строк и до 11-ти колонок, разделенных на две зоны – проверочную и зону действий. Проверочные операции всегда располагаются в колонках с 1 по 10. Операции действия всегда располагаются в колонке 11. На одной линии возможно до 10-ти контактов. В одной колонке максимально могут проверяться параллельно до 7-ми контактов. До 7-ми обмоток могут включаться параллельно.

Каждая ступень может быть снабжена меткой и озаглавлена комментарием. Метки используются для идентификации ступени внутри программного объекта (головной программы, подпрограммы и т.д.), но не являются обязательными. Метки имеют синтаксис %Li (где i от 0 до 999) и располагаются в левом верхнем углу перед шиной питания. Каждая метка может присваиваться только одной ступени в пределах данного программного объекта. Система сканирует ступени в том порядке, как они были введены, независимо от порядка нумерации меток.

В состав ступени может быть введен комментарий, содержащий до 222 алфавитно-цифровых символов и обрамленный с обоих концов символами (*и*). Это упрощает интерпретацию ступени. Введение комментария не является обязательным. Комментарий запоминается в ПЛК и в любой момент может быть вызван пользователем. Следует учитывать, что комментарии используют память программ.

Набор графических элементов языка LD включает:

1. Входы/выходы ПЛК.

2. Стандартные управляющие системные функции (таймеры, счетчики).

3. Арифметические, логические и специальные операции.

4. Внутренние переменные ПЛК.

Дискретные входы ПЛК и результаты выполнения логических операций представляются в виде условных контактов реле, нормально разомкнутых и нормально замкнутых. Дискретные выходы ПЛК или результаты выполнения данной ступени представляются в виде обмотки реле, питание на которой появляется после прохождения сигнала от левой условной шины питания через все находящиеся на ступени элементы.

Графические элементы языка LD можно условно разделить на базовые элементы, функциональные и операционные блоки. Каждый базовый элемент занимает одну ячейку (одну строку и одну колонку). Блоки могут занимать несколько ячеек. Основные элементы языка LD приведены в таблице 3.3.

 

Таблица 3.3. Основные элементы языка LD

Группа Наименование Символ Функция
Элементы условий Нормально открытый контакт –| |– Контакт замкнут, когда битовая переменная, которая управляет им, равна 1.
Нормально закрытый контакт –| / |– Контакт замкнут, когда битовая переменная, которая управляет им, равна 0.
Контакты, срабатывающие по перепаду –| P |– Возрастающий перепад: контакт замкнут, когда битовая переменная, которая управляет им, изменяется с 0 до 1.
–| N |– Убывающий перепад: контакт замкнут, когда битовая переменная, которая управляет им, изменяется с 1 до 0.

 

Продолжение таблицы 3.3

Группа Наименование Символ Функция
Элементы действия Прямая обмотка –( )– Устанавливает соответствующий битовый объект в значение, равное результату, полученному в проверочной зоне.
Обратная обмотка –( / )– Устанавливает соответствующий битовый объект в значение, равное инверсии от результата, полученного в проверочной зоне.
Устанавливающая обмотка –( S )– Устанавливает соответствующий битовый объект в 1, когда результат, полученный в проверочной зоне, равен 1.
Сбрасывающая обмотка –( R )– Сбрасывает соответствующий битовый объект в 0, если результат, полученный в проверочной зоне, равен 1.
Условный переход к другой ступени >> %Li Обеспечивает соединение с помеченной строкой.
Обмотка вызова подпрограммы –( C )– Позволяет подсоединиться к подпрограмме, если результат, полученный в проверочной зоне равен 1.
Возврат из подпрограммы <RETURN> Зарезервировано для подпрограмм, позволяет возвращаться в вызывающий модуль, когда результат, полученный в проверочной зоне, равен 1.
Останов программы <HALT> Останов выполнения программы, когда результат, полученный в проверочной зоне, равен 1.
Проверочные элементы Блоки: Таймер Счетчик Одновибратор Регистр   Каждый из блоков стандартной функции использует входы/выходы, через которые обеспечиваются связи с другими графическими элементами.
Горизонтальный блок сравнения «Compare»   Позволяет сравнивать 2 операнда. Выход принимает значение равное 1, если при сравнении получен истинный результат. (Блок может содержать до 4096 символов). Размер: 2 колонки/1 строка.
       

 

Продолжение таблицы 3.3

Группа Наименование Символ Функция
Элемент действия Операционный блок «Operate»   Выполняет арифметические, логические и другие операции, и использует синтаксис языка структурированного текста. (Блок может содержать до 4096 символов). Размер: 4 колонки/1строка

 

Ступень изображается в форме, похожей на релейные схемы. Простейшие проверочные элементы и элементы действия занимают одну строку и одну колонку ступени. Все линии контактов начинаются от левой шины питания и должны заканчиваться на правой шине питания. Предполагается, что между шинами питания протекает ток, который имеет следующее направление:

- по горизонтальным связям – слева направо,

- по вертикальным связям – в обоих направлениях.

Проверочная зона содержит: контакты, которые могут быть помечены любым, ранее определенным битовым объектом; функциональные блоки; блоки сравнения.

Возрастающие и убывающие фронты могут быть связаны только входными и выходными битовыми объектами и внутренними битами.

Зона действий содержит: прямые, инверсные, фиксирующие и инверсно-фиксирующие обмотки, которые могут быть помечены любым битовым объектом; записанные пользователем операционные блоки; другие элементы действия (Call, Jump, Halt, Return).

Операционные блоки всегда расположены в зоне действия. Внутри блока записывается выражение на языке ST. Операционный блок должен быть присоединен непосредственно к правой шине питания.

Ступени исполняются последовательно друг за другом; каждая ступень исполняется слева направо. В тех случаях, когда встречается вертикальная связь, выполняется подступень, соответствующая этой связи, и только после этого возобновляется исполнение оставшейся части ступени.

В соответствии с указанным порядком исполнения система функционирует следующим образом:

1. Оценивается логическое состояние каждого контакта, соответствующее текущему значению внутренних переменных объекта управления или состояние входов модулей ввода/вывода ПЛК, считываемых в начале сканирования.

2. Выполняются рабочие действия, соответствующие функциям, функциональным блокам и подпрограммам.

3. Обеспечиваются битовые объекты, соответствующие обмоткам (выходы модулей ввода/вывода обновляются в конце сканирования).

4. Осуществляется переход к другой помеченной ступени в данном программном модуле (переходы к другой ступени >> %Li), возврат в вызывающий модуль <RETURN> или останов программы <HALT>.

Следует также отметить, что ступень не должна содержать вложенных ступеней.