基于Modbus协议的声学多普勒流速剖面仪软件实现

2015-09-08 10:13刘征宇陈允锋陈梦英
声学技术 2015年3期
关键词:寄存器流速功能

刘征宇,陈允锋,陈梦英



基于Modbus协议的声学多普勒流速剖面仪软件实现

刘征宇1,陈允锋1,陈梦英2

(1. 海军驻上海地区水声导航军事代表室,上海201108;2. 中国科学院声学研究所东海研究站,上海200032)

为了配合各地水情中心或预警预报系统的建设,研制了一款多普勒测流剖面仪,它具有真实反映流场,并且一次可以测量一个剖面上的若干层水流速度等优点。首先对这款多普勒测流剖面仪的系统功能进行了描述,结合Modbus协议特点,给出了本系统的读写数据的Modbus通信实例;在TI的OMAPL137硬件和嵌入式Linux操作系统的基础上,给出了实现Modbus RTU协议从站的设计方案;通过将从站采集到的水流速度传输至主站实时显示验证了该方案。实验证明该方案有效地实现了多普勒流速剖面仪在水利系统的现场数据传输。

多普勒流速剖面仪;Modbus协议;RTU传输模式;嵌入式Linux

0 引言

声学多普勒流速剖面仪(Acoustic Doppler Current Profilers, ADCP),是20世纪80年代初发展起来的一种新型测流设备。它根据多普勒原理,应用矢量合成法,遥测流速的垂直剖面分布,对流场不产生任何扰动,不存在机械惯性和机械磨损,可以真实反映流场,并且一次可以测量一个剖面上若干层水流速度的三维分量和绝对方向。由于ADCP具有诸多优点,所以它的出现立即引起了海洋界的高度重视。近年来ADCP测流技术发展很快,产品具有多种频率,多种规格,多种测量方式[1]。本文介绍的一款ADCP测流及遥测系统,可以配合水情中心或预警预报系统的建设,使得流速、流量的实时监测数据的超远程传输成为可能,便于有关部门更为及时、多层面地了解水文情势并作出数据的及时处理和分析。

随着现代工业的发展,如今的工业控制已从单机控制走向集散控制、集中控制、集中监控和网络集约管理的时代,而工业控制器联网也为网络管理提供了方便。Modbus协议是一种通用通信协议。通过该协议,控制器相互之间、控制器经由网络和其它设备之间可以实现数据通信。有了它,控制设备可以连成工业网络,进行集中监控,成为现代网络式集中制造、管理的主流趋势[2]。因此,研究基于Modbus协议的ADCP系统十分有必要。

结合现代水声设备小型化的要求,该设备的处理器采用TI公司的新款双核OMAPL137芯片[3]。设备是遵循Modbus协议的从机,与远程终端控制系统(Remote Terminal Unit, RTU)进行串口通信。物理层采用了RS485串口通信标准。本文将首先介绍ADCP要实现的整体功能,再介绍如何通过Modbus协议与RTU主机进行通信,最后给出了从机设计实现流程图。

1 ADCP系统功能

本文研制的这款ADCP最大的特点是可以独立工作,无人看守,并通过Modbus协议的方式进行远距离控制和传输数据。ADCP的系统结构如图1所示。它的核心处理器是一款具有ARM和DSP双核的OMAPL137芯片。其中DSP核负责AD采集、信号处理,将流速计算结果传给ARM核。而ARM核中安装了嵌入式Linux操作系统,是整个设备的核心,它负责控制DSP运算,接收计算结果,数据保存以及与远程监控主机进行Modbus通信等。

RTU主机通过Modbus协议控制ADCP,实现工作状态切换、参数设置以及数据传输。该系统的工作状态包括自动测量、单次测量、自检、预布设和待机等。测量参数设置包括盲区大小、测量单元大小和个数以及测流范围等;测量数据需要保存、传输与管理;另外,还可以设置系统时间。数据传输是指远程监控主机通过发送读取命令选择读取的层数和流速结果的形式,ADCP将流速数据结果上传。具体功能框图如图2所示。

2 ADCP中Modbus通信协议设计

本节首先介绍Modbus通信协议的特点,结合协议的特殊性和ADCP的具体功能,设计了本设备的Modbus通信协议,并给出了读取流速结果和同步系统时间的两个通信实例。

2.1 Modbus通信协议特点

Modbus协议有ASCII和RTU两种。RTU方式在同样的波特率下可比ASCII方式传送更多的数据,本文采用Modbus RTU传输方式[4]。

RTU模式下消息发送至少要以3.5个字符时间的停顿间隔开始。传输的第一个域是设备地址。可以使用的传输字符是十六进制的0...9, A...F。网络设备不断侦测网络总线,包括停顿间隔时间内。当第一个域(地址域)接收到消息时,每个设备都进行解码以判断消息是否是发往自己的。在最后一个传输字符之后,一个至少3.5个字符时间的停顿标定了消息的结束。一个新的消息可在此停顿后开始。

