- •Предисловие
- •Введение
- •1. Основные особенности языков программирования
- •2. Язык функциональных блок-схем - fbd
- •2.1. Основные понятия
- •1.2. Функции и функциональные блоки
- •Группа «Arithmetic»
- •2.3. Пример программы на языке fbd
- •3.1. Контакты
- •3.2. Катушки
- •3. Язык лестничных схем – ld
- •3.4. Функции и функциональные блоки
- •3.5. Пример программы на языке ld
- •4. Язык последовательных функциональных схем – sfc
- •4.1. Описание элементов sfc
- •4.2 Задание свойств шага
- •4.3 Задание действий
- •4.4. Переход
- •4.5. Пример программы на языке sfc
- •5. Язык структурированного текста – st
- •5.1. Операторы
- •Описание операторов
- •5.2. Примеры использования операторов в простых инструкциях
- •5.3. Сложные инструкции
- •5.4. Использование функций и функциональных блоков
- •5.5. Примеры программ на языке st
- •5.6. Пример программы на языках sfc и st
- •6. Язык списка инструкций – il
- •6.1. Операторы и модификаторы
- •Описание операторов
- •Описание модификаторов
- •6.2. Примеры выполнения инструкций
- •6.3. Использование функций и функциональных блоков
- •6.4. Пример программы на языке il
- •Заключение
- •Библиографический список
- •Оглавление
- •Языки программирования в среде Concept
- •443100, Г. Самара, ул. Молодогвардейская, 244. Главный корпус
- •443100, Г. Самара, ул. Молодогвардейская, 244. Корпус 8
6. Язык списка инструкций – il
Программа на языке программирования IL (Instruction List) состоит из последовательности инструкций (команд). Каждая инструкция размещается в отдельной строке и состоит из разделенных пробелами метки (необязательно), оператора (если необходимо, с модификатором), одного или более операндов и комментария (необязательно). Комментарии должны быть заключены в скобки со звездочками (*…*).
IL аккумуляторно-ориентированный язык. Аккумулятор это неявно-адресуемая область памяти PLC. Каждая инструкция неявно использует аккумулятор для хранения операндов и результатов выполнения операции. По этой причине список инструкций начинается с команды LD – загрузить в аккумулятор.
Аккумулятор автоматически подстраивается под тип загружаемого операнда. При выполнении операций с содержимым аккумулятора операнд и текущее содержимое аккумулятора должны быть одного типа данных.
Аккумуляторов может быть несколько. Их количество ограничивается только объемом памяти ПЛК.
Пример: Переменной Fan присвоить значение лог. произведения переменных Key1 и отрицания Key2.
Метка Опе- Опе- Комментарии
раторы ранды
START: LD Key1 (* Загрузка в аккумулятор значения *)
(* переменной Key1*)
ANDN Key2 (* В аккумуляторе значение лог.*)
(*
произведения
*)
ST Fan (* Переменной Fan присваивается *)
(* значение аккумулятора *)
В примере метка START является адресом перехода.
Операторы (в примере – LD, AND и ST) являются символами операций над операндами.
Модификатор (в примере – N) изменяет операцию.
Операндом (в примере - Key1, Key2 и Fan) может быть адрес, литерал, переменная, многоэлементная переменная, элемент многоэлементной переменной выход или вызов EFB/DFB.
Инструкции выполняются одна за другой сверху вниз. Последовательность выполнения инструкций может быть изменена модификаторами. Длина строки инструкции ограничена 300 символами. Длина IL секции ограничена только размером памяти PLC.
6.1. Операторы и модификаторы
Операторы это символы различных операций над операндами. Операторы делятся на операторы загрузки/сохранения, установки/сброса, операторы логических и арифметических операций, операторы операций сравнения, операторы вызова/возврата подпрограмм и пр. Список операторов приведен в табл. 6.1.
Модификаторы влияют на выполнение операторов. Список модификаторов и их описание приведен в табл. 6.2.
Таблица 6.1
Описание операторов
Оператор |
Возможный идентификатор |
Описание оператора |
Возможные операнды |
LD |
N |
Загружает значение операнда в аккумулятор |
Литерал, переменная, прямой адрес типа данных ANY |
ST |
N |
Сохраняет значение аккумулятора в операнде |
Переменная, прямой адрес типа данных ANY |
S |
|
Устанавливает операнд в 1, если содержимое аккумулятора - 1 |
Переменная, прямой адрес типа данных BOOL |
R |
|
Устанавливает операнд в 0, если содержимое аккумулятора - 1 |
Продолжение таблицы 6.1
Оператор |
Возможный идентификатор |
Описание оператора |
Возможные операнды |
AND |
N, N(, (
|
Логическое И |
Литерал, переменная, прямой адрес типа данных ANY_BIT |
OR |
N, N(, (
|
Логическое ИЛИ |
|
XOR |
N, N(, ( |
Логическое исключающее ИЛИ |
|
ADD |
( |
Сложение |
Литерал, переменная, прямой адрес типа данных ANY_NUM или TIME |
SUB |
( |
Вычитание |
|
MUL |
( |
Умножение |
|
DIV |
( |
Деление |
|
GT |
( |
Сравнение: > |
Литерал, переменная, прямой адрес типа данных ANY_ELEM |
GE |
( |
Сравнение: >= |
|
EQ |
( |
Сравнение: = |
|
NE |
( |
Сравнение: <> |
|
LE |
( |
Сравнение: <= |
|
LT |
( |
Сравнение: < |
|
JMP |
C, CN |
Прыжок на метку |
Метка |
CAL |
C, CN |
Вызов функционального блока или DFB |
FBNAME (имя экземпляра) |
FUNCNAME |
|
Выполнение функции |
Литерал, переменная, прямой адрес (тип данных подчинен функции) |
) |
|
Редактирование отсроченных действий |
|
Таблица 6.2
