Recovery of the System State After an Axis Error
Recovery from axis errors is more complex with the addition of Coordinated Axes Groups (PLCopen Part 4) to KAS Runtime. This is because of additions in the operation of PLCopen Motion and Coordinated motion. This includes:
- Addition of the Coordinated motion Boolean variable that allows the Runtime to IGNORE_AXIS_ESTOP(ID number 1000).
- Addition of the Coordinated motion Boolean variable that allows the Application to read the state of the Runtime Axis errors: AXIS_ESTOP_ACTIVE (ID number 1001).
- Addition of MC_GrpReadBoolPar.
- Addition of MC_GrpWriteBoolPar.
When the application needs to take control of the default behavior where all axes in a group stop when any of them detect an Estop condition, and the Estop condition does not in itself stop all axes (Loss of EtherCAT communication), the application can set the Group Boolean parameter IGNORE_AXIS_ESTOP (ID := 1000) using MC_GrpWriteBoolPar().
- When set to TRUE, the runtime tries to keep axes in the same group as a faulting axis still able to be commanded.
- The intent is to not give up control of the commanded motion, but allow the application to substitute error handling motion that allows a group of axes to stop in a controlled manner.
- Example: Command the remaining axes to a Home position or a relative move away from the position of the faulted axis.
Once the IGNORE_AXIS ESTOP parameter is set TRUE, the Group of axes does not enter the ERRORSTOP state when an axis encounters an ESTOP condition but remain in STANDBY or MOVING state.
- Instead, the AXIS_ESTOP_ACTIVE (ID := 1001) parameter can be monitored to trigger a response that aborts the current operation and takes control of the axes that can still be controlled.
- To determine which axis has faulted, the MC_ReadStatus() FB is used to monitor each axis and select the appropriate single axis or Coordinated motion commands to execute to take control of the motion and recover from the error.
To restart Coordinated Motion when the error recovery is completed and the faulting axis restored to normal operation, an MC_GrpSetPos() command must be issued to tell the Coordinated Motion Engine where the axes in the faulted Axes Group, following restoration of the single axis fault(s).
This command must be issued in order to reset the faulted axis.
Alternatively, if the MC_GrpWriteBoolPar() function is issued to set the IGNORE_AXIS_ESTOP parameter to FALSE, the Group enters the ERRORSTOP state if an Axis error has not been reset, and the default behavior and default usage of MC_GrpResetError() function can be used to clear faults instead of the MC_GrpSetPos() function.