高手进阶|bit比黑神话宝箱还难找?五招助你scada按位取值!

小孙说工控 2024-09-24 10:04:55

第一招:自写函数

作为天命人,没有趁手的武器怎么办?大圣教你自力更生去龙宫借宝,我来教你自写函数让bit无所遁形!

第一步,自定义函数,将数值二进制转化。

这里我们定义的函数叫做DecimalToBinary,转换逻辑如图中所示。大家也可以自行定义函数,只要能将数值成功转化为二进制的,都是好函数。

第二步,编辑脚本,确定取位逻辑。

这里我们取用了刚刚自定义的二进制转换函数。首先确定我们的取位没有超出转化出来的二进制长度。在确定长度和位置以后,我们利用Mid函数去读我们转化来的字符串。由于Mid函数读数规则是从右往左,而二进制开头与其恰好相反,从左开始,所以我们要从函数的角度确定我们要读的位置。比如说00100,我们要读第3位-0,但是在Mid函数中就是第二位,长度LEN为5,位置是3,因为字符串第一位顺序是0(顺序 不是数值),所以从左往右就少一位,应该是第4个数值,从右往左就是第二个,这就是Mid函数应该去读的位置。

效果展示:

第二招:调用函数

Bit:你是scada请来的救兵吗?

在这里,我们直接调用函数库里的gGetBit函数,可以直接获得字符串指定位置的值。

先定义一个中间变量bit,将函数取来的值直接赋给他,然后在文本框中显示出来。

第三招:二次计算

大圣三打白骨精,我们比大圣还少一次,性价比拉满!

在数据库管理页面我们选择添加二次计算变量位号,选择表达式tag,取到我们要按位取值的位号(本文中的原始值就是tag1),如图所示Tag(“tag1”),然后在下方“按位取”中选择要取值的顺序位,此处为二进制字符串从左到右顺序,然后在流程图中添加标签,绑定二次计算的位号,当我们给原始值赋值以后,就能直接看到我们“按位取”中选择的顺序的数值。

效果展示:

第四招:位号IO地址(目前仅Modbus协议支持)

妖怪都用法宝,我用Modbus协议怎么了?

大圣:所以你也是妖怪?

设置modbus tcp驱动,添加位号,位号类型(开关量整型实型),赋值1或0。然后在数据类型中选择BIT和你想要取值的位置,从0开始。

然后我们在流程图中设置标签,关联变量,用开关赋值1或者0,在仿真中看输出的值。

Bit0取1

Bit15取1

Bit0和Bit15都取1

第五招:流程图表达式

黑神话没有地图?我们有!大大的流程图!功能丰富的流程图!!

在流程图中添加标签,选择表达式,用GETB直接取值,tag1为我们的原始值,tag2为第一个函数里的取值位,流程图里的位号都可以使用,设置完成后,给两个位号赋值,就可以显示出来了。

效果展示:

0 阅读:0

小孙说工控

简介:定期分享工业组态软件满满干货