![](/user_photo/72024_jWqBS.png)
5. Вызов функционального блока
Вызов целевого FB AI_eval осуществляется с помощью дополнительного вызывающего функционального блока AI_call.
С помощью такого подхода удобно создавать несколько экземпляров целевого функционального блока. Но мы создали только один, сам функциональный блок служит сервисом опроса, мы последовательно указываем ему объекты опроса и характеристики, по которым он должен определить состояния тех. параметра и датчика, а выводы сохраняются в созданную ранее структуру. Таким образом нам доступны результаты опроса всех 5 датчиков.
FUNCTION_BLOCK AI_call
VAR
I:INT;
converter : AI_eval;
END_VAR
storage.sensor[1].input := ANI.AI1;
storage.sensor[1].hi_lim := 20;
storage.sensor[1].lo_lim := 4;
storage.sensor[1].hi_lim_mes := 35;
storage.sensor[1].lo_lim_mes := -15;
storage.sensor[1].hhv := 32;
storage.sensor[1].hv := 30;
storage.sensor[1].lv := -12;
storage.sensor[1].llv := -14;
storage.sensor[2].input := ANI.AI2;
storage.sensor[2].hi_lim := 1;
storage.sensor[2].lo_lim := -1;
storage.sensor[2].hi_lim_mes := 100;
storage.sensor[2].lo_lim_mes := 0;
storage.sensor[2].hhv := 90;
storage.sensor[2].hv := 80;
storage.sensor[2].lv := 10;
storage.sensor[2].llv := 5;
storage.sensor[3].input := ANI.AI3;
storage.sensor[3].hi_lim := 5;
storage.sensor[3].lo_lim := -5;
storage.sensor[3].hi_lim_mes := 50;
storage.sensor[3].lo_lim_mes := -50;
storage.sensor[3].hhv := 45;
storage.sensor[3].hv := 40;
storage.sensor[3].lv := -40;
storage.sensor[3].llv := -45;
storage.sensor[4].input := ANI.AI4;
storage.sensor[4].hi_lim := 20;
storage.sensor[4].lo_lim := 0;
storage.sensor[4].hi_lim_mes := 5;
storage.sensor[4].lo_lim_mes := 0;
storage.sensor[4].hhv := 4.5;
storage.sensor[4].hv := 4;
storage.sensor[4].lv := 1.5;
storage.sensor[4].llv := 1.2;
storage.sensor[5].input := ANI.AI5;
storage.sensor[5].hi_lim := 10;
storage.sensor[5].lo_lim := -10;
storage.sensor[5].hi_lim_mes := 25;
storage.sensor[5].lo_lim_mes := -15;
storage.sensor[5].hhv := 9.5;
storage.sensor[5].hv := 8.5;
storage.sensor[5].lv := -8.5;
storage.sensor[5].llv := -9.5;
FOR I:= 1 TO 5 DO
converter(input:=storage.sensor[I].input,
hi_lim:=storage.sensor[I].hi_lim,
lo_lim:=storage.sensor[I].lo_lim,
hi_lim_mes:=storage.sensor[I].hi_lim_mes,
lo_lim_mes:=storage.sensor[I].lo_lim_mes,
hhv := storage.sensor[I].hhv,
hv:=storage.sensor[I].hv,
lv:=storage.sensor[I].lv,
llv:=storage.sensor[I].llv);
storage.sensor[I].state:= converter1.state;
storage.sensor[I].val:= converter1.val;
storage.sensor[I].hh:= converter1.hh;
storage.sensor[I].h:= converter1.h;
storage.sensor[I].ll:= converter1.ll;
storage.sensor[I].l:= converter1.l;
storage.sensor[I].ovH:= converter1.ovH;
storage.sensor[I].ovL:= converter1.ovL;
END_FOR;
END_FUNCTION_BLOCK
Экземпляр доп. функц. блока
DATA_BLOCK AI_EKZ AI_call
BEGIN
END_DATA_BLOCK