Serious safety deficiencies in GRBLhal: EMERGENCY STOP + Feed-Stop #321
Replies: 1 comment 5 replies
-
Are my mixing Reset (or soft reset, inherited from legacy Grbl) with the grblHAL Emergency stop signal? The former does not block execution if asserted unless $64 (Force init alarm) is set true (at startup only), the latter should block execution until the input is deasserted. Drivers typically implement one of these bound to the same input pin, the default mode is driver and compatibility mode dependent. In ioSender the reset signal "LED" is denoted by "R", emergency stop by "E". Safety wise it is better to have the reset input routed as emergency stop and to relay(s) that cuts power to the spindle and steppers when it is asserted.
I do not understand what you mean by "NOT-STOP".
This is carried over from legacy Grbl and, if changed, would likely result in a lot of support noise? It seems to me that many do not connect any of the control signals to switches at all... I could add interlock options for feed hold and cycle start , maybe like this: if cycle start is permanently asserted it should block any movement (even when asserted during motion?), if feed-hold is permanently asserted likewise so - and it should in addition block any cycle start command or signal.
This is only true if a soft reset or and emergency stop is detected when no motion is ongoing. If ongoing the physical position is likely to be different from what the controller believes due to no system having infinite deceleration. Feed hold executes a controlled deceleration to a stop so that will keep the position in both grblHAL and legacy Grbl. What is new in grblHAL is that homed position can be kept over a soft reset or an estop if position is not deemed lost - a $22 (homing cycle) option.
Legacy Grbl does not have an emergency stop input that is handled by firmware. Resetting the MCU is the same as cold start. You can still connect the MCU reset input on most grblHAL controllers (?) to an estop switch if you want, but note that this will sever any native USB or network connection and any data in memory will be considered lost. Here is what it looks like in ioSender when estop is asserted: Jogging is blocked (by the sender), error 9 is returned from the gcode parser and error 79 from the $ command parser until the estop input is deasserted and Reset/Unlock commands are sent. |
Beta Was this translation helpful? Give feedback.
-
Serious safety deficiencies in GRBLhal:
I have noticed the following errors:
BOTH above inputs are correctly displayed in the IOSender but internally only the level change is evaluated.
The NOT-STOP can NOT be activated correctly in idle mode !
I.e. in spite of activated EMERGENCY STOP the axes can be moved by JOG commands!
If the EMERGENCY STOP has been activated (statically set) in idle mode (the IOSender also shows the activation correctly !),
the machine can be started normally in spite of activated EMERGENCY STOP !!!
Here is missing in my opinion the real port query of the NOT-STOP and the prevention that a command is accepted at all.
The FEED-Stop should also as above in any case NOT (only) evaluate the level change but the static FEED-Stop signal.
It is very important, that the machine can NOT start automatically, if the FEED-Start should be set because of an error.
Here the "machine protection law" already demands an automatic restart.
I.e. the FEED-Start should evaluate the level jump with a small time delay.
In no case the pure static signal should be evaluated here.
Good function:
The values of the X-, Y- and Z-axes are retained during EMERGENCY-STOP and FEED-STOP, please keep it that way !
Note:
In the past, with the normal GRBL (ATMEGA), at the EMERGENCY stop, the MCU was simply pulled to RESET.
Thus a real EMERGENCY STOP was present, but unfortunately also the values of the X, Y and Z axes were lost.
This should no longer be so.
With best regards
Beta Was this translation helpful? Give feedback.
All reactions