MC_MoveSuperImposed
A relative motion is commanded with the MC_MoveSuperImposed FB, in addition to motion already active. The active motion is not interrupted but is superimposed over the commanded one. The motion is always executed jerk-limited with the constant set input "Jerk”. This value is valid for both "Acceleration" and "Deceleration".
If the optional parameters “Acceleration, “Deceleration” and “Jerk” are not specified or set to <= 0, the dynamic values are taken from the corresponding axis list.
If the axis is already in a motion state and receives a command from this FB, it results in
- a superimposed interpolation
- a change in velocity
- a change in the target position of the active motion.
If the axis is in the “Standstill” state, a command by the MC_MoveSuperImposed FB acts like a command by an MC_MoveRelative FB.
Since "Acceleration" values are also superimposed in the case of superimposed interpolation, corresponding axis parameters must be defined to ensure that the axis is not dynamically overloaded.
Block diagram
FB parameters
VAR_IN_OUT | ||
Variable name | Data type | Description |
Axis | AXIS_REF | Axis reference |
VAR_INPUT | ||
Variable name | Data type | Description |
Execute | BOOL | Superimposition of the motion is started on the rising edge of this input signal. |
Distance | LREAL | Relative distance of the motion Value range [-2147483648.0, 2147483647.0] |
VelocityDiff | LREAL | Maximum difference to the velocity of the underlying motion. This value must be specified positive. The velocity is not necessarily reached. Value range [1. 0, 2147483647.0] |
Acceleration | LREAL | Acceleration value. This value must be specified positive. Value range [0.0, 2147483647.0] |
Deceleration | LREAL | Deceleration value. This value must be always be specified positive. Value range [0.0, 2147483647.0] |
Jerk | LREAL | Jerk value. This value must be always be specified positive. Value range [0.0, 2147483647.0] |
VAR_OUTPUT | ||
Variable name | Data type | Description |
Done | BOOL | The relative distance of the active movement is superimposed. |
CommandAborted | BOOL | TRUE indicates that the command was aborted by another command. |
Error | BOOL | Is TRUE if an error occurs in the FB. |
ErrorID | WORD | Error identifier |
Behaviour of the FB:
- This motion is commanded only when the axis is in the “Standstill” or “Continuous Motion” or “Discrete Motion” or “Synchronised Motion” state. If this is not the case, the error output is set to “FALSE and “ErrorID” indicates an error value that designates the state the axis is currently in.
- The “Distance, “VelocityDiff, “Acceleration”, “Deceleration” and “Jerk” input variables are monitored only for their value range in the FB. If the values are exceeded, an error number referring to the variable is output at the “ErrorID” output and “Error” is set to TRUE. Moreover, the maximum velocity and acceleration data is limited within the motion controller. If speed values greater than getriebe[0].dynamik.vb_max (P-AXIS-00212) or acceleration or deceleration values greater than getriebe[0].dynamik.a_max (P-AXIS-00008) are commanded, the motion takes place nevertheless. The values are limited to the parameterised values and a warning P-ERR-60211 or P-ERR-60188 to P-ERR-60194 is output.
- Values for jerk are practical when they correspond to a minimum ramp time of TA (cycle time of the IPO, e.g. 2 ms) and a maximum ramp time of 100s. The limit transition to non-jerk-limited velocity control lies at the minimum ramp time of TA. With a value of 0, the maximum ramp time from the axis MDS is used to determine the jerk.
- With this function block, active commands can be modified by an additional, superimposed motion. The following rules apply to command assertion and command aborting:
- If no interpolation is active, i.e. if the axis is in the “Standstill” state, a command by the MC_MoveSuperImposed FB acts like a command by an MC_MoveRelative FB.
- If interpolation is already active, i.e. the axis is in one of the “Continuous Motion”, “Discrete Motion” or “Synchronised Motion” states, a command by the MC_MoveSuperImposed FB starts a further, superimposed interpolation.
- If a superimposed interpolation (cf. 2.) is already active, a new command by the MC_MoveSuperImposed FB ensures that only the currently superimposed interpolation is replaced by the new MC_MoveSuperImposed command, while the subordinate interpolation is not affected.
- If a superimposed interpolation (vgl2.) is already active, there is a renewed command with any MC_Move*** except MC_MoveSuperImposed; this causes the two active interpolations to abort. In this way, the underlying and the superimposed interpolation are replaced by the new MC_Move*** command.
- If a non-referenced axis is commanded by this FB, the axis travels at the speed defined by the getriebe[...].vb_reflow parameter (P-AXIS-00218) of the axis machine data.
- The positions of the software limit switches (kenngr.swe_pos (P-AXIS-00178), kenngr.swe_neg (P-AXIS-00177), kenngr.swe_toleranz (P-AXIS-00179)) are monitored if the axis was defined either as a linear or a rotary axis. This means that the kenngr.achs_typ parameter of the axis machine data (P-AXIS-00018) has the value 0x0001 or 0x0002. If the target position commanded exceeds the position of the software limit switches, the axis starts off nevertheless. If a software limit switch position is reached, the axis is braked, keeping to the defined acceleration.