Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SCADA_full.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
766.98 Кб
Скачать

Функции

 

В Техно 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

<текст программы>

ELSE

<текст программы>

END_IF

Текст программы между словами IF и THEN должен содержать операции, формирующие значение переменной CMP. Она анализируется после выполнения этого фрагмента. В случае истинности выполняется фрагмент программы между THEN и ELSE. В противном случае - между ELSE и END_IF.

Операторы циклов

существует два оператора циклов, оператор с предварительной проверкой завершения цикла и оператор с последующей проверкой завершения цикла.

Первый оператор:

WHILE <операнд>

<текст программы>

END_WHILE

Здесь фрагмент программы между строками начала и конца цикла будет выполняться, пока значение операнда не станет равно 0.

Второй оператор цикла проверяет значения операнда на равенство 0 не в его начале, а в конце цикла.

REPEAT

<текст программы>

UNTIL <операнд>

Для принудительного выхода из цикла служит оператор

BREAK

При его выполнении работа цикла завершается и выполняется следующая после цикла инструкция.

Операторы подстановки имен переменных, обмена с аккумулятором; завершения программы

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]