Polling rate and timer buttons

We’re troubleshooting an intermittent issue and I suspect it has to do with the use of a Momentary Button where the On Time property is less than the polling rate of the project. We’re going to try changing the buttons to One-Shot buttons, but it’s got me curious about how Ignition does its timing.

Do tag read/writes get queued up and sent at the frequency of the polling rate or are they asynchronous?

For example, say I have a project with a polling rate of 10 s and a Momentary Button with an on time of 1 s, would this be a possible sequence of events?

0:00, project polls and updates all the tags
0:05, Momentary Button is pushed and the value is 1
0:06, Momentary Button timer expires and the value is set back to 0
0:10, project polls and updates all the tags, writing a value of 0 to the button’s bound tag

Basically, would the button press get “lost”?

Ok, so the short answer is “no”. Writes do not wait for the polling interval to elapse - they are sent immediately.

There are other things at play here though that you may need to consider.

One is the binding’s fallback delay. After it writes, it waits to see the value it wrote be read back. (this is when the flashing ant-tracks appear around the component). If it doesn’t see a value come back within this timeout, it will write the original value back to the component’s property. I could see how this might affect the momentary button’s ability to send the clear bit. This would be the same issue we fixed in 7.5.5 referenced in this thread.

Another thing is that if you set a long hold time on a momentary button, press the button, and then close the window the button is on, then the button won’t have a chance to send the clear bit.