780 B
780 B
FUNCTION_BLOCK "SlewLimit"
{ S7_Optimized_Access := 'FALSE' }
AUTHOR : 'Author'
FAMILY : 'Function'
NAME : 'Name'
VERSION : 1.0
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
mStep : Real;
END_VAR
BEGIN
#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