Advanced Search

Search Results (Searched for: estop_latch)

  • rodw
  • rodw's Avatar
05 Sep 2026 02:34
Replied by rodw on topic External ESTOP trouble

External ESTOP trouble

Category: Installing LinuxCNC

There are a number of applicable standards. I am no expert on them. Aside from local country specific standards like AS4024 here in Australia, International standards include ISO 13850, IEC 60204-1 and IEC 60947-5-5
on a home machine, often a 2 pole estop button is used. one pole cuts mains power to spindle and stepper motors and the other is low voltage circuit wired to linuxcnc to tell the controller estop has been pressed. But this does not safely bring heavy machines to a stop so it gets more complicated. Also its not helpful if you have the control panel at one end of a plasma table and you want to place an estop at the other end where the console is. One approach might be to run a pull rope right around the table but running mains power to another distant switch clearly adds its own safety risks.
I suspect estop-latch predates the standards but it does allow you to create an estop chain in software. It is somewhat complicated to understand initially and I find its best to draw it on paper as a series of boxes (one for each estop-latch) each of these boxes has an OK-out pin which needs to connect to the reset pin on the next in the chain with the last OK-out connected to iocontrol.emc-enable
Each latch will have either a fault-in or ok-in pin attached to the estop button or door latch or whatever that needs to be safe before the machine will start. Finally, the iocontrol.user-request-enable pin is attached to the reset pin on the very first latch. So when the user requests the machine to be enabled (usually the orange button in axis), a short pulse is sent to the first reset and if all faults are clear, the sigal to start the machine arrives at linuxcnc. The beauty of this approach is that you can just as easily use a momentary push button to act as that reset signal if you wish.   

Taking that into the standards says the controller can have no part in the safety circuit, and every sub-circuit and every contactor needs to have  dual redundancy so a fault will not trigger anything and both circuits need to work before something's enabled. Also if there is a power outage, the machine cannot become live again when power is restored. You need to press that reset button. Also every contactor and every relay needs to be a force guided one where a non conducting pin is forced between relay contacts to guard against them welding closed from an arc.. Aside from that the safety circuit or safety relay does the same thing as estop-latch. It won't enable the machine until every component being monitored is safe.
  • Billy Boy
  • Billy Boy
05 Sep 2026 00:33
Replied by Billy Boy on topic External ESTOP trouble

External ESTOP trouble

Category: Installing LinuxCNC

Gosh... I didn't mean to open a can of worms!

Thank you very much tommylight for your suggested fix. Unfortunately when I add this line to my hal file, linuxcnc fails with the following...

"./Bridgeport.hal:313: Pin 'hm2_7i96s.0.ssr.00.out-00' was already linked to signal 'estop-out'"

