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 diagram

Motion control axis state behavior

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.
Values used to define each of the predefined axis states
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
Have questions or feedback about this documentation? Please submit your feedback here.
Normal