技术支持
电磁流量计系统软件是如何设计的
发布时间:2022-01-12 08:10:50
电磁流量计采用的通信协议是Modbus协议,它是一种串行通信协议,使用双绞线作为传输的物理介质。流量计内部有多个参数可以进行设置,如波特率、设备地址、流量单位等。电磁流量计的瞬时流量和累积流量值通过双绞线-→防雷装置+RS485/RS232协议转换-+.上位计算机完成数据传送,在上位计算机应用软件的管理下,完成流量数据的显示与统计。
1.通信过程
通信开始后,主机向总线上发送一帧消息,电磁流量计侦测总线状态并接收主机送来的消息。如果消息中的地址与本站设备(即电磁流量计)地址相符,而且计算所得的16位CRC校验码也正确,就将收到的消息存储在缓冲区内,接着执行主机的命令,并根据处理结果返回一帧正确的消息作为对主机的响应,其通信流程如图2所示。
在本系统中,主要使用Modbus协议中的“03”功能码,它的含义是连续读取设备数据寄存器中的内容(每个寄存器占2B)。
通过设置给电磁流量计分配的地址是0FH,为了读取流量计的瞬时流量,主机应该发出一-帧(0F0300000002C525)消息(十六进制),此帧消息中含有如下信息:
①0F:从站设备地址(流量计地址);
②03:功能码(读寄存器内容);
③0000:待读寄存器首地址(瞬时流量);
④0002:读2个连续的数据寄存器(因为数据类型是浮点);
⑤C525:CRC校验码(低字节在前高字节在后)。如果流量计正确收到.上面信息,就立即返回与涵管当前瞬时流量对应的消息作为对主机的响应:
0F030441B142A720F2
在这帧消息中,0F03的意义同前,04指4个字节的瞬时流量,数据内容是41B142A7,流量计发出的CRC校验码是20F2。
同理,为了读取电磁流量计的累积流量,主机应发:
0F0300130004B4E2
如果流量计接收正确,就返回下列数据串:
0F0308ADDD003B4D6F3F61757F
其中当前累积流量数据为8个字节,ADDD003B4D6F3F61,CRC校验码是757F。
2.数据解析
由于电磁流量计中的数据是以字的形式存储在寄存器组中的,而且数据的低位字在前,高位字在后,所以在解析流量数据之前,必须先要交换它们的顺序才能得到正确结果。对于瞬时流量的4个字节(41B1)(42A7),交换顺序后成为(42A7)(41B1),它是一个符合IEEE754规范的32位浮点数值,将其还原成十进制数值,结果得到涵管当前瞬时流量值83.6263m³/h。
对于累积流量,它的数据格式为:整数部分是长整型,而小数部分是32位浮点型,所以应分段交换顺序。整数部分交换顺序后是(003B)(ADDD),它对应十进制3911133,而小数部分交换顺序后是(3F61)(4D6F),按IEEE754浮点数规范,经过转换,其对应的十进制小数为0.8801,所以涵管当前累积流量是3911133.88m³。
3.关于CRC检验算法
在Modbus标准通信中,对于即将被传输消息中的字符串必须进行CRC校验,目的是发现数据传输过程中可能出现的错误。常用的校验多项式有CCITT和CRC-16,本系统采用CRC-16,其多项式为G(x)=xl6+xI5+x2+1,实际应用时取其反序。
具体来说,对于瞬时流量,是从地址字节一直校验到数据的最后-一个字节。以流量计返回的瞬时流量数据串为例,共须校验0F030441B142A7七个字节,所以得到的16位CRC校验码为F220。下面给出用VB6.0语言实现的CRC校验程序,代码如下:
版权所有:Copyright @ 快盈lV500 2021-2025