OPC DA 质量码浅析

Cantabile 发布于 2025-11-21 2018 次阅读


OPC DA(数据访问)规范定义了一套完整的质量码体系,为每个数据点提供了详细的"健康状态"标识。

二进制结构

基本位字段结构

OPC质量码的低8位采用固定的位字段格式,结构如下:

位位置: 7 6 5 4 3 2 1 0
位字段: Q Q S S S S L L

这个8位二进制数可以清晰地分解为三个独立的字段:

各字段详解

主质量状态(QQ - 2位)

  • 位置:第7-6位(最高两位)
  • 作用:定义数据的整体可信度
  • 取值:
    • 00 = BAD(数据不可用)
    • 01 = UNCERTAIN(数据不确定)
    • 10 = 保留未使用
    • 11 = GOOD(数据良好)

子状态(SSSS - 4位)

  • 位置:第5-2位(中间四位)
  • 作用:提供质量状态的具体原因
  • 取值:根据主质量状态的不同而有不同含义

限制状态(LL - 2位)

  • 位置:第1-0位(最低两位)
  • 作用:指示数值是否受到限制
  • 取值:
    • 00 = 无限制
    • 01 = 低限制
    • 10 = 高限制
    • 11 = 常量

从二进制到数值的转换

权重计算原理:

每个二进制位都有对应的权重值:

位位置:  7   6   5   4   3   2   1   0
权重:   128 64  32  16  8   4   2   1

转换示例:GOOD状态(0xC0)

二进制构建:

QQ    SSSS    LL
11    0000    00

数值计算:

  • QQ(11) = 128 + 64 = 192
  • SSSS(0000) = 0
  • LL(00) = 0
  • 总计:192

转换示例:GOOD本地覆盖(0xD8)

二进制构建:

QQ    SSSS    LL
11    0110    00

数值计算:

  • QQ(11) = 128 + 64 = 192
  • SSSS(0110) = 0 + 16 + 8 + 0 = 24
  • LL(00) = 0
  • 总计:192 + 24 = 216

常见OPC质量码

以下表格列出了OPC DA规范中定义的主要质量码及其含义:

Hex ValueDecimal ValueOPC Specification Definition
C0192Good
D8216Good--Local Override, Value Forced
00Bad
44Bad - Configuration Error in Server
88Bad - Not Connected
C12Bad - Device Failure
1016Bad - Sensor Failure
1420Bad - Last Know Value Passed
1824Bad - Comm Failure
1C28Bad - Out of Service (also happens when item or group is inactive)
4064Uncertain
4468Uncertain - Last Usable Value - timeout of some kind
5080Uncertain - Sensor not Accurate - outside of limits
5484Uncertain - Engineering Units exceeded
5888Uncertain - Value from multiple sources with less then required good values
  1. GOOD状态(192-255)
    • 0xC0 (192):数据完全可信,无任何异常
    • 0xD8 (216):数据被操作员强制设定,虽然质量标记为GOOD,但需要关注可能的人工干预
  2. BAD状态(0-63)
    • 从配置错误到设备故障,提供了详细的故障分类
    • 特别关注0x14 (20):虽然质量标记为BAD,但提供了最后已知值
  3. UNCERTAIN状态(64-191)
    • 数据可用但存在疑问,需要谨慎使用
    • 涵盖了从通信超时到传感器精度等多种不确定情况

限制状态的增量效应

限制状态作为最低2位,会对基础质量码产生直接的增量影响。以GOOD状态(192)为例:

  • 0xC0 (192) = GOOD,无限制
  • 0xC1 (193) = GOOD,低限制
  • 0xC2 (194) = GOOD,高限制
  • 0xC3 (195) = GOOD,常量

这种设计使得在保持主要质量信息不变的同时,能够灵活地添加限制状态信息。

参考资料

OPC DA Quality Codes

OPC DA质量码 - OPCDA-Proxy