How to do position correction “on the fly”

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 syncronize 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.

../_images/921d6627357599c80a33139000776a94

MCA_Set PositionsContinuous

The block can be used in any axis state except ERRORSTOP and HOMING.

2 different operation modes are possible:

  1. SUPER=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 SUPER=FALSE) it will follow.
    • This mode is possible while the axis is in state DISABLED.
  2. SUPER=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.