8 Мова сходової діаграми ld
Мова LD (Ladder Diagram) – графічна мова, заснована на принципах релейно-контактних схем (елементами релейно-контактної логіки є контакти, обмотки реле, вертикальні та горизонтальні перемички та ін.) з можливістю використання великої кількості різних функціональних блоків. Мова релейних схем існує з часів Т. Едісона та адаптована до ПЛК на початку 70-х років минулого століття. Символіка цієї мови була запозичена із проектування в галузі електротехніки.
Перевагами мови LD є: представлення програми у вигляді електричного потоку (близький фахівцям з електротехніки), наявність простих правил, використання лише булевих виразів. Він має велике коло користувачів, раціональне для ручної оптимізації специфічних критичних місць коду.
Структура LD-секції відповідає ступеням для дій перемикачів реле.
Об'єкти мови програмування LD забезпечують засоби структурування організаційної одиниці ПЛК (секції) в кілька контактів, котушок і FFB. Ці об'єкти взаємопов'язані через фактичні параметри чи зв'язки.
Порядок обробки індивідуальних об'єктів у LD-секції визначається потоком даних усередині секції. Щаблі, підключені до лівої шини живлення, обробляються зверху донизу (з'єднання до лівої шини живлення). Щаблі всередині секції, які залежать друг від друга, обробляються порядку розміщення.
Теоретично кожна секція може містити будь-яку кількість об'єктів, які означають будь-яку кількість входів та виходів. Однак бажано підрозділити всю програму на ряд логічних модулів, тобто на різні секції.
Секції LD можуть бути перетворені на FBD-секції за допомогою команди меню File → Export… → Program: IEC-Text для експорту в мови ST або IL, потім вониможуть бути імпортовані командою меню File → Import… → Program: IEC-Text. Перетворення FBD-секцій на LD-секції неможливе.

Рисунок 8.1 – Зображення секції LD
Для нормально розімкнених контактів (рисунок 8.2) стан лівого зв'язку передається у правий зв'язок, якщо стан пов'язаного фактичного логічного параметра ON. Інакше стан правого зв'язку OFF.
Рисунок 8.2 – Нормально розімкнений контакт
Для нормально замкнутих контактів (рисунок 8.3) стан лівого зв'язку передається правий зв'язок, якщо стан пов'язаного логічного фактичного параметра OFF. Інакше стан правого зв'язку ON.
Рисунок 8.3 – Нормально замкнутий контакт
У контактах визначення позитивних переходів (рисунок 8.4) правий зв'язок встановлюється у стан ON, якщо перехід пов'язаного фактичного параметра походить з OFF в ON, й те водночас стан лівої зв'язку ON. Інакше стан правого зв'язку OFF.
Рисунок 8.4 – Контакт визначення позитивних переходів
У контактах визначення негативних переходів (рисунок 8.5) правий зв'язок встановлюється у стан ON, якщо перехід пов'язаного фактичного параметра походить з ON в OFF, і стан лівого зв'язку ON у той самий час. Інакше стан правого зв'язку OFF.
Рисунок 8.5 – Контакт для визначення негативних переходів
У котушках (рисунок 8.6) стан лівого зв'язку передається у пов'язаний логічний фактичний параметр та правий зв'язок.
Котушки зазвичай йдуть за контактами або блоками EFB, але вони можуть супроводжуватися контактами.
Малюнок 8.6 – Котушка
В інвертуючій котушці (рисунок 8.7) стан лівого зв'язку копіюється у правий зв'язок. Інвертований стан лівого зв'язку копіюється у зв'язанийлогічний фактичний параметр. Якщо зв'язок перебуває у стані OFF, тоді правий зв'язок також перебуватиме у стані OFF і пов'язаний логічний фактичний параметр перебуватиме у стані ON.
Рисунок 8.7 – Інвертуюча котушка
У котушці установки (рисунок 8.8) стан лівого зв'язку копіюється у правий зв'язок. Пов'язаний логічний фактичний параметр встановлюється стан ON, якщо лівий зв'язок має стан ON, інакше він не змінюється. Пов'язаний фактичний логічний параметр може скидатися тільки котушкою скидання.
Малюнок 8.8 – Котушка установки
У котушці скидання (рисунок 8.9) стан лівого зв'язку копіюється у правий зв'язок. Пов'язаний логічний фактичний параметр встановлюється стан OFF, якщо лівий зв'язок має стан ON, інакше він не змінюється. Пов'язаний фактичний логічний параметр може встановлюватися тільки котушкою установки.
Малюнок 8.9 – Котушка скидання
У котушці для визначення позитивних переходів (рисунок 8.10) стан лівого зв'язку копіюється у правий зв'язок. Пов'язаний фактичний параметр типу даних BOOL буде встановлено стан ON для циклу програми, якщо стався перехід лівого зв'язку з OFF в ON.
Малюнок 7810 – Котушка виявлення передніх фронтів
У котушці визначення негативних переходів (рисунок 8.11) стан лівої зв'язку копіюється у правий зв'язок. Пов'язаний фактичний параметр типу даних BOOL буде встановлено стан ON для циклу програми, якщо відбувся перехід лівого зв'язку з ON в OFF.
Малюнок 8.11 – Котушка виявлення задніх фронтів
FFB будуть редагуватися, тільки якщо принаймні один булевий вхід з'єднаний з лівою шиною живлення. Якщо FFB немає булева входу, повинен використовуватися EN вхід FFB. Якщо FFBповинен бути виконаний за умовою, булев вхід може бути попередньо з'єднаний через контакти або інші FFB.
Кожен FFB без булевого зв'язку з лівою шиною живлення викликає повідомлення про помилки при завантаженні в ПЛК. На малюнку 8.12 наведено приклад використання FFB у мові LD.

