Educate me about estop chains and latches

More
15 May 2017 20:50 #93240 by rodw
I have a friend who built a CNC lathe and used a relay to drop AC power on estop. Subsequently, someone knowledgeable told him that it did not comply with the relevant engineering and workplace safety standards which required AC power to be dropped without any intermediate relays. Between us we established the wiring I am using. We do need to keep the Mesa 7i76e alive so it can tell LCNC to stop gracefully at the same time. To me this makes sense as it protects against a hung computer that can't respond.

I think you guys have helped me establish something I've been aware of for quite a while and that is the current external e-stop switch I am using is not the right type as it is not wired in as a normally closed input on the low voltage signalling side. This means I can't put additional switches in series with it. If I replace it, I can add the pendant relay in series to generate an e-stop but it won't drop power to the stepper motors.

However, I think all of you with the exception of Bevins are describing a simple e-stop chain. If you look at the estop_latch docs
linuxcnc.org/docs/html/man/man9/estop_latch.9.html

It says
In more complex systems, it may be more appropriate to use classicladder to manage the software portion of the estop chain.

I don't want to use Classic Ladder but I would like to see a hal example of a "more complex system" as I am sure that LCNC is more flexible and can tie different estop conditions together in software.

Please Log in or Create an account to join the conversation.

More
18 May 2017 13:41 #93347 by bevins

What if a mosfet or IGBT shorts and the machine has no load? It will break something and burn the motor to a crisp and risk killing someone in the proces.
That is why servo systems have e-stop shuting down complete power to moving parts. E-stop is an emergency device and should be treated as such.


What if the e-stop button malfunctions and doesn't open the circuit?

I don't think your argument holds water.

Please Log in or Create an account to join the conversation.

More
18 May 2017 13:57 - 18 May 2017 13:57 #93348 by rodw
Getting back to the original topic. I sat down with the docs and a blank sheet of paper. From what I sketched out, I think it will be easy enough to chain multiple instances of estop_latch together from ok-out to ok-in and introduce multiple e-stop events on the fault-in pins. I just have not had the time since to actually try this out in hal. A fault-in on any link in the chain will cause an e-stop on the last link which could also trigger a drive disable signal to my steppers. I'd need to introduce a relay so 24v could switch a 5 volt signal for the stepper drives.
Last edit: 18 May 2017 13:57 by rodw.

Please Log in or Create an account to join the conversation.

More
18 May 2017 14:32 - 18 May 2017 14:32 #93351 by bevins

Getting back to the original topic. I sat down with the docs and a blank sheet of paper. From what I sketched out, I think it will be easy enough to chain multiple instances of estop_latch together from ok-out to ok-in and introduce multiple e-stop events on the fault-in pins. I just have not had the time since to actually try this out in hal. A fault-in on any link in the chain will cause an e-stop on the last link which could also trigger a drive disable signal to my steppers. I'd need to introduce a relay so 24v could switch a 5 volt signal for the stepper drives.


Here is how I do mine. Most external hardware for the estop circuit. I do tell Lcnc the e-stop is pressed so it can do its thing.

But you can go in and out with in-outs though.
There are nice e-stop safety relays designed specifically for this re: Siemens, you can get some off ebay for cheap. They have
multiple ins and outs.


Warning: Spoiler!
Last edit: 18 May 2017 14:32 by bevins.

Please Log in or Create an account to join the conversation.

More
18 May 2017 17:36 #93359 by tommylight


What if the e-stop button malfunctions and doesn't open the circuit?

That can not happen, not closing the circuit can happen. Open one and check it.
So my argument is still swimming happily ! :)

Please Log in or Create an account to join the conversation.

More
18 May 2017 18:50 #93361 by bevins


What if the e-stop button malfunctions and doesn't open the circuit?

That can not happen, not closing the circuit can happen. Open one and check it.
So my argument is still swimming happily ! :)


Its leaking!

Please Log in or Create an account to join the conversation.

More
18 May 2017 21:05 #93367 by tommylight
Anyone got chewing gum? Need to plug a leak ! :)

Please Log in or Create an account to join the conversation.

More
20 May 2017 02:32 - 20 May 2017 02:38 #93394 by rodw
Well, maybe not chewing gum but here is how to chain multiple estop_latches together. In this example, there are three e-stop inputs which flow from latch0 =>latch1 >=latch2 => stop the machine

First, we need to do the usual stuff
loadrt estop_latch count=3
addf estop-latch.0            servo-thread
addf estop-latch.1            servo-thread
addf estop-latch.2            servo-thread

And then hook the first one up to Linuxcnc iocontrol stuff.
net latch-ok-in iocontrol.0.user-enable-out 

So now we can simply chain each ok_out to the next ok_in to create a chain
net latch-ok-in => estop-latch.0.ok-in
net latch0-out <= estop-latch.0.ok-out 
net latch0-out => estop-latch.1.ok-in
net latch1-out <= estop-latch.1.ok-out 
net latch1-out => estop-latch.2.ok-in

