Использование функциональных блоков
В начале программы с помощью команды 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.
|