Sometimes it is required to have a position correction "on the fly". For example, it can happen that a position is wrong due to mechanical slip and that a switch which is passed by during the movement is used to capture a position value.
In other cases, it is required to synchronize the position to a print mark, so an actual_position has to be corrected, but not the movement of the printed material.
For both applications, the function block MCA_SetPositionContinuous can be used. It will use ramps and a limited velocity for the correction, so it will be tolerable to execute it during an ongoing movement and while the axis is activated in a multi-axis movement.

The block can be used in any axis state except ERRORSTOP and HOMING.
Two different operation modes are possible:
-
SuperImp=FALSE
-
The actual_position will be modified.
-
The block will not cause any movement.
-
If a PLCopen block in DISCRETE_MOTION (positioning) is active during the execution, this block will not reach Done as the actual_position is modified.
-
If a slave axis is coupled to an axis while MCA_SetPositionContinuous is executed (with SuperImp=FALSE) it will follow.
-
This mode is possible while the axis is in state DISABLED.
-
-
SuperImp=TRUE
-
The actual_position will stay constant.
-
A mechanical movement is executed (without changing the axis state machine).
-
A slave axis will not follow.
-
This behavior is similar to a superimposed movement.
-
It is not possible when the axis is in state DISABLED.
-
The block can just be aborted by another MCA_SetPositionContinuous.
How does jerk influence the axis movements?

The diagram shows the result with different jerk values and the same velocity and acceleration.
The time needed for acceleration with jerk=0 is:
Time1=velocity/acceleration=(20/100)s=0.2s
The additional time with jerk=500 will be:
Time2=acceleration/jerk=(500/100)s = 5s
So the total time is:
Time=Time1 + Time2=0.2s + 5s=5.2s
In the last example with jerk=100, the velocity and acceleration values are not reached.