Instruction list
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:
Примітки
- 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