I'm using an ABB safety relay on my CNC converted mill (forum.linuxcnc.org/12-milling/50559-opti...mh50v-cnc-conversion) and I've set it up so that LinuxCNC feeds the e-stop circuit via an output on the Mesa board.
If LinuxCNC isn't up and running the e-stop cannot be reset. If the e-stop is triggered it can only be reset via my physical e-stop reset button, e-stop cannot be reset in software.
I'm using Delta B3 servos which have two different power connections on the servo drives, one connection for the logic section and one for the servo power section. The logic section remains powered all the time (per the Delta manual) but the servo power section is cut via contactors when an e-stop is triggered. The drives also have the e-stop signal connected to them so they can detect an e-stop and stop the servos using the built in brake resistor.
I really like the way you setup reacts. I cannot figure out if your safety relay can actually trip without LinuxCNC being on? From what i can see on your schematic the estop is wired to the drives + IO pin, but not the safety relay?
Your drives are better than mine. The way logic and power is seperated is very handy! Mine doesn't have that. Neither does my drives support external e-stop input since they run via EtherCAT.
pippin88 post=305449 userid=16922
Ha e you tried just setting it up in hal as an estop?
I have a simple estop button to LinuxCNC and when I reset the button LinuxCNC comes out of estop.
I still have to hit "power on" on LinuxCNC after reseting estop. This is generally recommended behaviour
Reseting estop should never result in immediate motion
Yeah, hitting "Power on" in LinucCNC is just fine, it makes good sense. And i agree that estop reset shouldn't restart motion, that is crucial!
I tried just simply setting the e-stop pin to emc-enable:
net estop lcec.0.DI03.din-0-not => iocontrol.0.emc-enable-in
...but this doesn't work and i also suspect that this isn't actually what i want

rodw post=305452 userid=20660
There are two ways to do this. You can either run an external latch (which is a momentary switch) that resets the safety relay. In this case, you should connect a signal to a Linuxcnc input which is connected in hal to iocontrol.0.emc-enable-in This is the approach I took.
There is no need to press anything in Linuxcnc
I tried this simple approach with the above HAL-code, but this isn't working(at all)... maybe the emc-enable-in should be pulsed? I'm unsure how the internals of LinuxCNC works with these pins...
rodw post=305452 userid=20660
The other way is to use iocontrol.0.user-request-enable instead of your external latch. Linuxcnc sends a pulse on this signal to act as the latch when the on screen estop is reset (S34 in the diagram).
When I researched this, this was compliant provided you isolated Linuxcnc (your controller) with redundant relays (K3 & K4). These needed to be force guided relays where a non conducting pin is forced between the contacts when they are triggered to ensure the contacts cannot become welded closed.
I should have posted a diagram in my previous post, but better late than never. This is my safety circuit:
I'm starting to think that i have to change this. So instead of the resetbutton(S6) goes directly to the safety-relay it actually goes to LinuxCNC. Then LinuxCNC is the only on that can reset the safety relay, just like in Unlogics case mentioned above. The question is then if should have an additional latch inside LinuxCNC or how should i structure the HAL?
A whole other can of worms is that the drives are connected via EtherCAT and uses CIA402, so i need to manage their state when the estop is reset. I have to re-initialize them after a reset, i'm not even sure this is doable via HAL logic...