回复:关于建立位变量问题

Zaxife

  • 帖子

    2450
  • 精华

    31
  • 被关注

    78

论坛等级:至圣

注册时间:2008-07-24

普通 普通 如何晋级?

发布于 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)就可以了。

都是很简单的逻辑。
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC WinCC / Panel

共有32922条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。