Host Engineering Forum
General Category => Do-more CPUs and Do-more Designer Software => Topic started by: scottsutton on May 28, 2024, 08:09:23 AM
-
I am sure that this has been answered but I cannot seem to locate the answer. Using Axis Home instruction I am enabling it with Edge Triggering. If the axis gets a trigger to search for home and then during the search an E-Stop occurs the axis will continue to "Run". The actual servo stops BC it will lose the STO input from the safety controller. However, the axis position/counts continue to run. How to I interrupt the axis and permanently suspend the motion? If I write a 1 to $MTR10.suspend it will stop but then resumes again as soon as .suspend is released again. I want this motion to be erased.
Thanks,
Scott
-
Update:
By resetting the Axis.MasterEnable bit when an E-Stop occurs I can stop the motion permanently. However, that sets a fault status on the axis which I have to clear when the safety system is re-energized. It works but its a little messy if someone has a better solution.
-Scott
-
Update:
By resetting the Axis.MasterEnable bit when an E-Stop occurs I can stop the motion permanently. However, that sets a fault status on the axis which I have to clear when the safety system is re-energized. It works but its a little messy if someone has a better solution.
-Scott
A small Stage program could do that - although I may be simplifying it too much (especially the "restart condition" condition).
Just do RUN MonitorESTOP in $tTopOfScan or at the top of $Main (no contact) to ensure it's ALWAYS running (it never EXITs)
PROGRAM MonitorESTOP
SG S0 // wait for ESTOP to occur - good nickname for MonitorESTOP.S0 "WaitingForESTOP"
STR ESTOP (or possibly STRN NOT_ESTOP, negate all other "positive" ESTOP bits below to NOT_ESTOP bit)
JMP S1
SG S1 // in ESTOP condition "InESTOP"
RST $Axis.MasterEnable
STRN ESTOP // out of ESTOP condition?
JMP S2
SG S2 // leaving ESTOP condition "ESTOPRestart"
STR "RestartCondition" // this is an oversimplification - it may actually be more Stages you step through before actually doing the AXRSTFAULT - possibly look at AXSCRIPT?
ANDN ESTOP // just in case someone re-engages ESTOP before restart condition occurs, make sure ESTOP is NOT engaged
AXRSTFAULT OnSuccess JMP S0 // go back to waiting for ESTOP
Then open up the Project Browser, open up the MonitorESTOP PROGRAM below the Control Logic tree, and turn status ON (cyan colored graphic in the Project Browser toolbar). If you have Nicknames and Rung Comments for these rungs, you get an EXCELLENT realtime status of what's going on with your ESTOP behavior!