Ah, okay, I had read that I could do it, obviously it wasn't guaranteed, but I wanted to do it as a complement to the hardware. Thank you so much! Regards.
KRC4 Controller, X11, and Emergency Stop Assistence
-
LucassNieva -
January 7, 2025 at 8:39 PM -
Thread is Unresolved
-
-
I installed a Beckhoff EK1100 on my robot and correctly mapped the inputs and outputs to the module, meaning it works fine. However, I'm not able to set all the outputs to 0 when I activate the E-Stop button. I read that this can be done from WorkVisual, but I'm having trouble with it.
An EK1100 with what I/O?
AFAIK, an EK1100 has no way of knowing what the E-Stop is doing. You could create an SPS routine that, when $ALARM_STOP is active, run a FOR loop through a range of $OUTs and set the all False.
The way more normally used is to connect the output power to the output "slices" on the BK1100 through a relay that's controlled by the E-Stop status. This would break the power to the outputs when the E-Stop is broken, but leave the communications power active. It would also leave the various $OUTs in the same on/off logical states.
-
Exactly, what I was looking for is to change the logical states. For example, in my program, I turn on output 7, and during execution, I press the E-Stop. That logical signal I turned on stays at 1. I was looking for a way to reset it to zero. I read that I can use the $ALARM_STOP variable in the code to do this. Thank you very much for your response.
-
you can but:
a) this is not safe
b) this is not so simple...if you clear outputs in submit when EStop is pressed, then you should also have some way of restoring that state for each output after EStop is no longer active.
adding intermediate variable or array sounds like a low hanging fruit but this is also not very good since boolean variables are not triggering advance run stop so your programs will behave differently.
the simplest solution is to use another range of outputs asa buffer. let your programs use this buffered range. this way your programs still work the same way. finally in SPS add a LOOP that copies range of those buffered outputs to your real IO outputs if EStop is ok...
and if it is not ok, set real outputs to false, without clearing the state of buffered outputs.
-
Thanks to you, I’m learning a lot, and I really appreciate it. Now, going back to the topic, what I actually need is just to turn off the outputs. I don't need them to return to their previous state. I need that when the E-Stop is pressed, any outputs that are true should be set to false, and when the E-Stop is reset, they should remain false. Could I then add this logic in the SPS file to control the $ALARM_STOP variable?
-
Thanks to you, I’m learning a lot, and I really appreciate it. Now, going back to the topic, what I actually need is just to turn off the outputs. I don't need them to return to their previous state. I need that when the E-Stop is pressed, any outputs that are true should be set to false, and when the E-Stop is reset, they should remain false. Could I then add this logic in the SPS file to control the $ALARM_STOP variable?
Yes. Keep in mind, it's up to you to ensure that this doesn't do something unexpected or potentially damaging, and absolutely understand that these are NOT Safety Rated signals. If you're relying on this for operator safety, DON'T.
Assuming you want a particular contiguous group of $OUTs reset, you can do something inside the SPS User section like:
The IF statement can use boolean algebra -- for instance, you might want IF (($EXT OR $AUT) AND $ALARM_STOP) so that this all-off only happens in Automatic, not every time someone lets go of the deadman in Teach mode.
-