加入收藏 | 设为首页 | 会员中心 | 我要投稿 济宁站长网 (https://www.0537zz.cn/)- 行业智能、边缘计算、专有云、AI硬件、5G!
当前位置: 首页 > 站长百科 > 正文

WINCC6.2 VB脚本如何对变量进行位操作?

发布时间:2020-12-24 11:36:30 所属栏目:站长百科 来源:网络整理
导读:已解决问题:WINCC6.2 VB脚本如何对变量进行位操作? 如题,在WINCC的VB脚本中如何对一变量的某一位进行操作?比如有一16位内部变量:Tag1BR,如何对它的第5位进行IF判断? 最佳答案 第5位进行IF判断: IfHMIRuntime.Tags("Tag1").ReadAndH10Then ... Else ..

已解决问题:WINCC6.2 VB脚本如何对变量进行位操作?

如题,在WINCC的VB脚本中如何对一变量的某一位进行操作?比如有一16位内部变量:Tag1<BR>,如何对它的第5位进行IF判断?

最佳答案

第5位进行IF判断:
IfHMIRuntime.Tags("Tag1").ReadAnd&H10Then
...
Else
...
EndIF

其他答案

直接使用GetTagWord(tag)&&0x1作为变量来判断

回答者: cloud21 - 顶级工程师第12级
2010-02-24 10:59:15

VBS在线按F1,看帮助吧。

回答者: YHKingKong - 中级工程师第10级
2010-02-24 12:20:00

VBScript将一个32位变量位的数值到一个二进制位数组。那么,在这个二进制位数组中可以正确地调用并处理单独的位。
DimPVar
DimstrText
DimarrArray(32)
Dimi
Dimganzzahl
Dimwert
'-------------------------
'读取wincc变量
'-------------------------
PVar=HMIRuntime.Tags("Ernie_dword_pw").Read
'----------------------------------------------
'
'32位转成数组
'
'----------------------------------------------
'resetbit31
'transferbit31intobitarray
If(PVar>=2147483648)Then
PVar=(PVar-2147483648)
arrArray(31)=1
Else
arrArray(31)=0
EndIf
'transferbit0..30intobitarray
Fori=0To30
ganzzahl=PVar2
arrArray(i)=PVarMod2
PVar=ganzzahl
Next
'----------------------------------------------
'
'convertbitarraytostring(reverSEOrder)
'
'----------------------------------------------
Fori=31To0Step-1
strText=strText&CStr(arrArray(i))
Next
'traceintodiagnosticwindow
HMIRuntime.TracestrText&vbNewLine
'----------------------------------------------
'
'transferbitsofbitarraytoreferencetag
'
'----------------------------------------------
'transferbit0..30
Fori=0To30
wert=wert+(arrArray(i)*2^i)
Next
'transferbit31
IfarrArray(31)=1Then
wert=wert+2147483648
EndIf
'traceintodiagnosticwindow
HMIRuntime.Trace"Wert:"&wert&vbNewLine
得到数组后用“fornet”对其操作就可以得到想要的位。

回答者: 塞上雁 - 中级工程师第10级
2010-02-24 12:37:22

SetTag1=HMIRuntime.Tags("Tag1")

msgboxTag1.Readand32

回答者: youhm - 高级工程师第11级
2010-02-24 12:42:29

用and语句:如:
dimtag16
settag16=hmiruntime.tags("tag16")
tag16.read
iftag16.valueand32then
'为真执行语句
else
'为假执行语句
endif
判断其他位的话分别and几次方,比如判断第8位的话就and2^8即and256.

回答者: mugui - 中级工程师第10级
2010-02-25 09:01:58

dima,b a=hmiruntime.tags("tag16").read先读取该变量 b=aand16对a进行与运算,16对应二进制10000,刚好是tag16的第五位 ifb=16then 该变量第五位为1 else 不为1 endif

(编辑:济宁站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读