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.
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_Unspecified||0||A generic "good" code. Generally used in conjunction with a matching good quality subcode, (1,2, or 192).|
|Good_WritePending||2||Used 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.|
This data has met all criteria for being considered reliable.
|Good_Provisional||200||Good data that should not be considered valid long-term. |
|Good_Initial||201||Indicates that the value is an initial/seed value for a system that is starting up. |
Represents good data that is being sampled slower than requested due to a resource limitation.
|Good_Backfill||203||Used to indicate good quality values that have arrived out of order. Different systems can choose to process them accordingly.|
256 - 511
|Uncertain||256||An unspecified degree of uncertainty exists in this value.|
|Uncertain_LastKnownValue||257||The current value is unavailable and represents the last known value.|
|Uncertain_InitialValue||258||Indicates that a subscription has been made and a good value should be arriving shortly.|
|Uncertain_DataSubNormal||259||Insufficient good-quality sources required for the derivation of this value.|
|Uncertain_EngineeringUnitsExceeded||260||Indicates that a value has gone beyond its configured engineering units.|
|Uncertain_IncompleteOperation||261||An asynchronous operation is currently pending and its result is unknown.|
512 - 767
|Bad||512||General code for a bad value.|
|Bad_Unauthorized||513||An unauthorized request was made for data that requires authorization.|
|Bad_AccessDenied||514||Data requested that requires credentials not held by the requesting user.|
|Bad_Disabled||515||Data source is currently not enabled.|
|Bad_Stale||516||Data is out-of-date based upon the requested refresh interval.|
|Bad_TrialExpired||517||The Trial Mode's timer expired.|
|Bad_LicenseExceeded||518||The license limit has been exceeded.|
|Bad_NotFound||519||Object requested was not found.|
|Bad_ReferenceNotFound||520||Derived or referenced value required an object which was not found.|
|Bad_AggregateNotFound||521||Requested aggregate was not found.|
|Bad_NotConnected||522||A connection required for this value is not currently connected.|
|Bad_GatewayCommOff||523||Connection to the Ignition Gateway is currently turned off. See General Designer Interface. |
|Bad_OutofRange||524||This value exceeded its allowed range.|
|Bad_DatabaseNotConnected||525||A database connection required for this value is not connected.|
|Bad_ReadOnly||526||A write was attempted on a read only target. |
|Bad_Failure||527||A "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_Unsupported||528||The operation is not supported by the target.|
768 - 1023
|Error||768||An unexpected error occurred while retrieving or calculating this value.|
|Error_Configuration||769||The source of this value is not configured correctly.|
|Error_ExpressionEval||770||The source expression was unable to be executed.|
|Error_TagExecution||771||The source Tag could not be executed.|
|Error_TypeConversion||772||The actual value was not able to be coerced into the configured data type for the source of this value.|
|Error_DatabaseQuery||773||A database query required for this value caused an error upon execution.|
|Error_IO||774||An input/output error occurred while attempting to retrieve or calculate this value.|
|Error_TimeoutExpired||775||An asynchronous operation failed due to a timeout.|
|Error_Exception||776||An exception was caught, and logged in the relevant system.|
|Error_InvalidPathSyntax||777||A path (i.e., Tag path, property path, etc.,) was not able to be parsed because the syntax is invalid.|
|Error_Formatting||778||Attempted formatting (i.e., numeric, date formatting) failed.|
|Error_ScriptEval||779||A script needed to create this value failed to execute.|
|Error_CycleDetected||780||Calculating 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.
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 overlays for different sub codessubcodes. Possible overlays subcodes are listed below.
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.