wincc中对变量中的某一位操作

首页    02解决方案    服务支持    西门子支持    wincc中对变量中的某一位操作

WINCC中鼠标动作中的按左键如何连到字节变量中的某一位??

向各位咨询下。假如我在wincc中建立了一个字节型变量,例如bb1001,数据类型为无符号8位数,地址为DB501.DBB0,此时我想在画面中添加一个按钮,鼠标动作为按左键:这个变量中的第0位,即DB501.D0.0变为1.应该如何实现?我在wincc中鼠标动作的直接连接中无法选择变量的某一位啊,只能是把这个变量全变为1啊。。。比较苦恼。。谢谢各位了。。

悬赏分:20 | 解决时间:2010-09-14 15:08:42 | 提问者:freelin - 新生  第1级问题ID:57893

 

最佳答案

在鼠标的c动作中:
SetTagByte("bb1001",GetTagByte("bb1001")|0x1)//给第一个位置位
SetTagByte("bb1001",GetTagByte("bb1001")|0x2)//给第二个位置位。

可以通过位与(&)操作符来做:
WORD WordValue=GetTagword("WordTag");
SetTagBit("MotorRun",(WordValue&0x1);
SetTagBit("MotorFault",(WordValue&0x2);
SetTagBit("MotorPower",(WordValue&0x4);
........以下类推

DWORD value=GetTagDWord("aaa");        //Return-Type: DWORD

SetTagDWord("a",(value&0x128));        //Return-Type: BOOL

WORD value=GetTagWord("aaa");        //Return-Type: WORD

SetTagDWord("a",(value&0x128));        //Return-Type: BOOL

注:即使aaa变量为字,settag也必须为双字,因为value参与运算;

Short int value=GetTagSWord("aaa");        //Return-Type: short int

SetTagSDWord("a",(value&0x128));        //Return-Type: BOOL

long int value=GetTagSDWord("aaa");        //Return-Type: long int

SetTagSDWord("a",(value&0x128));        //Return-Type: BOOL


回答者: zhangli0 - 顶级工程师  第12级  2010-09-10 17:03:04

我要评论

 

提问者对于答案的评价:
多谢了。这个答案是我想要的。。

你觉得最佳答案好不好?

很好 不好 

50% (0)50% (0)

 

其他答案

其中a是 DB501.DBB0
SetTagBit("a",1);

回答者: KCN - 高级工程师  第11级  2010-09-10 15:40:58

直接把1赋给变量就行,0到7位依次可以赋值为1,2,4,8,16,32,64,128

回答者: wccw - 毕业实践员  第4级  2010-09-10 16:54:16

你说的那个是DB501.DBX0.0  因为DB501.DBB0 就是DB501.DBX0.0到DB501.DBX0.7    所以 指定第一个为1  
也就是对 DB501.DBX0.0为置“1”

再WINCC里设置S7变量位 DB501.DBX0.0  按钮左键SetTagBit("位",1)

回答者: 怀念过去 - 毕业实践员  第4级  2010-09-10 16:57:43

zhangli0 的方法可行

回答者: 塞上雁 - 中级工程师  第10级  2010-09-10 17:24:00

学习

回答者: nub - 资深学长  第3级  2010-09-10 20:02:45

学习了

回答者: ALTINTOP - 助理工程师  第8级  2010-09-11 20:37:22


2022年4月24日
浏览量:100010