发布于 2010-11-06 04:43:09
1楼
WinCC 可以定义变量类型有很多种...
有:位、有符号8位数、无符号8位数、有符号16位数、无符号16位数、有符号32位数、无符号32位数、浮点32位IEEE754、浮点64位IEEE754、文本8位字符集、文本16位字符集、原始数据类型、文本参考、结构变量类。
WinCC 里面默认的只有无符号数才可以进行位读取操作。通过[动态对话框]来选取布尔型来选择对应的位。
不过,其他默认不支持的非无符号数,也可以用脚本实现读取实数的某个整数位。如要取Tag1的第二位,可以用与2运算来判断,如果与的结果是0,则第二位是0,否则第二位是1。比如:
if (Tag1 and 2.0)= 0 then
stu =0
else
stu =1
end if
要判断哪一位值是1还是0,只要用该数与2^x(x为0~15的二进制位)对应的位就可以了。
如果要写一个数的某一个二进制位,跟读数有点不同。
要置某一位为1,就用Tag1 or 2^x 。
比如要把Tag1的第三位置1,则用Tag1=Tag1 or 2^2就可以了。
要把某一位清0,就用Tag1 与(对应的数据类型最大值-对应位的二进制值)。
比如要把有符号的16位Tag1变量的第三位清0,则用 Tag1=Tag and (65535-2^2)就可以了。
都是很简单的逻辑。