and you need to make sure there is a reset signal for each latch. This bit was not obvious from my reading of the documents.
net latch-reset iocontrol.0.user-request-enable 
net latch-reset => estop-latch.0.reset
net latch-reset => estop-latch.1.reset
net latch-reset => estop-latch.2.reset

and we need to get the last estop in the chain tell LinuxCNC we have an estop
net latch-out iocontrol.0.emc-enable-in <= estop-latch.2.ok-out

and then connect your various inputs to estop_latch.n.fault_in
# --- EXTERNAL ESTOP SWITCH ---
net external-estop <= hm2_7i76e.0.7i76.0.0.input-00
net external-estop => estop-latch.0.fault-in

# --- PENDANT ESTOP SWITCH ---
net pendant-estop <=  hm2_7i76e.0.7i76.0.0.input-26-not
net pendant-estop => estop-latch.1.fault-in 

# --- TORCH BREAKAWAY E-STOP ---
net torch-breakaway <= hm2_7i76e.0.7i76.0.0.input-06
net torch-breakaway => estop-latch.2.fault-in

And finally save the estop state to trigger lights and relays.
net estop-out estop-latch.2.fault-out

In my case I have a red warning light and a stepper disable relay that will switch 5 volts to the stepper drive enable inputs.
# --- E-STOP STEPPER DRIVE DISABLE ---
net estop-out hm2_7i76e.0.7i76.0.0.output-05

# --- E-STOP RED WARNING LIGHT ---
net estop-out hm2_7i76e.0.7i76.0.0.output-00

So putting it all together this is what I got
loadrt estop_latch count=3
addf estop-latch.0            servo-thread
addf estop-latch.1            servo-thread
addf estop-latch.2            servo-thread

# --- ESTOP CHAIN STARTS ---
net latch-reset iocontrol.0.user-request-enable 
net latch0-ok-in iocontrol.0.user-enable-out 

net latch0-ok-in => estop-latch.0.ok-in
net latch0-out <= estop-latch.0.ok-out 
net latch0-out => estop-latch.1.ok-in
net latch1-out <= estop-latch.1.ok-out 
net latch1-out => estop-latch.2.ok-in

net latch-reset => estop-latch.0.reset
net latch-reset => estop-latch.1.reset
net latch-reset => estop-latch.2.reset
net latch-out iocontrol.0.emc-enable-in <= estop-latch.2.ok-out
net estop-out estop-latch.2.fault-out

# --- EXTERNAL ESTOP SWITCH ---
net external-estop <= hm2_7i76e.0.7i76.0.0.input-00
net external-estop => estop-latch.0.fault-in

# --- PENDANT ESTOP SWITCH ---
net pendant-estop <=  hm2_7i76e.0.7i76.0.0.input-26-not
net pendant-estop => estop-latch.1.fault-in 

# --- TORCH BREAKAWAY E-STOP ---
net torch-breakaway <= hm2_7i76e.0.7i76.0.0.input-06
net torch-breakaway => estop-latch.2.fault-in

# --- E-STOP STEPPER DRIVE DISABLE ---
net estop-out hm2_7i76e.0.7i76.0.0.output-05

# --- E-STOP RED WARNING LIGHT ---
net estop-out hm2_7i76e.0.7i76.0.0.output-00

# --- ESTOP CHAIN ENDS ---

I think I'll extend my warning light system to flash the red light at various frequencies so you know visually which signal caused the estop.

Well look at that, I educated myself!
Last edit: 20 May 2017 02:38 by rodw.
The following user(s) said Thank You: tommylight, thefabricator03

Please Log in or Create an account to join the conversation.

More
20 May 2017 12:46 #93399 by rotwang
Perhaps we need more differentiation here between classical E-Stop - as in "the flames from the VFD are shining nicely through the smoke from the motor" = kill the mains to everything - and a rapid stop, as in - "the cutter just broke" = stop what you're doing.
In the classical E-stop you're not bothered about motors free-wheeling to a stop, because everything just went to hell in a hand basket anyway.
Maybe we should rename the other case as R-stop (rapid stop) for situations that may be recoverable if we stop right now, but keep track of where we are.
Just a random thought,
Roger

Please Log in or Create an account to join the conversation.

More
20 May 2017 13:50 #93400 by Todd Zuercher
All of the large commercial CNC routers I use at work (Big machines with Fanuc and one other industiral control) built by big companys like Komo, Northwood, Heian, Anderson, SCM. The E-stop systems do not remove power from any control systems. They only disable all servo drives (not power down), stop the spindle VFDs (using DC injection braking.) and set an E-stop alarm in the control. All using a simple NC logic circuit of series wired switches and relays that trigger all of the actions independently of any control software or PLC. However the control and or PLC do monitor the state of the E-stop.
A central power disconnect is a completely different affair unrelated to E-stop..
The following user(s) said Thank You: smc.collins

Please Log in or Create an account to join the conversation.

Time to create page: 0.109 seconds
Powered by Kunena Forum