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