Skip to main content
Version: 8.1

Quality Codes and Overlays

Inductive University

Tag Quality and Overlays

Watch the video

A Quality Code represents a level of confidence in a value. Quality codes are made up of a level (Good, Bad, Error, or Uncertain) and an integer. If a value's quality is not Good, the value generally should not be trusted.

Tag Quality in the Designer​

In the Tag Browser, find your Tag, expand it, and scroll down to the meta property called Quality. Here, you can check the quality of the Tag. This example shows a Good Quality Tag, meaning the Tag can be trusted.

One obvious indicator if the Tag is of bad quality is if there is a red error message next to the Tag in the Value column. Hover over the error message to see if there is any additional information about the error. You can also expand the Tag to see the quality issue. This example shows the Query Tag with with a Error Expression Evaluation which helps you resolve the issue promptly.

Component Overlays​

Inductive University

Component Overlays

Watch the video

HMI screens allow users to quickly gauge the health and accuracy of what is displayed at a glance. In a highly distributed system like Ignition, it is especially important as the client may be located at quite a distance (maybe across the world) from the physical process it is monitoring and controlling.

For these reasons, Perspective and Vision components display visual overlays for various reasons to indicate that the data they are displaying is not good, or pending a reply from the device. Each data binding that drives a component is evaluated for quality. If any of these qualities becomes poor, the Perspective or Vision component will show an overlay. The different overlays can mean different things, denoting their underlying cause. What they indicate is based on the Quality properties of Tags.

Component overlays appear in the Designer workspace, Perspective Session, and Vision Client to let designers and operators know when there is a problem with one of the bindings on a component. What is cool about component overlays is that they not only tell you that there is a problem, but they also help diagnose the problem. Vision and Perspective overlay systems are similar, but each look a little bit different.

The sections below describe in detail Perspective and Vision overlays. Each module has its own Tag Quality Code Reference Table displaying the error codes and what they mean.

Quality Code Reference Table​

There are four primary quality codes which quickly inform the user of the quality of the Tag: Good, Uncertain, Bad, and Error.

New in 8.1.27
OPC UA clients are now allowed to write to exposed Tags, which include a StatusCode. This StatusCode is converted to its Qualitycode equivalent, while the write value is passed to the Tag system as a QualifiedValue.
note

For users who have upgraded from 7.9, be aware that old code values have been adapted to match the quality codes below. Because the quality the old values are adapted, tag history quality results and bindings can still be trusted in your upgraded versions. However, it is important to check areas where manual entry may prevent adapted values from populating correctly such as scripts for live checks of tag quality.

Each quality code has a range of subcodes that provide more specific information about the value of the Tag. The following tables outline the primary data qualities. Quality codes are broken up into several ranges. Note that not every value within a range has a code: the space is there for future codes to be added.

  • 0-225: Good quality. The value is generally considered reliable.
  • 256 - 511 : Uncertain quality. Generally represents a value that was good, but the reliability is somewhat questionable. These are generally used when the system hasn't received a new value in a timely manner.
  • 512 - 767: Bad quality. There's a problem with the value, but it's an "expected" or well recognized type of the problem is. For example, the trial expired or read access was explicitly denied.
  • 768 - 1023: Error quality. There is a problem with the value, and the problem was completely unexpected. For example, a query on a query tag couldn't execute, but the Tag doesn't know why. More details on such errors are usually sent to a console somewhere, such as the Gateway's console.

Good Quality (subcodes 0-255)​

QualitySubcodeDescription
Good_Unspecified0A generic "good" code. Generally used in conjunction with a matching good quality subcode, (1,2, or 192).
Good_WritePending2Used when a write is in progress. Generally, values use this code until the system knows the write through successfully, which would then result in a 192 code.
Good192This data has met all criteria for being considered reliable.
Good_Provisional200Good data that should not be considered valid long-term.
Good_Initial201Indicates that the value is an initial/seed value for a system that is starting up.
Good_Overload202​
New in 8.1.2
Represents good data that is being sampled slower than requested due to a resource limitation.
Good_Backfill203Used to indicate good quality values that have arrived out of order. Different systems can choose to process them accordingly.

Uncertain Quality (subcodes 256-511)​

QualitySubcodeDescription
Uncertain256An unspecified degree of uncertainty exists in this value.
Uncertain_LastKnownValue257The current value is unavailable and represents the last known value.
Uncertain_InitialValue258Indicates that a subscription has been made and a good value should be arriving shortly.
Uncertain_DataSubNormal259Insufficient good-quality sources required for the derivation of this value.
Uncertain_EngineeringUnitsExceeded260Indicates that a value has gone beyond its configured engineering units.
Uncertain_IncompleteOperation261An asynchronous operation is currently pending and its result is unknown.

Bad Quality (subcodes 512-767)​

