Only a few OPC UA Quality Codes translated to Ignition

I’ve done a test. In my driver I generated Tags from all subcodes like this:

for (StatusCode.SubCode c : StatusCode.SubCode.values()) {
… generate tags with respective subcodes …

However, only a bunch of subcodes are recognized by Ignition (translated from OPC UA to Ignition Quality).

  • Bad_ConfigurationError -> Config Error (4)
  • Bad_DataUnavailable -> Bad Quality (0)
  • Bad_NoData Available -> Bad Quality (0)
  • Bad_NotConnected -> Not Connected (8)
  • Bad_NotFound -> Not Found (404)
  • Bad_ServerNotConnected -> Not Connected (8)
  • Bad_ShelvingTimeOutOfRange -> Demo Expired (900)
  • Bad_UserAccessDenied -> Access Denied (403)
  • Uncertain_LastUsableValue -> Uncertain (showing last value) (68)
  • Uncertain_NoCommunicationLastUsableValue -> Uncertain (showing last value) (68)

Other codes are translated to Unknown (600)

According to this document:

other codes should be supported like: SENSOR_BAD (80), SUB_NORMAL (88), …

I would also need Uncertain_SubstituteValue to be supported at least.

This is important to translate Quality from IEC protocols.

Is it possible to extend or customize the translation from OPC Quality to Ignition Quality?

No, unfortunately the Ignition quality codes are not extensible.

I’ve had the same struggle myself when working on drivers. You’ll have to settle for a very small subset of StatusCodes and use logging to provide additional information or use more detailed StatusCodes but live with Ignition turning them into Unknown quality.

I wouldn’t mind that Ignition displays the unknown qualities as “Unknown” quality, if only the integer constants went through somehow.

For me the right solution woud be to pass OPC quality as is and have it as maybe “UserQuality” or “SourceQuality” in Tag attributes besides “Quality”. But I guess this would involve a major change in the Ignition architecture.

I guess it wouldn’t be too hard to automatically offset the OPC codes to not get in the way of Ignition quality codes.
GOOD … 0x00 -> 0x20xxxxxx (offset)
UNCERTAIN … 0x40 -> 0x40xxxxxx (same)
BAD … 0x80 -> 0x80xxxxxx (same)
The overlay icon could be a user quality figure

But maybe there are other things to consider and I am oversimplifying :slight_smile:

Anyway, thank you for the quick reply