Код:
function_block Level
var_input
Max : real;
Val : real;
end_var
var_output
L0 : bool;
L1 : bool;
L2 : bool;
L3 : bool;
L4 : bool;
L5 : bool;
L6 : bool;
L7 : bool;
L8 : bool;
L9 : bool;
L10 : bool;
L11 : bool;
L12 : bool;
L13 : bool;
L14 : bool;
L15 : bool;
end_var
var
delta : real;
blink : SYS.BLINK;
end_var
delta := Max / 16;
blink(I := true, Th := t#500ms, Tl := t#500ms);
L0 := Val > 0.5 * delta or (blink.Q and Val > 0);
L1 := Val > 1.5 * delta or (blink.Q and Val > delta);
L2 := Val > 2.5 * delta or(blink.Q and Val > delta * 2);
L3 := Val > 3.5 * delta or (blink.Q and Val > delta * 3);
L4 := Val > 4.5 * delta or (blink.Q and Val > delta * 4);
L5 := Val > 5.5 * delta or (blink.Q and Val > delta * 5);
L6 := Val > 6.5 * delta or (blink.Q and Val > delta * 6);
L7 := Val > 7.5 * delta or (blink.Q and Val > delta * 7);
L8 := Val > 8.5 * delta or (blink.Q and Val > delta * 8);
L9 := Val > 9.5 * delta or (blink.Q and Val > delta * 9);
L10 := Val > 10.5 * delta or (blink.Q and Val > delta * 10);
L11 := Val > 11.5 * delta or (blink.Q and Val > delta * 11);
L12 := Val > 12.5 * delta or (blink.Q and Val > delta * 12);
L13 := Val > 13.5 * delta or (blink.Q and Val > delta * 13);
L14 := Val > 14.5 * delta or (blink.Q and Val > delta * 14);
L15 := Val > 15.5 * delta or (blink.Q and Val > delta * 15);
end_function_block