Webaccess如何不使用脚本将整型数拆分成二进制位数 点击:2097 | 回复:0



PLC酷客

    
  • [版主]
  • 精华:10帖
  • 求助:62帖
  • 帖子:1694帖 | 7857回
  • 年度积分:192
  • 历史总积分:54737
  • 注册:2004年7月13日
发表于:2013-09-05 16:11:22
楼主

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)

 



楼主最近还看过


相关主题

官方公众号

智造工程师