基于Modbus_TCP协议的无人水下航行器监控系统设计
55卷 第4期(总第211期) 中 国 造 船 V ol.55 No.4 (Serial No. 211) 2014年12月 SHIPBUILDING OF CHINA Dec. 2014 文章编号:1000-4882(2014)04-0140-09
基于Modbus/TCP协议的无人水下航行器
监控系统设计
于曹阳,向先波,牛泽民,徐国华
(华中科技大学 船舶与海洋工程学院,武汉 430074)
摘 要
基于工业以太网标准Modbus/TCP通信协议,提出了一种岸基监控台与无人水下航行器之间的实时通信方
案,以对无人水下航行器的位姿、状态进行实时监视与远程控制,并完成了基于工业Modbus/TCP协议的无人
水下航行器监控系统设计。文中给出了该监控系统的水面和水下两级结构与组成,并详细地讨论了通信协议
的确定以及两级系统的硬件平台搭建和监控软件设计;最终,完成了对无人水下航行器监控系统的水池联调
试验。水池联调试验结果表明:基于工业Modbus/TCP协议的无人水下航行器监控系统实时性好,可靠性高。
关 键 词:Modbus/TCP;无人水下航行器;监控系统
中图分类号:U664.82 文献标识码:A
0 引 言
无人水下航行器自20世纪90年代出现以来,已受到数十国家的青睐,目前正向长航时、远航程、高度自主化和使命化等方向发展。无人水下航行器具有体积小、航行声噪低和磁场特征弱等优点,被广泛应用于情报搜集、监视、侦察和布雷等军事领域[1-2];同时,在水下目标探测、水温、压力和海流测量及为海底绘图提供科学数据等民用研究领域,也发挥着重要作用。对于有岸基监控台的无人水下航行器而言,监控系统好比其大脑,起到实时监视航行器的位姿、状态信息以及下达与执行控制命令的作用,此时水面和水下两级监控系统之间的通信显得尤为重要,目前的有缆无人水下航行器主要以CAN 总线、RS-485通信和网络通信为主[3]。本文研究、设计并验证了基于工业以太网标准的Modbus/TCP通信协议的水下航行器监控系统,该系统充分利用Modbus/TCP通信协议的鲁棒性,实时、可靠地完成了无人水下航行器水面和水下两级监控系统之间的实时通信。
基于工业以太网标准的Modbus/TCP通信协议具备鲁棒、可靠的特点,在实际远程监控系统中的应用较为广泛。曹力,在套接字和多线程编程基础上,基于Modbus/TCP协议构建了空气质量监测网络中心站与其子站间的通讯系统[4]。陈志虎等人,探讨了一种在浙江中控DCS 系统与GE 公司iFIX 监控平台之间采用的Modbus/TCP协议,实现了在马鞍山钢铁股份有限公司能源中心对现场能源站所的管控[5]。陈硕,引入异步非阻塞多线程技术实现了Modbus/TCP通信中TCP 网络层的改进,弥补了传统的Modbus/TCP服务器协议栈采用阻塞时I/O操作而容易引起接受线程阻塞的缺陷,并基于Visual 收稿日期:2014-05-28;修改稿收稿日期:2014-10-27
基金项目:国家自然科学基金(51209100);高等学校博士学科点专项科研基金([1**********]045);湖北省自然科学基金(2014CFB253);
中央高校基本科研业务费专项资金(2013TS090)
Studio 2005完成了S3C2400服务器端的界面[6]。目前,Modbus 或Modbus/TCP协议在水下航行器通信领域应用较少;马军海基于Modbus/TCP协议,设计了一种单参数PID 算法,抑制水下电缆分压和电网负载变化对水下机器人照明灯电压波动[7]。徐鹏飞等在自主开发的新型遥控自治水下机器人ARV 原理样机上,基于Modbus 总线开发了一套水面/水下多种模式兼容的控制系统[8]。王虹飞等通过Modbus 通信协议,实现了工控机和单片机两级控制模式,完成对船舶电站柴油机组的监控[9]。J. H. Kim 等通过系泊设备和声学导航系统与自主水下航行器通信,搜集天气海洋学数据,构造了一个自主海洋采样网络[10]。Niv Goldenberg 等提出了一种基于模型的入侵检测系统,构建了人机界面与可编程逻辑控制器之间的信道[11]。
本文主要工作在于:将工业以太网标准协议Modbus/TCP引入到无人水下航行器监控系统之中,采取基于分离数据块的Modbus 数据模型,提出了一种岸基监控台与水下航行器之间的实时通信方法,实时、可靠地完成了无人水下航行器的位姿、状态实时监视与远程控制。
1 监控系统的组成
如图1所示,无人水下航行器监控系统包含水面监控台和与之对应的水下监控单元两级,两级系统之间的交互基于标准化的接口和数据格式[12]。无人水下航行器通过传感器获取自身位姿、状态等信息,并基于Modbus/TCP协议通过光纤和光纤收发器周期性地将位姿状态信息发送给水面监控台,水面监控台完成数据信息的接受、显示与存储。水面监控台也可实时采集操纵面板或监控界面的按钮输入信息,处理后基于Modbus/TCP协议实时发给水下监控单元,水下监控单元经由运动控制单元进行决策,控制执行机构协同动作,达到航行器预期的运动效果。
图1 无人航行器及其监控系统组成结构
2 监控系统的设计与实现
无人水下航行器监控系统包含水面监控台和水下监控单元两部分。本节首先阐述Modbus/TCP通信协议和实现原理,然后根据Modbus/TCP协议设计水面与水下监控系统间交互的异类通信数据帧,
并给出了岸基监控平台的软件架构设计。最终,基于Socket 机制,进行了水下航行器的底层通信编程设计,理论分析了监控系统的实时性和可靠性。
2.1 基于Modbus 协议的监控系统设计原理
1979年,Modicon 公司提出了Modbus 协议,该协议最初是作为工业串行链路的标准。1997年,Schneider 电气公司在TCP/IP网络通信链路上实现了Modbus 协议;2004年,我国也将Modbus 协议作为国家标准。Modbus 标准包含了两个通信规程,一个是串行链路上的Modbus ,另一个是TCP/IP上的Modbus [13]。表1所示,是两个通信规程对应的体系结构和协议对比。
表1 两种Modbus 体系结构与协议对比
层
7
6
5
4
3
2
1 OSI 模型 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 串行链路上的Modbus Modbus 协议 空 空 空 空 Modbus 串行链路协议 网络接口层 EIA/TIA-485或232 IEEE802.2 传输层 网络层 TCP IETF RFC 793 IP IETF RFC 791 Ethernet II/802.3 TCP/IP结构 应用层 TCP/IP上Modbus Modbus 映射
图2所示,是串行链路上的Modbus 文件概要。Modbus 标准定义了OSI 模型第7层上的应用层报文传输协议,它在连接至不同类型总线或网络的设备之间提供客户机/服务器通信。Modbus 串行链路协议是一个主从协议,该协议位于OSI 模型的第二层。在物理层,Modbus 串行链路系统可以使用不同的物理接口(RS485、RS232) 。最常用的是TIA/EIA-485 (RS485) 两线制接口。同一时刻,只有一个主节点连接于总线,一个或多个子节点连接于同一总线。Modbus 通信均由主节点发起,子节点只有在收到主节点请求时才发送数据,子节点间不能相互通信。
通讯数据帧
总线 Modbus 在串行链路上
实现指南 Modbus 协议规范 串行链路规范
(OSI 第1和2层) 图2 串行链路上的Modbus 文件概要 Modbus 协议 (OSI第7层)
图3所示,是TCP/IP通信链路上的Modbus 规范和标准。Modbus/TCP 本质上采用简化的方式将Modbus 帧嵌入TCP 帧中,这是一种面向连接的传输方式,其实质仍是以太网的CSMA/CD 介质访问控制技术。与传统的Modbus 协议不同,在Modbus/TCP中不需要CRC 或LRC 检测域,因为TCP/IP和以太网的数据链路层采用校验准确的数据包传送,以保证通信的可靠性。TCP 是使用端口号把信息传到上层,为用户提供不同服务,端口号跟踪同一时间内通过网络的不同会话;其中,502端口是Modbus 端口号码,所有的Modbus 请求通过TCP 从寄存器端口502发出。
Modbus 报文传输在
TCP/IP上实现指南
图3 TCP/IP上Modbus 规范和标准
基于Modbus/TCP协议中的Modbus 请求或响应的封装如图4所示。MBAP 报文头是一种识别Modbus 应用数据单元的专用报文头,包括事务元标识符、协议标识符、长度以及单元标识符四个域,共占7个字节长。
应用数据单元(ADU)
MBAP 报文头 功能码 数据
简单协议数据单元 (PDU)
图4 TCP/IP上的Modbus 请求/响应
Modbus 以一系列具有不同特征表格上的数据模型为基础,四种数据模型及功能码如表2所示。
表2 Modbus 数据模型及功能代码
数据模型
离散量输入
离散量输出
模拟量输入
模拟量输出 对象类型 单个比特 单个比特 16-比特字 16-比特字 访问类型 读输入点 写多个线圈 读输入寄存器 写多个寄存器 功能码 0x02 0x0F 0x04 0x10
2.2 基于Modbus/TCP协议的水下航行器监控系统设计
2.2.1 异类通信帧格式确定
根据无人水下航行器监控系统的具体通信要求,按照表2所述的Modbus 数据模型将实际的通信数据分离为以下不同类型的通信帧:
(1)离散量输入:包含水下航行器进退、转向、横移和潜浮四项单自由度基本运动指令,以及紧急停车和紧急上浮两项应急操作。
(2)离散量输出:包含电池报警和漏水报警信息。
(3)模拟量输入:包含设定航速、自动定深以及自动定向(艏向角)功能。
(4)模拟量输出:包含艏向角、俯仰角、横滚角、经度、纬度、线速度、深度等位姿信息以及主推转速、辅推电压以及舵角等执行机构的状态信息。
其实每个通信设备根据其应用都有自身的数据结构,基于分离数据块的Modbus 模型中,每个块是相互独立的,不同的数据块中的数据无关联,按照不同的Modbus 功能码访问每个块,即不同数据类型按功能码分别依次进行Modbus 请求,访问各自对应的设备寄存器,如图5所示,是水下航行器基于分离数据块的Modbus 数据模型。
图5 基于分离数据块的Modbus 数据模型 确定Modbus/TCP通信协议的功能码和数据分类后,根据不同类型数据的组合可形成一条PDU 数据单元;并根据数据长度确定MBAP 报文头,即可形成Modbus/TCP ADU数据帧。本文以模拟量输出中的整型数据信息为例,其ADU 数据单元的请求帧与地址分别如表3和表4所示。按照Modbus 规范,地址表中的数据长度一般以bit 为单位,这是针对线圈而言;但针对寄存器而言是2byte ,即实际编程设计中每一个整型数据的长度为2byte 。
表3 整型数据信号请求帧
0×00 0×00 0×00 0×00 0×00 0×19 0×01 0×10 表4 整型数据信号地址表
参数存放首址
0×00
0×01
0×02
0×03
0×04
0×05
0×06 参数定义 电压 SOC 电流 最高温度 最低温度 深度 主推电机转速 编号 PWR_V PWR_SOC PWR_A PWR_HTemp PWR_LTemp Depth Motor_Seepd 量程 0~200 0~100 0~40 -40~125 -40~125 0~10000 0~1500 单位 V % A ℃ ℃ cm r/min 数据长度/bit 1 1 1 1 1 1 1
2.2.2 岸基监控平台软件架构设计
岸基监控平台基于SCADA 系统(数据采集与监视控制系统)完成开发和设计。SCADA 是以计算机为基础的生产过程控制与调度自动化系统,可以对现场的运行设备进行监视和控制,以实现数据采集、设备控制、测量、参数调节以及各类信号报警等功能。图6所示,是设计的岸基监控平台通信结构框图。 图形
开发工具事件显示 报警显示 状态图 趋势图 OPC 客户
内部通讯接口
客户方 外部通讯接口
服务器方
通讯接口
数据库
组态工具 数据处理 报警检查 事件记录 历史存储
实时库 报警记录 事件库 历史库
图6 岸基监控平台通信结构
SCADA 系统包含两个层面,即客户/服务器体系结构,服务器与硬件设备通信,以进行数据处理、报警检查和事件记录等,数据存储后形成相应的数据库。其由多项任务组成,每个任务完成特定的功能。而客户用于人机交互,通过内部通信接口实现事件显示和报警显示,并实时生成状态图和趋势图,以动画显示现场的状态,并可以对现场的开关进行操作。OPC(OLE for Process Control)客户通过外部通信接口可实现无人水下航行器的三维视景功能,OPC 作为兼容微软公司软件开发平台的工业标准,其客户端无需修改就可以与OPC 服务器进行通信。此外,外部通信接口也可用于与无人水下航行器进行Modbus/TCP通信。
2.2.3 底层通信软件设计
Modbus/TCP协议作为Modbus 协议与TCP/IP协议的结合,同样离不开基于Socket 机制的套接字连接。将底层控制系统设计为Modbus 客户机,其Socket 套接字包含socket 、connect 、write 、read 四个流程;其中,write 流程与Modbus/TCP ADU数据单元紧密相关。
Modbus 请求通常是在给定的连接上以半双工的方式发送;即,当单一连接被相应请求所占用时,就不能发送其他请求。采取请求后阻塞读取应答信息的方式,可读取到应答信息并简单转化后再进行下次请求;为了保证实时性,转化只是完成简单地数据转换与存储,具体执行是以VxWorks 系统中的任务和多线程的形式完成,这样既满足多次请求,又保证了实时性。Modbus 请求函数定义为write (sFd,ModbusTCP_Int_Buf,sizeof(Modbus_TCP_Buf));其中,sFd 表示Socket 描述符,ModbusTCP_Int_Rbuf表示请求存储缓存区地址, sizeof ( Modbus_TCP_Buf ) 表示周期请求数据的字节数。
3 监控系统试验
在完成无人水下航行器监控系统设计的基础上,通过联调测试对监控系统进行了全方位长时间的考核,主要包括:采用Modbus Poll软件模拟岸基监控平台的半实物仿真联调以及包含各种遥控和自主运动功能测试项目的水池联调试验。
3.1 半实物仿真联调
无人水下航行器监控系统半实物联调,主要是考核基于Modbus/TCP协议通信的可行性和实时性。联调时,岸基监控平台采用Modbus Poll 软件模拟;底层控制系统采用实际的PC/104堆栈,连接部分传感器和执行器实物;其余使用模拟数据代替。
图7为水下航行器舱内的底层监控系统局部图,它主要包含:PC/104堆栈、分配板、隔离板以及舵机/推进器驱动板等。
隔离和驱动板 PC/104堆栈 分配板
图7 底层监控系统局部图
无人水下航行器监控系统水面、水下两级模拟半实物调试结果,示于Modbus Poll软件的整型数据和布尔型数据显示界面(如图8所示),分别显示航行器的传感器数据和报警信息。经过前后累计半个多月、每天两个试验周期的重复考核(每个试验周期时长约为2.5 h ),数据流交互正常,水下监控平台可按0.5 s 的通信周期实时获取水下航行器的传感和状态数据。实际的半实物仿真联调结果表明:基于Modbus/TCP协议的上下两级监控系统通信方法可行,数据交互实时性好。
整型传感器数据
数据区
代码区
布尔型报警数据
图8 Modbus Poll整型和报警数据显示界面
3.2 水池试验调试
在完成半实物仿真联调的基础上,以PC104堆栈作为底层监控系统核心嵌入到无人水下航行器原理样机中,在华中科技大学拖曳水池进行了2个多月的运动功能试验;通过具体的运动功能试验,进一步考核了监控系统通信的实时性和可靠性。其中,所做的运动功能试验项目包括:无人水下航行器的前进、潜浮、横移和转向等遥控操纵,以及以自动定深和自动定向为主的自主运动。实际水池试验中,基于Modbus/TCP协议的无人水下航行器监控系统数据通信展现出了良好的可靠性和实时性。
在满足航行器控制系统数据流交互频率的设计要求下,经过长达2个多月、每天约5小时的水池运动功能试验,通过调取水面监控台的SCADA 后台数据库查看历史趋势(即记录数据曲线),未发现数据异常点;这说明基于分离数据块Modbus 模型的四种独立数据流(离散量输入/输出和模拟量输入/输出)的交互通信误码率为零,表明了基于Modbus/TCP协议的无人水下航行器监控系统的数据通信的可靠性高。这与Modbus/TCP协议在应用层采用了确定性的主从式协议、在传输层采用TCP 协议以及在数据链路层采用了对数据包进行校验等措施的优点是分不开的。
与此同时,水面监控台,基于SCADA 系统、按照0.5s 的通信周期,实时获取水下航行器的传感、状态数据,同时实时采集按钮或手柄的输入信息。水下监控台,基于VxWorks 操作系统的wind 实时内核,可在当前周期内实时获取水面监控台发出的紧急人工干预命令信息(如紧急停车/紧急上浮),并合理调度系统资源完成对上述紧急命令信息的实时处理(即指令一旦下达,即可看到相应的执行机构动作),控制水下航行器完成特定的遥控或自主运动,这在实际的功能试验中得以验证。试验过程中,Modbus/TCP一个周期内的通信延迟仅为1.35ms ,表明了基于Modbus/TCP协议的无人水下航行器监控系统数据通信实时性好。
4 结 语
本文根据无人水下航行器数据通信要求,将工业以太网协议Modbus/TCP引入到无人水下航行器监控系统设计之中,采取分离数据块的Modbus 数据模型,实现岸基监控平台与无人水下航行器间的鲁棒式通信。水池试验表明:基于Modbus/TCP的通信协议,可以实时、可靠地完成对无人水下航行器的位姿、状态进行实时监视与远程控制。
参 考 文 献
[1] 傅金祝. 无人水下航行器与自主水下航行器的价值与发展前景[J]. 水雷战与舰船防护, 2006(3):1-6.
[2] LUGARIE T, VASILIJEVIC A, SRBLJIC S. Interconnectable gadgets and web services usage in supervisory control of
unmanned underwater vehicles[C]// Proceedings of the 34th International Convention, 2011:696-701.
[3] 邱小军. 基于总线冗余的水下机器人分布式通信系统设计[D]. 上海交通大学硕士学位论文, 2012.
[4] 曹力. 基于Modbus/TCP协议的监控网络研究与设计[D]. 华中科技大学硕士学位论文, 2008.
[5] 陈志虎. 基于浙江中控DCS 的远程管理技术[J]. 冶金自动化, 2013(S2):556-559.
[6] 陈硕. 基于WinCE 平台的Modbus/TCP通信设计与实现[C]// 中国控制会议, 2011(7):4710-4713.
[7] 马军海. 基于Modbus TCP协议水下机器人照明灯电压调节[J]. 创意与实践, 2011(7):68-72.
[8] 徐鹏飞. 遥控自治水下机器人控制系统[J]. 中国造船, 2010, 51(4):100-110.
[9] 王虹飞, 向先波, 刘土光. 基于Labview 的船舶电站实时监控系统[J]. 中国造船, 2007, 48(1):58-63.
[10] KIM J H, MORAN B A, LEONARD J J , BELLINGHAM J G, TUOHY S T. Experiments in remote monitoring and
control of autonomous underwater vehicles[C]// Prospects for the 21st Century' Conference Proceedings, 1996:411-416.
[11] Niv Goldenberg, Avishai Wool. Accurate modeling of Modbus/TCP for intrusion detection in SCADA systems[J]. International Journal of Critical Infrastructure Protection, 2013:63-75.
[12] ZHENG Taixiong , MA Fulei , ZHANG Kaibi. Design of real time monitor system of manufacture process of iron and steel
industry based on new style sensor[J]. Procedia Engineering, 2011(15):188-193.
[13] GB/T19582-2008基于Modbus 协议的工业自动化网络规范[S]. 2008.
On Monitoring and Control System
of Unmanned Underwater Vehicle via Modbus/TCP
YU Caoyang, XIANG Xianbo, NIU Zemin, XU Guohua
(College of Naval Architecture and Ocean Engineering, Huazhong University of Science and Technology,
Wuhan 430074, China)
Abstract
Based on industrial Ethernet standard Modbus / TCP, a method for real-time communication between the remote monitoring station and unmanned underwater vehicle is proposed, so that the real-time position, attitude and status of the unmanned underwater vehicle can be monitored and operated by the remote station. This paper presents the structure and composition of a two-level monitoring system for the unmanned underwater vehicle, gives the communication protocol, and shows the design of hardware and software systems. Finally, the two-level system is tested in a tank. Test results demonstrate that the system based on industrial Modbus/TCP has satisfactory real-time performance and high reliability in the aspects of monitoring and control.
Key words: Modbus/TCP; unmanned underwater vehicle; monitoring and control system
作 者 简 介
于曹阳 男,1991 年生,硕士。主要从事水下机器人嵌入式控制方面的研究工作。
向先波 男,1978 年生,博士、副教授。主要从事水面/水下航行器、水下机器人的智能控制研究工作。
牛泽民 男,1988 年生,硕士。主要从事水下机器人操纵与控制方面的研究工作。
徐国华 男,1965年生,博士、教授。主要从事水下机器人技术和智能控制技术的研究工作。