Синтаксис

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 присваивается значение истина. Номер контролируемого таймера указывается значением операнда.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: