IL (Instruction List)
Последнее изменение этой страницы: 02:46, 22 мая 2016.
Парадигма | императивный, структурированный |
---|---|
Спроектировано | IEC |
Первый появившийся | 1993 |
Портал: | Instruction List |
Instruction List (IL) - это один из 5 языков поддерживаемых стандартом IEC 61131-3. Он разработан для программируемых логических контроллеров. Это низкоуровневый язык, который по синтаксису напоминает ассемблер. Все пять языков используют общие элементы из стандарта IEC61131. Переменные и вызовы функций определены через общие элементы, таким образом в одной программе могут быть использованы разные языки.
Содержание
Синтаксис
Программы написанные на языке Instruction list это последовательности высказований. Высказования состоят из операторов и операндов, которые могут быть переменными, константами или метками. Кроме того, программы могут дополняться комментариями.
Некоторые операторы могут быть дополнены модификаторами. Существует два модификатора: N и C. Модификатор N изменяет операцию на такую же с отрицательным аргументом, т.е. отрицательным значением операнда. Операторы, дополненные модификатором C, исполняются только при условии, что значение CR истинно. Использование скобок позволяет заставить подвыражения вычисляться первыми, следовательно, избежать вспомогательные переменные или дополнительные операции загрузки/сохранения.
Инструкция | Описание |
---|---|
LD | загрузить операнд |
ST | сохранить операнд |
S | установить операнд в значение истина |
R | установить операнд в значение ложь |
NOT | Логическое отрицание |
AND | Логическое И |
OR | Логическое ИЛИ |
XOR | Логическое XOR |
ADD | сложение |
SUB | вычитание |
MUL | умножение |
DIV | целочисленное деление |
GT | больше чем |
GE | больше либо равно |
LT | меньше чем |
LE | меньше либо равно |
EQ | проверка на равенство |
NE | проверка на неравенство |
JMP | перейти к метке |
RET | вернуться из функции (блока) |
Типы данных
Типизирование данных является общим элементом стандарта с целью предотвращения ошибок на ранней стадии разработки. Оно определяет типы параметров, которые будут использоваться и помогает избежать ошибки, такие как деление даты на целое число. Поддерживаются такие типы данных как: Boolean, Integer, Real, Byte, Word, Date, Time-of-Day и String.
- Bit Strings - группы бит
- BIT - 1 бит
- BYTE - 8 бит (1 байт)
- WORD - 16 бит (2 байт)
- DWORD - 32 бит (4 байт)
- LWORD - 64 бит (8 байт)
- INTEGER - целые числа
- SINT - короткое целое число со знаком (1 байт)
- INT - целое число со знаком (2 байт)
- DINT - двойное целое число со знаком (4 байт)
- LINT - длинное целое число (8 байт)
- U - префикс для типов, делающий их беззнаковыми
- REAL - числа с плавающей точкой
- REAL - (4 байт)
- LREAL - (8 байт)
- TIME - длительность таймеров, процессов.
- Дата и время дня:
- DATE - календарная дата
- TIME_OF_DAY - время
- DATE_AND_TIME: время и дата
- STRING - символьные строки окруженные одиночными кавычками. character strings surrounded by single quotes. Для экранирование символов используется знак доллара.
- WSTRING - многобайтовые строки.
- Arrays - несколько значений, хранящихся в одной переменной.
- Sub Ranges - ставит ограничение на значения
- Derived - тип полученный из одного из указанных выше типов.
- TYPE - простой тип
- STRUCT - композит нескольких переменных и типов.
- Generic - группы указанных типов:
- ANY
- ANY_DERIVED
- ANY_ELEMENTARY
- ANY_MAGNITUDE
- ANY_NUM - LREAL, REAL
- ANY_INT - LINT, DINT, INT, SINT, ULINT, UDINT, UINT, USINT
- ANY_BIT - LWORD, DWORD, WORD, BYTE, BOOL
- ANY_STRING - STRING, WSTRING
- ANY_DATE - DATE, TOD, DT
- ANY
Последовательность | Результат |
---|---|
$$ | $ |
$' | ' |
$L | перевод строки |
$N | новая строка |
$P | страница |
$R | возврат |
$T | табуляция |
$xx | шестнадцатеричное значение |
Переменные
Атрибуты переменных: RETAIN, CONSTANT, AT
- Глобальные
- Локальные
- Отображение ввода/вывода
- Внешние
- Временные
Конфигурация
На самом высоком уровне, требуемое программное обеспечение для решения конкретной проблемы управления может быть названо конфигурацией. Конфигурация определяется для конкретного типа системы управления, в том числе распределения аппаратных средств, т.е. средств обработки, адресов памяти для каналов ввода / вывода и возможностей системы.
В конфигурации можно определить ресурсы. Ресурс можно рассматривать как объект обработки, которые способны выполнять программы. В пределах ресурса можно определить одну или несколько задач. Задачи контролируют выполнение набора программ и / или функциональных блоков. Они могут или выполняться периодически, или при наступлении определенного триггера.
Блоки, организующие программу
- Функции
- Стандартные: ADD, SQRT, SIN, COS, GT, MIN, MAX, AND, OR, etc.
- Специальные
- Функциональные блоки
- Стандартные
- Специальные - Библиотеки функций могут поставляться поставщиком или третьей стороной.
- Программы.
Примеры кода
Программа сохраняет значение 4000 в ячейке памяти, и значение 41 в другой ячейке. Делит первое на второе и сохраняет результат в память.
LD SM 0.1
MOVD #4000 , VD200 (* Сохранить 4000 по адресу VD200 *)
LD SM 0.1
MOVW #41 , VW10 (* Сохранить 41 по адресу VW10 *)
LD SM 0.1
DIV VW10 , VD200 (* Разделить значение по адресу VD200 на значение VW10 сохранить результат по адресу VW200 *)
Программа увеличивает счетчик на единицу каждый тик генератора SM0.4 и уменьшает другой счетчик каждый тик того же генератора.
LD SM 0.1
MOVD #0 , VW100 (* Сохранить 0 по адресу VW100 *)
MOVD #10 , VW110 (* Сохранить 10 по адресу VW110 *)
LD SM 0.4 (* Генератор *)
EU
INCW VW100 (* Инкремент VW100 *)
DECW VW100 (* Декремент VW110 *)
MEND
References
- IEC 61131-3:2013 Programmable controllers - Part 3: Programming languages
- IEC 61131-3 Protocol Overview
- Статья в википедии
- Semantics and Analysis of Instruction List Programs
Автор статьи: Фадеев П.В.
ISSN 2542-0356
Следуй за Полисом
Оставайся в курсе последних событий
Лицензия
Если не указано иное, содержание этой страницы доступно по лицензии Creative Commons «Attribution-NonCommercial-NoDerivatives» 4.0, а примеры кода – по лицензии Apache 2.0. Подробнее см. Условия использования.