Motion control axis states
The basic rule for the behavior of the axis at a high level when multiple motion control function blocks are activated is that motion commands are always taken sequentially, even if the controller supports real parallel processing. Any motion command is a transition that changes the state of the axis and, as a consequence, modifies the way the current motion is computed.
Motion control axis state diagram
The axis is always in one of the defined states as shown in the following diagram.
Motion control axis state diagram

Motion control axis state behavior
No | Note |
---|---|
1 | In the Error Stop and Stopping states, all function blocks (except MC_Reset) can be called although they will not be executed. MC_Reset generates a transition to the Standstill state. If an error occurs while the state machine is in the Stopping state, a transition to the Error Stop state is generated. |
2 | Power.Enable = TRUE and there is an error in the axis. |
3 | Power.Enable = TRUE and there is no error in the axis |
4 | MC_Stop.Done AND NOT MC_Stop.Execute. |
5 | When MC_Power is called with Enable = FALSE, the axis goes to the Disabled state for every state including Error Stop. |
6 | If an error occurs while the state machine is in Stopping state, a transition to the Error Stop state is generated. |
Motion control axis state code values
You can monitor the axis state using the Axis Monitor feature.
State value | State name |
---|---|
0x00 | Disabled |
0x01 | Standstill |
0x02 | Discrete Motion |
0x03 | Continuous Motion |
0x04 | Homing |
0x06 | Stopping |
0x07 | Error Stop |
Axis state updates
On motion execution, the axis state update is dependent on when the relevant motion function block is called by the POU scan. This is the case even though the motion profile is controlled by the Motion Engine as a background task, and is independent from the POU scan.
For example, on a moving axis on a ladder POU (state of a rung=true), an MC_MoveRelative function block in the rung is scanned and the axis starts to move. Before MC_MoveRelative completes, the state of the rung becomes FALSE, and MC_MoveRelative is no longer scanned. In this case, the state of the axis cannot switch from Discrete Motion to Standstill, even after the axis fully stops, and the velocity comes to 0.
Provide Feedback