Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Раздел 2. Методы программирования контроллеров.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
1.66 Mб
Скачать

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