(aside: line 313 is where I added tommylight's line)

I have been reading up on the HAL interface, and I have to admit that I am still quite confused. about how these things are intended to work? It is clear that they do, and for that I am thankful. It is just very hard for a newbie such as myself to make sense of.

Rod,
I appreciate all of your helpful literature and the videos you have made on various linuxcnc topics.

When you say "Its pretty well described in the man page and there was a hal tutorial about it on the forum." it would be *super* helpful if you would link the articles/threads you are referencing. Otherwise I really have no way of knowing which particular man page or forum thread you are referring to. There are a number of forum threads which seem to fit your description and which also appear to contradict one another?

I wonder if you are referencing the estop-latch man page? If so, I have read it, and I do not feel that the man page does a very good job of describing estop-latch at all! It does not explain estop-latch's purpose, when it should be used and when it should not. Further, it does not provide any usage examples. The man page does describe the options, and I expect it does so completely, but it does not explain any of them. I found it quite cryptic actually. I am still entirely confused about what problem estop-latch is intended to solve.

I understand there is some debate about whether having the hard estop signal run through linuxCNC is "compliant" or not. I must admit that I am completely in the dark as to what standard we are complying with, so I have no opinion. While I do care about safety, compliance is not a issue for me right now in my home shop.

All I am trying to achieve here is to have "hm2_7i96s.0.ssr.00.out-00" go high when "hm2_7i96s.0.inm.00.input-03" goes low.

Seems like it ought to be simple... but there is clearly some piece of the larger picture that I am missing, because it is appears that it is not simple?

Thank you for your help.

Bill
  • tuxcnc
  • tuxcnc
03 Sep 2026 10:57
Replied by tuxcnc on topic External ESTOP trouble

External ESTOP trouble

Category: Installing LinuxCNC

The issue is that my ESTOP-out is no-longer tracking either the GUI ESTOP or the hardware ESTOP-in.  It just stays asserted all the time with no change of state.
 

I don't have a 7i96s, but out of curiosity I checked it on my 7i92...

You can make two types of mistakes:
1. Electric.
2. Logical.
It looks like you did both.
First, about the electric one. It is true that there are inputs that detect all possible states (high, low and high impedance), but I have only seen such inputs in logic states analyzers. Typically, the input detects only one state or no this state. For example, shorting the input to ground causes the output to change to the opposite state, but it does not matter whether we short the input to Vcc or leave it unconnected anywhere. In this case, if the output of the previous gate is high, closing or opening the serial switch does not change anything because the high state and the high impedance state are interpreted the same.
Now about the logical one. By pressing the serial switch we do not change the input state, we only cut off the signal. And this is not the same as what I explained above.

Your configuration either doesn't work at all, or works in such a way that it cuts off the iocontrol.0.user-enable-out signal. This means that the serial switch does not turn off the machine, it only prevents it from being turned on/off via an icon in the GUI, which is definitely not what you wanted.

Can this be fixed?
Probably yes, but it makes no sense because you have a ready-made and 100% reliable solution - the estop-latch component. A switch between the input and ground is connected there, so that each time it is switched, the input status changes.

This is from my config:
net estop-ext hm2_7i92.0.gpio.027.in => estop-latch.0.fault-in
net estop-reset iocontrol.0.user-request-enable => estop-latch.0.reset
net estop-user-enable iocontrol.0.user-enable-out => estop-latch.0.ok-in
net estop-ok estop-latch.0.ok-out => iocontrol.0.emc-enable-in

And now a few words about the emergency stop switch. As the name suggests, it is used in an emergency situation when we want to stop the machine immediately to prevent it from causing damage.
Sometimes the emergency switch must also disconnect or enable something (for example, turn off the motors and apply the brakes), so simply connecting it to the control program may be insufficient or unreliable (the program may hang or respond with a delay).
You have to remember this, and the bigger the machine, the more seriously that should be treated...
  • rodw
  • rodw's Avatar
03 Sep 2026 03:05
Replied by rodw on topic External ESTOP trouble

External ESTOP trouble

Category: Installing LinuxCNC

Aside: I have not been able to find any documentation that really explains how ESTOP is expected to work?  I'm unclear on if I should work with estop_latch or not?  The estop_latch documentation is also pretty thin and does not appear to include any examples for either simple or complex configurations?
 

Yes, you should use estop-latch if you have an external estop button (or a safety relay but that's another story). Its pretty well described in the man page and there was a hal tutorial about it on the forum.
  • Billy Boy
  • Billy Boy
02 Sep 2026 19:25
External ESTOP trouble was created by Billy Boy

External ESTOP trouble

Category: Installing LinuxCNC

Hi, 

I am retro-fitting my 1968 Bridgeport Series 1 Papertape NC machine with rpi5/Mesa7i96s/Gecko203v.

I've got everything working pretty well it seems, except for the ESTOP.

I have (and want) an external/manual ESTOP-in button.  It is currently setup Normally Closed and appears to be successfully plumbed through to the GUI, which is to say that the GUI ESTOP button tracks the status of the hardware ESTOP-in button perfectly.

The issue is that my ESTOP-out is no-longer tracking either the GUI ESTOP or the hardware ESTOP-in.  It just stays asserted all the time with no change of state.

To be clear, before I attempted to plumb in the hardware ESTOP-in button, my GUI ESTOP was correctly plumbed through to my ESTOP-out so that it would allow me to disable the steppers.

Aside: I have not been able to find any documentation that really explains how ESTOP is expected to work?  I'm unclear on if I should work with estop_latch or not?  The estop_latch documentation is also pretty thin and does not appear to include any examples for either simple or complex configurations?

Here is my current configuration... (generated by pncconf)
# --- ESTOP-OUT ---
net estop-out  =>     hm2_7i96s.0.ssr.00.out-00
setp hm2_7i96s.0.ssr.00.invert-00 true# --- ESTOP-EXT ---
net estop-ext     <=  hm2_7i96s.0.inm.00.input-03#  ---estop signals---
net estop-out     <=  iocontrol.0.user-enable-out
net estop-ext     =>  iocontrol.0.emc-enable-in

Thanks,

B
  • rodw
  • rodw's Avatar
29 Aug 2026 00:04 - 29 Aug 2026 00:04
Replied by rodw on topic More advanced EtherCAT setup questions

More advanced EtherCAT setup questions

Category: EtherCAT

If you really wanted to lock it down you could try using the comp component with your lcec.0.slaves-responding against the expected number of slaves (eg set with setp). Then if you used estop-latch to manage your estop (which you should be using anyway), you could add an additional estop-latch in your estop chain so the machine could not be enabled until all slaves report in.
  • JT
  • JT's Avatar
27 Mar 2026 18:48

Ext hard buttons duplicate Power_PB and Reset

Category: Flex GUI

Flex GUI has nothing to do with halui.

This is my code for my BP external Estop.
# E-Stop Chain
loadrt estop_latch count=1
addf estop-latch.0 servo-thread

# E-Stop Loop
net estop-loopin iocontrol.0.user-enable-out => estop-latch.0.ok-in
net estop-loopout estop-latch.0.ok-out => iocontrol.0.emc-enable-in

# E-Stop Reset
net estop-reset iocontrol.0.user-request-enable
net estop-reset => estop-latch.0.reset
net remote-estop0 estop-latch.0.fault-in <= hm2_5i25.0.7i77.0.0.input-06-not

JT
  • h.hermes
  • h.hermes
14 Mar 2026 16:19
Replied by h.hermes on topic RPi and 7i90 via SPI, estop

RPi and 7i90 via SPI, estop

Category: Driver Boards

Oh, I did not realize that there is a pcnconf utility. I used stepconf for my old machine, so hopefully this will work as well.
Deleting all the estop latch stuff did not work.
I will give pncconf a try next week.
Thank you for your help so far!
  • PCW
  • PCW's Avatar
14 Mar 2026 16:08
Replied by PCW on topic RPi and 7i90 via SPI, estop

RPi and 7i90 via SPI, estop

Category: Driver Boards

Not sure but something about the estop latch is is not working.

I would probable delete all the estop latch stuff as it's really not
needed here.

You might also be better off starting with a pncconf configuration


 
  • h.hermes
  • h.hermes
13 Mar 2026 15:30
RPi and 7i90 via SPI, estop was created by h.hermes

RPi and 7i90 via SPI, estop

Category: Driver Boards

Hello everybody!
I am new to this forum, so first I want to thank everybody for all the information posted here.
I want to replace my old 32-bit computer running a 3-axis stepper cnc via a parallel port. 
What I succeeded in:
  1. I bought a Raspberry Pi 4 and a Mesa 7i90 card.
  2. I used my old computer with parallel port, connected to the 7i90 and programmed the 7i90_spi_svst4_8.bit firmware using mesaflash.
  3. I downloaded the LinuxCNC disk image for the RPi 4 and installed it.
  4. I connected the 7i90 to the Raspberry Pi (about 3 inch flat-cable, all ground lines connected). I can read the device configuration using mesaflash without problems (well after a new install of mesaflash from the git repository).
Now I want to start ``linuxcnc linuxcnc/configs/by_interface/mesa/hm2-stepper/7i90-rpi-spi.ini``. The GUI pops up and everything seems fine.
But when I press F1 to reset the estop latch nothing happens. Up to now I did not connect any drivers or switches to the 7i90.
I changed 'DEBUG = 0x7fffffff' in the ini-file and added a 'show' to the end of the ini-file. I attach the output when running the linuxcnc. I marked what happend when I pressed F1 by '******' in the text.
If you need more information (ini-file, hal-file) let me know.
Many thanks for any support, H. Hermes
  • AlessandroEmm
  • AlessandroEmm
24 Feb 2026 18:49 - 24 Feb 2026 19:06
Replied by AlessandroEmm on topic Remora - Cannot clear E-STOP, without error

Remora - Cannot clear E-STOP, without error

Category: Basic Configuration

Those lines were purely just for illustration of the states output by halcmd.

My HALfile
loadrt remora SPI_clk_div=32 PRU_base_freq=40000

loadrt [KINS]KINEMATICS
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS


addf remora.read servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf remora.update-freq servo-thread
addf remora.write servo-thread

loadrt estop_latch
addf estop-latch.0 servo-thread
net estop-loopout       iocontrol.0.emc-enable-in  <= estop-latch.0.ok-out
net user-enable-out     iocontrol.0.user-enable-out  => remora.SPI-enable
net estop-loopin        remora.SPI-status  => estop-latch.0.ok-in => estop-latch.0.reset
net estop-reset         iocontrol.0.user-request-enable => remora.SPI-reset





setp remora.joint.0.scale       [JOINT_0]STEPGEN_SCALE
setp remora.joint.0.maxaccel    [JOINT_0]MAX_ACCELERATION
net xpos-cmd            <= joint.0.motor-pos-cmd        => remora.joint.0.pos-cmd
net j0pos-fb            <= remora.joint.0.pos-fb        => joint.0.motor-pos-fb
net j0enable            <= joint.0.amp-enable-out       => remora.joint.0.enable





setp remora.joint.1.scale               [JOINT_1]STEPGEN_SCALE
net y1-pos-cmd   <= joint.1.motor-pos-cmd => remora.joint.1.pos-cmd
net y1-pos-fb    <= remora.joint.1.pos-fb  => joint.1.motor-pos-fb
net y1-enable    <= joint.1.amp-enable-out => remora.joint.1.enable

net y2-pos-cmd   <= joint.2.motor-pos-cmd => remora.joint.2.pos-cmd
net y2-pos-fb    <= remora.joint.2.pos-fb  => joint.2.motor-pos-fb
net y2-enable    <= joint.2.amp-enable-out => remora.joint.2.enable

net z-pos-cmd    <= joint.3.motor-pos-cmd => remora.joint.3.pos-cmd
net z-pos-fb     <= remora.joint.3.pos-fb  => joint.3.motor-pos-fb
net z-enable     <= joint.3.amp-enable-out => remora.joint.3.enable

net X-min       remora.input.1         => joint.0.home-sw-in joint.0.neg-lim-sw-in
net Y-min       remora.input.2         => joint.1.home-sw-in joint.1.neg-lim-sw-in
net Z-min       remora.input.4         => joint.2.home-sw-in joint.2.neg-lim-sw-in
  • tuxcnc
  • tuxcnc
23 Feb 2026 19:03 - 23 Feb 2026 19:12
Replied by tuxcnc on topic Remora - Cannot clear E-STOP, without error

Remora - Cannot clear E-STOP, without error

Category: Basic Configuration

  • [b]Configuration is default remora:[/b]
  • [b][code]net user-enable-out <= iocontrol.0.user-enable-out => remora.SPI-enable
    [/code][/b]
  • [b][code]net user-request-enable <= iocontrol.0.user-request-enable => remora.SPI-reset
    [/code][/b]
  • [b][code]net remora-status <= remora.SPI-status => iocontrol.0.emc-enable-in
    [/code][/b]

I did it a long time ago and unfortunately I don't remember...
But I think I had the same problem.
My configuration looks like this:
# estop and SPI comms enable and feedback

#  net user-enable-out     <= iocontrol.0.user-enable-out          => remora.enable
#  net user-request-enable <= iocontrol.0.user-request-enable      => remora.reset
#  net remora-status       <= remora.status            => iocontrol.0.emc-enable-in

loadrt estop_latch
addf estop-latch.0 servo-thread
net estop-loopout       iocontrol.0.emc-enable-in  <= estop-latch.0.ok-out
net user-enable-out     iocontrol.0.user-enable-out  => remora.enable
net estop-loopin        remora.status  => estop-latch.0.ok-in => estop-latch.0.reset
net estop-reset         iocontrol.0.user-request-enable => remora.reset
net remote-estp         estop-latch.0.fault-in  <= remora.input.12.not
This is Remora via Ethernet, but the differences are probably cosmetic.
  • amanker
  • amanker
01 Feb 2026 11:48
Replied by amanker on topic Problem with estop_latch

Problem with estop_latch

Category: Basic Configuration

They are talking about user-request-enable pin behaviour.
But I noticed that even after all conditions met for estop_latch.ok-out, this output never becomes true.
  • meister
  • meister
  • amanker
  • amanker
31 Jan 2026 16:23 - 31 Jan 2026 16:25
Problem with estop_latch was created by amanker

Problem with estop_latch

Category: Basic Configuration

I have upgraded my linuxcnc 2.9.8 on rpi4 bookworm to 2.10pre. After installation estop_latch is not working. It was working as it is on 2.9.8. I can see estop_latch.ok-in = true, estop_latch.reset = true,  estop_latch.fault-in = false etc all good but estop_latch.ok-out never comes true.

My config for estop_latch

    loadrt estop_latch names=estop_latch
    addf estop_latch servo-thread
        
# estop loopback, SPI comms enable and feedback
    net user-enable-out     <= iocontrol.0.user-enable-out        => remora.SPI-enable 
    net remora-status      remora.SPI-status     => estop_latch.ok-in
    net estop-fault_in remora.input.09 => estop_latch.fault-in
    net user-request-enable <= iocontrol.0.user-request-enable    => remora.SPI-reset estop_latch.reset
    net estop-status estop_latch.ok-out => iocontrol.0.emc-enable-in    

But If I dont use estop_latch machine works.

    net user-enable-out     <= iocontrol.0.user-enable-out        => remora.SPI-enable
    net user-request-enable <= iocontrol.0.user-request-enable    => remora.SPI-reset
    net remora-status     <= remora.SPI-status     => iocontrol.0.emc-enable-in

estop_latch was working in 2.9.8 with same config.
Displaying 1 - 15 out of 23 results.
Time to create page: 1.427 seconds
Powered by Kunena Forum