WinCC 7.4中为了节约点数,定义一个双字变量,现在其中的两个字节的16个位做PLC DI的指示灯用,另外两个字节中的16个位想做按钮用,请问这些按钮的动作怎么用C脚本表示,特别是双字的某一位怎么表示,不能影响其他位的值,能否举例写几步脚本,因为这方面的资料比较少,万分感谢
最佳答案
自己做两个函数,一个读取某个位,一个写某个位,读取时,用除了目标位,其余都0的数“与&”这个32位变量;写的时候,置0时,用除了目标位,其余都是1的数“与&”这个32位变量,置1时,用除了目标位为1,其余位都是0的数“或|”这个32位变量。
//读
unsigned int read_BIT(unsigned int a,unsigned int b)
{
int i=1;
i<<=b;
return a&i;//非0为真
}
//写
unsigned int write_BIT( unsigned int a,unsigned int b,int c)
{
//c为真,把b对位的位置1,否则置0;
unsigned int i=1;
i<<=b;
if(c){
return a|i;
}
else{
i=~i;
return a&i;
}
}
你可能不需要脚本,如图:
图片说明:
提问者对于答案的评价:
谢谢大家
最佳答案作者回复:
函数可以继续封装,锋言锋语那个宏用的很巧妙
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc313213.html