38 lines
675 B
Plaintext
38 lines
675 B
Plaintext
|
|
(* @PATH := '\/Functions_Collection' *)
|
|
(* @SYMFILEFLAGS := '0' *)
|
|
FUNCTION_BLOCK SlewLimit
|
|
VAR_INPUT
|
|
i_InValue : REAL ; (* Real Input Value To Smooth *)
|
|
i_SlewMax : REAL ; (* Maximum Slew Rate Accepted *)
|
|
i_Cycle : REAL ; (* Cycle Time *)
|
|
END_VAR
|
|
VAR_IN_OUT
|
|
out : REAL ;
|
|
END_VAR
|
|
VAR_OUTPUT
|
|
EN_Out : BOOL ;
|
|
END_VAR
|
|
VAR
|
|
mStep : REAL ;
|
|
END_VAR
|
|
(* @END_DECLARATION := '0' *)
|
|
mStep := i_SlewMax * i_Cycle ;
|
|
|
|
IF i_InValue >= out THEN
|
|
IF (i_InValue - out) > mStep THEN
|
|
out := out + mStep ;
|
|
ELSE
|
|
out := i_InValue ;
|
|
END_IF
|
|
ELSE
|
|
IF (out - i_InValue) > mStep THEN
|
|
out := out - mStep ;
|
|
ELSE
|
|
out := i_InValue ;
|
|
END_IF
|
|
END_IF
|
|
|
|
|
|
END_FUNCTION_BLOCK
|