基于MODBUS_RTU协议的HK-CMF质量流量计通信软件的开发
摘 要:结合自行开发的通信软件,简要介绍了罗斯蒙特HK-CMF质量流量计的MODBUS协议及帧格式,通过RS485接口,用VB6.0实现了基于MODBUS_RTU协议的HK-CMF质量流量计通信软件的开发。
关键字:MODBUS RTU RS485 VB6.0
1.概述
HK-CMF质量流量计以其性能可靠、准确度高、具有通信接口等特点,作为过程或贸易结算仪表,已在企业大量使用。随着计算机技术的发展和企业局域网络的建立,利用计算机作为上位机和多台HK-CMF质量流量计进行通信,继而送入以太网络,已是企业计量数据管理的发展趋势。目前,科氏HK-CMF质量流量计提供了瞬时流量、总量、温度、密度等信息,这些数据的读取往往靠人工抄表、记录,存在着费时、费工和易出错的缺点,为此,我们以VB6.0作为开发工具,用计算机作为上位机,成功实现了科氏HK-CMF质量流量计的计算机自动数据采集和管理。
2. 通讯接口
HK-CMF质量流量计可以采用三种方式输出信号:
2.1 传统4~20mA模拟信号和脉冲信号输出接口,其检测输出的信号是一个单一的值,不能满足多信号输出的要求。
2.2 基于标准HART协议(以4∼20mA模拟信号输出接口作为物理层)的数字信号输出,可以传输多个信号(瞬时流量、总量、温度、密度等)。
2.3 以RS485作为物理层基于HART协议的数字信号输出,可以传输多个信号。
2.4 的数字信号输出,可以传输多个信号,分为RTU和ASCII方式。
本文采用第四种方式,以RS485作为物理层基于MODBUS_RTU协议进行计算机与流量计的通讯。
根据RS485电气规定,在两线制传输方式下,RS—485驱动器可带32个接收器,实现多半点双工通讯,波特率9600BPS时通讯距离可达在1200m时。如图1所示PC机通过RS232接口,经RS232/RS485转换模块与多台流量计仪表相连接,一条总线上最多可接32台,每台仪表被赋予各自的通讯地址码用以识别身份,这样上位PC机能通过RS485总线对挂在总线上的每个仪表进行通讯。实现对流量计的远程数据采集与监控。
3. Modbus协议简介
Modbus协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一通用工业标准。
3.1 MODBUS消息帧控制器通信使用主从技术,即仅一设备(主设备)能初始化传输(查询)。其它设备(从设备)根据主设备查询提供的数据作出相应反应。
主设备可单独和从设备通信,也能以广播方式和所有从设备通信。如果单独通信,从设备返回一消息作为回应,如果是以广播方式查询的,则不作任何回应。Modbus协议建立了主设备查询的格式:设备(或广播)地址、功能代码、所有要发送的数据、一错误检测域。
3.2 两种传输方式控制器能设置为两种传输模式(ASCII或RTU)中的任何一种在标准的Modbus网络通信。本文采用RTU传输模式。
使用ASCII模式,消息以冒号(:)字符(ASCII码3AH)开始,以回车换行符结束(ASCII码(0DH,0AH)。其它域可以使用的传输字符是十六进制的…9,A…F。网络上的设备不断侦测“:”字符,当有一个冒号接收到时,每个设备都解码下个域(地址域)来判断是否发给自己的。
使用RTU模式,消息发送至少要以3.5个字符时间的停顿间隔开始。在网络波特率下多样的字符时间,这是最容易实现的(如下图的T1-T2-T3-T4所示)。传输的第一个域是设备地址。可以使用的传输字符是十六进制的0…9,A…F。网络设备不断侦测网络总线,包括停顿间隔时间内。当第一个域(地址域)接收到,每个设备都进行解码以判断是否发往自己的。在最后一个传输字符之后,一个至少3.5个字符时间的停顿标定了消息的结束。一个新的消息可在此停顿后开始。
3.3 错误检测方法标准的Modbus串行网络采用两种错误检测方法。奇偶校验对每个字符都可用,帧检测(LRC或CRC)应用于整个消息。它们都是在消息发送前由主设备产生的,从设备在接收过程中检测每个字符和整个消息帧。
本文采使用的RTU传输模式采用CRC校验,消息包括了一基于CRC方法的错误检测域。CRC域检测了整个消息的内容。CRC域是两个字节,包含一16位的二进制值。它由传输设备计算后加入到消息中。接收设备重新计算收到消息的CRC,并与接收到的CRC域中的值比较,如果两值不同,则有误。CRC是先调入一值是全“1”的16位寄存器,然后调用一过程将消息中连续的8位字节各当前寄存器中的值进行处理。仅每个字符中的8Bit数据对CRC有效,起始位和停止位以及奇偶校验位均无效。
CRC-16错误校验程序如下:报文被看作是一个连续的二进制,其最高有效位(MSB)首选发送。报文先与X↑16相乘(左移16位),然后看X↑16+X↑15+X↑2+1除,X↑16+X↑15+X↑2+1可以表示为二进制数11000000000000101。整数商位忽略不记,16位余数加入该报文(MSB先发送),成为2个CRC校验字节。余数中的1全部初始化,以免所有的零成为一条报文被接收。经上述处理而含有CRC字节的报文,若无错误,到接收设备后再被同一多项式(X↑16+X↑15+X↑2+1)除,会得到一个零余数(接收设备核验这个CRC字节,并将其与被传送的CRC比较)。全部运算以2为模(无进位)。
4. 软件实现
现在的工控系统一般都要求友好的人机界面,即能够将现场的实时生产数据直观地显示在计算机屏幕上。但计算机的标准配置中通常只有RS-232通信接口,开发人员可以通过它编写程序来定义通讯数据格式,完成对数据的打包及错误校验并最终实现数据的传输。许多编程语言都提供标准编程控件实现对RS-232的数据通讯。我们选用实用方便的VB6.0来完成对实时采集12台科氏HK-CMF质量流量计RFT9739)的瞬时质量流量、瞬时体积流量、累计质量流量、累积体积流量、密度、温度等6个参数。编程中利用了MSComm控件。
4.1 通讯参数设置
4.1.1 流量计通讯参数设置流量计需要设置的通讯参数为:地址,通讯波特率、奇偶校验、数据位数、停止位位数,通讯协议(ASCII/RTU/HART)。
RFT9739流量计的出厂默认设置为:9600,odd,8,1,RTU,地址为1。
所有流量计的通讯波特率、奇偶校验、数据位数、停止位位数、通讯协议的设置必须相同。参数设置方法:
①流量计键盘(旋钮);②专用软件Prolink;③第三方软件(组态软件);④自编软件
如果采用自编软件进行参数设置,由于流量计的默认地址都为1,所以可以通过广播方式统一对所有的流量计进行相同的参数设置(地址除外)。然后对流量计地址进行单个设置(相互连线必须断开)。
4.1.2 计算机通讯参数设置计算机的通讯波特率、奇偶校验、数据位数、停止位位数、通讯协议必须与流量计一致。
设置好通讯端口。端口主要参数有端口代号,即串口号,常见的有微机标准配置1和2,其他的号则是由PCI或USB接口转换来的。RTU模式下每个字节包含两个4Bit的十六进制字符,所以输入模式一定要选1,如果选0,程序会按每个字节包含1个8Bit的十六进制ASCⅡ字符来处理,将得不到想要的返回结果。再一个需要设置的是端口的波特率,要保证和从机一致。使用串口取电的RS-232/RS-485转接卡时还要注意,部分转接卡可能从串口4脚和7脚取电,此时注意设置DTREnable、RTSEnable为True。其他不用设置,取默认值即可。
4.2 数据帧的编码与解码RFT9739流量计瞬时质量流量、瞬时体积流量、累计质量流量、累积体积流量、密度、温度等6个参数的寄存器地址映射关系如图4所示,247-262寄存器分别存放了瞬时质量流量、密度、温度、瞬时体积流量、压力、累计质量流量、累积体积流量等7个参数,每个参数占用2个寄存器。按照消息帧的格式要求进行编码,采用3号功能连续读取14个寄存器。
编码后的数据帧通过串口发送给流量计,流量计接收到查询信息后,返回相应的回应数据帧,计算机接收到回应数据帧后,进行解码。
每个参数为4字节IEEE574标准浮点数(占用2个寄存器),4个字节与浮点数的具体转换关系和协议本身无关。RFT9739流量计浮点数的4个字节排列顺序与寄存器521有关,如图5所示,寄存器521默认值为1,对应的顺序为2-3-0-1(IEEE574标准的顺序为0-1-2-3),可以通过改变寄存器521的值来改变顺序。
5. 结束语
用VB6.0实现了基于MODBUS_RTU协议的计算机与流量计之间的通信,可以充分发挥现代可视化语言的优点,充分满足用户的需求,编程快捷、方便、人机界面丰富。据此开发出的一些功能是原PROLINK软件所没有的,目前已在几个油库成品油公路外运定量装车控制系统中应用,由计算机实现装车作业控制,将现场装车情况汇总到控制室由计算机集中监控、管理、显示、打印各类装车报表。
- 上一篇:介绍2008版《科里奥利质量流量计》检定规程 2015/12/31
- 下一篇:Modbus协议在质量流量计组态软件中的应用 2015/12/29