(* @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