Webaccess如何不使用脚本将整型数拆分成二进制位数 (webaccessblocked是什么意思)

在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的公式如下: Bit0 = MOD(Val, Cons)
    • Bit1的公式如下: Bit1 = INT(Val / Cons) % 2
    • Bit2的公式如下: Bit2 = INT(Val / (Cons Cons)) % 2
    • Bit4的公式如下: Bit4 = INT(Val / (Cons Cons Cons Cons)) % 2
  3. 以此类推,使用MOD()和INT()函数的组合就可实现。
  4. 下载à运行,Bit0~Bit4就是整型数Val的前4位的状态。

小结

本文所介绍的方法,其原理就是将整数不断除以2,每一步除以2后得到的余数就是位值,其位的顺序是第一步除法的余数是Bit0,最后一步除法余数是Bit15。

本文原创来源:电气TV网,欢迎收藏本网址,收藏不迷路哦!

相关阅读

添加新评论