自动操舵仪CAN智能节点的设计与实现
2013-06-12陈永冰孟云飞徐务农
周 岗,陈永冰,孟云飞,徐务农
(1.海军工程大学 电气与信息工程学院,武汉430033;2.海军902厂,上海200083)
传统的自动操舵仪内部通信方式并不灵活,也不利于实现全船的网络化。国内自动舵的研究侧重于理论方面较多,很少针对性地解决工程实际应用中出现的问题,大部分自动舵成品通信线路复杂。因此本文对通信总线采用CAN总线进行设计。CAN总线能够灵活地、实时地进行通信,为自动舵实现模块化结构、易于扩展、实现全船网络[1]化打下基础。CAN总线工作于多主方式,构成的网络节点之间的数据通信实时性强,提高系统的可靠性和灵活性,而RS-485构成主从结构系统,通信方式以主站轮询的方式进行,系统的实时性差。本文重点分析自动舵信息传递的几种形式,设计以C8051F500为核心的智能通信节点,将多种信号通过智能节点发送到CAN网上,实现CAN网络节点通信以及数据共享。
1 系统基本工作原理及结构
1.1 自动舵的基本工作原理
图1 系统工作原理
1.2 系统结构
传统自动舵系统结构复杂,难于扩展,给检修带来了很多不便,采用CAN总线易于实现全船网络互连、数据共享,具有很好的应用前景。其系统的基本结构见图2。罗经、GPS、计程仪、VDR、显示部件等设备节点挂接在总线上,将数据发送总线,需求信息的部件通过设置标识符读取总线上信息,实现了数据共享。
图2 系统结构原理图
在CAN总线终端并联两个电阻是为了实现阻抗匹配,保证驱动能力,且可以防止信号反射。CAN总线的引入,把船舶集中式控制系统向分散式系统进行转化。CAN智能节点挂接在总线上、作为网络节点的智能设备连接为网络系统,为进一步构成自动化系统,实现控制、报警、显示、监控、优化及管控一体化的综合自动化功能打下基础。
2 C8051F500CAN控制器及驱动器
系统选取C8051F500芯片进行智能节点设计,C8051F500具有CAN控制器,用CAN协议进行串行通信。Silicon Labs CAN控制器符合Bosch规范2.0A和2.0B,方便在CAN网络上通信。
2.1 CAN控制器
CAN控制器包含一个CAN核、消息RAM(独立于CIP-51的RAM)、消息处理状态机和模块接口构成[3]。CAN核用于协议控制和消息串并转换,消息处理器用于控制CAN核和消息RAM之间的数据传输,模块接口用于CPU与整个CAN控制器交换数据。C8051F500的CAN控制器有32个消息对象,可以被配置为发送或接收数据。CAN控制器原理框图见图3。
图3 CAN控制器原理
使用CAN控制器的重点和难点是对CAN控制器的寄存器的实用,其内部寄存器的分类及其主要功能如下。
CAN控制器协议寄存器:CAN控制、中断、错误控制、总线状态、测试方式。这些寄存器是:CAN控制寄存器(CAN0CN)、CAN时钟配置寄存器(CAN0CFG)、CAN状态寄存器(CAN0STA)、CAN测试寄存器(CAN0TST)、错误计数寄存器、位定时寄存器及波特率预分频(BRP)扩展寄存器。
消息对象接口寄存器,用于配置向CAN总线发送和从CAN总线接收数据的32个消息对象。消息对象可以被配置为发送或接收,并被分配消息标识,以便所有CAN节点进行接收过滤。消息对象保存在消息RAM中,用消息对象接口寄存器对其访问和配置。
消息处理寄存器为只读寄存器,消息处理寄存器提供中断、错误、发送/接收请求和新数据信息。
在改革开放四十周年之际,再次回顾这段历史不难发现,中心城市大学的崛起,实际上是中国高等教育体制改革的先声,给我国高等教育带来诸多方面的影响。这些新办院校在办学体制上突破了中央、省两级政府办学的模式,开启了中心城市发展高等教育的先河;在机制上引入了董事会制度、教师管理制度、招生就业制度、人才培养制度,并且形成了办学经费多元的资金筹措模式。中心城市大学运动也成为我国高等教育改革实践进程中有意义的探索,为1998年扩招以后第二阶段新大学的创立提供了有益的经验。
2.2 CAN收发器
CAN总线收发器提供了CAN控制器与物理总线之间的接口,是影响网络系统安全性、可靠性和电磁兼容性的主要内容。本系统采用收发器PC82C250,它最初是为汽车中的高速应用而设计的。82C250驱动电路内部具有限流电路,可防止发送输出级对电源、地或负载短路,但不至于使输出级损坏。若温度超过160℃,则两个发送器输出断极限电流将减小。由于发送器是功耗的主要部分,因而限制了芯片的升温,器件的所有其它部分将继续工作。82C250采用双线差分驱动,有助于抑制恶劣环境下的瞬变干扰。
3 CAN通用智能节点的电路实现
3.1 串口与CAN总线的转换
罗经、舵角、气象仪、计程仪、组合导航定位系统、VDR等相关智能设备送来的信息与系统主控模板之间实现信息的输入和输出,通信总线采用传统的RS-485或RS-422总线。485或者422总线与主控模板通信,线路布局复杂,造成了资源的浪费,同时也增大了电磁干扰。因此将串口信号通过智能节点发送到CAN总线上,实现数据的共享[4]。这里以航向信号分析CAN报文的发送。
实际的航向信息是由罗经得到的,由罗经得到的航向信息转换成为数字信号,送给智能节点1。其数据输出的格式为$CSHDT,XXX.X,T*hh,数据的输出格式中,$为起始符,HDT表示艏向,XXX.X为航向信息,传输航向信息时,提取其中的XXXX四位数据信息,配置CAN寄存器后发送出去。RS-422A接口是异步标准串口,接口采用的是负逻辑,其逻辑电平与TTL电平不兼容。因此为了实现与TTL电路连接,必须进行电平转换。这里采用的芯片为MAX488,转换的硬件框图见图4。
图4 CAN/RS422A转换模块硬件电路
3.2 开关量信号与CAN的通信
自动舵的开关量信号包括装载情况、海况、工作模式转换、泵组选择等。以某型号为例,其装载情况包括满、中、空,这里用两位数据就可以代表装载的情况,海况为好、中、差,两位即可,工作模式用三位,泵组选择用两位。CAN一帧数据可以发送八个字节,数据配置格式见表1。
表1 信息段编码定义
C8051F500实时的采集开关量,开关量发生变化后,配置成CAN数据帧格式,将数据发送到总线上。由于一个数据帧就可以将数据量发送完,所以进行发送初始化。设置命令掩码寄存器CAN0IF1CM=0x00b3,WR/RD=1将选中的消息缓冲寄存器中的数据发送到命令请求寄存器寻址的消息对象。设置消息控制寄存器CAN0IF1MC=0x0088,EOB=1数据块结束,如果两个节点之间希望一次传输更多的数据,则可以将多个消息对象组成数据传送,而EOB指示数据块是否结束。
3.3 脉冲信号和电平信号与CAN的通信
单片机检测脉冲信号,通过处理检测到的脉冲信号,将处理结果通过CAN发送到总线上,硬件电路见图5。
图5 脉冲信号与CAN总线通信模块硬件电路
例如航程仪发出可以反映船舶速度的脉冲信号,200个脉冲代表1 n mile,脉冲信号经单片机采集后换算成航速,又可以根据时间计算出航程,将速度和航程的信息发送到CAN总线上,显示单元读取CAN总线上的速度信息,能够实时掌握船舶的航行信息。
电平信号是自动舵中众多信号中的一种,有些舰船上的舵角指令以及反馈舵角的信息都是电位计产生的,电位计输出的是电平信号。将得到的信号经过芯片内嵌的A/D转换模块,转化成数字信号,而后通过CAN控制部件将信息发到总线上,控制单元设置同样的标识符读取总线上的舵角信息。其硬件电路图见图6。
图6 电平信号与CAN总线通信模块硬件电路
信号经过隔离放大、跟随,而后被C8051F500芯片采集,将采集到的电压信号通过配置CAN寄存器发送出去。
4 软件实现及自动舵CAN应用协议方案
4.1 软件实现
软件由CAN控制器初始化、CAN总线数据的发送和数据的接收三部分组成。通过用硬件或软件重置的方法对CAN控制寄存器中的Init位进行设置来开始软件的初始化。设置了Init位以后,所有在CAN总线上进行的消息传输都被停止,CAN总线的输出CANTX位是隐性电平,错误管理逻辑计数器保持不变。
初始化流程图见图7。
图7 CAN初始化流程
在传输的信息中大部分信息都不超过8个字节,CAN的一个数据帧最多可以传输8个字节,因此一个数据帧足够用。然而某些信息的信息量比较大,如某个时刻的CPS经纬度信息为3 115.454 4,N和12 132.767 8,E。经度的信息超过了8位。将数据格式转化为十六进制,然后再进行传输,一个数据帧能够满足要求。经度信息为12 132.767 8,再将数据12 132.767 8×10 000=121 327 678,转化为十六进制为73B503E,用数据帧的7个字节就可以将经度信息传送出去,接收后转化为十进制,而后再除以10 000,即得到原来的经度信息。
模块的软件设计主要包括串口通信程序和CAN通信程序,串口的数据格式为一个起始位,8个数据位,一个停止位,其波特率为9 600 bit/s。CAN总线的传输波特率为500 kbit/s,采用标准数据帧格式,有效数据位0~8个字节。软件程序流程见图8。
图8 串口与CAN通信流程
4.2 标识符分配
在CAN系统中,以ID来标识数据的含义,ID决定了信息的优先权和等待时间,同时也影响信息滤波。因而高效、合理的信息标识符分配方案是实现CAN性能的首要条件。CAN2.0规范定义了两种帧格式,即标准帧和扩展帧,在标准帧中格式中标识符有11位,扩展帧有29位。由于自动舵所需的信号传输量不大,这里采用11位的标准帧格式,其格式见表2。
表2 系统信息标识符分配表
高6位表示节点号,即总线上最多可以接64个节点,对于自动舵而言,信息数量足够用了,低5位代表具体信息的含义,同一个节点,可以产生不同的信息内容。为了方便以后设备的扩展,分配采用节点优先级和信息优先级相结合,详细划分报文优先权。这样分配标识符既方便识别,又确保了编码的惟一性。
以某舰船为例,将标识符分配如下。
节点号,0x00-报警单元,0x01-舵角单元,0x02-航向单元,0x03-操纵单元,0x04-罗经单元,0x05-计程仪单元,0x06-GPS单元,0x07-显示单元,……
数据场,00000-反馈舵角,00001-反馈航向,00010-舵角指令,00011-航向指令,00100-开关量,00101-实时速度,00110-舰船位置,……。
5 结论
文中设计的基于C8051F500CAN总线的通信接口,实用性比较强。制作一个通用的电路板,硬件设计结构简单紧凑,实现即插即用,同时也降低了硬件的复杂度,抗干扰能力比较强,大大降低了系统设计成本。易于形成网络化系统,总线数据共享,也可为实现舵的模块化结构奠定基础。
[1]ISAACPROCHE,HENRY WILLIS.Framework for quantifying uncertainty in electric ship desing[R].RAND national defense research institute,2004:1-75.
[2]周永余,许江宁,高敬东.舰船导航系统[M].北京:国防工业出版社,2006.
[3]张培仁,孙 力.基于C语言的C8051F系列微控制器原理与应用[M].北京:清华大学出版社,2007:338-378.
[4]陈永冰,李文魁,刘 勇.CAN总线及其在舰船测量组合系统中的应用[J].舰船电子工程,2005(3):46-48.