Webaccess如何不使用脚本将整型数拆分成二进制位数
在Webaccess项目应用的某些特别场合,例如需要采集使用Modbus协议的智能开关、智能仪表或者智能设备的某些位值,但其协议要求都以整型数传输,其整数的每个位赋予专有的功能,在这种使用需求下,就需要对整数进行拆分并以二进制位来表达出来。若在Webaccess实现这种整数到二进制位数的转换可以通过脚本来完成,实现过程但可能会比较繁杂。下面将介绍一种较为简易的解决方案可以不使用WebAccess脚本在组态过程就可实现将16位整型数拆分成16位二进制数。
这里以从16位整型数拆分出前4位的位值作为介绍,后面的位值同样方式以此类推可得出。
下面的举例中变量“Val”是从仪表或者设备通讯中获取的整型值,然后对此值进行拆分。
1、先建立一个模拟量常数点“Cons”,初始值2,用来与计算点做运算。在“计算点”内建立4个离散量来存放位值,分别是Bit0、Bit1、Bit2、Bit3分别表示整型数的前4位。见下图:
2、分别在Bit0/Bit1/Bit2/Bit3的公式栏使用MOD()和INT()函数来实现整型拆分。见下图:
Bit0的公式如下:
Bit1的公式如下:
Bit2的公式如下:
Bit4的公式如下:
...... 以此类推,使用MOD()和INT()函数的组合就可实现。
3、“下载”à“运行”,Bit0~Bit4就是整型数Val的前4位的状态。
小结:本文所介绍的方法,其原理就是将整数不断除以2,每一步除以2后得到的余数就是位值,其位的顺序是第一步除法的余数是Bit0,最后一步除法余数是Bit15。
(END)
楼主最近还看过