I have a basic client tag question.
I have a client tag that has an expression to take the value from a gateway tab. This client tag gets used a lot in my vision windows.
But what I see is that the client tag value gets updated from the gateway, but if I change the client tag after it got updated from the gateway tag, it does not seem to update automatically again from the gateway tag until the gateway tag changes.
I like this feature but how does the client tag know when the gateway tag changes?
Expressions throughout Ignition are able to automatically set up tag 'listeners'; anywhere you reference a tag in the curly-brace syntax, a listener is automatically created. In the client, those listeners are bundled together by a mechanism in the client and collected into a set of subscriptions. Those subscriptions are maintained with the gateway, and the client will automatically collect new values for any of its subscribed tags as they are generated by changes from the gateway.
Note that this "listener" behavior is standard for property bindings, too, in both Vision and Perspective. Unless a binding has some kind of polling set up, the binding will execute once when starting up (page/view/window/template), and thereafter only when something it is listening to changes. (If not listening to anything else, it won't run again after startup.) Anything else written to that item in the meantime will persist until the binding executes again.
This is quite handy for ensuring entry fields are initialized, by providing an expression binding that yields the appropriate constant but has no curly-brace reference and no polling function.