Si certo la norma IEC prevede la possibilità di utilizzare all’interno di blocchi funzione variabili esterne. Occorre identificarle con il nome ed il tipo definito indicandole con l’attributo VAR_EXTERNAL, ecco un esempio di FB in cui gestisco una uscita UDINT con un conteggio che si incrementa ad ogni secondo.
FUNCTION_BLOCK MyFB
VAR
Pulse : BOOL; (* Pulse flag *)
END_VAR
VAR_OUTPUT
Counter : UDINT; (* Counter *)
END_VAR
VAR_EXTERNAL
SysClock1000 : BOOL; (* Clock 1 second *)
END_VAR
IF (SysClock1000 = Pulse) THEN RETURN; END_IF;
Pulse:=SysClock1000; //Pulse flag
IF NOT(SysClock1000) THEN RETURN; END_IF;
Counter:=Counter+1;
Basterà istanziare il FB in un program per poterlo utilizzare.
PROGRAM MyProgram
VAR
FBUse : MyFB; (* FB instance *)
END_VAR
FBUse(); //Execute the FB