针对水库底部涵管泄水的流量计量问题,讨论了一种流量计及其数据远传的Modbus协议和方法,详细解析了流量计存储器数据格式、浮点数据转换以及CRC校验等问题。系统设计的抗干扰浪涌吸收电路改善了户外现场仪表数据传输的可靠性。经运行实践证明,给出的系统结构和方法能够适应电磁流量计数据的远程传输。

src=http___img007.hc360.cn_hb_gVM67e8b4ce28821d90c905F6F9AA10Fc42refer=http___img007.hc360

  在水库工程管理中,特别是那些担负供水任务的水库,统计每天经底部涵管所泄放的水量是一件十分重要的工作,它不仅是供水方与用水方结算的依据,而且也能够对水库的防洪调度提供重要参考。

  欲实现水库涵管流量的测量与采集,首先需要根据现场环境和条件选择合适的现场测量仪表,其次是要实现现场到中心监控室数据的稳定传输。底部涵管现场离水库监控室往往有好几百米的距离,因此如何克服信号长距离传输过程中的衰减及受到的干扰,特别是在极端天气情况下的雷电干扰,就构成水库涵管流量测量系统设计的主要内容。

  1电磁流量计

  本系统选用了插入式、分体型电磁流量计。由于水库放水涵管的直径很大,可达500~1000mm,选用插人型式可以避免开挖沟槽安装法兰、配接下游导流直管等工作,而分体式传感器安装于工艺管道上,其二次变送单元可以安装在环境较好的室内,这种安装形式使得二次变送单元远离现场恶劣环境条件,使电子部件检查、仪表设定、调整都比较方便,无须采取专门措施来防雨、防潮,温度敏感性也大为降低。

  该电磁流量计采用的通信协议是Modbus协议,它是一种串行通信协议,使用双绞线作为传输的物理介质。流量计内部有多个参数可以进行设置,如波特率、设备地址、流量单位等。水库涵管的瞬时流量和累积流量值通过双绞线-→防雷装置+RS485/RS232协议转换-+.上位计算机完成数据传送,在上位计算机应用软件的管理下,完成水库涵管流量数据的显示与统计。

  2系统结构方案

  在水库工程管理中,现场参数除了底部涵管流量之外,还有水库坝体的渗漏流量、水库水位等参数需要监测,因此这些仪表设备可以通过RS485工业现场总线构成一个分布式网络。这个总线网络中,上位计算机PC作为中心主站,而其他仪表设备皆处于从属地位,主站为每台从设备分配-一个唯一地址。为了获取从站各仪器设备的数据,主站采取轮流向各个设备发送地址命令的方法来读取数据。每个从站不断监测总线上传来的地址,只有当收到的消息中的地址与自己设备地址–致时,才会执行主站发出的命令,将自己的状态与数据发给上位主机,主机则负责接收从设备发出的数据,按Modb-us协议规程执行数据解码、校验、存储等操作。系统的拓扑结构如图1所示。

  3Modbus协议及主机信息结构

  Modbus协议是一种主从式点对点的通信协议,允许一台主机和多台从机之间进行数据通信,由于Mod-bus协议易于实现,因此它已经成为被广泛应用的工业标准。Modbus协议支持ASCII和RTU两种模式的串行链路协议,由于RTU模式比ASCII模式有更高的数据传输效率,因此大多数总线式网络结构中均采用RTU链路协议。一个RTU消息帧由地址域、功能域、数据域、CRC校验域外加起始位和结束字符共同构成,其典型格式。

  ①起始位和结束字符:用来分隔两帧消息,RTU规定起始位和结束字符持续时间不得小于3.5个字符时间,一帧消息必须以连续的字符流进行发送,并且同一帧内的2个字符间隔时间应小于1.5个字符时间,编程时需注意RTU模式的这些定时要求。

  ②设备地址:总线网络中某个从站设备的地址,作为主机的寻址标志。

  ③功能代码:当消息从主机发往从站设备时,告诉从设备需要执行哪些行为,如,“03”,读取当前从站设备寄存器组内-个或多个二进制数据;“06″,主机把设置的二进制数据写人仪表设备的单-寄存器内。

  ④数据域:它包含主-从设备通信中所涉及的各种参数,如起始寄存器、要读写的寄存器数量、据长度、数据信息等。

  ⑤CRC校验:RTU帧中包含了一个基于CRC算法的错误检测城,即无论主机或从站设备发送RTU帧时,都要计算从设备地址开始到数据区之间所有字节的16位CRC校验码,并以低字节在前、高字节在后的形式附加到RTU消息的CRC域,一并发给接收方。当接收方收完一帧消息后立即按同样方法计算该帧消息的CRC校验码,并与发送方传来的CRC校验码进行比较,若不同就说明在消息传输过程中发生了错误,应该弃掉刚才收到的消息,并向发送方回传一帧带有错误标识的消息作为响应。

  4电磁流量计的存储器数据结构

  电磁流量计是-种智能化的流量仪表,内嵌32位高速MCU处理器,可以测量瞬时流量、累计流量等参数,数据通信传输接口为半双工方式,支持2400、4800.9600bit/s等波特率,接口电气标准遵从EIA/TIA-485国际标准。用户无须对流量计进行底层编程,只需设置好相关参数即可。流量计内部寄存器存储的数据类型与地址如表2所示。

  5系统软件设计

  5.1通信过程

  通信开始后,主机向总线上发送一帧消息,电磁流量计侦测总线状态并接收主机送来的消息。如果消息中的地址与本站设备(即电磁流量计)地址相符,而且计算所得的16位CRC校验码也正确,就将收到的消息存储在缓冲区内,接着执行主机的命令,并根据处理结果返回一帧正确的消息作为对主机的响应,其通信流程。

  在本系统中,主要使用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。

  5.2数据解析

  由于电磁流量计中的数据是以字的形式存储在寄存器组中的,而且数据的低位字在前,高位字在后,所以在解析流量数据之前,必须先要交换它们的顺序才能得到正确结果。对于瞬时流量的4个字节(41B1)(42A7),交换顺序后成为(42A7)(41B1),它是一个符合IEEE754规范的32位浮点数值,将其还原成十进制数值,结果得到涵管当前瞬时流量值83.6263m³/h。

  对于累积流量,它的数据格式为:整数部分是长整型,而小数部分是32位浮点型,所以应分段交换顺序。整数部分交换顺序后是(003B)(ADDD),它对应十进制3911133,而小数部分交换顺序后是(3F61)(4D6F),按IEEE754浮点数规范,经过转换,其对应的十进制小数为0.8801,所以涵管当前累积流量是3911133.88m³。

  5.3关于CRC检验算法

  在Modbus标准通信中,对于即将被传输消息中的字符串必须进行CRC校验,目的是发现数据传输过程中可能出现的错误。常用的校验多项式有CCITT和CRC-16,本系统采用CRC-16,其多项式为G(x)=xl6+xI5+x2+1,实际应用时取其反序。

  具体来说,对于涵管瞬时流量,是从地址字节一直校验到数据的最后-一个字节。以流量计返回的瞬时流量数据串为例,共须校验0F030441B142A7七个字节,所以得到的16位CRC校验码为F220。下面给出用VB6.0语言实现的CRC校验程序,代码如下:

  6系统防雷

  对于户外运行的系统或设备,-一个很重要的问题就是防雷。特别是南方水库所在地域,由于雨水充沛,空气湿度很大,较之干燥地区更容易产生雷电灾害,轻则导致数据传输出错,严重时会导致仪器设备损毁。因此对水库涵管流量测量系统中的防雷设计必须高度重视。本系统中的防雷电路包含市电交流进线保护电路和低压数据传输线路保护电路。交流电源进线过压保护器采用的型号为DEHNguard275,数据传输线路保护电路如图3所示。

  这个保护电路共分三级。第–级是气体放电管,当雷电浪涌高压大于放电管的击穿电压时,将使线路与地短路,为浪涌能量提供泄放通路;第二级是由浪涌瞬变抑制二极管TV1、TV2组成,它们能迅速对线路上的浪涌过电压进行箝位,第三级由电阻R1、R2、TV3、TV4、TV5构成,目的也是用来消除线路上的高电压,并使线路端口电压维持在安全水平。