Estop race condition
- jamesgao
- Offline
- New Member
-
Less
More
- Posts: 11
- Thank you received: 0
26 Feb 2018 15:34 #106535
by jamesgao
Estop race condition was created by jamesgao
Hi everyone, I'm trying to understand how to resolve this Estop race condition. I've designed an estop chain that looks like this:
+5V -- Estop In -- Physical switch -- Mosfet -- GND
Estop Out
I have HAL configured such that iocontrol.0.user-enable-out drives the mosfet, and Estop In drives iocontrol.0.emc-enable-in.
My issue is that on startup, Estop In is HIGH. This prevents me from turning on the machine in order to drive Estop Out HIGH in order to drive Estop In LOW. Is this Estop chain not the recommended method to design for an Estop chain? What's the best way to resolve this issue?
+5V -- Estop In -- Physical switch -- Mosfet -- GND
Estop Out
I have HAL configured such that iocontrol.0.user-enable-out drives the mosfet, and Estop In drives iocontrol.0.emc-enable-in.
My issue is that on startup, Estop In is HIGH. This prevents me from turning on the machine in order to drive Estop Out HIGH in order to drive Estop In LOW. Is this Estop chain not the recommended method to design for an Estop chain? What's the best way to resolve this issue?
Please Log in or Create an account to join the conversation.
- Todd Zuercher
-
- Offline
- Platinum Member
-
Less
More
- Posts: 4998
- Thank you received: 1459
26 Feb 2018 16:06 #106536
by Todd Zuercher
Replied by Todd Zuercher on topic Estop race condition
What kind of io are you using?
With a parallel port for my e-stop loops I use net ext-estop <= parport.0.pin-11-in-not => iocontrol.0.emc-enable-in.
With a parallel port for my e-stop loops I use net ext-estop <= parport.0.pin-11-in-not => iocontrol.0.emc-enable-in.
Please Log in or Create an account to join the conversation.
- jamesgao
- Offline
- New Member
-
Less
More
- Posts: 11
- Thank you received: 0
26 Feb 2018 16:25 #106537
by jamesgao
Replied by jamesgao on topic Estop race condition
I'm actually using Machinekit, so I have Estop in and Out both being driven by bb_gpio pins. I actually technically have one extra mosfet in my chain -- emcmot.00.enable is also hooked into another mosfet. I'm wondering if that's the actual source of the race condition?
Please Log in or Create an account to join the conversation.
- jamesgao
- Offline
- New Member
-
Less
More
- Posts: 11
- Thank you received: 0
26 Feb 2018 17:05 #106539
by jamesgao
Replied by jamesgao on topic Estop race condition
I just figured it out! The problem was the extra mosfet. Specifically, my full Estop chain looks like this:
+5V -- LED -- E-in -- Switch -- Mosfet -- Mosfet -- GND
E-out Enable
E-out (iocontrol.0.user-enable-out) is HIGH irregardless of the state of E-in (iocontrol.0.emc-enable-in). However, Enable (emcmot.00.enable) is only HIGH if E-in is already LOW. Hence the race condition! Thankfully HAL makes this pretty easy to solve -- I just replicate the E-out signal on the Enable pin, and my circuit still works.
+5V -- LED -- E-in -- Switch -- Mosfet -- Mosfet -- GND
E-out Enable
E-out (iocontrol.0.user-enable-out) is HIGH irregardless of the state of E-in (iocontrol.0.emc-enable-in). However, Enable (emcmot.00.enable) is only HIGH if E-in is already LOW. Hence the race condition! Thankfully HAL makes this pretty easy to solve -- I just replicate the E-out signal on the Enable pin, and my circuit still works.
Please Log in or Create an account to join the conversation.
Time to create page: 0.098 seconds