Obsidean_VM/04-SIDEL/06 - E5.007363 - Modifica O.../Source/source/SlewLimit.md

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