FUNCTION "Filter1" : VOID
TITLE ="First order filter"
AUTHOR : BenBen
VERSION : 1.1
VAR_INPUT
Tc : REAL ; //Cycle time (ms)
Tau : REAL ; //Time constant (s)
Input : REAL ; //signal to be filtered
Gain : REAL ; //block response amplification
END_VAR
VAR_IN_OUT
Output : REAL ; //Signal filtered
END_VAR
VAR_TEMP
Output_Old : REAL ; //Last Result
Temp : REAL ; //Temporary tag
c : REAL ; //1 - e (-TC/Tau)
END_VAR
BEGIN
NETWORK
TITLE =Out(n-1)
L #Output;
T #Output_Old;
NETWORK
TITLE =c = 1 - e (-TC/Tau)
L #Tc;
L -1.000000e-003;
*R ;
L #Tau;
/R ;
EXP ;
T #Temp;
L 1.000000e+000;
L #Temp;
-R ;
T #c;
NETWORK
TITLE =Out(n) = Out(n-1) + c x ( Gain x Input(n) - Out(n-1))
L #Gain;
L #Input;
*R ;
L #Output_Old;
-R ;
L #c;
*R ;
L #Output_Old;
+R ;
T #Output;
END_FUNCTION