资源描述
适用于汽车性能检测系统的CAN总线应用层协议设计与实现
摘要:借鉴其它CAN总线应用层协议的优点,设计适用于汽车性能检测系统应用的CAN总线应用层协议—xCAN。主要从报文定义、数据通信和网络管理三个方面进行讨论,并给出了一个应用实例,结果表明xCAN协议应用于汽车性能检测系统是可行的。
关键词:CAN总线,应用层协议,汽车性能检测系统
Research and Realization of CAN Bus Application Layer Protocol for Vehicle Performances Testing System
Abstract: referencing other CAN application layer protocol’s advantages, A new CAN bus application layer protocol named xCAN for vehicle performances testing system was designed. The protocol was discussed in three parts: the assignment of message, the data communication and the network management. Then a typical application was introduced, and the results prove xCAN is applicable for vehicle performances testing system.
Keywords: CAN bus, Application layer protocol, vehicle performances testing system
1 引言
CAN总线已经成为全球范围内最重要的现场总线之一,甚至领导着串行总线的发展。虽然CAN具有诸多优点,但CAN本身并非一个完整的协议,只包括物理层和数据链路层两个底层协议,要进行高效率的通信还需要进一步开发应用层协议。目前,比较流行的CAN总线应用层协议有:主要有DeviceNet和CANopen两种,但由于这两种协议是基于通用性的,其标准结构复杂、开发难度较大且价格不菲,对于一些并不复杂的基于CAN总线的测控网络不太适合[1-3]。本文针对一个基于CAN总线的汽车综合性能测试系统,参考DeviceNet、CANopen和iCAN协议,提出一种适用于汽车检测系统开发的应用层通信协议—xCAN。
2 汽车性能检测系统用CAN总线应用层协议的设计
基于CAN总线的汽车综合性能测试系统的结构框图如图2.1所示。
主控模块
汽车性能
参数获取
模块1
汽车性能
参数获取
模块2
CAN网络
匹配电阻
匹配电阻
Internet
人机交互
汽车性能
参数获取
模块N
……
图2.1:汽车综合性能测试系统
系统中有一个主控模块和多个汽车性能参数获取模块,各个模块间以CAN总线连接,为一主多子节点结构。其基本工作原理是:各个子节点完成多种汽车参数的获取,并将参数通过CAN总线发送给主控节点,主控节点对来自各个子节点的数据进行相关处理后,通过以太网实时发送给上位机,以实现对汽车参数的实时监测,这就要求CAN总线通信系统具有较高的可靠性。为了设计一套简洁可靠的应用层协议,主要考虑一下几个方面:(1)CAN报文的定义:规定CAN报文中标识符以及数据部分使用的规则具体意义;(2)数据通信的实现:规定了网络中报文数据传输的规则;(3)网络管理:对于网络中设备的控制以及运行状态的监控。下面将就以上几个方面进行详细讨论。
2.1 xCAN报文的定义
对CAN报文格式进行合适的定义,可以使CAN报文组成元素具有其特定的功能和意义, CAN报文格式定义包括报文标识符和报文数据部分的分配两方面。需要说明的是:在xCAN中只使用了扩展帧的CAN报文格式,对标准帧格式的报文并无定义和使用。
因错位帧和超载帧有硬件自动发送,设计中直接面临的是数据帧和远程帧,而汽车性能检测系统中远程帧使用较少,因此仅介绍与设计密切相关的数据帧表示符的定义。CAN扩展帧共有29位标识符,包含功能ID、目标节点ID、源节点ID、帧总数ID和帧编号ID,其具体定义如表2.1所示。
表2.1(a):11位标准标识符定义
ID10
ID9
ID8
ID7
ID6
ID5
ID4
ID3
ID2
ID1
ID0
功能ID
目标节点ID
源节点ID
11位标准标识符
表2.1(b):18位扩展标识符定义
ID28—ID25
ID24—ID21
ID20—ID17
ID16--ID11
参数类型ID
帧总数ID
帧编号ID
保留(默认000000)
18位扩展标识符
(1)功能ID
功能ID用以表征报文所实现的功能或源节点状态,在这里分配3位作为功能码,其定义如表2.2所示。
表2.2:功能ID定义
功能或状态描述
功能ID(ID10—ID8)
正常数据帧通信
000
复位目标节点
001
源节点报错
010
保留
011
时间基准帧
100
请求建立连接
101
保留
110
响应建立连接
111
(2)节点ID
考虑到系统设计最大15个CAN节点,则对源节点和目标节点分别分配4位以表征其ID。其中主控节点ID为0000,ID1111保留,用作广播时的目标ID,意即当目标ID位1111,CAN网络中除发送节点以外的所有节点无条件接收该帧。
(3)帧总数ID
帧总数ID用来表示节点进行数据传输时包含的总帧数。
(4)帧编号ID
帧编号用来表示帧的顺序和位置,当源节点报文分帧传输时,目标节点只有将报文的所有帧接收完成后方视为接收成功。这里给帧编号ID分配4位,即最多发送16*8个字节的数据。
(5)帧数据
帧数据部分即为每个节点对应的汽车参数,每个节点对应的汽车参数及其在帧数据中的字节位置定义则根据具体的汽车参数和应用确定,在这里不再详述。
2.2 xCAN数据通信的实现
在xCAN设计中采用灵活的通信方式,支持主从通信模式和事件触发通信模式。主从通信模式是指系统中“主节点”对于“从节点”的访问,事件触发通信模式用于设备主动向网络中传送报文数据。另外,为提高通信效率,充分利用 CAN 的多主和无损仲裁机制,在xCAN协议中采用定时循环发送模式,在基于xCAN协议的网络中,通过设置子节点的循环发送参数,使子节点可以定时循环向主节点发送数据。 但整个通信是由主站发起(发出广播帧),并得到从站的响应后进行的,这就保证了通信是基于连接的,因而提高了通信的可靠性。
在前面对于xCAN报文格式的介绍可知,在任何一个xCAN的报文标识符中,指定了源节点地址(发送报文的节点编号)以及目的节点地址(接收报文的节点编号),即对于任何一个报文参与通信的双方是确定的,因此xCAN协议中报文是面向节点的。
2.3 xCAN的网络管理
对于xCAN网络管理,其主要任务是检测和显示网络中的错误,保证通信正常。为保证通信的正常,网络中的每一个通信都需要进行监控,并在通信出现异常时,采用适当的方式恢复通信。例如对于每个通信均可通过监控其信息到达节点的时间,通过判断是否“超时”决定通信是否异常,并采取相应的措施。xCAN网络管理可以包括以下两部分:(1)节点控制:这些服务用于控制想要参与分布式应用的节点的初始化。这样就可对单个或所有节点的通信状态进行同步控制。对于xCAN网络中的节点控制是通过定义xCAN设备的网络访问状态机制实现的。(2)通信控制:这些服务使能对节点通信状态进行连续的监控。在 xCAN协议中,要求对于每个通信均进行监控,保证在通信异常时,通过适当的方式能够恢复通信。
3 xCAN协议实验测试
xCAN协议目前已经成功应用在我院开发的GCM06plus机动车综合性能测试仪上,网络中一共9个节点,包括2个模拟量节点、1个数字量节点、1个GPS节点、1个能耗仪参数读取节点、3个客车CAN报文读取节点和1个主控节点。在进行汽车制动新能测试时,GPS节点将车辆速度信号实时发送给主控节点,主控节点通过以太网发送给上位机,上位机测试软件测试结果如图3.1所示。在进行客车CAN报文读取测试中,3个节点分别读取客车CAN总线上的相关参数,可以获取包括车速、发动机转速、发动机机油压力等在内的多种参数,在刚发动客车时获得的部分参数如图3.2所示。
(a)汽车制动测试速度曲线 (b)主要结果显示
图3.1 汽车制动测试结果
图3.2 客车CAN总线报文读取结果
4 结论
xCAN作为一种为汽车综合性能检测系统设计的CAN总线应用层协议,具有简洁、高效、实用的特点,对制定小型的测控系统CAN总线应用层协议具有一定的指导意义。目前,xCAN已经成功应用在我院开发的GCM06plus机动车综合性能测试仪上,效果良好。
参考文献
[1]张侃谕,方正.适用温室控制系统的CAN总线应用层协议开发.工业仪表与自动化装置,2007,1:18-20.
[2]现场总线iCAN协议规范V1.0.广州致远电子有限公司,2006.
[3]王苏敬,王立德等.列车用CAN总线应用层协议研究与实现.北京交通大学学报,2008,32(5):102-106.
[4]周立功.iCAN现场总线原理与应用.北京:北京航空航天大学出版社,2007.
[5]钱振华,伍小杰等.煤矿井下高可靠性与实时性的CAN总线通讯协议.煤矿机械,2009,30(5):203-205.
5
展开阅读全文