例如外部变量a,有没方法使a的位,例如0位("a"&0x01)置1
问题补充:
上面有人给的答案:在 WinCC 中用以下脚本可以实现把16位无符号变量“tag”中的第5位置位的功能(若需置位其它位,只需修改0x10(&h10)即可)。
C脚本:
int x;
x=GetTagWord("tag");
x=x | 0x10;
SetTagWord("tag",x);
但是我需要可以将这个变量“tag”的几个位同时置位,这个方法应该只能一次置一个,
例如我现在用的:
if ((GetTagDWord("tagT")&0x01)!=0)
SetTagByte(" tag",0x01); //Return-Type: BOOL
if ((GetTagDWord("tagT")&0x02)!=0)
SetTagByte(" tag",0x02); //Return-Type: BOOL
if ((GetTagDWord("tagT")&0x04)!=0)
SetTagByte(" tag",0x04); //Return-Type: BOOL
这里tagT是一个复选框,表示勾选第一个框时,tag0位置位;勾选第二个框时,tag1位置位;勾选第三个框时,tag2位置位;
但是这是tag的0,1,2位不能同时置起,只能置位其中一个
我希望实现的功能是,这三个或者更多的位可以同时置位,或者说可以将这几个位同时赋值,
比如:"tag"&0x01=1,"tag"&0x04=1," tag"&0x02=1同时实现
谢谢!
最佳答案
在 WinCC 中用以下脚本可以实现把16位无符号变量“tag”中的第5位置位的功能(若需置位其它位,只需修改0x10(&h10)即可)。
C脚本:
int x;
x=GetTagWord("tag");
x=x | 0x10;
SetTagWord("tag",x);
VBS脚本:
Dim tag
Set tag = HMIRuntime.Tags("tag")
tag.Read
tag.Write (tag.Value Or &h10)
提问者对于答案的评价:
不是我想要的答案 但是可以单个置位也可以以后拿来参考了
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc268518.html