I am trying to configure a robust bi-directional communication between database and Ignition tags. In the video below, I’ve recorded issues, that bother me:
At 0:05 and multiple times after - sometimes the database updates after value change of tag, sometimes not. Why is it happening?
0:35 - change of value in the database is not recognized by the tag, but after changing value of the other tags in the Designer, the value from the database is sent to the tag. What should I do, to make the tag update after value change in DB?
Not sure about #1, as I don’t ever use bidirectional mode.
#2 is simple: Triggered transaction groups don’t poll the database for changes. You have a trigger (tag changes). Any trigger is only evaluated within Ignition–without reference to the DB content. Try turning off the trigger (might fix #1, also).
Neither. It is a nightmare for race conditions. In general, I avoid having any tag or data element written from more than one source. Not just in a transaction group.
Don’t use one tag. Use two. By “sourced from”, I mean only one end writes to a particular tag. The other end writes to different tag to acknowledge. Having one end (PLC, perhaps) clear a register after the other end (Ignition, perhaps) sets it as a trigger is an anti-pattern that will cause grief.
I make two exceptions:
Machine startup/initialization may required a PLC to set up defaults for tags that are written occasionally.
Recipes values may be edited from multiple directions, as the “source” of such writes is the operator.