When the operator requests CNC Abort, I set the Abort inputs of the interpolator and preprocessing function blocks.
My questions are:
Does SMC_Interpolator.bAbort only stop/reset the interpolator, or should it also stop the motion currently being executed by SMC_ControlAxisByPos?
Can SMC_ControlAxisByPos remain Busy after the interpolator has been aborted?
If bAvoidGaps = TRUE, could SMC_ControlAxisByPos still be trying to reach the last fSetPosition using the fGapVelocity / fGapAcceleration / fGapDeceleration settings after the interpolator has stopped?
What is the recommended sequence for safely aborting a running CNC program?
For example, should the sequence be something like:
Stop / Abort Interpolator
Disable SMC_ControlAxisByPos
Execute MC_Stop for all physical axes
Wait until all axes reach standstill
Abort/reset preprocessing blocks and CNC queues
Reset CNC state
Re-enable axis controllers
Or is there a recommended CODESYS CNC method for performing a complete CNC Abort?
I would especially like to understand why SMC_ControlAxisByPos.bBusy can occasionally remain TRUE and continue moving the axis even though the interpolator and preprocessing blocks have already been aborted.
CODESYS SoftMotion CNC is being used with real EtherCAT servo axes.
Any explanation about the correct abort/stop sequence would be appreciated.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hello,
I am working with CODESYS SoftMotion CNC using a preprocessing chain, SMC_Interpolator, and SMC_ControlAxisByPos for controlling the CNC axes.
I have noticed an issue when aborting CNC execution.
When I execute the Abort command, I abort both the CNC preprocessing blocks and SMC_Interpolator.
Normally the CNC process stops correctly.
However, occasionally after the abort:
SMC_Interpolator has already been aborted.
CNC preprocessing has also been aborted/reset.
But SMC_ControlAxisByPos.bBusy remains TRUE.
The corresponding physical axis can still continue moving for some distance.
This does not happen every time.
My basic sequence is similar to:
G-code / CNC preprocessing
β
SMC_Interpolator
β
Transformation
β
SMC_ControlAxisByPos
β
SoftMotion Axis
When the operator requests CNC Abort, I set the Abort inputs of the interpolator and preprocessing function blocks.
My questions are:
Does SMC_Interpolator.bAbort only stop/reset the interpolator, or should it also stop the motion currently being executed by SMC_ControlAxisByPos?
Can SMC_ControlAxisByPos remain Busy after the interpolator has been aborted?
If bAvoidGaps = TRUE, could SMC_ControlAxisByPos still be trying to reach the last fSetPosition using the fGapVelocity / fGapAcceleration / fGapDeceleration settings after the interpolator has stopped?
What is the recommended sequence for safely aborting a running CNC program?
For example, should the sequence be something like:
Or is there a recommended CODESYS CNC method for performing a complete CNC Abort?
I would especially like to understand why SMC_ControlAxisByPos.bBusy can occasionally remain TRUE and continue moving the axis even though the interpolator and preprocessing blocks have already been aborted.
CODESYS SoftMotion CNC is being used with real EtherCAT servo axes.
Any explanation about the correct abort/stop sequence would be appreciated.