
- •Раздел 2. Программирование контроллеров 2
- •Раздел 2. Программирование контроллеров
- •2.1. Системное и прикладное программное обеспечение
- •2.2. Ос реального времени.
- •2.3. Рабочий цикл и время реакции плк
- •2.4. Классификация методов разработки по контроллеров
- •2.5. Стандарт iec 61131-3.
- •2.6. Инструментальная система программирования контроллеров iSaGraf.
- •2.7. Данные и переменные в iSaGraf
- •2.8. Языки программирования контроллеров
- •2.8.1. Язык sfc.
- •2.8.1.1. Основные графические компоненты языка.
- •2.8.1.2. Динамические правила языка sfc.
- •2.8.1.3. Описание действий внутри шагов.
- •2.8.1.4. Описание условий прикрепленных к переходу.
- •2.8.2. Язык fbd.
- •2.8.3. Язык ld.
- •2.8..4 Язык st.
- •2.8.5. Язык il
- •2.9. Программирование задач логического управления на стандартных языках.
- •2.10. Последовательность создания прикладных программ в системе iSaGraf.
- •2.11 Повторное использование кода в iSaGraf
- •2.11.1. Типы программных модулей
- •2.11.2. Определение интерфейса программных модулей
- •2.11.3. Словарь локальных переменных
- •2.11.4. Вызов программного модуля
- •2.11.4.1. Вызов функций и подпрограмм
- •2.11.4.2. Вызов функциональных блоков
- •2.11.5. Управление программами-потомками на языке sfc.
- •2.12. Библиотека iSaGraf
2.8.5. Язык il
Основной синтаксис языка IL.
Программа на языке IL — это список команд. Каждая команда должна начинаться с новой строки, и должна содержать оператор, заканчивающийся необязательными модификаторами и, если необходимо, для ряда операций одним или более операндами, разделёнными запятой (“.”).
Перед командой может располагаться метка, за которой следует двоеточие (“:”). Если для этой команды есть комментарий, он должен быть последним компонентом в строке. Комментарий всегда начинается с ‘(*’ и заканчивается ‘*)’.
Между командами можно вводить пустые строки. Комментарии могут располагаться в пустых строках.
Н
еобязательная метка Label (без пробела между label и :).
Необязательный комментарий (последний компонент строки).
Необязательный модификатор операции.
Без пробелов между именем операции и модификатором.
Операнд может быть переменной, постоянным выражением или именем метки (той же программы).
Несколько оперндов разделяются запятыми.
Операнды не могут быть массивами или структурами
Команды всегда работают с регистром IL (или аккумулятором). Оператор указывает операцию, которая должна быть выполнена между аккумулятором и операндом. Результат операции снова запоминается в аккумулятором.
Инструкция Instruction List: Operation Operand эквивалентна: Accu := Accu <operation> operand;
Операторы
LD / ST Загрузка операнда в аккумулятор / выгрузка аккумулятора в операнд
In ST my_fct := var1;
In IL LD boo1
ST my_fct
AND / OR / XOR / NOT Операторы BOOLEAN
ADD / SUB / MUL / DIV Операторы Analog или Timer
GT / GE / EQ / LE / LT Сравнения (>,>=,=,<>,<=,<)
JMP Переход к метке
CAL <function> Вызовы функций и функциональных блоков
RET Возврат в вызывающую программу
) выполнение отсроченной команды
Общий список операторов языка IL.
Опера-тор |
Модифи-каторы |
Операнд |
Описание |
LD |
N |
Переменная, константа |
Загружает операнд |
ST |
N |
Переменная |
Запоминает текущий результат |
S R |
|
булева переменная булева переменная |
Устанавливает в TRUE Сбрасывает в FALSE |
AND & OR XOR |
N ( N ( N ( N ( |
булева булева булева булева |
булево “И” булево “И” булево “ИЛИ” Исключающее “ИЛИ” |
ADD SUB MUL DIV |
( ( ( ( |
аналоговый или таймерный аналоговый или таймерный аналоговый или таймерный аналоговый или таймерный |
сложение вычитание умножение деление |
GT GE EQ LE LT |
( ( ( ( ( |
аналоговый или таймерный аналоговый или таймерный аналоговый или таймерный аналоговый или таймерный аналоговый или таймерный |
больше больше или равно равно меньше или равно меньше |
JMP RET |
C N C N |
Метка |
Длинный переход к метке Возврат из подпрограммы |
) |
|
|
Выполняет отложенную операцию |
Модификаторы операторов
N Булево отрицание оператора: ANDN IX12 в ST означает: Accu := Accu AND NOT (IX12);
( Отсроченная команда.
C Условная инструкция
JMPC LABEL1 означает: IF Accu THEN JMP LABEL1.
JMPNC LABEL1 означает: IF NOT Accu THEN JMP LABEL1.
Отсроченные команды
Используются, чтобы отложить выполнение команды
Модификатор ( указывает, что команда будет отложена
Оператор ) выполняет отложенную команду.
Например: AND( IX12 OR IX35) выполняется как: Accu := Accu AND (IX12 OR IX35);
Ограничения.
Вложенность отложенных операций не может быть больше 32.
Пример программы
start_cmd: LD bi101
ADD 10
mul_ope: MUL( interm_bcmd
SUB bo100
)
ST bcmd
GT top_level
JMPNC mul_ope