BREAK
REPEAT
END_WHILE
END_IF
ELSE
THEN
IF
Операторы циклов, условных и безусловных переходов, условный оператор.
Метки
Функции
В Техно IL существует два типа функций. Первые из них выполняют вычисления над значением указанного для них операнда и присваивают результат ему же (синус, косинус и т.д.). Если указать два операнда, то функция применяется к значению второго операнда, а результат запишется в первый. Эти функции имеют следующий синтаксис:
<функция> <операнд1> [<операнд2>]
Второй тип – это функции времени.(например TM.SEC - - текущая астрономическая секунда;)Они формируют значение операнда и имеют следующий синтаксис
<операнд1> = <функция>
могут вставляться перед любой инструкцией программы и предназначены для реализации условных и безусловных переходов и Они не влияют на выполнение инструкций и имеют синтаксис:
Mn:
где
n – номер метки.
При ссылках на метку символ: должен отсутствовать.
|
|
Количество меток, для программ типа FB, не больше 5, а ДЛЯ PRG – 40.
Операторы безусловных переходов
осуществляет переход на указанную метку, независимо ни от каких условий. синтаксис:
JMP <метка>
вместо JMP использовать обозначение GOTO.
Операторы условных переходов
Техно IL поддерживает три оператора условных переходов. Они имеют следующий синтаксис:
JMPC <метка>
JMPN <метка>
JMPX <метка>
Первый из них осуществляет переход на указанную метку при значении истина переменной CMP, второй – при значении ложь, а последний – значение аккумулятора отличном от 0. Вместо JMP можно писать GOTO.
Условный оператор
синтаксис:
<текст программы>
<текст программы>
<текст программы>
Текст программы между словами IF и THEN должен содержать операции, формирующие значение переменной CMP. Она анализируется после выполнения этого фрагмента. В случае истинности выполняется фрагмент программы между THEN и ELSE. В противном случае - между ELSE и END_IF.
Операторы циклов
существует два оператора циклов, оператор с предварительной проверкой завершения цикла и оператор с последующей проверкой завершения цикла.
Первый оператор:
WHILE <операнд>
<текст программы>
Здесь фрагмент программы между строками начала и конца цикла будет выполняться, пока значение операнда не станет равно 0.
Второй оператор цикла проверяет значения операнда на равенство 0 не в его начале, а в конце цикла.
<текст программы>
UNTIL <операнд>
Для принудительного выхода из цикла служит оператор
При его выполнении работа цикла завершается и выполняется следующая после цикла инструкция.
|
|
Операторы подстановки имен переменных, обмена с аккумулятором; завершения программы
Оператор #DEFINE
Позволяет использовать в тексте IL-программы любые имена для входных и выходных переменных типа I и Q.
Оператор #DEFINE имеет следующий синтаксис:
#DEFINE <операнд> <name>,
где
операнд – имя переменной в терминах идентификаторов I и Q,
name – мнемоническое имя. В
пример
#define I0 LEVEL
#define Q0 REG
в метапрограммах рассматриваемый оператор не применяется.
Операторы обмена с аккумулятором
Предназначены для обмена данными с переменной result (аккумулятор).
LD <операнд>
ST <операнд>
LD записывает в аккумулятор значение операнда. ST – копирует значение аккумулятора в указанный операнд.
Оператор завершения программы
оператор предназначен для завершения программы. Имеет следующий синтаксис:
EXIT [1]
Наличие после оператора цифры 1 для программ типа FB является указанием не изменять значения выходов при завершении. В программах типа PRG наличие 1 после оператора EXIT игнорируется.
Операторы обмена с файлами данных; вызова функциональных блоков, работы с таймерами
Операторы обмена с файлами данных
Техно IL позволяет формировать значения переменных типа W, считывая их из файлов, и сохранять их в файлы. Для этого предусмотрены три оператора.
READ < операнд1 > < операнд2 >
WRITE < операнд1 > < операнд2 >
PRINT < операнд1 > < операнд2 >
Оператор READ предназначен для считывания переменных типа W из файла. При выполнении этого оператора считываются переменные, начиная с номера 0 до переменной с номером, заданным в операнд1. Значение второго операнда указывает файл, из которого будут считываться данные. Этот файл должен иметь текстовый формат. Его имя формируется следующим образом:
W<число>.txt,
где число – значение второго операнда.
Каждая строка файла должна содержать два числа, разделенных пробелом. Первое число – это номер переменной, а второе – ее значение. При выполнении оператора READ переменной присваивается последнее в файле значение с соответствующим номером.
Операторы WRITE и PRINT предназначены для записи значений переменных типа W в файлы. При этом формируются файлы данных в текстовом формате. Формирование имен файлов, формат записи данных в них и назначение операндов соответствуют описанным выше для оператора READ. Отличие оператора WRITE от PRINT заключается в том, что первый из них перед сохранением стирает содержимое указанного файла, а последний дописывает данные в конец файла.
Аргументы < операнд1 > и < операнд2 > функций READ, WRITE, PRINT имеют диапазон от 0 до 255, если задаются константой. Для того, чтобы задать это значение в больших диапазонах, необходимо использовать дополнительную переменную.
Оператор вызова функциональных блоков
Этот оператор позволяет обратиться к стандартным функциональным блокам, реализованным в языке Техно FBD.
Недоступными для вызова являются блоки из раздела Моделирование, блоки, содержавшие внутренние статические переменные (PID, интегратор и пр.), и блоки логических, арифметических и условных операций, реализованных в Техно IL.
Синтаксис:
CALL <имя блока> <номер блока> (arg_1, …, arg_N)
где
имя блока | - название блока, выводимое на функциональных кнопках диалога Меню FBD; |
реализация | - номер использования блока в программе.; |
arg_1,…, arg_N | - список аргументов. Количество аргументов в списке должно быть равно сумме функциональных входов и выходов блока. Первыми в списке записываются аргументы, связанные с входами блока. |
Операторы работы с таймерами
Для управления таймерами и контроля их значения, предусмотрены два оператора.
Первый из них используется для включения таймера и задания ему временной уставки. Он выглядит следующим образом:
|
|
SETTMR < операнд1 > < операнд2 >
Здесь операнд1 задает номер таймера (от 0 до 31), а операнд2 - величину уставки. Значение уставки задается в прерываниях системного таймера.
Второй оператор контролирует превышение значением таймера величины его уставки. Он имеет следующий синтаксис:
CHECKTMR < операнд >
Если значение таймера больше величины уставки, то переменной CMP присваивается значение истина. Номер контролируемого таймера указывается значением операнда.