Question

In the real axis states of EtherCAT between f.e. SM4.10 and SM4.6.3, there is a difference in the operation of Axis.nAxisState when MC_Power is turned from OFF to ON.

Setup Examples:

  • Old behavior: SoftMotion v4.6.3.0 : Axis.nAxisState=power_off→stopping→standstill
  • New Behavior: SoftMotion v4.10.0.0 : Axis.nAxisState=power_off→standstill→stopping→standstill

Change Description

The "new behavior" (power off --> standstill --> stopping --> standstill) was introduced with a bug fix in SoftMotion version >=4.7.0.0.
Before this version, MC_Power directly set the axis state from 'power off' to 'stopping'.

Now MC_Power sets the axis state to 'standstill' and the transition to 'stopping'.
This is only executed if the drive is also switched on (Bit 2 in the status word).

The bits of the status and control word should be described in the documentation of the used drive, as they might differ from the CiA 402 standard.

Axis States Description

Please see the following axis states (also, OLH: Axis Group States):

  • power_off
  • errorstop
  • stopping
  • standstill
  • discrete_motion
  • continuous_motion
  • synchronized_motion
  • homing

Behavior in question

When starting the MC_Power by the settings:

Enable = TRUE
bRegulatorOn = TRUE
bDriveStart = TRUE,

then the axis is not disabled anymore (it is not in the 'power_off' state).

The previous behavior (before the bug fix in SM v4.7.0.0) was, that the axis directly made a transition to stopping.
But this was not correct, because " Why should the drive be stopping when the regulator is not on (i.e. the drive is not switched on)? "

In this more or less undefined state, SoftMotion will use 'standstill' first until sure that we are in state stopping.

  • When known, that the regulator of the drive is on (drive is switched on) but the drive has not enabled the operation yet (NOT (bDriveStart AND bDriveStartRealState)), then the drive switches into state 'stopping'.
  • When then the drive is actually started (switched on and operation enabled), the state 'standstill' is entered again.
  • So there is a difference between the first and the second standstill during MC_Power.

To judge whether an axis is ready to move, the MC_Power.Status output can be used.



See also....


  • No labels