MC_MoveContinuousRelative, MCP_MoveContinuousRelative – Move to position (relative to previous motion)
Block SymbolsLicensing group: MOTION CONTROL
Function Description
The MC_MoveContinuousRelative and MCP_MoveContinuousRelative blocks offer the same
functionality, the only difference is that some of the inputs are available as parameters in the
MCP_ version of the block.
The MC_MoveContinuousRelative block moves an axis to specified position as fast as possible. The final position is determined by adding the value of Distance parameter to the actual position at the moment of triggering the Execute input. If no further action is pending, final velocity is specified by parameter EndVelocity. For blending purposes, start and stop velocity of this block is maximum velocity with direction respecting current and final position. If start velocity of next pending block is in opposite direction, then blending velocity is always zero.
If next pending block is executed too late in order to reach requested velocity the generated output depends on jerk setting. If no limit for jerk is used (block input Jerk is zero or unconnected) block uses maximum acceleration or deceleration to reach the desired velocity as near as possible. If jerk is limited it is not possible to say what is the nearest velocity because also acceleration is important. For this reason, the axis is stopped and moved backward and blending velocity is always reached. Although this seems to be correct solution, it might look confusing in a real situation. Therefore, it is recommended to reorganize execution order of the motion blocks and avoid this situation.
Note 1: If the EndVelocity is set to zero value, the block behaves in the same way as MC_MoveRelative.
Note 2: If next motion command is executed before the final position is reached, the block behaves in the same way as MC_MoveRelative.
If next pending block is executed too late in order to reach requested velocity the generated output depends on jerk setting. If no limit for jerk is used (block input Jerk is zero or unconnected) block uses maximum acceleration or deceleration to reach the desired velocity as near as possible. If jerk is limited it is not possible to say what is the nearest velocity because also acceleration is important. For this reason, the axis is stopped and moved backward and blending velocity is always reached. Although this seems to be correct solution, it might look confusing in a real situation. Therefore, it is recommended to reorganize execution order of the motion blocks and avoid this situation.
If next pending block is executed too late in order to reach requested velocity the generated output depends on jerk setting. If no limit for jerk is used (block input Jerk is zero or unconnected) block uses maximum acceleration or deceleration to reach the desired velocity as near as possible. If jerk is limited it is not possible to say what is the nearest velocity because also acceleration is important. For this reason, the axis is stopped and moved backward and blending velocity is always reached. Although this seems to be correct solution, it might look confusing in a real situation. Therefore, it is recommended to reorganize execution order of the motion blocks and avoid this situation.
If next pending block is executed too late in order to reach requested velocity the generated output depends on jerk setting. If no limit for jerk is used (block input Jerk is zero or unconnected) block uses maximum acceleration or deceleration to reach the desired velocity as near as possible. If jerk is limited it is not possible to say what is the nearest velocity because also acceleration is important. For this reason, the axis is stopped and moved backward and blending velocity is always reached. Although this seems to be correct solution, it might look confusing in a real situation. Therefore, it is recommended to reorganize execution order of the motion blocks and avoid this situation.
Inputs
uAxis | Axis reference (only RM_Axis.axisRef–uAxis or yAxis–uAxis connections are allowed) | Reference |
Execute | The block is activated on rising edge | Bool |
Distance | Requested target distance (relative to execution point) [unit] | Double (F64) |
Velocity | Maximal allowed velocity [unit/s] | Double (F64) |
Acceleration | Maximal allowed acceleration [unit/s] | Double (F64) |
Deceleration | Maximal allowed deceleration [unit/s] | Double (F64) |
Jerk | Maximal allowed jerk [unit/s] | Double (F64) |
BufferMode | Buffering mode | Long (I32) |
|
|
|
EndVelocity | End velocity | Long (I32) |
Outputs
yAxis | Axis reference (only RM_Axis.axisRef–uAxis or yAxis–uAxis connections are allowed) | Reference |
InEndVelocity | PLCopen Done (algorithm finished) | Bool |
CommandAborted | PLCopen CommandAborted (algorithm was aborted) | Bool |
Busy | PLCopen Busy (algorithm not finished yet) | Bool |
Active | PLCopen Active (the block is controlling the axis) | Bool |
Error | PLCopen Error (error occurred) | Bool |
ErrorID | Result of the last operation | Error |
|
|
|
Example
[Previous] [Back to top] [Up] [Next]
2023 © REX Controls s.r.o., www.rexygen.com