QualitySubcodeDescription
Bad512General code for a bad value.
Bad_Unauthorized513An unauthorized request was made for data that requires authorization.
Bad_AccessDenied514Data requested that requires credentials not held by the requesting user.
Bad_Disabled515Data source is currently not enabled.
Bad_Stale516Data is out-of-date based upon the requested refresh interval.
Bad_TrialExpired517The Trial Mode's timer expired.
Bad_LicenseExceeded518The license limit has been exceeded.
Bad_NotFound519Object requested was not found.
Bad_ReferenceNotFound520Derived or referenced value required an object which was not found.
Bad_AggregateNotFound521Requested aggregate was not found.
Bad_NotConnected522A connection required for this value is not currently connected.
Bad_GatewayCommOff523Connection to the Ignition Gateway is currently turned off. See General Designer Interface.
Bad_OutofRange524This value exceeded its allowed range.
Bad_DatabaseNotConnected525A database connection required for this value is not connected.
Bad_ReadOnly526A write was attempted on a read only target.
Bad_Failure527A "failure" code was received from the underlying system. Additional details may be in the diagnostic message. This generally does not indicate an exception, which would be handled by Error_Exception, but instead a simple failure from a system that can return success or failure.
Bad_Unsupported528The operation is not supported by the target.

Error Quality (subcodes 768-1023)​

QualitySubcodeDescription
Error768An unexpected error occurred while retrieving or calculating this value.
Error_Configuration769The source of this value is not configured correctly.
Error_ExpressionEval770The source expression was unable to be executed.
Error_TagExecution771The source Tag could not be executed.
Error_TypeConversion772The actual value was not able to be coerced into the configured data type for the source of this value.
Error_DatabaseQuery773A database query required for this value caused an error upon execution.
Error_IO774An input/output error occurred while attempting to retrieve or calculate this value.
Error_TimeoutExpired775An asynchronous operation failed due to a timeout.
Error_Exception776An exception was caught, and logged in the relevant system.
Error_InvalidPathSyntax777A path (i.e., Tag path, property path, etc.,) was not able to be parsed because the syntax is invalid.
Error_Formatting778Attempted formatting (i.e., numeric, date formatting) failed.
Error_ScriptEval779A script needed to create this value failed to execute.
Error_CycleDetected780Calculating the value involved an execution cycle.

Perspective Component Overlays​

Component properties may show a quality overlay if the source of data has a certain code. In Perspective, there are three types of quality overlays, each with a large and small variant.

  • The Pending overlay is displayed for Good quality, subcode 2 only
  • The Unknown overlay is displayed for any Uncertain quality subcode
  • The Error overlay is shown for any Bad and Error quality, regardless of subcode

For any large overlay, clicking the icon in the upper right will yield diagnostic information.

For the smaller overlays, clicking on the dot will show the diagnostic information.

note

All Perspective components, regardless of type, will use the three overlays described above. Unlike Vision, details for Perspective overlays are not explicitly displayed.

Vision Component Overlays​

An overlay on a Vision component lets the operator know that they could be looking at a bad value for that Tag. When the overlay goes away and the values start coming in again, the operator knows that it's a valid Tag, and the values can be trusted.

Component Overlays in Designer Mode​

In the following example, you see a red overlay with an icon in the top left corner of the selected LED Display component. The icon gives you a clue to the source of the problem. In this example, it is an SQL Database error. In the Vision Property Editor, the Quality property is highlighted and you'll notice there is a "Error_DatabaseQuery" error message.

The overlays table in the next section show all the possible Vision overlays and what they mean.

Component Overlays in Preview Mode​

Let's switch from the Designer mode to the Preview Mode. To put your active view in Preview Mode, press the Preview / Designer mode icon in the top menubar. Components that have a problem will have a red overlay and an icon in the top left of the component overlay to indicate the problem. The overlay is identical to the overlay that is displayed in the Designer, but the component cannot be selected.

Component Overlays in the Vision Client​

Component overlays in a Vision Client work the same way as they do in Preview Mode of the Designer. You have to look at the icon on the overlay to help you diagnose the problem. Go back to the Designer to correct the problem.

Vision Component Overlay Chart​

For legacy reasons, Vision has different subcodes. Possible subcodes are listed below.

Template Overlay​

In addition, there is a quality overlay for an unknown template. This can occur when the Template Path property on a template instance does not resolve to an existing template. This can happen due to a name change on the template definition, or if a project import file was recently imported, and included usages of a template instance but not the definition.

Tag Quality and Referenced Tags​

When Tags reference other Tags, such as in expressions, they will often pass the worst sub-quality up as their own. For example, even though a particular Tag's expression executes without problem, if the expression references a Tag whose quality is "Bad", the expression Tag will also report "Bad."

Overlay Opt-Out​

Choosing the Overlay Opt-Out option will ignore the quality of the chosen Tag, making it have no effect on the component's quality overlay. The Overlay Opt-Out option is located in the Tag bindings for both Perspective and Vision components. If this option is enabled, the operator will not see any overlays and will have no indication that the underlying Tag quality is something other than good. A word of caution when you use the Opt-Out option because you always want to give the operator some indication that the values they are seeing on the screen can be trusted, and by opting out, you are removing that indicator for the operator.