Instruction list

мова програмування стандарту IEC 61131-3
(Перенаправлено з IL)

IL (Instruction List) або список інструкцій — мова програмування стандарту IEC 61131-3[1]. Призначена для програмування промислових контролерів. За синтаксисом є близькою до мови асемблера. Використовується на виробництві для програмування автоматизованих систем керування технологічними процесами та систем промислової автоматизації.

Основні принципи мовиРедагувати

У основі мови лежить поняття акумулятора (у стандарті IEC використовується термін англ. result — результат) як місця зберігання поточного значення (результату) та переходів по мітках. Починається програма із завантаження в акумулятор значення змінної. Подальші кроки програми полягають в отриманні вмісту акумулятора і виконанні над ним обмеженого числа визначених операцій.

Кожна інструкція починається з нового рядка і може містити чотири поля, розділені табуляцією: мітку, оператор з модифікатором, за яким приводиться операнд і далі, коментар. Компілятор є не чутливим до регістра (інструкції ADD A і Add a є рівнозначними).

Більшість інструкцій виконують стосовно вмісту акумулятора відповідну дію, визначену оператором (з використанням операнда) і результат поміщають в акумулятор. Команди переходу на мітку здатні аналізувати вміст акумулятора і приймати рішення: виконувати перехід чи ні. Акумулятор може приймати дані будь-якого типу.

Під модифікатором маються на увазі літери N, C, які приписуються справа до імені деяких операторів. Модифікатор N означає логічне заперечення (обернене значення чи інверсію) операнда, C означає, що інструкція виконується, якщо результат попередньої операції порівняння TRUE.

Як операнди можуть виступати:

  • змінні;
  • константи;
  • ім'я мітки;
  • ім'я оператора (функції).

Приклад: Лінійне перетворення Y(x)=A*x+B запишеться так:

LD   x
MUL  A
ADD  B
ST   Y

Послідовний порядок виконання інструкцій IL можна змінити за допомогою дужок. Відкривальна дужка ставиться після оператора а закривальна дужка ставиться в окремому рядку. Інструкції в дужках виконуються у першу чергу з поміщенням результату у допоміжний акумулятор, після чого виконується оператор, що має відкривальну дужку.

Приклад: Обчислення виразу Y=5*(2-1) запишеться так:

LD  5
MUL  (2
SUB  1
)
ST  Y

Інструкції можна доповнювати коментарями, що подаються у форматі: (*коментар*).

Оператори мови ILРедагувати

Стандартні оператори IL:

Оператор Допустимі модифікатори Функція оператора
LD N Завантажити значення операнда в акумулятор
ST N Присвоїти значення акумулятора операнду
S Якщо значення акумулятора TRUE, встановити логічний операнд
R Якщо значення акумулятора FALSE, скинути логічний операнд
AND N, ( Порозрядне І (логічне множення) акумулятора і операнда
OR N, ( Порозрядне АБО (логічне додавання) акумулятора і операнда
XOR N, ( Порозрядне виключне АБО акумулятора і операнда
NOT Порозрядна інверсія акумулятора
ADD ( Додавання вмісту акумулятора та операнда, результат записується в акумулятор
SUB ( Віднімання операнда від вмісту акумулятора, результат записується в акумулятор
MUL ( Множення вмісту акумулятора на операнд, результат записується в акумулятор
DIV ( Ділення вмісту акумулятора на операнд, результат записується в акумулятор
MOD ( Ділення по модулю
GT ( Значення акумулятора порівнюється із значенням операнда (> або англ. greater than). Результат порівняння (TRUE або FALSE) записується в акумулятор
GE ( Значення акумулятора порівнюється із значенням операнда (>= або англ. greater than or equal). Результат порівняння (TRUE або FALSE) записується в акумулятор
EQ ( Значення акумулятора порівнюється із значенням операнда (= або англ. equal). Результат порівняння (TRUE або FALSE) записується в акумулятор
NE ( Значення акумулятора порівнюється із значенням операнда (<> або англ. not equal). Результат порівняння (TRUE або FALSE) записується в акумулятор
LE ( Значення акумулятора порівнюється із значенням операнда (<= або англ. less than or equal). Результат порівняння (TRUE або FALSE) записується в акумулятор
LT ( Значення акумулятора порівнюється із значенням операнда (< або англ. less than). Результат порівняння (TRUE або FALSE) записується в акумулятор
JMP C, CN Перехід до мітки
CAL C, CN Виклик програмного або функційного блоку
RET C, CN Вихід з програмного або функційного блоку й повернення в основну програму

Див. такожРедагувати

Інші мови програмування стандарту IEC 61131-3:

  • FBD (англ. Function Block Diagram) — функціональні блокові діаграми;
  • SFC (англ. Sequential Function Chart) — мова діаграм станів;
  • ST (англ. Structured Text) — структурований текст.
  • LD (англ. Ladder Diagram) — релейно-контактні схеми

ПриміткиРедагувати

  1. IEC 61131-3:2013 Programmable controllers — Part 3: Programming languages.

ДжерелаРедагувати

  • Мишель Ж. Программируемые контроллеры: Архитектура и применение: пер. с фр. / Ж. Мишель ; Переводчик И. В. Федотов ; Ред. Б. И. Лыткин . — М. : Машиностроение, 1992 . — 320 . — ISBN 5-217-00974-8
  • Э. Парр. Программируемые контроллеры: руководство для инженера. — М.: БИНОМ. Лаборатория знаний, 2007. — 516 с. — ISBN 978-5-94774-340-1
  • Петров И. В. Программируемые контроллеры. Стандартные языки и приёмы прикладного проектирования / Под ред. проф. В. П. Дьяконова. — М.: СОЛОН-Пресс, 2004. — 256 c. — ISBN 5-98003-079-4