2.2 ADCP的通信协议设计

表1给出了Modbus RTU帧格式。其中起始位和结束符代表与前后帧的间隔不小于3.5个字符;CRC(Cyclic Redundancy Check, 循环冗余校验)是校验码。

表1 RTU帧格式

表1中设备地址是通讯传送的第一个字节。这个字节表示由用户设定地址码的从机将接收由主机发送来的消息。每个从机都有唯一的地址码,并且响应均以各自的地址码开始。即主机发送的地址码表明将发送到的从机地址,而从机发送的地址码表明回送的从机地址。

功能码是通讯传送的第二个字节。本设备使用了其中的两个功能码:读取码03H和写命令码10H。作为主机请求发送,通过功能码告诉从机执行什么动作。作为从机响应,从机发送的功能码与从主机发送来的功能码一样,并表明从机已响应主机进行操作。

数据域是可变长的字段,具体格式和功能码密切相关。表2给出了ADCP的部分RTU帧格式中数据域的定义。其中各寄存器首址是参数命令的起始地址,寄存器个数表示该参数所占字节数,即字节数等于寄存器个数乘以2。

表2 ADCP关于RTU帧格式的数据域定义

2.3 读取ADCP流速结果实例

多个寄存器数据读取使用03H(读取保持寄存器)功能码。数据读取时可以单独读取某一参数,也可以读多个连续地址的参数。可以通过0x03命令读取设备参数、测量数据等值。具体格式定义如下:

主机发送帧:[仪表地址] [功能码03] [寄存器起始地址高字节] [寄存器起始地址低字节] [读取的寄存器数高字节] [读取的寄存器数低字节] [CRC高字节] [CRC低字节]。

从机接收数据帧后进行分析判断,如数据有效则向主机发送相应帧,如无效则返回错误回应帧。

从机响应帧:[仪表地址] [功能码03] [返回的字节个数][数据1][数据2]...[数据n][CRC高字节] [CRC低字节]。其中,返回的字节个数是读取的寄存器数的2倍。

错误回应帧:[设备地址] [功能码+0x80] [错误码] [CRC高字节] [CRC低字节]。错误码:0x01表示无效功能,0x02表示无效寄存器地址,0x03表示无效的数据。

下面给出读取第一层流速数据的实例。RTU主机发送帧格式如表3所示,数据域中包括寄存器首址和寄存器个数,分别代表要读取的第一层流速存储地址和寄存器个数。ADCP响应帧格式如表4所示,数据域中数据字节数表示返回数据大小,数据1表示第一层X方向流速,数据2表示第一层Y方向流速。

表3 主机发送帧格式(功能码03H)

表4 ADCP响应帧格式(功能码03H)

2.4 同步ADCP系统时间实例

使用10H命令,每次允许写一个或多个寄存器的值,设置多个寄存器时,设置的寄存器地址必须是连续的。可以通过10H命令设置设备参数,同步时间等。具体格式定义如下:

主机发送帧:[仪表地址] [功能码10] [寄存器起始地址高字节] [寄存器起始地址低字节] [需写的寄存器数高字节] [需写的寄存器数低字节] [要写的数据总的字节数] [数据1][数据2]...[数据n] [CRC高字节] [CRC低字节]。

从机接收数据帧后进行分析判断,如数据有效向主机发送相应帧,如无效则返回错误回应帧。

从机响应帧:[仪表地址] [功能码10] [寄存器起始地址高字节] [寄存器起始地址低字节] [寄存器数高字节] [寄存器数低字节] [CRC高字节] [CRC低字节]。

错误回应帧:[仪表地址] [功能码+0x80] [错误码] [CRC高字节] [CRC低字节]。错误码:0x01表示无效功能,0x02表示无效寄存器地址,0x03表示无效的数据。

下面给出RTU主机对ADCP设备进行时间同步的实例。主机发送帧如表5所示,数据域给出了需要写入的时间,13年10月16日13时17分19秒,当ADCP收到该帧,将立即修改系统时间,并回复响应帧如表6所示。

表5 主机发送帧格式(功能码10H)

表6 从机响应帧格式(功能码10H)

3 ADCP中Modbus通信软件的实现

ADCP作为整个水情预报系统的一个观测节点,是Modbus RTU从机,主要实现消息帧的接收和存储,并根据接收到的消息帧执行相应的行为,将响应帧反馈给主设备[5]。下面对本设备接收帧的超时检测和接收帧处理流程分别进行阐述。

3.1 Modbus帧的超时检测

ADCP通过超时检测的方法来判断每个帧的开始和结束。当串口接收到第一个字元时,精确的Linux系统计时器开始计时,若在3.5个字符时间内还没有新的字元到达,则认为接收到一个Modbus协议RTU模式的消息帧,于是调用接收帧处理程序工作。其中3.5个字符所需时间与串口波特率有关。当波特率为9600时,对应时间为3.5*11/9600=4 ms。超时检测软件流程图如图3所示。

3.2 Modbus RTU从机接收帧处理流程

