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 Value | Decimal Value | OPC Specification Definition |
|---|---|---|
| C0 | 192 | Good |
| D8 | 216 | Good--Local Override, Value Forced |
| 0 | 0 | Bad |
| 4 | 4 | Bad - Configuration Error in Server |
| 8 | 8 | Bad - Not Connected |
| C | 12 | Bad - Device Failure |
| 10 | 16 | Bad - Sensor Failure |
| 14 | 20 | Bad - Last Know Value Passed |
| 18 | 24 | Bad - Comm Failure |
| 1C | 28 | Bad - Out of Service (also happens when item or group is inactive) |
| 40 | 64 | Uncertain |
| 44 | 68 | Uncertain - Last Usable Value - timeout of some kind |
| 50 | 80 | Uncertain - Sensor not Accurate - outside of limits |
| 54 | 84 | Uncertain - Engineering Units exceeded |
| 58 | 88 | Uncertain - Value from multiple sources with less then required good values |
- GOOD状态(192-255)
0xC0 (192):数据完全可信,无任何异常0xD8 (216):数据被操作员强制设定,虽然质量标记为GOOD,但需要关注可能的人工干预
- BAD状态(0-63)
- 从配置错误到设备故障,提供了详细的故障分类
- 特别关注
0x14 (20):虽然质量标记为BAD,但提供了最后已知值
- UNCERTAIN状态(64-191)
- 数据可用但存在疑问,需要谨慎使用
- 涵盖了从通信超时到传感器精度等多种不确定情况
限制状态的增量效应
限制状态作为最低2位,会对基础质量码产生直接的增量影响。以GOOD状态(192)为例:
0xC0 (192)= GOOD,无限制0xC1 (193)= GOOD,低限制0xC2 (194)= GOOD,高限制0xC3 (195)= GOOD,常量
这种设计使得在保持主要质量信息不变的同时,能够灵活地添加限制状态信息。
Comments NOTHING