• Not Answered

How to read quality and timestamp of a OPC tag in DeltaV using OPC mirror?


I am reading and writing OPC tags from/to a Wave Rocker OPC server in DeltaV control module through OPC mirror. How can I read the quality and timestamp values for these tags in DeltaV?

Do I need to create parameters as Floating point with Status or Boolean with Status in DeltaV in order to read quality? Does the OPC mirror pass though the current value with quality (good or bad) or does it pass only good quality from cache (last good quality value)?



6 Replies

  • You would need to get the quality mapped to the .ST field of the DeltaV parameter you were writing to. I've used the range mapping option in mirror to convert a status tag from a third party OPC into a quality status value that DeltaV uses (128 GoodNonCascade, etc)

    If your Wave Rocker uses the same quality values then you should be able to map directly.
  • In reply to AdrianOffield:

    Thanks for the reply Adrian.
    In OPC mirror configuration, I don't see quality as a separate field for tags in wave rocker server. Does that mean the quality field is not available, but when I browse these tags in Matrikon OPC Explorer, I can see quality and timestamp.
  • In reply to Darshana:

    Per the OPC Mirror help file:

    "OPC Mirror will not write a value to the destination if the source has not changed or if the source value does not have a good quality. Therefore, when a value in the destination has not changed for a long while, either the source value has not changed or it has a bad quality associated with it."

    If the source OPC Tag quality is bad, then you will not know it is bad because it will not be transferred.

    If you can identify the tag's quality in the source system as another tag (whose quality should not be in question), then you can map that separate tag to the status of the DeltaV destination tag, but again you have to make sure the quality mapping is done appropriately.

    Alternatively, you can have logic in DeltaV destination module set the quality bad on a time basis equal to 2X the Pipe's automatic refresh interval. That way, the pipe will always reset the value and quality, (unless the quality is bad).   I would test this idea, first.

    Generally, a heartbeat or watchdog from the source system can be monitored by the DeltaV system and take action (set local quality bad) if it fails (i.e. communication or OPC Server failure), but this will not give you granularity of the OPC value quality  on a tag by tag basis.


  • In reply to Youssef.El-Bahtimy:

    See the attached image of a proposed solution.

    The problem is we need to identify that a source value is bad (i.e. the OPC tag has not been written recently; but that could also be the case if the value doesn't change by more than 0.01 or the OPC Mirror Client, or source OPC Server is unresponsive)

    In the proposed solution, we overwrite the input OPC destination value with a nonsense value (-99999 if that truly is not a sensible value for the tag) at the end of every scan. Before that, we check if the OPC Value is not -99999 (i.e. OPC Mirror sucessfully wrote a meaningful value to it) and transfer that value and the input tag quality (should be good) to the evaluated ANALOG_IN.

    If the OPC Value is -99999, a condition block QUALITY_TIMER starts the TIMER. Once the TIMER exceeds the 120 second limit and the OPC input is still -99999, then we set the ANALOG_IN to a bad status.

    Why 120 seconds? Consider if a tag rarely changes. OPC Mirror won't write a new value unless you force it to by configuring an automatic refresh interval on the pipe of 1 minute (the lowest setting). If everything is working properly, worst case a new value will be written every 60 seconds, regardless of exception. I add another full scan in (just in case) but now that I think about it, we could probably set this for 70 seconds and catch problems sooner, without creating false alarms.

  • In reply to Youssef.El-Bahtimy:

    This is useful to generate I/O bad alarms for PVs. But DeltaV is still reading stale value for 70 or 120 seconds depends on the quality timer value. I need to check what will happen if my EM or phase use this stale value to resolve a transition incorrectly.

  • In reply to Darshana:

    I would expect the local contol system (i.e. the wave rocker) would take first level action when it's own I/O signals have questionable quality. This should include setting an alarm bit, or other fail-safing activities that can be detected by DeltaV acting as the SCADA.  I would research this with the OEM vendor.

    Every OPC integration I've seen uses a watchdog/heartbeat mechanism for detecting comm loss, and always includes a timeout of between 30 and 120 seconds before the supervisory system (DeltaV) takes action to prevent false positive failures when the comms go down momentarily (which they frequently do) .  By the same token, taking action for a momentary quality change could create a lot of unneccessary reaction by the supervisory system.