Якщо під час виклику FFB значення EN дорівнює ”0”, алгоритми, визначені FFB не виконуватимуться. У цьому випадку значення ENO автоматично встановлюється у ”0”.
Якщо під час виклику FFB значення EN дорівнює ”1”, алгоритми, визначені FFB, будуть виконані. Після того, як ці алгоритми виконалися без помилки, значення ENO автоматично встановлюється у ”1”. Якщо відбувається помилка під час виконання цих алгоритмів, ENO буде встановлено у ”0”.
Поведінка виходу FFB залежить від FFB, викликаного без EN/ENO чи з EN=1.
EFB AND_BOOL, NOT_BOOL, OR_BOOL, R_TRIG та F_TRIG недоступні в LD. Їхні функціональні можливості реалізуються за допомогою контактів. EFB MOVE не можна використовувати з типом даних BOOL.
Для контактів та котушок типом даних фактичного параметра має бути тип даних BOOL. На входах/виходах FFB типи даних фактичних параметрів мають відповідати типу даних вводу/виводу. Єдиним винятком є узагальнені входи/виходи FFB, де тип даних визначається формальним параметром.
Зв'язок.Зв'язками є з'єднання між контактами, котушками та блоками FFB. Декілька зв'язків можуть бути з'єднані з контактом, котушкою або виходом FFB. Пункти будь-якої такої сполуки відзначаються жирною точкою.
Типи даних з'єднаних входів/виходів мають збігатися.
Зв'язки можуть бути відредаговані як Select. Дозволяється перекриття іншими об'єктами.
При розміщенні контактів та котушокгоризонтальнізв'язкиавтоматично зв'язуються з суміжними, незв'язаними контактами або котушками, якщо контакти або котушки та входи/виходи FFB знаходяться на тій самій вертикалі. Зв'язок із шиною живлення буде встановлений, тільки якщо контакт розташований поблизу. Якщо котушка або контакт поміщені на горизонтальний зв'язок, що вже існує, він буде автоматично розірваний, і контакт або котушка вставлені (це не застосовується до команди Move). При розміщенні фактичних параметрів можуть накладатися на інший об'єкт, але не порушувати рамки кадру секції. Якщо з'єднання з іншим об'єктом встановлено через один зв'язок, цей зв'язок буде перевірено. Якщо з'єднання не дозволене, з'являється повідомлення і зв'язок не буде згенерований.
При видаленні контактів або котушок будь-які приєднані контакти або котушки також будуть видалені. Ті самі умови використовуються тут при їх розміщенні.
Зв'язки не можуть використовуватися для конфігурації контурів, тому що неможливо однозначно визначити порядок обробки в секції. Контури мають бути створені за допомогою фактичних параметрів.
Горизонтальні зв'язки автоматично встановлюються після розміщення.
Приватним випадком зв'язку є вертикальний зв'язок. Вертикальний зв'язок використовується як логічне АБО. Ця форма зв'язування по АБО дозволяє зв'язати 32 входи (контакту) та 64 виходи (котушок, зв'язків).
Інтерактивні функції.Редактор LD пропонує два режими анімації:
анімація двійкових змінних та зв'язків;
анімація вибраних об'єктів.
Ці режими також доступні, коли відображається блок DFB.
Якщо ліва шина живлення, контакт, котушка, зв'язок червоного кольору, ліва шина живлення, контакт, котушка, зв'язок (двійкова) відповідно мають значення 0.
Якщо ліва шинаживлення, контакт, котушка, зв'язок зеленого кольору, то ліва шина живлення, контакт, котушка, зв'язок (двійковий) відповідно мають значення 1.
Зв'язок жовтого кольору передає багатоелементну змінну (відображення значень викликається подвійним клацанням: миші зв'язку).
Змінна з жовтим тлом – багатоелементна змінна (відображення значень із подвійним клацанням на змінній).
Числове значення на вході/виході FFB (жовтий фон) – поточне значення змінних.
Числове значення зв'язку (жовтий фон) – значення, нині передане зв'язком.
Вибрані об'єкти залишаються вибраними навіть після подачі іншої команди Animate selected, щоб підтримати ці об'єкти для майбутнього читання або простої зміни об'єктної роздруківки.
Сигнальні стани двійкових зв'язків також можуть відображатися за допомогою команди Online → Animate booleans.