张 颖,张有志,方 敏,朱大奇
(1.上海海事大学信息工程学院,上海 200135;2.上海微电子装备有限公司系统工程部,上海 201203)
自治水下机器人(Autonomous Underwater Vehicle,AUV)是1种适于海底搜索、调查、识别和打捞作业的既经济又安全的工具,也是1种有效的水中兵器,代表未来水下机器人技术的发展方向.AUV运动的交叉耦合性、非线性和时变性等非常严重,因此,对各部件之间的协同工作,尤其是对信息传输的实时性、稳定性及冗余性等有较高的要求.AUV的通信系统设计是整个机器人系统构架的关键环节.
目前AUV底层通信一般采用点对点的方式,其有1个主控通信节点,在其他模块上安装通信子节点,多采用单主工作方式.该通信模式存在一些缺点:(1)只存在1个没有硬件通信协议的物理层,其通信协议完全依赖软件的支持,系统通信软件的负担较重;(2)在几乎没有可靠的总线竞争仲裁与帧重发机制的情况下,数据丢失率与总线数据的流通量成正比,有时甚至会导致整个通信网络的瘫痪;(3)通信器件较小的收发缓冲区不利于网络长期处于连续或长字串的收发状态,在接收和发送数据量不平衡时尤其明显.
显然,作为AUV系统底层主干通信网络,在网络数据负荷量相对较重的情况下,该模式无法达到较好的通信效果.
在20世纪80年代,为满足汽车工业不断发展的需要,最先由德国Bosch公司提出以控制器局域网络(Controller Area Network,CAN)总线方案解决汽车装置间的通信问题,在车载各电子控制装置(Electric Control Unit,ECU)之间交换信息.CAN采用多主工作方式和非破坏性仲裁技术,其报文格式精简、通信速率高、可靠性强,还可在异常情况下实现节点自动关闭.
CAN总线的优势使其应用范围从车载通信迅速扩展到船载通信等领域,目前,国外已将CAN总线技术应用于水下机器人系统,而我国在这方面的应用研究尚处于起步阶段.
CAN总线可与局部互联网络(Local Interconnect Network,LIN)总线配合,用于水下机器人系统中的多主节点控制和数据采集.因此,研究AUV的CAN总线通信系统有重要意义.
SZABO等[1]首次将分布式CAN网络通信应用于空间自治移动机器人,并采用轻量化的CAN总线协议,保证各微处理器之间的可靠通信;HIROSHI等[2]开发出1台名为 MR-X1的工程 AUV,主要设备之间均通过CAN接口通信,由双绞线连接各个微处理器;LIU等[3]为AUV开发的ECU,以CAN作为底层通信网络,CAN以广播的通信机制发布信息,可很好地完成实时传递信息的任务;杨晓华等[4-5]、侯魏等[6]提出基于CAN总线的水下机器人分布式控制系统结构,采用飞利浦P87C591单片机作为节点的核心处理器,将CAN总线通信控制器嵌入水下机器人各执行器单元中,形成基于CAN总线通信的水下机器人执行器节点,从控制系统结构出发,研究基于CAN总线的分布式控制网络.
本文研究基于CAN总线的AUV多主节点构架的底层网络通信结构,并构造总线控制节点,以多主结构的分布式总线结构取代以往的集中式控制结构及主从式通信方式,总线上的节点在大部分时间里并行工作,完成不同的任务和功能.研究对象为Outland 1000水下机器人试验设备.
Outland 1000的ECU模块可分为数据采集模块(包括各类传感器)、控制器模块和执行器模块等3大类.数据采集模块位于导航舱中,包括采集与传送指南针、陀螺仪和深度计等传感部件信息的模块以及采集摄像机和照明灯状态信号的模块;控制器模块位于电子舱中,包括下潜深度、转弯方向的PI及PID控制算法执行器;执行器模块主要包括AUV各方向的推进器,由各驱动电机构成.
采用CAN总线通信后,CAN总线通信终端模块取代原有的RS485通信接口模块.系统各结构单元可分为4类节点:(1)总控单元;(2)姿态与推进单元,即执行机构,包括推动、水平调节、加载下沉、抛载释放、侧倾和纵倾等动作执行机构;(3)数据采集单元,包括对各种测量传感器的数据获取及某些定位通信;(4)监控单元,包括通信系统的监控、诊断等.AUV控制节点总体功能划分见图1.根据AUV的设计特点,采用分布式总线型拓扑结构,将某个控制任务分解为多个独立的功能模块,在不同的处理器上运行.针对不同节点构建其基于事件触发的工作流程时序,并将其封装于不同的节点控制器中.首先进行多种情况下的仿真试验,确定AUV通信网络结构;然后进行硬件回路仿真试验,验证系统设计的实时性、稳定性和可靠性;再进行节点的硬件系统开发设计,实现CAN通信协议应用层的制定及软件代码的编写,完成对AUV模型系统中控制器通信接口的改造和替换.
图1 AUV控制节点总体功能划分
CAN总线通信网络见图2.其中,CAN USB 2可实现协议转换的功能,实时监测网络中数据通信的状况;82C250为飞利浦公司的CAN总线收发器;SJA1000为飞利浦公司的CAN通信控制器;89C51为所选的MCU控制器.监测控制节点为网络的主节点,是子网通信控制的枢纽,承担与上位监控机的通信等任务.从节点为一般的分布式数据采集、控制或执行节点,完成系统各部分的具体工作任务.
图2 CAN总线通信网络
CAN总线通信节点的硬件结构及接口设计框图见图3.CAN节点模块中的微处理器采用AT89C51,利用I/O端口采集温度、压力和深度等传感器的数据,对常用的I/O功能模块进行控制;CAN总线控制器采用SJA1000,实现CAN总线的物理层和数据链路层协议的功能;CAN收发器采用82C250,负责将数据信号送至总线,其接口电气特性必须与CAN总线标准完全兼容;为增强抗干扰能力,保证CAN总线通信正常稳定,还必须设计CAN总线通信保护电路、信号的光电隔离及考虑总线匹配电阻的跨接等问题.
图3 CAN总线通信节点的硬件结构及接口设计框图
收发器是CAN控制器与物理总线间的接口,可实现对来自CAN控制器信号的差动发送和对总线信号的差动接收.为保证收发器的可靠工作而设计的CAN总线收发器保护电路如下:CAN-H和CAN-L引脚各自通过1个5 Ω的电阻与CAN总线相连,可起到一定的限流作用,使收发器免受过流的冲击.另外,CAN-H和CAN-L与地之间并联2个30 pF的电容,可起到滤除总线上的高频干扰和一定的防电磁辐射的作用.CAN-H与CAN-L之间加1个120 Ω的终端电阻,用以匹配总线阻抗,提高总线的抗干扰能力.
节点MCU主程序控制流程及发送子程序流程见图4,SJA1000初始化及中断接收流程见图5.
图4 MCU的控制流程及发送子程序流程
图5 SJA1000初始化及中断接收流程
试验表明,在将原有 AUV各功能单元上的RS485通信模块替换、扩展为CAN总线通信接口后,可构建起CAN总线实时通信系统,能满足系统各部分的信息交换,保证系统的正常工作,而总线系统的优点使得对系统数据通信的监控更加有效、及时,CAN总线诊断协议的合理应用有利于系统的实时通信故障诊断与分析;系统易于增加新的CAN节点,有利于系统功能扩充与升级;系统线束的布设可得到一定的简化.
本文介绍基于CAN总线的分布式网络通信机制,将CAN总线应用于水下机器人系统,构成多主站的分布式控制系统,取代以往的集中式控制结构.该总线结构可使AUV系统的通信线缆得到有效精简,并能使整机系统获得较好的通信性能.
[1]SZABO S,OPLUSTIL V.Distributed CAN based control system for robotic& airborne applications[J].IEEE Contr,Automation,Robotics& Vision,2002,3(11):1233-1238.
[2]HIROSHI Y,TARO A,SATOSHI T,et al.A working AUV using CAN bus interface[C]//2004 ISOPE,Toulon,2004:255-259.
[3]LIU Weidong,GAO Lie,DING Yilin,et al.Communication scheduling for CAN bus autonomous underwater vehicles[C]//2006 Int Conf Mechatronics& Automation,Luoyang,2006:379-383.
[4]杨晓华,侯魏,王树新,等.基于CAN总线的水下机器人执行节点设计与实现[J].海洋技术,2005,24(4):14-17.
[5]杨晓华,侯魏,王树新,等.基于CAN总线的分布式控制网络设计[J].低压电器,2006(1):40-43.
[6]侯魏,王树新,温秉权,等.小型自治水下机器人控制系统研究开发[J].机器人,2005,27(4):354-357.