什么是质量代码
WinCC中外部变量通讯时,除了传送变量值,还会有一个字节的质量代码,质量代码指示了当前变量的质量状态,通过变量的质量代码可以判断通讯是否正常。
质量代码的结构
质量代码具有如下的二进制结构:
QQSSSSLL
Q: 质量
S: 质量的子状态
L: 限制。 该数值是可选的。
通过前两位可确定变量的质量,后面六位可得到变量的具体状态。当前两位全为0时表示质量为“劣”,详细如下:
Q |
Q |
S |
S |
S |
S |
L |
L |
|
|
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
劣 - 数值没有用。 |
0 |
0 |
- |
- |
- |
- |
- |
- |
不确定 - 数值的质量低于普通情况,但是数值可能仍然有用。 |
0 |
1 |
- |
- |
- |
- |
- |
- |
优(非层叠)- 数值的质量是优的。 可能的报警条件会通过子状态指示。 |
1 |
0 |
- |
- |
- |
- |
- |
- |
优(层叠)- 数值可能用在控件中。 |
1 |
1 |
- |
- |
- |
- |
- |
- |
更具体的质量代码可查阅WinCC手册:https://support.industry.siemens.com/cs/mdm/109773067?c=102861150219&lc=zh-CN
用VB脚本检测变量质量
当变量质量代码为“劣”时返回True,为其他质量代码时返回False。给TagQcIsBad()函数传递一个变量名,通过该变量判断是否通讯成功。
Function TagQcIsBad(sTag) Dim oTag Set oTag = HMIRuntime.Tags(sTag) oTag.Read TagQcIsBad = ((oTag.QualityCode AND &HC0) = &H00) '如果前两位全为0表示质量为“劣”,返回True End Function