Мы продолжаем изучать программирование ПЛК ОВЕН в универсальной среде программирования CoDeSys. В этой публикации представлены модификаторы и операторы языка IL (список инструкций). С предыдущей публикацией по программированию ПЛК, посвященной знакомству с языками программирования, с использованием которых можно писать программы в CoDeSys, можно ознакомиться здесь.
Язык IL (Instruction List) — список инструкций. Это типичный ассемблер с аккумулятором и переходами по меткам. Набор инструкций стандартизован и не зависит от конкретной целевой платформы. Поскольку IL самый простой в реализации язык, он получил очень широкое распространение до принятия стандарта МЭК. Язык IL позволяет работать с любыми типами данных, вызывать функции и функциональные блоки, реализованные на любом языке. Таким образом, на IL можно реализовать алгоритм любой сложности, хотя текст будет достаточно громоздким.
Общие сведения
Текст на IL — это текстовый список последовательных инструкций. Каждая инструкция записывается на отдельной строке. Инструкция может включать четыре поля, разделенные пробелами или знаками табуляции:
Метка: | Оператор | Операнд | Комментарий |
Метка инструкции не является обязательной, она ставится только там, где нужно. Оператор присутствует обязательно. Операнд необходим почти всегда. Комментарий — необязательное поле, записывается в конце строки. Ставить комментарии между полями инструкции нельзя.
Аккумулятор IL является универсальным контейнером, способным сохранять значения переменных любого типа. Команды сравнения сравнивают значение операнда и аккумулятора, результат сравнения ИСТИНА или ЛОЖЬ вновь помещается в аккумулятор.
Программа на IL выполняется подряд, сверху вниз. Для изменения порядка выполнения и организации циклов применяется переход на метку. Переход на метку может быть безусловным JMP — выполняется всегда, независимо от чего-либо. Условный переход JMPC выполняется только при значении аккумулятора ИСТИНА. Переход можно выполнять как вверх, так и вниз.
Пример IL-программы:
LD | 17 | (*комментарий*) | |
ST | lint | ||
GE | 5 | ||
JMPC | next | ||
LD | idword | ||
EQ | istruct.sdword | ||
STN | test | ||
next: |
Модификаторы и операторы языка IL
В IL можно использовать следующие операторы и модификаторы.
Модификаторы
Модификаторы | С какими операторами используются | Описание действия |
---|---|---|
С | с JMP, CAL, RET: | инструкция выполняется только тогда, когда результат аккумулятора ИСТИНА. |
N | с JMPC, CALC, RETC: | инструкция выполняется тогда, когда результат аккумулятора ЛОЖЬ. |
N | в других случаях: | отрицание операнда. |
Операторы IL
Ниже приведена таблица всех операторов IL с пояснениями и допустимыми модификаторами.
Оператор | Модификатор | Значение |
---|---|---|
LD | N | Присвоение аккумулятору значения оператора |
ST | N | Присвоение значения аккумулятора операнду |
S | Присвоить логическому операнду значение ИСТИНА, если значение аккумулятора ИСТИНА | |
R | Присвоить логическому операнду значение ЛОЖЬ | |
AND | N, ( | Побитное И |
OR | N, ( | Побитное ИЛИ |
XOR | N, ( | Побитное исключающее ИЛИ |
ADD | ( | Сложение |
SUB | ( | Вычитание |
MUL | ( | Умножение |
DTV | ( | Деление |
GT | ( | Сравнение на больше (>) |
GE | ( | Сравнение на больше или равно (>=) |
QE | ( | Сравнение на равенство (=) |
NE | ( | Сравнение на неравенство (<>) |
LE | ( | Сравнение на меньше или равно (<=) |
LT | ( | Сравнение на меньше (<) |
JMP | CN | Переход к метке |
CAL | CN | Вызов функционального блока |
RET | CN | Выход из POU и возврат в вызывающую программу |
) | Вычисление задержанной операции |
Пример IL программы с использованием некоторых модификаторов:
LD | TRUE | (*загрузить значение ИСТИНА в аккумулятор*) |
AND | BOOL1 | (*выполнить И с инверсным значением переменной BOOL1*) |
JMPC | mark | (*если значение аккумулятора ИСТИНА, то перейти к метке ” mark”*) |
LDN | BOOL2 | (*сохранить инверсное значение BOOL2 в аккумуляторе*) |
ST | ERG | (*сохранить значение аккумулятора в ERG*) |
После оператора можно поставить скобки, тогда значение выражения внутри скобок рассматривается как операнд. Например:
Здесь значение ERG равно 7 | Здесь значение переменной ERG равно 10 | |
LD 2 | LD 2 | |
MUL 2 | MUL (2 | |
ADD 3 | ADD 3 | |
ST ERG | ) | |
ST ERG |
Операция MUL выполняется только тогда, когда программа доходит до “)”. В качестве операнда MUL использует значение 5.
В этой статье мы познакомились с модификаторами и операторами языка IL, используемыми в проектах CoDeSys. На следующем уроке начнем разбираться с операторами языка программирования ST (структурированный текст), используемыми в проектах CoDeSys.