嵌入MODBUS协议的涡轮流量计通信系统设计

涡轮流量计是采用先进的超低功耗单片微机技术研制的涡轮流量传感器与显示计算一体化的新型智能仪表 。文章针对流量计控制的实际要求,设计了基于 MODBUS协议的计量数据的通信系统。涡轮流量计(下位机)由德州仪器的 MSP430单片机实现数据的采集及存储。上位机程序是通过 VisualStudio2012利用C#语言编写的基于 MODBUS协议的 Windows应用程序。把上位机程序移植到嵌入式系统中,上下位机通过无线射频技术实现通信,完成了对流量计的远程控制以及计量数据的远程采集与显示。

涡轮流量计属于速度式流量计,也被称为叶轮式流量计。涡轮流量计是利用置于流体中的叶轮的旋转角速度与流体流速成比例的关系,通过测量叶轮的转速来反映通过管道的流体体积流量的大小,是目前流量仪表中比较成熟的高准确度仪表之一。随着工业的发展以及计算机网络的日趋完善,利用计算机作为上位机与涡轮流量计进行通信已经是企事业单位计量数据管理的大趋势。涡轮流量计的通信系统是涡轮流量计的重要组成部分。虽然涡轮流量计已经提供了瞬时流量、累积流量、温度、压力等信息的采集,但是目前这些数据的读取需要靠人工进行现场抄表。原始的人工抄表方式既耗费大量的人力物力,又无法避免手工抄写和计算带来的误差,且对数据的分析处理也严重滞后,不利于及时发现问题、解决问题。因此,这种数据读取方式具有易出错、工作量大、准确率低等缺点。而且涡轮流量计大多安装在一些危险的且无人看守的工作现场的密封管中,人工抄表难度大。

 

为了解决这些问题,本课题在 Windows平台下利用VisualStudio2012编写监控程序并移植到嵌入式系统下,通过射频技术与下位机进行无线通信,通过监控程序的无线控制能够实现涡轮流量计的开关、各种流量计参数的设定以及将采集到的数据传输到嵌入式主板进行显示。

1.系统总体方案

 

基于 MODBUS协议的涡轮流量计通信系统主要由上位机和涡轮流量计(下位机)通信部分组成。本设计主要完成上位机部分。基于 MODBUS协议编写上位机程序并移植到嵌入式系统中,主要完成的任务有:上位机通过无线射频技术完成了对涡轮流量计(下位机)的参数配置并控制下位机完成对现场流量、温度、压力等数据的自动采集与显示。

 

2 .MODBUS协议

 

2.1 MODBUS协议简介MODBUS规约是 MODICOM 公司开发的一个为很多厂商支持的开放规约,MODBUS协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。MODBUS协议已经成为一个通用工业标准,有了它不同厂商生产的控制设备可以连成工业网络进行集中监控。此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了控制器请求访问其它设备的过程,如何回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。

 

MODBUS协议包括RTU 和ASCII等,并没有规定物理层。此协议的数据通信采用了主/从方式,即主设备端发出信息请求,从设备端接收到正确的信息后就会返回数据到主设备端完成响应;同时主设备端也可以发消息直接修改从设备端的数据,实现了双向的读写。

 

2.2 MODBUS协议格式

 

MODBUS协议主要分为两种传输模式:RTU 模式和 ASCII模式。根据需求可以自行选择使用何种模式,包括串口通信的参数(端口号、波特率、校验方式等)。在配置控制器的时候,同一个 MODBUS网络上的所有设备都必须选择相同的协议格式和串口参数。

 

当控制器设在 MODBUS网络上并以 ASCII模式通信时,字符发送时间间隔可达1s而不产生错误,而且由于 ASCII格式拥有开始和结束标志,因此 ASCII协议的程序对数据包的处理能更加方便直观,更加容易调试。这是流量计的通信系统选择 ASCII协议作为通信格式的原因。

 

2.3 ASCII模式

 

当控制器设为在 MODBUS网络上以 ASCII(美国标准信息交换代码)模式通信,消息中每8Bit的字节都作为两个 ASCII字符发送。这种方式的主要优点是字符发送的时间间隔可达到1s而不产生错误。ASCII模式的消息帧的构成如表1。

编码1.jpg

消息帧的地址域包含两个字符(ASCII)或8Bit(RTU)。可能的从设备地址0...247(十进制)。单个设备的地址范围是1...247。主设备通过将要联络的从设备的地址放入消息中的地址域来选通从设备。当从设备发送回应消息时,它把自己的地址放入回应的地址域中,以便主设备知道是哪一个设备作出回应。地址0用作广播地址,以使所有的从设备都能认识。当 MODBUS协议用于更高水准的网络,广播可能不允许或以其它方式代替。

 

3 .通信系统硬件设计

 

3.1 通信系统硬件设计方案

 编码2.jpg

通信系统的硬件设计方案如图1所示。

上位机选用嵌入式开发板EM9280,它是一款面向工业自动化领域的高性价比嵌入式主板产品,其内核 CPU 为工业级品质的i.MX283,系统已预装正版

WindowCE6.0实时多任务操作系统。此外,EM9280

体积小,易携带,可以方便地带到工业控制现场,方便工作人员的操作。

 

