刘波,李琼,顾蓓蓓
(南京奥联汽车电子技术有限公司,江苏南京 211153)
ISOCAN协议栈解析及其在飞思卡尔单片机平台的实现
刘波,李琼,顾蓓蓓
(南京奥联汽车电子技术有限公司,江苏南京 211153)
摘要:ISOCAN协议被广泛应用于乘用车各电控单元间的数据交换。为确保数据在传输过程中的稳定性和正确性,对ISOCAN协议栈的体系结构进行分析,并对协议栈的数据链路层进行具体的解析,详细分析逻辑链路子层(LLC)和介质访问层(MAC)、CAN的帧结构以及CAN的错误检测和管理。基于飞思卡尔单片机平台实现了上述协议,并通过Vector公司的CAN总线仿真工具CANoe对CAN收发过程进行验证。实验结果表明:实现的协议栈可以准确稳定地接收和发送报文,验证了设计的CAN通信协议的有效性。
关键词:CAN;协议栈解析;飞思卡尔单片机;CANoe仿真
0引言
汽车电子技术的不断发展,使得汽车上各电子控制系统功能更加精细,结构越发复杂,如果汽车电子系统采用以往的点对点通信的方式,则会形成大量的线束,不仅占用了大量的车内空间,还严重制约着汽车向经济性和智能化方向的发展,也成为汽车轻量化和进一步电子化的最大障碍,汽车的制造和安装也变得非常困难。因此,基于总线技术的车载网络应运而生,它被广泛地应用于汽车电子系统中[1-2]。
目前车载网络的主流协议标准主要分为多媒体网络协议标准、高安全性网络协议标准、低速网络协议标准和中速网络协议标准。多媒体网络标准协议中,面向媒体系统的传输协议MOST及IDB-1394是目前广泛应用的高速通信协议[3-4]。高安全性网络协议标准旨在满足线控汽车设计的安全性,TTCAN(Time Triggered CAN)、FlexRay和TTP(Time Triggered Protocol)是其主要代表[5-7]。低速网络协议标准主要应用于车内传输速率和安全性不是太高的ECU场合,LIN(Local Interconnect Network)就是为此类应用设计的低成本协议。LIN是单一主机系统,不但降低了硬件成本,而且很好地兼容了其他网络协议,LIN的传输速率高达20 kb/s[8]。中速网络协议标准以CAN、VAN、ABUS和SAEJ1850为代表,其中CAN最早成为国际标准的汽车总线协议,其产生和发展详见第1节。
文中着重研究了乘用车内广泛使用的ISOCAN,对其协议栈结构进行了分析,并重点对数据链路层协议进行解析。最后基于飞思卡尔单片机平台实现了该协议,通过实验仿真证明了CAN报文收发过程的正确性和有效性。
1CAN总线的产生及发展
CAN总线是在20世纪80年代由BOSCH公司为解决汽车电子系统中数据交换而开发的控制器局域网协议,是一种用于实时环境的串行通信总线,采用短帧结构,非破坏性总线仲裁技术,支持多种工作方式,支持点对点、一点对多点及全局广播等多种数据收发方式,具有完善的错误检测机制,能够满足构建高性能、高实时性系统的要求。1991年发布了CAN2.0版本的应用标准,包括A和B两个部分,在1.2版本基础上增加了扩展帧格式兼容[9-10]。1993年,CAN成为国际标准ISO11898(高速应用)和ISO11519(低速应用),并在工业现场领域得到了广泛的应用。1995年,CIA组织(CAN in Automation)颁布了完整的CANopen协议,包括应用层规范、通信协议和设备协议。
2标准化CAN协议栈解析
2.1标准化CAN的OSI模型体系结构
CAN协议遵从ISO/OSI网络开放系统模型,图1为标准化CAN的各层协议(包括依据的规范和标准)及其与OSI模型各层的对应关系。按照这个标准模型,CAN协议可以分为4层,从上到下依次为应用层、网络层、数据链路层和物理层。图1的右半部分为CAN数据链路层及物理层的详细描述。故障界定是一种能区分短期干扰和永久故障的自校验机制。物理层可由检测并管理物理介质故障的实体总线故障管理和错误界定来监控[11-14]。
图1 CAN的ISO网络模型定义
数据链路层主要作用有:为远程数据请求以及数据传输提供服务,判断是否接受收到的报文,提供恢复管理和过载通知服务。LLC子层的功能是为数据传送和远程数据请求提供服务。MAC子层主要定义了传送规则,即实现控制帧结构、执行仲裁、错误检测、出错标定、故障界定等。
2.2LLC子层
LLC子层应提供两种类型的无连接模式发送服务:一种为未确认的数据传输服务,该服务为LLC用户之间在没有建立数据链路连接的情况下交换LSDU(LLC层服务数据单元)提供方法,数据传输方式可以为点对点、多路传送或广播;另一种为未确认远程数据请求服务,该服务为LLC用户在没有建立数据链路连接的情况下提供请求远程节点进行LSDU传输的方法。根据以上两种不同的LLC服务,在用户之间传送的帧类型有:LLC数据帧和远程帧。
2.3MAC子层
MAC子层服务允许本地LLC子层实体和同层LLC子层实体间交换MSDU(MAC层服务数据单元),MAC子层提供确认数据发送、确认远程数据请求和过载帧发送等服务。
MAC子层的功能模型如图2所示。
图2 MAC子层功能
该功能模型将MAC子层分成发送和接收两个独立的部分。帧发送实现发送数据封装和发送介质访问管理等功能;而帧接收实现接收媒介访问管理及接收数据拆装等功能。
2.4CAN的帧结构
CAN的报文主要有4个不同类型的帧:数据帧、远程帧、错误帧和过载帧。
对于数据帧和远程帧又定义了标识符ID为11位的标准帧格式和29位的扩展帧格式,两种格式下的数据帧都由7个不同的位场组成:帧起始(SOF)、仲裁场、控制场、CRC场、应答场(ACK)和帧结束,远程帧没有数据场,标准帧和扩展帧的格式见图3。
图3 标准格式和扩展格式的数据帧
远程帧和数据帧的不同在于远程帧的RTR位是隐性的,而数据帧的RTR位是显性的,且远程帧无数据场,数据代码长度DLC不受制约。
错误帧和过载帧都由两个域组成,其结构分别如图4 和图5 所示。错误帧由两个不同的场组成,第一个场用作为不同站提供的错误标志的叠加,第二个场是错误界定符。过载帧的两个位场分别为过载标志和过载界定符。
图4 错误帧结构
图5 过载帧结构
2.5CAN错误检测与错误管理
CAN通过定义完善的错误检测和管理机制,成为汽车网络中安全、可靠的技术标准。CAN总线中存在5种不同的错误类型,分别为位错误、填充错误、CRC错误、形式错误和应答错误。
为了进行故障界定,在总线上的每个节点单元中都设置有两种计数器:发送出错计数器和接收出错计数器。错误计数器按照一系列规则进行更新。节点的状态迁移如图6所示。
图6 节点状态迁移
根据错误计数器的数值,节点可能处于如下3种状态:(1)错误激活状态。一个错误激活状态下的节点可正常参与总线通信,并在检测到错误时发送一个活动错误标志。(2)错误认可状态。一个错误认可状态下的节点不发送活动错误标志,它参与总线通信,但在检测到错误时,发送一个认可错误标志。(3)总线关闭状态。当一个节点对总线处于关闭状态时,即处于总线关闭状态,在该状态下,节点既不发送也不接收任何帧。
3标准化CAN协议栈在飞思卡尔单片机平台的实现与仿真
文中以飞思卡尔单片机MC9S12G48MLH为平台,实现了上述解析的协议,并将该CAN节点用于模拟汽车换挡器,将采集的请求挡位信息通过CAN总线发送给CANoe仿真工具模拟的车身控制模块(VCM),并接收VCM模拟发送的实际挡位信号,若请求挡位与实际挡位相同,则点亮相应的挡位指示灯,否则使相应的挡位指示灯闪烁。请求挡位信号与开关霍尔输出之间的关系及挡位指示灯与请求挡位和实际挡位的关系分别见表1和表2。
表1 请求挡位信号与开关霍尔输出之间的关系
表2 挡位指示灯与请求挡位和实际挡位的关系
表2中,0代表P挡指示灯闪烁,1代表P挡指示灯亮;2代表R挡指示灯闪烁,3代表R挡指示灯亮;4代表N挡指示灯闪烁,5代表N挡指示灯亮;6代表D挡指示灯闪烁,7代表D挡指示灯亮。模拟的CAN节点发送报文的数据域第一个字节表示挡位请求,第二个字节表示挡位指示灯亮闪情况;接收的VCM报文第一个字节表示实际挡位,其余数据域全部设为0。
3.1硬件设计
文中选用的单片机MC9S12G48MLH内部集成了CAN控制器MSCAN,能按CAN2.0的要求对通信进行规范管理,用户只需设置或查询相关的控制或状态寄存器。文中将挡位采集节点与模拟的整车控制器相连,硬件结构如图7所示。
图7 CAN通信硬件结构
主控制器主板CAN模块接口外接CAN收发器,CAN收发器再连接到整车CAN总线上,文中采用的收发器为NXP公司生产的TJA1040T,其接口电路如图8所示。图中,L226为共模电感,目的是为了抑制共模干扰、提高电磁兼容性。两个MMBZ33V的作用为双重ESD保护二极管瞬态过电压抑制。
图8 CAN收发器接口电路
3.2软件设计
软件部分主要分为驱动层、数据链路层和应用层,其结构和各部分的作用如图9所示。主要实现的功能是将请求挡位通过CAN报文发送给VCM,VCM将实际所处的挡位通过报文发送给GSM模块,GSM再将接收的实际挡位与请求挡位进行比较,点亮相应的挡位指示灯。GSM发送和接收报文的流程图分别如图10所示。
图9 软件架构图
图10 CAN报文发送和接收流程
3.3实验结果及分析
采用德国Vector公司的产品CANoe对实现的CAN协议进行仿真。CANoe是进行网络和ECU开发、测试和分析的全面工具,包括模型创建、仿真、测试、诊断及通信分析等。使用CANoe对CAN总线仿真的原理见图11,图中的虚线部分表示可以接更多的物理节点,并模拟更多的仿真节点。文中实验只用一个物理节点和一个仿真节点,仿真分析界面如图12所示。
图11 CANoe仿真原理
图12 CANoe仿真分析界面
仿真结果分别如图13—16所示。
图13 模拟P挡信号发送和实际挡位接收
图14 模拟R挡信号发送和实际挡位接收
图15 模拟P挡信号发送和实际挡位接收
图16 模拟R挡信号发送和实际挡位接收
图13为模拟发送P挡的结果分析,从发送和接收的报文中可知:当请求挡位为P挡且反馈挡位为P挡时,点亮P挡指示灯(Flag=1)(图中圈出的部分);当请求挡位为P挡而实际挡位不为P挡时,闪烁P挡指示灯(Flag=0)。R、N和D挡的报文发送和接收情况分别见图14—16。
4结束语
对目前乘用车广泛应用的ISOCAN协议栈的体系结构进行了分析说明,并对协议栈的数据链路层进行了具体的解析。对数据链路层中逻辑链路子层(LLC)和介质访问层(MAC)、CAN的帧结构以及CAN的错误检测和管理进行了详细的阐述。为了实现解析的协议,基于飞思卡尔单片机平台设计了CAN物理节点来模拟汽车换挡器单元,并通过Vector公司的CAN总线仿真软件CANoe对CAN收发过程进行验证。实验结果表明:设计的CAN协议可成功实现与CANoe模拟的VCM节点之间的通信。
参考文献:
【1】朱明.现代汽车电子技术的应用现状及发展趋势[J].电子技术与软件工程,2015(9):260.
【2】胡德鹏.汽车电子技术的应用与发展[J].电子技术与软件工程, 2014(20):262.
【3】廖发良.车载MOST总线系统[J].农业装备与车辆工程,2009(7):55-57.
【4】胡云.对IEEE1394总线技术的研究[J].科学技术与工程,2007(3):299-302.
【5】纪光霁,万茂松.汽车ECU通讯新平台——FlexRay(V2.1)协议规范[J].汽车电器,2006(10):1-6.
【6】曹万科,张天侠,刘应吉.基于混合调度算法汽车TTCAN网络设计及实时性分析[J].中国工程机械学报,2007,5(1):62-66.
【7】王婧,张欣.汽车网络通信协议TTP/C和FlexRay的研究分析[J].北京汽车,2006(6):40-43.
【8】赵双,孙天健.LIN总线技术及其在汽车电子中的应用[J].北京汽车,2007(3):44-46.
【9】闫茂德,陈金平.基于CAN总线的汽车电子系统传输网络设计[J].长安大学学报(自然科学版),2006,26(1):86-89.
【10】李永强,宋希庚,薛冬新.CAN局域网及J1939协议在货车和客车上的运用[J].汽车工程,2003,25(4):377-380.
【11】ISO11898-1:Road Vehicle-controller Area Network(CAN):Part1:Data Link Layer and Physical Signaling[S],2003.
【12】ISO11898-2:Road Vehicle-controller Area Network(CAN):Part2:High-speed Medium Access Unit[S],2003.
【13】ISO11898-3:Road Vehicle-controller Area Network(CAN):Part3:Low-speed,Fault-tolerant,Medium-dependent Interface[S],2003.
【14】ISO15765-2:Road Vehicle-diagnostics on Controller Area Networks(CAN):Part2:Network Layer Services[S],2004.
Analysis of ISOCAN Protocol Stack and Its Implementation Based on Platform of Freescale Microcontroller
LIU Bo, LI Qiong, GU Beibei
(Nanjing Aolian Automotive Electronic Technology Co.,Ltd., Nanjing Jiangsu 211153,China)
Abstract:ISOCAN protocol is widely applied to data exchange among each electronic control unit(ECU)of passenger vehicles. To ensure stability and correctness of data during transmission, the architecture of ISOCAN protocol stack was analyzed, then logical link layer(LLC)of protocol stack was analyzed specifically. LLC and MAC, architecture of CAN frame, and error detection & management were illustrated. Finally, the above protocol was implemented based on platform of Freescale microcontroller and the progress of CAN transmission and receive was verified throughout CAN bus simulation software CANoe produced by Vector company. Experimental results show that the implemented CAN protocol stack can be used to receive and transmit frames correctly and stably, which verifies the effectiveness of the designed CAN communication protocol proposed.
Keywords:Controller area network(CAN); Protocol stack analysis; Freescale microcontroller; CANoe simulation
收稿日期:2015-09-17
作者简介:刘波(1989—),男,硕士,研究方向为汽车CAN协议及零部件开发。E-mail:liubo369@126.com。
中图分类号:G64
文献标志码:A
文章编号:1674-1986(2016)01-028-06