>
首页 » 业界动态 » 基于CAN总线的水下机器人执行节点设计与实现

基于CAN总线的水下机器人执行节点设计与实现

作者:杨晓华,侯巍,王树新,梁捷  时间:2007-04-19 11:46  来源:

摘要:文中提出了一种基于CAN总线的水下机器人分布式控制系统结构,主要设计其执行节点,包括P87C591单片机为核心的的硬件电路和软件结构设计。

关键词:自治水下机器人;CAN总线;执行节点


引言

与传统的缆控水下航行器(ROV)相比,自主水下航行器(AUV)具有如下特点:(1)环境适应性强,活动范围大,可冲破人工潜水极限进入现场进行接近观测;(2)体积小,使用方便,便于布放和回收;(3)可根据水声信号遥控或预置程序控制,按要求进行相关项目观测;(4)有自主动力,水下运行时间相对较长,有源噪声低等。

因水下机器人装配有大量传感器,要求控制系统具有较高的处理速度,又因开发费用较高,必须具有很好的可扩展性来改变测量装置以实现多功能。分布式控制系统在适用范围、可扩展性、控制速度、系统模块化、可维护性、抗单点故障等方面具有明显优势,是极佳的选择。

图1所示为本文开发的基于CAN总线的分布式水下机器人控制系统结构。CAN总线具有如下特性:(1)实时性高。多主站工作方式,优先级高的节点优先传输数据,数据传输率高(1Mbit/s);(2)检错和纠错机制强。发送信息损坏自动重发,采用独特的非破坏总线仲裁技术,有CRC及其它校验;(3)连接简单,可扩展性强,开发方便。通讯协议与开放系统互连模型OSI一致,应用层协议可有用户自己定义。


图1 水下机器人控制系统结构

控制系统由各个功能节点通过CAN总线连接构成,各节点大部分时间并行工作,只在必要时与中央控制节点通讯。其中的执行节点直接控制AUV的现场执行机构,对AUV的功能实现性起着至关重要的作用。在研究开发的AUV中,执行节点除完成CAN通信外,还有以下几个主要功能:(1)航行速度控制功能。其执行部件为一三叶螺旋桨,产生主推力;(2)航行方向控制功能。执行部件是一对垂直舵;(3)航行深度控制功能。实现深度控制与纵倾控制,执行部件是一对水平舵;(4)传感器模块的旋转调平控制功能,实现部分传感器位姿调整。其中,(1)为速度伺服控制系统,(2),(3),(4)为位置伺服控制系统,均由无刷直流伺服电机进行驱动。

执行节点硬件设计

CAN接口设计
节点主芯片选用Philips公司的P87C591,其兼容80C51指令集,并成功的集成了Philips公司的SJAl000CAN控制器,该嵌入式CAN控制器具有以下特点:(1)完全符合CAN210规范,控制CAN帧的接收和发送;(2)CAN接口包含5个实现CPU与CAN控制器连接的特殊功能寄存器。对重要CAN寄存器的访问通过快速自动增加的寻址特性和对特殊功能寄存器的位寻址来实现;(3)CAN控制器的发送缓冲区能够保存一个完整的CAN信息帧(扩展或标准帧),只要通过CPU启动发送,信息就从发送缓冲区传输到CAN内核模块;(4)当接收一个信息时,CAN内核模块将串行数据流转换成并行数据传输到验收滤波器,通过此可编程滤波器,P87C591确认接收需要的信息。

图2所示为以P87C591为核心的CAN节点接口电路。P1.0,P1.1分别对应CAN的收(RXDC)和发(TXDC)线,通过高速光耦(6N137)与总线实现光电隔离。CAN收发器选用Philips的P82C250,以差分方式发送,CAN总线末端加124的终端匹配电阻。


图2 CAN总线接口电路

无刷直流伺服系统构建
根据应用场合,选择了瑞士Maxon公司的EC系列无刷直流伺服电机(DCBrushless ServoMotor),其满足以下要求:(1)电机重量轻,体积小,这在水下潜器设计中是十分关心的问题,而且转动惯量约可减少50%左右;(2)无机械换向,大大减少了电磁干扰,适合AUV在狭小空间容纳多种传感器的特点;(3)特征曲线基本为直线,控制性好;(4)有一定的防潮和耐高温能力。螺旋桨驱动和舵驱动功率不同,分别为400W和80W;工作电压分别为直流48V和直流24V。

电机驱动器采用美国Accelus公司的直流无刷数字伺服驱动器,其有以下特点:(1)全数字驱动器,电流、速度和位置三环控制可以自由配置;(2)驱动器中集成有flash存储器,其有配套的计算机软件,通过驱动器上的RS232端口对驱动器进行部分功能设定。(3)由于为全数字驱动器,与控制器连接简单。

图3表示了一路直流无刷电机伺服系统。对螺旋桨,驱动器设置成速度控制模式,其它设置为位置控制模式。螺旋桨驱动电机采用PWM调速方式,其它驱动电机都通过微控制器I/O口输出脉冲控制。


图3 无刷电机伺服控制系统示意图

电机驱动器按要求进行合理设置和连接后,与控制器P87C591密切相关的信号线有两条:一条控制电机的转速或位置,一条控制电机的转向。对螺旋桨控制,将其驱动器设置为速度模式,采用PWM调速控制,电机的转速与PWM的占空比成正比。其它电机控制系统,驱动器设置为位置模式,由于这几个电机控制系统对电机的转速要求不高,采用定转速,这样脉冲频率恒定,通过对P87C591的定时器编程产生脉冲,另外用控制器的一个端口控制电机的转向。

