I am using some property bindings to animate background fill color on some objects. When the window containing the objects load (upon opening the window), I often see the "Uncertain_InitialValue" overlay.
The expression is rather simple:
if(plcValue_Tag1, string_tag1, string_tag2)
The 'string' tags are memory tags with an RGB string.
The PLC tag is read from an UA Server on my PLC (Siemens S7-1500 - Ignition is the UA Client).
I was trying to determine if the issue was the PLC tag or something else. As a test, I changed the expression to:
The "Uncertain_InitialValue" overlay still appears frequently when opening the window. I then changed the binding to a Direct Tag reference to 'string1' and the overlay no longer appears.
The issue seems to be with using an Expression to evaluate the property binding value. Is there anything I can do to mitigate this, short of disabling the overlay display? I'm still am on 8.1.24 so perhaps I was thinking perhaps an update might also help.
There's an unavoidable round trip to the gateway to retrieve a tag to display if it isn't already subscribed for some other purpose in the client. In a LAN, that round-trip often completes before the window/template has initialized, and the overlay never appears. But minor complications can make the UI lose that race.
For items that are certain to end up with a good value, simply use the overlay opt-out for that binding.
Use an expression binding that includes quality checking and
forceQuality() to selectively allow specific qualities to pass through.
Use a "do-nothing" client tag change event to subscribe to critical tags all the time, so that they never are uncertain when windows open.
Thanks for the suggestions Phil.
Can you elaborate a bit more on the "do-nothing" option?
By this, do you mean have some client tag and use that to drive the tag group leased rate?
No, use a Client Tag Change event script, subscribed to gateway tags of particular interest. That will start up very early in the client's life cycle, so the actual tag values are very likely to be present when any other window opens. And those tags will stay subscribed and "fresh" for the entire life of the Vision client.
The script can just be a one-line python
pass statement. (Unless you want to do something more as those tag values change.)
Most of the tags in question are static memory tags that I set and are never changed outside of Designer environment. The easiest solution for these are to just disable the overlay for the binding in question.
I'll keep the other solutions in mind for other tags if I run into this again.