General rules
- Input parameters
- For function blocks with an Execute input, the parameters are applied with the rising edge of the Execute input. To change a parameter, the input parameters must be changed and a rising edge must be generated again at the Execute input.
- With Enable, the parameters are adopted with the rising edge of the Enable input and can be changed continuously (without a new rising edge at the Enable input).
- Inputs exceed application limits
- If a function block is activated with parameters that lead to a violation of the application limits, the axis moves and generates an error if an application limit is actually exceeded.
- Missing input parameters
- If an input of a function block is not assigned, the value from the previous call of this instance is used. The initial value is used the first time it is called up.
- Acceleration, deceleration and jerk inputs
- If the jerk input is set to 0, this is interpreted as the maximum value.
- If one of the deceleration or acceleration inputs is set to 0, the axis will not move. No error is output in this case.
- Exclusivity of the output signals
- With Execute: Only one of the Busy, Done, Error and CommandAborted outputs is ever set if Execute is TRUE.
- With Enable: Only one of the Valid and Error outputs is ever set if Enable is TRUE.
- Output status
- With Execute: The Done, Error, ErrorID and CommandAborted outputs are reset with the falling edge of Execute. However, the falling edge of Execute does not stop or influence the execution of the actual function block. The outputs are also set for a cycle if the Execute input is set to FALSE while the function block is still being processed.
- If an instance of a function block receives a new positive edge at the Execute input before it has ended (as a command sequence on the same instance), the function block does not return any feedback for the previous action, such as Done or CommandAborted.
- With Enable: The Valid, Enabled, Busy, Error and ErrorID outputs are reset with the falling edge of Enable.
- Behavior of the Done output
- The Done output is set when the requested action has been successfully completed. The following applies to several function blocks that work on the same axis in a sequence: If a movement on an axis is interrupted by another movement on the same axis without having reached the target, Done of the first function block is not set.
- Behavior of the Busy output
- With Execute, each function block can have a Busy output, which indicates that the function block is not yet finished and new output values can be expected. Busy is set with the rising edge of Execute and reset if one of the Done, Aborted or Error outputs is set.
- With Enable, each function block can have a Busy output, which indicates that the function block is working and new output values can be expected. Busy is set with the rising edge of Enable and remains set as long as the function block is performing an action.
- It is recommended for the function block to be left in the active loop of the application program at least as long as Busy is TRUE, as the outputs can continue to change.
- Behavior of InVelocity, InGear, InTorque and InSync
- The InVelocity, InGear, InTorque and InSync outputs (hereinafter Inxxx) behave differently from the Done output.
- As long as the function block is active, Inxxx is set if the setpoint is equal to the actual value. Inxxx is reset if the setpoint is not equal to the actual value.
- The InVelocity output is set, for example, if the actual speed is equal to the specified speed. This is similar for the corresponding function blocks for the InGear, InTorque and InSync outputs.
- Inxxx is also updated if Execute is FALSE, as long as the function block controls the axis (Active and Busy are set).
- "Active" output
- This output is set when the function block controls the movement of the corresponding axis. Several function blocks can be Busy for an axis, but only one can ever be Active. Exceptions are function blocks that work in parallel, such as MC_MoveSuperimposed and MC_Phasing, where more than one function block relating to an axis can be active.
- Behavior of the CommandAborted output
- CommandAborted is set if a movement is interrupted by another motion command.
- The reset behavior of CommandAborted corresponds to that of Done. If CommandAborted occurs, the other output signals such as InVelocity are reset.
- Enable and Valid
- The Enable input is coupled with a Valid output. Enable is level-controlled and Valid means that valid outputs are issued at the function block.
- If there is a function block error, Valid becomes FALSE. When the error state disappears, the values are displayed again and the Valid output is set again.
- Position and Distance
- Position is a value that is defined within a coordinate system. Distance is a relative measure in terms of technical units. Distance is the difference between two positions.
- Sign rules
- The deceleration, acceleration and jerk values are always positive. Speed, position and distance can be both positive and negative.
- Error handling behavior
- All function blocks have two error outputs. These outputs are defined as follows:
- Error: Rising edge of Error reports that an error has occurred during the execution of the function block.
- ErrorID: Unique error number
- Error types:
- Function blocks (e.g. parameters outside a permissible value range)
- Communication
- Drive fault
- An error in a function block instance does not necessarily lead to an axis error and a state transition to ErrorStop.
- The error outputs of the respective function block are reset with the falling edge of Execute and Enable.
- BufferMode
- Some of the function blocks have a BufferMode input. With this input, the function block can either work in an "unbuffered mode" (standard behavior) or in a "buffered mode". The difference between these operating modes is when they should start their action: A command in an "unbuffered mode" takes effect immediately, even if it interrupts another movement. The buffer is deleted. A command in a "buffered mode" waits until the current function block sets its Done output (or InPosition or InVelocity,..).