为了保证系统工作安全、可靠,在控制器与驱动器之间,采用高速光耦6N137进行隔离,其原因:(1)控制器和驱动器存在接地电位差;(2)抑制环境干扰信号;(3)控制器供电4.5~5V,为弱电,而驱动器供电20~70V,相对较高。在电源输入和电机输出都配置保险丝进行安全保护。

执行节点软件设计

应用层协议制定
在CAN210规范标准中,为了用户使用的灵活性,只对物理层和数据链路层进行了规定,没有定义应用层,这就需要用户根据自己需求制定应用层协议。虽然目前可以使用一些成熟的应用层协议,如HiLon、CANOpen、DeviceNET和SDS协议等,但缺乏针对性,因此首先制定CAN应用层协议。

在设计一个基于CAN总线的通信系统时,确定CAN标识符的分配非常重要,它关系到通讯网络结构的合理性和传输效率的高低,是制定应用层协议的一个重要研究内容。本文在CAN2.0标准帧格式的基础上,根据水下机器人控制系统的需求特点制定了一个多帧传输的应用层协议。协议中将11位信息标识符按表1进行分配。

标识符ID28-ID25定义为源地址,ID24-ID21定义为目的地址,这样节点可以按优先权高低由低向高分配地址,保证竞争中优先权高的节点能先占用总线。相同目的/源地址的帧还可以通过标识符ID20-ID19来调整优先权,ID18的值用来区分多帧传输中起始帧(1)/普通帧(0)。

在标识符分配中,一般保留一个地址作为数据广播,另外不使用地址15,以避免标识符前7位全为隐性位(逻辑1)。因此协议可以满足不多于14个节点的需求。


表1 CAN帧信息和标识码定义

一般CAN总线的应用层协议习惯将流长度、多帧索引等信息放在数据场中,但这样每一帧都浪费了若干个字节。因此本文将多帧传输的相关信息作为起始帧发出,而有效数据作为普通帧随后发出。起始帧的数据域结构见表2,传输号为本次多帧传输的序号,流长度为本次数据传输的字节数。


表2 起始帧(ID18=1)的数据域

普通帧的数据域对用户是透明的,可以根据需要任意安排使用。

水下机器人总线上传输的信息可分为以下三类:(1)传感器节点数据传输命令,传送为保证机器人正常运动所需要的传感器信息,包括航行传感器和任务传感器等。(2)航迹控制命令。上述两类命令按照一定时钟节拍发送到总线上,一般发送航迹命令的节拍要比发送传感器数据的节拍慢。(3)特殊命令,例如出现紧急情况需要上浮等,此种命令是不定时发送的,发送的频率也不是均匀的。

根据以上通信特点,在满足功能要求的条件下,为了简洁,协议规定命令均不超过8个字节,并使用2个字节来为命令编码。节点间一次可能传输一个或多个命令。在本文制定的应用层协议中,命令通过普通帧传输。

表3列举了普通帧的数据域结构,每个普通帧包含一个命令,其数据域前两个字节为命令编码,第三个字节存放本条命令的参数个数,后面为若干个参数的内容。


表3 普通帧(ID18=0)的数据域

CAN程序设计
CAN软件设计主要包括初始化函数、接收处理函数、发送处理函数、中断处理函数等。

CAN通信的初始化工作主要包括操作模式设定、验收滤波器设置、总线定时、管脚配置和中断设置等几项工作。需要注意总线上各节点的波特率必须一致,另外P1.0(RXDC)和P1.1(TXDC)必须设置为准双向模式。

CAN接收程序流程见图4。中断函数中负责接收CAN信息,并将对每个任务的描述及其所包含的命令插入队列;而主循环中将各任务包含的命令从队列取出,并且根据命令执行相应的运算或操作。使用队列的好处是在执行命令的同时中断函数还可以接收新的命令,避免了同时读写通信缓冲区造成的冲突。

CAN的发送程序采用查询方式,因为CAN总线本身提供了比较好的总线仲裁、错误检测、错误标定和故障界定功能,发送程序的设计比较简单,这里不再过多赘述。


图4 CAN接收处理程序

试验与结论

执行节点的工作对象为小型自治测量型水下机器人,低阻力流线型壳体,水中配成中性浮力,由一个三叶螺旋桨提供推力,水平舵和垂直舵各一对来控制航向与姿态,技术指标见表4。

机器人先后完成了水上拖缆航行和无缆自治航行。试验证明,本节点完全满足自治水下机器人航行控制性能的高要求,并且具有实时性高、可靠性强、使用方便等优点。在今后的工作中,还可以对执行节点做进一步的改进,如更换高性能的微控制器,进一步提高节点的处理速度;采用嵌入式操作系统来提高节点的实时处理能力,从而使节点具备更高性能。


表4 水下机器人技术指标

相关推荐

基于DTMF和CAN总线的家居安防系统设计方案

CAN总线  AT89S52  2011-09-21

一种混合动力电池监测模块的设计实现

CAN总线  2011-09-07

基于DTMF和CAN总线的家居安防系统设计方案

CAN总线  AT89S52  DTMF  2011-07-26

一种混合动力电池监测模块的设计实现

CAN总线  2011-07-06

基于CAN总线的航空电缆测试系统分布机研究

航空电缆  CAN总线  2011-06-01

基于PIC18F458的CAN总线接口设计

CAN总线  远程控制  2011-05-18
在线研讨会
焦点