Skip to content

Tag Quality, Values & Timestamps ​

Last updated

Every tag value carries a quality and a timestamp along with the value text.

Quality codes ​

QualityDotTooltipWhen you see it
goodGreenQuality: GoodThe driver read the tag successfully. Local tag writes, expression results and _STATUS tags are always good.
badRedQuality: Bad / StaleThe device is not connected when the driver polls (every subscribed tag on the device goes bad at once); or the read of that tag failed (wrong address, tag doesn't exist, type the driver can't read); or an expression tag could not be evaluated.
uncertainGrayQuality: UncertainMQTT: no message has arrived yet on the topic. MTConnect: the data item isn't in the agent's current response. In the UI: your browser hasn't received a live update for the tag yet.

Note: When your browser has no live update for a tag yet but the appliance has a saved value, the dot is a hollow green ring and the value shown is that saved value. Hover the ring for Last saved value (device last reported …). No live update yet. Only good-quality values are saved, but the ring does not mean the device is connected now: check the time, or the device's _STATUS/Connected tag. A gray dot with no value means nothing has been received or saved.

What a bad reading does ​

  • The value becomes empty ('') in the live cache. Screens show an empty value with a red dot; dashboards show their "unavailable" overlay.
  • The tag's saved last value in the database is not overwritten, so persisted local tags and screens that load before live data still show the last good value.
  • Alarm rules ignore non-numeric values, so an active alarm stays active and an inactive one stays inactive while the tag is bad. Use _STATUS/Connected if you need an alarm for loss of communication.
  • Expression tags that reference a bad tag fail and go bad themselves.
  • Scripts: tags.read() returns '' for a bad tag. Use tags.readQualified() to check the quality (see Script API Reference).
  • History-enabled tags record the change with an empty value.
  • When the device reconnects, the first good reading is passed on even if the number is the same as before, because the quality changed.

The appliance also marks a device as errored if it stops sending anything for longer than the device's offline threshold (the watchdog checks every 15 seconds). That changes the device status and _STATUS/* tags; tag values keep their last quality until the driver reports again.

Values are text ​

  • Drivers send numbers as text such as 1500 or 23.75.
  • Boolean tags are normalized to lowercase true / false when the driver reports the type as bool. Some drivers report 1/0 instead; consumers treat both as on/off.
  • Empty text means "no value" (typically bad quality).
  • Scripts receive strings: Number(tags.read(3, 'Parts/Count')) + 1, not tags.read(...) + 1 (which would append "1").

Timestamps ​

  • The timestamp is the moment of the last change that was passed on, taken from the driver (UTC). An unchanged value or a change inside the deadband does not update it. It is not a "last polled" time.
  • Some drivers don't supply a timestamp; the UI then shows no time.
  • The UI displays times in your browser's time zone (toLocaleTimeString); APIs and scripts get ISO 8601 UTC strings.
  • Local tag writes are stamped with the appliance clock at the moment of the write. Expression tags are stamped at each evaluation that changes the result.

See also ​

Scada.Ink Help Center