基于CAN总线技术的通讯类软件设计方法

2015-03-10 10:34:12靳晓园马颖劲
航天控制 2015年5期
关键词:日志序号通讯

靳晓园 马颖劲

北京航天自动控制研究所,北京100854

CAN总线技术为1986年德国电气商博世公司提出的面向汽车内部测量和执行的标准通讯协议,其总线规范现已被ISO国际标准组织制定为国际标准,由于CAN总线的高实时性能和高传输速率特点,CAN己在汽车业、航空业、工业控制和安全防护等领域中得到了广泛应用。CAN总线技术应用于我国航天领域研究方面还处在试验及起步阶段,在对可靠性和安全性要求极高的航天通讯类系统这个集群中,CAN总线技术的完善应用还具有较大上升空间。

本文提出一种基于CAN总线2.0B通讯协议的双冗余分层次软件设计实现方法,对通讯类系统在CAN总线上的软件可靠性、安全性设计及推广扩展应用会有借鉴意义。

1 基于CAN总线的通讯类系统概述

基于CAN总线的数据通讯软件设计总体方案如图1。

图1 通讯类系统CAN总线节点分布

如图1所示,通讯类系统具有多个CAN总线节点,其中主动控制节点起到通讯类系统总体流程控制的功能,负责向各个被动控制节点发送测试指令或工作数据,并在规定的时间范围内接收回令,用于判断当前发送的指令或数据的正确性。执行正确后继续其它测试指令及流程。在整个系统软件运行过程中,主动控制节点软件全程记录所有CAN总线节点上数据收发源码内容作为日志保存至主机硬盘内。

2 具体实施方案及可靠性设计

2.1 多线程分层次结构化软件设计

基于CAN总线的通讯类软件采用实时性较高的VxWorks操作系统实现,软件内部各个系统分层次完成CAN总线数据的收发功能,具体分层次结构化方案如图2。

通讯类系统的CAN总线软件设计在结构设计上分为底层驱动层、协议解析层及数据应用层[1]。

底层驱动层主要完成基本字节级别的数据收发,在发送及接收过程中均采用多线程任务所具备的消息队列模式,以便各个应用层线程能同时对CAN总线上的任意节点发送和采集需要的应用层数据。此外底层协议层还负责数据记录功能,能将各个节点发送和接收的CAN总线数据源码统一存放至日志消息队列中,以供日志线程记录CAN总线上的所有动作。

图2 通讯类系统CAN多层软件设计

协议解析层主要依据系统功能要求及工作过程,规定地面各个节点信息交互时序,描述各总线节点间的信息驱动关系,并解析出具体数据帧类型及格式。系统CAN总线网段接口采用CAN2.0B扩展帧协议,报文传输使用数据帧类型,单个数据帧由仲裁场、控制场和数据场组成。

数据应用层规定了由CAN总线数据场内信息字节构成的数据帧格式(不含通用错报文),由于协议层可以用多帧数据组成一条指令,其大小不受传统CAN总线协议中8字节的约束,由基本帧信息和帧内数据信息构成,基本帧包括帧序号、特征码、数据长度及校验和几个部分,帧格式见表1。

表1 数据基本帧格式

数据应用层是直接与各个节点打交道的CAN总线层级,整个系统软件在各个节点应用线程内按照数据应用层的协议规定进行组帧及解析,组帧解析完毕后通过结构体处理器将其传递给协议解析层,从而完成CAN总线的数据收发。

CAN总线多线程分层次结构化的设计模式既保证了各个层级之间数据交互的低耦合性,使得该结构移植在CAN总线之外的通讯线路上成为可能;又充分考虑到节点设计的灵活性及独立性,增删或修改其中一个CAN总线节点并不影响其它节点的软件功能。该设计架构充分考虑高内聚内耦合的软件架构设计理念,具有积极的应用意义。

2.2 各个节点的优先级及主被动关系

CAN总线数据通讯没有主从之分,任意一个节点可以向任何其它(一个或多个)节点发起数据通讯,靠各个节点信息优先级先后顺序来决定通讯次序,高优先级节点信息CAN总线上通讯;如果多个节点同时发起通讯,优先级低的避让优先级高的,不会对通讯线路造成拥塞。主动控制节点软件优先级最高,其它节点优先级均较低。

系统在进行CAN总线流程设计上充分考虑各个节点的优先级,为防止不同优先级节点上的数据发生冲突现象,在软件数据发送及响应设计上,采用主动控制节点主动发送、被动控制节点被动响应的机制。在系统上电之初,主动控制节点为主动态,其它被动控制节点均为被动响应态,此时其它节点只能被动响应主动控制节点软件上的CAN总线指令,执行相应动作,无其它数据交互,在指令完成后将指令完成情况以回令的形式发送给主动控制节点软件,此时主动控制节点软件也是执行一套CAN总线指令后再执行其它指令,以防止CAN总线指令相互冲突。

这种主动控制节点主动发送其它节点被动响应的机制能够有效防止各个节点数据相互冲突,各个节点有条不紊的工作,提高系统安全性及可靠性。

2.3 双冗余CAN总线及基本帧序号设计

