You are on page 1of 2

FUNCTION_BLOCK FB3

// Block Parameters
VAR_INPUT
// Input Parameters
F:REAL;
A:REAL:=1.0;
B:REAL:=1.0;
C:REAL:=1.0;
INTERVAL:TIME:=T#1S;
END_VAR
VAR_IN_OUT
REST:BOOL:=FALSE;
END_VAR
VAR_OUTPUT
// Output Parameters
Y:REAL;
END_VAR

VAR_TEMP
// Temporary Variables
END_VAR
VAR
// Static Variables
// FNEW:REAL:=0.0;
X1:REAL:=0.0;
X2:REAL:=0.0;
X1OLD:REAL:=0.0;
X2OLD:REAL:=0.0;
DELTA1:REAL:=0.0;
DELTA2:REAL:=0.0;
T_INTERNAL:REAL:=1.0;
END_VAR
// Instruction Section
T_INTERNAL := (DINT_TO_REAL(TIME_TO_DINT (INTERVAL)))/1000.0;
IF REST=1 THEN
X1:=0.0;
X2:=0.0;
X1OLD:=0.0;
X2OLD:=0.0;
REST:=0;
ELSE
DELTA2 :=(F- (C*X1OLD) - (B*X2OLD))/A;
X2:= X2OLD + (DELTA2 * T_INTERNAL);

DELTA1 :=X2;
X1 := X1OLD + (DELTA1 * T_INTERNAL);
X2OLD:= X2;
X1OLD:=X1;
Y:=X1;
;
END_IF;
;
END_FUNCTION_BLOCK

You might also like