Function Manipulators ¶ CHARCURVE (FunctionBlock) RAMP_INT (FunctionBlock) RAMP_REAL (FunctionBlock)
CHARCURVE (FB) ¶ FUNCTION_BLOCK CHARCURVE Maps an input signal onto a characteristic curve The characteristic curve is given by an array of POINTs, which include a set of X-values with their corresponding Y-values. Example in ST: VAR CHARACTERISTIC_LINE : CHARCURVE ; KL : ARRAY [0..10] OF POINT := [(X:=0,Y:=0),(X:=250,Y:=50), (X:=500,Y:=150),(X:=750,Y:=400), 7((X:=1000,Y:=1000))] ; COUNTER : INT ; END_VAR COUNTER := COUNTER +10 ; supply CHARCURVE with for example a constantly increasing value CHARACTERISTIC_LINE ( IN := COUNTER , N := 5 , P := KL ); Illustration of the resulting curve InOut: Scope Name Type Comment Input IN INT Input signal N BYTE Number of points defining the characteristic curve : 2 <= N <= 11 Inout P ARRAY [0..10] OF POINT Array of points to describe the characteristic curve Output OUT INT Output variable, contains the manipulated value ERR BYTE 0 : No error 1 : Error in P : wrong sequence (completely tested, only if IN is equal to largest X-value of P ) 2 : IN outside of limits of P 4 : N invalid, number of points not within the allowed range 2..11
RAMP_INT (FB) ¶ FUNCTION_BLOCK RAMP_INT Limits the slope of a value to a certain value The limitation of the slope is given by the maximum ascend ASCEND and the maximum descend DESCEND and a time base TIMEBASE defining the time for which ASCEND or DESCEND hold. Note It is not necessary to readjust the controller parameters (KP, TN, TV) if the cycle time changes. Example InOut: Scope Name Type Comment Input IN INT Input value ASCEND INT Limitation of acceleration: Maximum ascent per time base Example: ASCEND := 25 and TIMEBASE := T#1s => Maximum ascent of 25 increments per second DESCEND INT Limitation of deceleration: Maximum descent per time base ( DESCEND > 0) Example: DESCEND := 20 and TIMEBASE := T#500ms => Maximum ascent of 20 increments in 500 milliseconds TIMEBASE TIME Reference for ASCEND/DESCEND : t#0s : ASCEND/DESCEND defined per call else : ASCEND/DESCEND defined per specified time If TIMEBASE = t#0s , then the time base is equal to the task cycle time. In this case the limitation refers to a task cycle. Usually this corresponds exactly to one call of the function block RAMP_INT . Note If the time base TIMEBASE is smaller than the task cycle time, then this will lead to a violation of the sampling theorem and might result in a loss of information in the output signal. RESET BOOL Reset of the function block TRUE : Stops the internal calculation and reinitializes the function block. The last calculated output value in OUT is maintained in order to start the internal calculation with it at the next restart of the function block. FALSE : Outputs the smoothed input signal at output OUT . Output OUT INT Function value with limited ramp The value gets stored internally and will be used for the calculation of the ascent and the descent of the input signal.
RAMP_REAL (FB) ¶ FUNCTION_BLOCK RAMP_REAL Limits the slope of a value to a certain value The function block is similar to RAMP_INT with the difference that the inputs IN , ASCEND , DESCEND and the output OUT are of the type REAL . RAMP_REAL takes more computing time but calculates more precisely than RAMP_INT . Note A reset of the function block ( RESET = TRUE ) stops the calculation and the last output value OUT is maintained. So if afterwards the ramp gets restarted by RESET = FALSE , it will start with this last output value! InOut: Scope Name Type Comment Input IN REAL Input value ASCEND REAL Maximum positive slope DESCEND REAL Maximum negative slope (non-negative!) TIMEBASE TIME Reference for ASCEND/DESCEND : t#0s : ASCEND/DESCEND defined per call Else : ASCEND/DESCEND defined per specified time RESET BOOL Resets the function block Output OUT REAL Fnction value with limited slope
Gray Conversions ¶ BYTE_TO_GRAY (Function) DWORD_TO_GRAY (Function) GRAY_TO_BYTE (Function) GRAY_TO_DWORD (Function) GRAY_TO_WORD (Function) WORD_TO_GRAY (Function)
BYTE_TO_GRAY (FUN) ¶ FUNCTION BYTE_TO_GRAY : BYTE Converts one byte of binary code into one byte of GRAY code InOut: Scope Name Type Comment Return BYTE_TO_GRAY BYTE Value in GRAY code for input B Input B BYTE Value in binary code
DWORD_TO_GRAY (FUN) ¶ FUNCTION DWORD_TO_GRAY : DWORD Converts one DWORD of binary code into one DWORD of GRAY code InOut: Scope Name Type Comment Return DWORD_TO_GRAY DWORD Value in GRAY code for input X Input X DWORD Value in binary code
GRAY_TO_BYTE (FUN) ¶ FUNCTION GRAY_TO_BYTE : BYTE Converts one byte of GRAY code into one byte of binary code Requirements: Functions: PUTBIT , EXTRACT InOut: Scope Name Type Comment Return GRAY_TO_BYTE BYTE Value in binary code for the input B Input B BYTE Value in GRAY code
GRAY_TO_DWORD (FUN) ¶ FUNCTION GRAY_TO_DWORD : DWORD Converts one DWORD of GRAY code into one DWORD of binary code Requirements: Functions: PUTBIT , EXTRACT InOut: Scope Name Type Comment Return GRAY_TO_DWORD DWORD Value in binary code for input X Input X DWORD Value in GRAY code
GRAY_TO_WORD (FUN) ¶ FUNCTION GRAY_TO_WORD : WORD Converts one WORD of GRAY code into one WORD of binary code Requirements: Functions: PUTBIT , EXTRACT InOut: Scope Name Type Comment Return GRAY_TO_WORD WORD Value in binary code for input W Input W WORD Value in GRAY code