基于CAN 总线的雷达分布式监控系统*
2012-06-08穆加艳潘丽丽
穆加艳,罗 睿,刘 赟,潘丽丽
(中国船舶重工集团公司第七二四研究所,南京 210003)
0 引言
随着雷达性能的不断提高,雷达分系统规模逐步扩大,对雷达系统整机操控及故障检测系统的要求在逐步提高,同时雷达的整机监控系统对智能化、实时化方面的要求也在快速提高。过去大部分监控系统主要采用RS-485 总线,只定义了一些电器特性,无完整的协议规约,系统的实时性、通讯的可靠性、传输距离均已难以满足当今雷达发展的要求。基于485 总线的监控系统只能有一个主站,其余为从站,这样的系统就无法构成多主结构或冗余结构的系统。CAN 总线是一种具有国际标准的现场总线,应用非常广泛。CAN的协议对应于OSI 模型里的物理层和数据链路层的功能服务,其最高通讯速率可达1 Mbit/s (最大总线长度40 m),任意2个节点之间的最大距离可以达到10 km(通讯速率为5kbit/s)。CAN 总线在传输层上有检错等措施,提高了可靠性。CAN 总线是一种多主机的总线,组网很灵活。它突破了RS-485 通信网络的单主机局限,具有多主机工作方式,是一种多主机的串行通讯局域网络,能有效地支持具有很高安全等级的分布式控制和实时控制,可同时挂110个智能节点。
1 CAN 总线简介
CAN 总线的高性能、高可靠性和实时性等特点使得CAN的应用范围越来越广泛。它还具有抗干扰能力强和布线简单的特点,能够适合雷达的整机操控和故障检测系统的要求。雷达系统实时性要求比较高,各个分控制节点能够在较短时间限度内互相交换数据,以保证整个系统控制不会有明显的滞后。
CAN 协议有两层,分别为物理层和传输层。传输层是CAN 协议的核心部分,主要功能是接收物理层的报文,负责定时及同步、报文分帧、仲裁、应答、错误检测和标定、故障界定。CAN节点的层结构如表1所示。
表1 CAN节点的层结构
CAN的报文分标准格式和扩展格式两种不同的帧格式。标准的CAN 格式有11 位标识符,扩展格式有29 位标识符。本文设计的系统采用扩展格式。帧类型有数据帧、远程帧、错误帧和过载帧等4 种。数据帧将数据从发送器传送到接收器。总线单元发出远程帧,请求发送具有统一识别符的数据帧。任何节点单元检测到错误就发送错误帧。过载帧用来在先行的和后续的数据帧(或远程帧)之间提供一个附加的延时。
数据帧由7个不同的位场组成,即帧起始、仲裁场、控制场、数据场、CRC 场、应答场和帧结尾。帧起始(标准格式和扩展格式)标志数据帧和远程帧的起始,仅由一个“显性”位组成,只在总线空闲时才允许其他节点开始发送(信号)。所有的节点必须同步于首先开始发送报文的站的帧起始前沿。标准格式帧与扩展格式帧的仲裁场格式不同。在标准格式里,仲裁场由11 位识别符和RTR 位组成。ID-28~ID-18为识别符位。在扩展格式里,仲裁场包括29 位识别符、SRR 位、IDE 位和RTR 位。ID-28~ID-0为其识别符。为了区别标准格式和扩展格式,之前版本CAN 规范1.0-1.2的保留位r1 现表示为IDE Bit。标准格式识别符的长度为11 位,相当于扩展格式的基本ID(Base ID)。这些位按ID-28 到ID-18的顺序发送。最低位是ID-18。7个最高位(ID-28~ID-22)一定不能全是“隐性”。扩展格式的识别符由29 位组成,其格式含两个部分:11 位基本ID和18 位扩展ID。数据场(标准格式及扩展格式)由数据帧里的发送数据组成,可以为0~8个字节,首先发送MSB。
CAN 总线的数据以信息帧的形式按位串行传送。总线空闲时,任何节点都能发送报文。一次只传送一帧数据,由帧起始、仲裁域、控制域、数据域、校验域、应答域和结束域组成一帧信息。
本文报文是指在CAN 总线系统中传输信息的有效部分,包括信息的标识符和数据,可由一个或多个信息帧的有效数据部分组成。
2 系统设计
2.1 总体设计
网络拓扑结构采用总线型结构,可靠性高,增加和减少站点都很方便。总线型结构信息按组发送,所有节点共享一个通道,当多点同时发送数据时就有冲突产生。CAN 通过使用标识符的逐位仲裁来解决总线访问冲突,确保了报文和时间均不损失。CAN的报文是具有优先权的。在该系统里,操控报文的优先权高于故障检测报文的优先权。在有总线冲突的时候,有较高优先权报文的节点可以获得总线的访问权。
在系统的可靠性方面,采用动态冗余技术,两套系统同时、同步运行。当联机子系统检测到错误时退出程序进行维修;另外的一个热备份系统还在运行,备用模块在待机过程中其失效率为零。
本文设计的分布式监控系统采用8051 单片机和CAN 控制器SJA1000 设计。SJA1000 是一种独立的CAN 控制器,支持CAN2.0B 协议,温度适应范围为-40 ℃~+125 ℃。系统框图如图1所示。
图1 系统的总体框图
上位监控机是基于X86的嵌入式VxWorks 系统,负责对系统各节点控制命令的发送以及各控制单元状态故障的实时显示。
终端CAN节点(CAN节点0和CAN节点1)的功能有两个:一个是作为上位监控机与CAN 总线的接口,完成雷达的操控信息的转发;另一个是对其他节点传送过来的采集信息进行故障分析,判断故障并发送故障信息给上位监控机。终端CAN节点有两个,为冗余备份的,这主要是利用CAN的多主机的特性。
其他CAN节点(CAN节点2-N)是接收终端CAN节点的控制信息及采集分机的数据上报给终端CAN节点。
每个CAN节点的板卡采用统一的标准设计,单片机程序也相同。当每个CAN节点的板卡装在分机里时,会根据分机里的拨码开关的设置来自动识别位于哪个分机。
雷达控制系统的应用层通信协议采用“节点ID+命令+数据+校验”的形式。标识符ID.21~ID.28 固定作为命令,不参与验收滤波。数据则表示通信的具体内容。校验为一个字节,采用校验和的形式。由于CAN 总线本身具有15 位CRC 校验,理论上其校验强度应该完全可以满足本系统对通信可靠性的要求,但在实际应用中并非如此,所以增加一个校验位进行端端差错控制。联网通信流程图如图2所示。
图2 联网通信示意图
终端CAN节点发送操控报文,分机CAN节点接收到后写相应的内容到寄存器,并回送操控报文;终端CAN节点收到回送的报文就说明操控成功,否则就重发该操控报文;重发3 次,如果3 次都不成功,就上报上位监控机操控失败。
终端CAN节点发送故障询问报文,分机CAN节点接收到后把采集的数据信息发送给终端CAN节点;终端CAN节点收到数据信息就作故障分析;如果在一定的时间内没有收到数据信息,就上报该分机的通信故障,偶尔有丢包的,就报上次的故障信息给上位监控机。
2.2 硬件设计
系统硬件设计采用8051 单片机和CAN 控制器SJA1000,包括两个终端以及伺服、信号、发射各分系统。
硬件板卡里的单片机和SJA1000 连线图见图3。
图3 单片机和SJA100的连接图
2.3 软件设计[1-2]
单片机软件设计采用C 语言,开发工具为Keil C51。软件设计时,充分考虑系统的安全性和可靠性,以及系统的实时响应能力。在安全性方面,除了CAN总线本身的错误检验措施外,还增加了1个数据校验位的方式。在可靠性方面,采用动态冗余技术,两套系统同时、同步运行。
主程序的功能是初始化全局变量和初始化SJA1000 控制器,根据节点的编号调用相应的模块。主程序流程图如图4所示。
图4 主程序框图
图5 终端CAN节点功能模块的流程图
RS232 串口通信采用波特率为19200bps,CAN 控制器采用PeliCAN 模式,波特率设置为100kbps。终端CAN节点功能模块的流程图如图5。
3 结束语
本文设计的系统是基于CAN 总线的分布式监控系统,每个CAN节点以单片机为核心,利用CAN 控制器来收发数据。与传统基于RS-485 总线的监控系统相比,该系统数据传输率高,可靠性极高,抗干扰能力强,具有非破坏性总线仲裁,支持竞争,在实际中已经得到了广泛应用,取得了较好的效果。该系统的稳定性以及实时性都得到了验证。
[1]饶运涛,邹继军,王进宏,等.现场总线CAN 原理与应用技术[M].北京:北京航空航天大学出版社,2003.
[2]王幸之,王雷,钟爱琴,等.单片机应用系统抗干扰技术[M].北京:北京航空航天大学出版社,2000.