当ADCP通过超时检测程序检测出一帧信号后,进入接收帧处理流程,流程图如图4所示。Modbus RTU从机对收到的数据进行分析,如果地址位是本机地址的话,证明此次接收的数据是发送给本机的符合Modbus协议RTU模式的数据,则对接收的数据进行CRC校验。如果数据能够通过CRC校验,则证明此次接收的数据是一个完整的消息帧,可以对功能码、寄存器地址、数据进行判断,完成数据读取、数据分析及数据处理的过程,并反馈响应帧给主机。其中执行功能操作主要是完成以下几点:解析消息帧,读取功能代码,跳转执行相应操作,并构造响应帧,将响应帧反馈至RTU主机。如果是错误信息,则根据错误码构造错误回应帧,并将含有错误码的消息帧发送给RTU主机。

本系统在RTU传输模式下与主站进行了数据通信,测试结果正确无误,能够成功地完成Modbus通信中对数据的采集、处理和控制操作等要求。

4 结论

本文设计的这款多普勒流速剖面仪,采用Modbus协议的RS485总线进行通信传输,上位机控制中心实现远程实时监控。测试结果表明,本系统工作稳定、可靠性强、操作方便。另外,该ADCP还可以多台设备组网,这样使得远程监控各地区的水文情势成为可能。本文设计软件不仅仅针对水文监控,只需要对系统进行较少的改动就能很好地适用于对大型设备进行通信的要求,具有很强的技术适应性。

[1] 朱昊. 嵌入式数字ADCP信号处理系统的研究[D]. 天津: 天津大学工学硕士论文, 2003: 2-6.

ZHU Hao. Study on embedded signal processing system of digital ADCP[D]. Tianjin: The Degree of Master of Tian Jin University, 2003: 2-6.

[2] 王军霞, 赵金龙, 程秀竹. MODBUS RTU通讯协议在S7-200 PLC中的应用[J]. 系统集成与工程应用, 2013, 144(4): 53-55.

WANG Junxia, ZHAO Jinlong, CHENG Xiuzhu. Application of Modbus RTU communication protocol in S7-200 PLC[J]. System Integration and Engineering Application, 2013, 144(4): 53-55.

[3] Texas Instruments. OMAP-L137 Low power applications processor data sheet[Z]. SPRS563C, 2009.12.

[4] 翁建年, 史春华, 张浩. 基于ARM7微处理器的Modbus通信协议的实现[J]. 机电一体化, 2009, 13(6): 69-83.

WENG Jiannian, SHI Chunhua, ZHANG Hao. Based on ARM7 realization of Modbus communication protocol[J]. Mechanical and Electrical Integration, 2009, 13(6): 69-83.

[5] 张桂, 金国强, 李辉. 基于ARM平台Modbus RTU协议的研究与实现[J]. 电力科学与工程, 2011, 27(1): 23-27.

ZHANG Gui, JIN Guoqiang, LI Hui. Research and implementation of Modbus RTU protocol based on ARM[J]. Electric Power Science and Engineering Power Science and Engineering, 2011, 27(1): 23-27.

Implementation of acoustic Doppler profilers based on Modbus protocol

LIU Zheng-yu1, CHEN Yun-feng1, CHEN Meng-ying2

(1. Military Representatives Office of Underwater Sound & Navigation System in Shanghai Area, Shanghai 201108, China;2. Shanghai Acoustic Laboratory, Institute of Acoustics, Chinese Academy of Sciences, Shanghai, 200032, China)

In order to fit the construction of hydrologic information center or the early warning and forecasting system, an acoustic Doppler current profiler is developed, it can truly reflect the flow field, and get a current profilers through once measurement. In this paper firstly the system function of Doppler current profiler is described; and then secondly, combining the characteristic of Modbus protocol, an example of sending and receiving data is presented. Based on the OMAPL137 hardware and the embedded Linux operating system, a scheme of implementing of Modbus RTU protocol is realized. The scheme is verified by communication experiments. The experimental results show that this method can effectively carry out data transmission for acoustic Doppler current Profiler in data transmission of hydraulic system.

Acoustic Doppler Current profilers; Modbus protocol; RTU transmission mode; Embedded Linux

TB556

A

1000-3630(2015)-03-0260-05

10.3969/j.issn1000-3630.2015.03.014

2015-03-01;

2015-06-03

刘征宇(1981-), 男, 安徽铜陵人, 工程师, 研究方向为数字信号处理。

陈梦英, E-mail: chen03051302@126.com

猜你喜欢
寄存器流速功能
也谈诗的“功能”
『流体压强与流速的关系』知识巩固
STM32和51单片机寄存器映射原理异同分析
山雨欲来风满楼之流体压强与流速
Lite寄存器模型的设计与实现
爱虚张声势的水
关于非首都功能疏解的几点思考
不同工况下弯管水流流速模拟研究
中西医结合治疗甲状腺功能亢进症31例
辨证施护在轻度认知功能损害中的应用