Memory Tag Value Changed Event Fires on Startup/Creation with initialChange=True and Uncertain_InitialValue Previous Value

  1. Yes, to all.

  2. The initialChange flag means the infrastructure has had a gap in attention (long or short) and doesn't know, for sure, what the previous value really is. For memory tags, it is initialized from the value storage, but might be out of date. You are not guaranteed that the first "real" value change has initialChange false.

  3. No. For other than memory tags, previousValue is entirely null on startup/tag restart. Memory tags try to start up from value storage, if possible. You really should not even touch previousValue when initialChange is true.

  4. None of the above. When initialChange is true, you must determine from your own recordings, what the previous value was as far as your business logic is concerned. This may require time-consuming DB or historian or API calls that can be avoided when initialChange is false.

  5. Yes, memory tags have a value storage system, that tries to capture all writes, but obviously cannot guarantee it. If your gateway shuts down or fails over to a redundant backup right after a memory tag write, it may be lost.

If you have business logic that absolutely has to note changes reliably, you need to use a high-availability DB as the source of truth.