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

6.3. Использование функций и функциональных блоков

Для расширения возможностей языка IL в нем предусмотрено использование функций и функциональных блоков.

Использование функциональных блоков

В начале программы с помощью команды VAR…END_VAR должны быть объявлены все используемые в дальнейшем функциональные блоки. Это объявление делается также как и на языке ST только один раз и применимо только для текущей секции. Если тот же самый тип FB/DFВ должен использоваться в другой секции, он должен быть объявлен снова.

Пример объявления функциональных блоков:

VAR

TIM_N1, TIM_N2: TON;

END_VAR

В примере функциональному блоку TON назначаются уникальные имена экземпляров TIM_N1 и TIM_N2.

После объявления функциональные блоки вызываются с помощью команды CAL, после которой следует имя экземпляра функционального блока, а затем в скобках список распределения значений фактических параметров (параметров, которые используются в программе) к входным формальным параметрам (параметрам, которые используются внутри FB/DFВ) функциональных блоков.

Если формальному параметру не задано значение, то будет использоваться начальное значение, определенное в редакторе переменных. Если начальное значение не было определено, то будет использоваться значение, заданное по умолчанию – 0.

Если у функционального блока отсутствуют входные параметры, то для него список распределения не нужен.

Пример вызова функциональных блоков:

CAL TIM_N1 (IN:= P_N1, PT:=t#5s)

CAL TIM_N2 (IN:=P_N2, PT:=t#1s)

Во первой строке указано, что экземпляр TIM_N1 таймера TON может запускаться переменной P_N1. Выдержка времени для этого таймера – 5с.

Во второй строке указано, что экземпляр TIM_N2 таймера TON может запускаться переменной P_N2. Выдержка времени для этого таймера – 1с.

После объявления и вызова функциональных блоков можно обращаться к их выходам.

Пример обращения к выходам функциональных блоков

LD S1 (*Если S1 AND S2 = 1, то начинается*)

AND S2 (*выдержка времени таймером TIM_N1*)

ST P_N1 (* по истечении времени 5с *)

LD TIM_1.Q (*переменной Q_N1 будет присвоено*)

ST Q_N1 (*значение лог. 1*)

LD S1 (*Если S1 AND S3 = 1, то начинается*)

AND S3 (*выдержка времени TIM_N2*)

ST P_N2 (*По истечении времени 1с Q_N2=1*)

LD TIM_2.Q

ST Q_N2

Реализация обращения к FB/DFB упрощается, если, как и в языке ST, воспользоваться средствами редактора языка IL.

Обращение к функциям

Имена доступных функций находятся в библиотеке FFB – Library.

Функции вызываются списком команд, состоящим из первого фактического параметра, загруженного в аккумулятор, и имени функции. В случае необходимости он сопровождается списком дополнительных фактических параметров. В обращении к функции следует соблюдать порядок распечатки формальных параметров. Порядок должен быть таким же, как и в графическом изображении функции в FBD.

Результат вычисления функции сохраняется:

  • в аккумуляторе;

  • в операнде следующим за ST;

  • или он может использоваться для прямой дальнейшей обработки.

Пример обращения к функции с одним фактически параметром:

LD A

SIN_REAL

ST B

В примере B=SIN_REAL(A).

Пример обращения к функции с несколькими фактическими параметрами:

LD IN_LIM

LIMIT_REAL MIN_LIM, MAX_LIM

ST OUT_LIM

В примере будет выполнено OUT_LIM=IN_LIM, если выполняется MIN_LIM<IN_LIM<MAX_LIM. Если MIN_LIM<IN_LIM, то IN_LIM=MIN_LIM. Если IN_LIM<MAX_LIM, то IN_LIM= MAX_LIM D.

На рис. 5.1 приведен пример обращения к функции LIMIT_REAL в секции FBD.