新闻中心

EEPW首页 > 模拟技术 > 设计应用 > 基于CAN总线的水下机器人执行节点设计与实现

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

作者:时间:2009-09-08来源:网络收藏

在设计一个基于的通信系统时,确定标识符的分配非常重要,它关系到通讯网络结构的合理性和传输效率的高低,是制定应用层协议的一个重要研究内容。本文在2.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 水下机器人技术指标

伺服电机相关文章:伺服电机工作原理



上一页 1 2 下一页

评论


相关推荐

技术专区

关闭