在 VBScript 中当逐位关联变量时需注意些什么?在WinCC中如何用 VBS 置位最高位(位 31/ 32 位)?

组态提示:
当在 WinCC 全局脚本/ VBScript 中逐位关联一个或更多 32 位变量时,如果某个变量中的最高位(位 31 )被置位,会导致溢出并且脚本执行失败。

实例:
如果在画面中 VBScript 用于显示一个双字中特定位的状态,当双字中的位 31 被置位那么会有一个错误的显示。

补救措施:
当对双字类型的变量进行位操作时(如“ And ” 运算)确保位 31 不被使用或置位。在进行逐位处理之前应检查 32 位变量最高位的状态, 如果需要可改变它。使用“ greater than or equal to ”查询可以确定一个 32 位变量的位 31是否被置位。如果 32 位变量的值大于或等于 231,那么说明位 31 被置位。这样,可以从 32 位变量中减去值 231 来使位 31 复位。用这种方法可以正确的计算其他位的值。下图的 VBSeript 就清楚地显示了这个过程。在这个例子中,32 位变量中位 0 的状态被动态化地使用。如果位 0 被置位,对象的背景颜色被设置成“ green ”的数值,否则被设置成“ gray ”的数值。

在 VBScript 中当逐位关联变量时需注意些什么?在WinCC中如何用 VBS 置位最高位(位 31/ 32 位)?
图. 01

下列 VBScript 使用了上面描述的方法转移一个 32 位变量位的数值到一个二进制位数组。那么,在这个二进制位数组中可以正确地调用并处理单独的位。

在 VBScript 中当逐位关联变量时需注意些什么?在WinCC中如何用 VBS 置位最高位(位 31/ 32 位)? WinCC_VBOverflowBit31_vbs.pdf ( 9 KB )

这个脚本的文本形式文件可以在下面下载。

在 VBScript 中当逐位关联变量时需注意些什么?在WinCC中如何用 VBS 置位最高位(位 31/ 32 位)? WinCC_VBOverflowBit31.zip ( 6 KB )

关键字:

VBS, Visual Basic Script, 位 31,位 32, 最高有效位

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc334844.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月5日 下午12:03
下一篇 2021年4月12日 上午12:00

相关推荐

发表回复

登录后才能评论