适用于汽车性能检测系统的CAN总线应用层协议设计与实现摘要:借鉴其它CAN总线应用层协议的优点,设计适用于汽车性能检测系统应用的CAN总线应用层协议—xCAN。主要从报文定义、数据通信和网络管理三个方面进行讨论,并给出了一个应用实例,结果表明xCAN协议应用于汽车性能检测系统是可行的。关键词:CAN总线,应用层协议,汽车性能检测系统ResearchandRealizationofCANBusApplicationLayerProtocolforVehiclePerformancesTestingSystemAbstract:referencingotherCANapplicationlayerprotocol’sadvantages,AnewCANbusapplicationlayerprotocolnamedxCANforvehicleperformancestestingsystemwasdesigned.Theprotocolwasdiscussedinthreeparts:theassignmentofmessage,thedatacommunicationandthenetworkmanagement.Thenatypicalapplicationwasintroduced,andtheresultsprovexCANisapplicableforvehicleperformancestestingsystem.Keywords:CANbus,Applicationlayerprotocol,vehicleperformancestestingsystem1引言CAN总线已经成为全球范围内最重要的现场总线之一,甚至领导着串行总线的发展。虽然CAN具有诸多优点,但CAN本身并非一个完整的协议,只包括物理层和数据链路层两个底层协议,要进行高效率的通信还需要进一步开发应用层协议。目前,比较流行的CAN总线应用层协议有:主要有DeviceNet和CANopen两种,但由于这两种协议是基于通用性的,其标准结构复杂、开发难度较大且价格不菲,对于一些并不复杂的基于CAN总线的测控网络不太适合[1-3]。本文针对一个基于CAN总线的汽车综合性能测试系统,参考DeviceNet、CANopen和iCAN协议,提出一种适用于汽车检测系统开发的应用层通信协议—xCAN。2汽车性能检测系统用CAN总线应用层协议的设计基于CAN总线的汽车综合性能测试系统的结构框图如图2.1所示。1图2.1:汽车综合性能测试系统系统中有一个主控模块和多个汽车性能参数获取模块,各个模块间以CAN总线连接,为一主多子节点结构。其基本工作原理是:各个子节点完成多种汽车参数的获取,并将参数通过CAN总线发送给主控节点,主控节点对来自各个子节点的数据进行相关处理后,通过以太网实时发送给上位机,以实现对汽车参数的实时监测,这就要求CAN总线通信系统具有较高的可靠性。为了设计一套简洁可靠的应用层协议,主要考虑一下几个方面:(1)CAN报文的定义:规定CAN报文中标识符以及数据部分使用的规则具体意义;(2)数据通信的实现:规定了网络中报文数据传输的规则;(3)网络管理:对于网络中设备的控制以及运行状态的监控。下面将就以上几个方面进行详细讨论。2.1xCAN报文的定义对CAN报文格式进行合适的定义,可以使CAN报文组成元素具有其特定的功能和意义,CAN报文格式定义包括报文标识符和报文数据部分的分配两方面。需要说明的是:在xCAN中只使用了扩展帧的CAN报文格式,对标准帧格式的报文并无定义和使用。因错位帧和超载帧有硬件自动发送,设计中直接面临的是数据帧和远程帧,而汽车性能检测系统中远程帧使用较少,因此仅介绍与设计密切相关的数据帧表示符的定义。CAN扩展帧共有29位标识符,包含功能ID、目标节点ID、源节点ID、帧总数ID和帧编号ID,其具体定义如表2.1所示。表2.1(a):11位标准标识符定义ID10ID9ID8ID7ID6ID5ID4ID3ID2ID1ID0功能ID目标节点ID源节点ID11位标准标识符表2.1(b):18位扩展标识符定义ID28—ID25ID24—ID21ID20—ID17ID16--ID11主控模块汽车性能参数获取模块1汽车性能参数获取模块2CAN网络匹配电阻匹配电阻Internet人机交互汽车性能参数获取模块N……2参数类型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位1...