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:

ОператорДопустимі модифікаториФункція оператора
LDNЗавантажити значення операнда в акумулятор
STNПрисвоїти значення акумулятора операнду
SЯкщо значення акумулятора TRUE, встановити логічний операнд
RЯкщо значення акумулятора FALSE, скинути логічний операнд
ANDN, (Порозрядне І (логічне множення) акумулятора і операнда
ORN, (Порозрядне АБО (логічне додавання) акумулятора і операнда
XORN, (Порозрядне виключне АБО акумулятора і операнда
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) записується в акумулятор
JMPC, CNПерехід до мітки
CALC, CNВиклик програмного або функційного блоку
RETC, 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
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.