什么是質量代碼
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