有没办法将外部变量按位赋值,急!!

例如外部变量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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2019年6月11日
下一篇 2019年6月11日

相关推荐