基本帧“序号”表征CAN总线应用层的一条有方向的数据链路所完成的基本帧传输计数。即由“A节点→B节点”传输的基本帧在完成1次传输后序号应累加1。“B节点→A节点”与“A节点→B节点”为2条不同方向的数据链路,应分别设置“序号”(即对1个总线节点与另外1个节点通讯分别设置接收序号寄存器和发送序号计数器)。

1个总线节点与多个总线节点通讯时设置多组接收序号寄存器和发送序号计数器。“序号”用于甄别双冗余CAN总线上的冗余基本帧。CAN节点判断当前基本帧序号是否和前一条已处理的基本帧序号相同,如果相同则忽略不响应(即总线节点对收到的序号与前一帧已处理的重复指令可不予以响应)。

节点上电初始化后,序号从0开始计数,计满255后从0开始重新计数。CAN总线节点向双冗余CAN总线上的另外一个节点每发送1个基本帧(注意:基本帧不同于CAN总线协议包的数据场,基本帧大小不受8字节约束),则序号计数加1。

CAN总线节点向双冗余A,B总线上发送同一个基本帧,应视为该数据链路上的一次传输,A,B总线上该基本帧的序号相同。总线节点主动发送的命令或回令均会导致发送序号计数器加1;由于重发机制重新发送的基本帧,所以序号计数加1。

双冗余CAN总线得设计保证通讯类系统CAN总线传输的安全性和可靠性,即使1条CAN总线链路上存在问题,另外1条CAN总线也能独立完成通讯任务;基本帧序号能够甄别出2条总线上通讯的冗余信息,从而保证CAN总线通讯信息不会重复。二者设计相辅相成,缺一不可。

2.4 超时判别机制

通讯类系统的CAN总线超时机制主要是在数据应用层中体现,即协议规定各个节点响应主动控制节点软件的CAN总线指令的最长时间,超过该时间,主动控制节点软件就会重试2次该指令,并等待被动控制节点的回令,如果规定时间内还未收到被动控制节点指令,则主动控制节点软件或将异常记录进系统异常日志,或将其显示在界面上等待操作手裁决[2]。

该超时机制在软件通讯过程中有效的防止了被响应节点长期不响应导致的系统停滞现象,配合多线程分层次软件设计起到积极保证软件流程顺利进行的作用。

2.5 总线源码日志分析技术

CAN总线底层协议层具有数据记录功能,能将各个节点发送及接收CAN总线数据源码统一存放至日志消息队列中,以供日志线程记录CAN总线上的所有动作,图3为某次试验CAN总线上的日志截取图。

从图3上的日志源码能准确的分析到CAN总线某个数据的节点动作时间、节点发送方(仲裁场)、节点接收方(仲裁场)、数据为该次通讯的第几帧数据(仲裁场)、数据长度(控制场)和数据特征码(数据场)等诸多信息。有助于事后故障模式的分析与判别,对系统的故障排除、性能分析和统计功能完成情况等方面提供大量的理论依据[3]。

图3 某次试验CAN总线上日志截取图

3 结束语

基于CAN总线通讯的通讯类软件强大的数据通讯功能为试验中各个节点之间的数据交互、现场CAN总线故障定位及判断提供了不可替代的作用[4]。该系统架构设计合理,细化了各个层级CAN总线通讯功能,增加了软件的后续修改性和可移植性,为后续其它同类型的软件应用提供了设计参考。该系统架构采用多线程分层次结构化软件设计、双冗余CAN总线及基本帧序号设计,提高了系统软件的可靠性及安全性。总线源码日志分析技术为事后软件分析及故障定位提供了数据支撑。

[1] 谭亮,吴晓,张凯龙,苏二峰.Delta OS下的CAN总线驱动及多通道通信调度[J].计算机工程与应用,2013,49(3):65-73.(TAN Liang,WU Xiao,ZHANG Kailong,SU Erfeng.CAN communication driver and multi-channel communication scheduling based on Delta OS [J].Computer Engineering and Applications,2013,49(3):65-73.)

[2] 李为民.Windows平台下CAN总线通信几个软件问题的探讨[J].电脑编程技巧与维护,2013,4(4):4-5.(LI Wei-min.Probe into Software Problem in CAN Bus Communication on Windows Platform [J].Computer Programming Skills& Maintenance,2013,4(4):4-5.)

[3] 杨春英.CAN现场总线系统设计技术及实现[J].中国舰船研究院,2007,4(160):168-171.(Yang Chunying.Design and Realization of the CAN Bus System[J].Ship Electronic Engineering,2007,4(160):168-171.)

[4] 杨亮,贾庆轩,孙汉旭.冗余CAN总线系统设计[J].机电产品开发与创新,2007,20(5):4-8.(YANG Liang,JIA Qing-Xuan,SUN Han-XU.The Design and Realization of the Redundant CAN BUS System [J].Development&Innovation of Machinery&Electrical Products,2007,20(5):4-8.)

猜你喜欢
日志序号通讯
《茶叶通讯》简介
茶叶通讯(2022年2期)2022-11-15 08:53:56
《茶叶通讯》简介
茶叶通讯(2022年3期)2022-11-11 08:43:50
通讯报道
一名老党员的工作日志
华人时刊(2021年13期)2021-11-27 09:19:02
扶贫日志
心声歌刊(2020年4期)2020-09-07 06:37:14
游学日志
通讯简史
技术指标选股
技术指标选股
技术指标选股