EM9280的标准配置中有RS-485通信接口,而标准的 MODBUS物理层就采用了 RS-485串行通信标准,通过485总线可以将通信数据发送给无线射频模块,并通过射频信号将数据发送给下位机端射频模块,***后再通过485总线传送给涡轮流量计,完成数据的传输。

 

无线射频模块采用PTR2000,无线收发一体数传

 

MODEM 模块 PTR2000芯片性能优异,在业界居水平,它的显著特点是所需的外围元件少,因而设计非常方便。该模块在内部集成了高频发射、高频接收、PLL合成、FSK调制/解调、参量放大、功率放大、频道切换等功能,因此是目前集成度较高的无线数传产品。该器件采用了抗干扰能力较强的 FSK 调制/解调方式,其工作频率稳定可靠。它是目前低功率无线传输的理想选择。

 

3.2 涡轮流量计系统设计

 

系统主要由数据采集模块、电源模块、键盘显示模块、频率输出模块、通讯模块等组成。如图2 所示,系统采集数据并经过 A/D转换成数字量进行存储、显示和传输。

 

考虑到实际应用,在硬件选择方面尽可能保证性能的情况下多选择低功耗芯片。微控单元选用德州仪器公司生产的 MSP430F149单片机,它具有良好的通用性和可扩展性,并且属于超低功耗微处理器 。

编码3.jpg

4. 通信系统软件设计

 

4.1 软件编程思路

 

上位机软件在计算机上进行编写,计算机的标准配置中通常只有 RS-232通信接口,可以通过很多标准控件完成 RS-232的数据通信。本次设计选用C#语言中的serialport控件在 VS2012编程环境下完成基于 MODBUS-ASCII协议的上位机通信软件的设计。

 

serialport控件按照接收数据方式分为事件驱动方式和同步接收方式。由于该上位机软件需要处理的接收上来的数据非常多,考虑到事件驱动方式需要大量的代码去分析接收上来的数据属于上位机监测的哪部分数据,因此,本设计采用同步接收方式去处理接收的数据。数据处理流程图如图3。

4.2 软件仿真

 

(1)仿真环境搭建

 

仿真在一台电脑上面完成,需要两条 USB转串口线,并把1号串口上的2针接2号串口上的3针,1号串口上的3针接2号串口上的2针,然后两个串口的5针(接地端)互相连接即可。

编码4.jpg

(2)仿真软件

 

为了确保编程的 MODBUS-ASCII协议标准(稍作改动便可供其他标准涡轮流量计使用)准确可行,选用 MODBUSSlave软件进行仿真。MODBUSSlave是 MODBUS子设备模拟工具,帮助 MODBUS通讯设备开发人员进行 MODBUS通讯协议的模拟和测试,用于模拟、测试、调试 MODBUS通讯设备。可以在32个窗口中模拟多达32个 MODBUS子设备!与MODBUSPol的用户界面相同,支持功能码:01,02,03,04,05,06,15,16,22和23,监视串口数据。

 

(3)上位机功能

 

根据 MODBUS———ASCII协议,本上位机完成的功能有:

 

“01”———读取连续的布尔参数值(0/1);“03”———读取保存的仪表各项参数值(Hex;)“04”———读取仪表瞬时测量输出值(Hex);“0F”———写多个连续的布尔参数值(0/1);“10”———写多个连续的寄存器参数值(Hex)。通过利用 MODBUSSlave软件进行仿真测试上位机软件。由于定时读取下位保持机寄存器的数据是MODBUS协议中代表性的功能,因此在这里只演示03功能仿真,仿真结果如下。

 

功能码03为定时读取下位机中已经存储数据的功能,每隔一定的时间将会从下位机读取一次数据,如果没有读到将会连续尝试5次,如果5次读取都没有结果则认定连接断开,用户可以再次点击开始按钮再次读取下位机数据。

 编码5.jpg

图4为 Wince系统的触摸屏和电脑上 MODBUSSlave软件仿真合照。图5是在 Wince系统上运行上位机软件。单个寄存器只能存储2个字节的数据,因此对于大的数据来说需要多个寄存器来存储。对于由单个寄存器存储的数据,如30002寄存器存储的为瞬时流量的值,由于精度问题,当上位机接收到瞬时流量的数据时将会除以10则会得到。而对于大的数据,如30004和30005存储的是总累积流量的数据,如图  ,转换的顺序是:当上位机读取30004和30005的数据时,数据存储为002B0020和20分别为43和32的16进制表示),然后再将002B0020转换成10进制,***后除以10取得精度,***终得到。其它数据的计算方式可参照以上两种。

 

5.结束语

 

本系统主要由上位机、涡轮流量计、无线收发模块等几个部分组成。下位机采用C语言在 MSP430F149上编程,上位机采用C#语言在 VS2012环境下编程,上位机与下位机之间采用 RS-485进行通信,设计并编写基于 MODBUS-ASCII协议的通信应用软件。通过仿真实验表明上位机完全按照 MODBUS-ASCII协议编写并能够通信成功,下位机采集到的数据可以通过自身的显示模块以及上位机窗口同时显示,并且可以保存到下位机外扩ROM 中。本系统具有良好的可扩展性,通过简单改写***多可以拓展到32个子设备的流量等数据的监测,对降低生产运营成本有重大意义。

 

 

 

 

相关新闻

返回顶部
0517-8699 6066 欢迎来电咨询
Hello. Add your message here.