New mode for Boolean Button #2831
Replies: 8 comments 4 replies
-
The UI should not perform any automation. The motor record by itself is prepared for this. Sounds like you added something to the IOC where writing "RUN" to the IOC keeps the motor running, so you must stay connected to be able to stop the "RUN". Now you need a heartbeat in case the UI goes away, because you broke the basic motor record behavior. The UI cannot guarantee writing a PV at a fixed period. You cannot make the UI part of your machine protection. Whoever does that should implement their own standalone python UI, and sign a paper accepting full responsibility for any damages. |
Beta Was this translation helpful? Give feedback.
-
Thanks for the input. |
Beta Was this translation helpful? Give feedback.
-
In a distributed control system with a network protocol that can be interrupted and defaults to a 30 second timeout, you can't have a "move until aborted" because you risk a connection loss after "move" and then have no way to "abort". |
Beta Was this translation helpful? Give feedback.
-
The idea was to let the IOC initiate the move on first write from client, then abort if client sends 0, or if no heartbeat from client arrives within a certain amount of time. |
Beta Was this translation helpful? Give feedback.
-
I understand what you want to do. You can't. Channel Access doesn't support that. Motor record doesn't support that. |
Beta Was this translation helpful? Give feedback.
-
I replied to Kay's first comment; please look at the motor record documentation. The fields in question are JOGF (jog forward) and JOGR (jog reverse.) They indeed do tell the motor "move until I tell you otherwise". |
Beta Was this translation helpful? Give feedback.
-
The idea is not to write to a motor record from the Boolean Button, but instead to a - for lack of a better word - "driver" PV that would control the motor record. |
Beta Was this translation helpful? Give feedback.
-
I get that. You could actually use the tweak TWF, TWR which reset to 0 so you keep writing them. |
Beta Was this translation helpful? Give feedback.
-
Suggesting the following new operational mode for the Boolean Button widget.
The current push mode could be extended to support a heartbeat case. If user defined frequency >0 then use heartbeat, i.e. send 1 (or 0 in inverse mode) repeatedly, otherwise send only once. Behavior when user releases button unchanged. A new widget property for the frequency is needed, default 0, max 10 (?). Toggle mode would ignore the frequency property.
Motivation:
Boolean buttons are used to move a motor, when user releases button, 0 is sent to PV to abort movement. But if the widget looses connection to PV, the motor will continue movement. Developers solve this potential "run amok" situation by adding a heartbeat PV used to check that Phoebus is still connected to IOC. This creates a dependency to an OPI script.
Beta Was this translation helpful? Give feedback.
All reactions