如何在WinCC中通过变量质量检测通讯状态

什么是质量代码 

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

  

原文地址:https://www.cnblogs.com/yada/p/12665629.html