ISOCAN协议栈解析及其在飞思卡尔单片机平台的实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ISOCAN协议栈解析及其在飞思卡尔单片机平台的实现
刘波;李琼;顾蓓蓓
【摘要】ISOCAN协议被广泛应用于乘用车各电控单元间的数据交换.为确保数据在传输过程中的稳定性和正确性,对ISOCAN协议栈的体系结构进行分析,并对协议栈的数据链路层进行具体的解析,详细分析逻辑链路子层(LLC)和介质访问层(MAC)、CAN的帧结构以及CAN的错误检测和管理.基于飞思卡尔单片机平台实现了上述
协议,并通过Vector公司的CAN总线仿真工具CANoe对CAN收发过程进行验证.实验结果表明:实现的协议栈可以准确稳定地接收和发送报文,验证了设计的
CAN通信协议的有效性.
【期刊名称】《汽车零部件》
【年(卷),期】2016(000)001
【总页数】6页(P28-33)
【关键词】CAN;协议栈解析;飞思卡尔单片机;CANoe仿真
【作者】刘波;李琼;顾蓓蓓
【作者单位】南京奥联汽车电子技术有限公司,江苏南京211153;南京奥联汽车电
子技术有限公司,江苏南京211153;南京奥联汽车电子技术有限公司,江苏南京211153
【正文语种】中文
【中图分类】G64
汽车电子技术的不断发展,使得汽车上各电子控制系统功能更加精细,结构越发复杂,如果汽车电子系统采用以往的点对点通信的方式,则会形成大量的线束,不仅占用了大量的车内空间,还严重制约着汽车向经济性和智能化方向的发展,也成为汽车轻量化和进一步电子化的最大障碍,汽车的制造和安装也变得非常困难。

因此,基于总线技术的车载网络应运而生,它被广泛地应用于汽车电子系统中[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报文收发过程的正确性和有效性。

CAN总线是在20世纪80年代由BOSCH公司为解决汽车电子系统中数据交换而开发的控制器局域网协议,是一种用于实时环境的串行通信总线,采用短帧结构,非破坏性总线仲裁技术,支持多种工作方式,支持点对点、一点对多点及全局广播等多种数据收发方式,具有完善的错误检测机制,能够满足构建高性能、高实时性系统的要求。

1991年发布了CAN2.0版本的应用标准,包括A和B两个部分,
在1.2版本基础上增加了扩展帧格式兼容[9-10]。

1993年,CAN成为国际标准
ISO11898(高速应用)和ISO11519(低速应用),并在工业现场领域得到了广泛的应用。

1995年,CIA组织(CAN in Automation)颁布了完整的CANopen协议,包括应用层规范、通信协议和设备协议。

2.1 标准化CAN的OSI模型体系结构
CAN协议遵从ISO/OSI网络开放系统模型,图1为标准化CAN的各层协议(包括依据的规范和标准)及其与OSI模型各层的对应关系。

按照这个标准模型,CAN协议可以分为4层,从上到下依次为应用层、网络层、数据链路层和物理层。

图1
的右半部分为CAN数据链路层及物理层的详细描述。

故障界定是一种能区分短期干扰和永久故障的自校验机制。

物理层可由检测并管理物理介质故障的实体总线故障管理和错误界定来监控[11-14]。

数据链路层主要作用有:为远程数据请求以及数据传输提供服务,判断是否接受收到的报文,提供恢复管理和过载通知服务。

LLC子层的功能是为数据传送和远程数据请求提供服务。

MAC子层主要定义了传送规则,即实现控制帧结构、执行仲裁、错误检测、出错标定、故障界定等。

2.2 LLC子层
LLC子层应提供两种类型的无连接模式发送服务:一种为未确认的数据传输服务,该服务为LLC用户之间在没有建立数据链路连接的情况下交换LSDU(LLC层服务
数据单元)提供方法,数据传输方式可以为点对点、多路传送或广播;另一种为未
确认远程数据请求服务,该服务为LLC用户在没有建立数据链路连接的情况下提
供请求远程节点进行LSDU传输的方法。

根据以上两种不同的LLC服务,在用户
之间传送的帧类型有:LLC数据帧和远程帧。

2.3 MAC子层
MAC子层服务允许本地LLC子层实体和同层LLC子层实体间交换MSDU(MAC
层服务数据单元),MAC子层提供确认数据发送、确认远程数据请求和过载帧发送
等服务。

MAC子层的功能模型如图2所示。

该功能模型将MAC子层分成发送和接收两个独立的部分。

帧发送实现发送数据封装和发送介质访问管理等功能;而帧接收实现接收媒介访问管理及接收数据拆装等功能。

2.4 CAN的帧结构
CAN的报文主要有4个不同类型的帧:数据帧、远程帧、错误帧和过载帧。

对于数据帧和远程帧又定义了标识符ID为11位的标准帧格式和29位的扩展帧格式,两种格式下的数据帧都由7个不同的位场组成:帧起始(SOF)、仲裁场、控制场、CRC场、应答场(ACK)和帧结束,远程帧没有数据场,标准帧和扩展帧的格式见图3。

远程帧和数据帧的不同在于远程帧的RTR位是隐性的,而数据帧的RTR位是显性的,且远程帧无数据场,数据代码长度DLC不受制约。

错误帧和过载帧都由两个域组成,其结构分别如图4 和图5 所示。

错误帧由两个
不同的场组成,第一个场用作为不同站提供的错误标志的叠加,第二个场是错误界定符。

过载帧的两个位场分别为过载标志和过载界定符。

2.5 CAN错误检测与错误管理
CAN通过定义完善的错误检测和管理机制,成为汽车网络中安全、可靠的技术标准。

CAN总线中存在5种不同的错误类型,分别为位错误、填充错误、CRC错误、形式错误和应答错误。

为了进行故障界定,在总线上的每个节点单元中都设置有两种计数器:发送出错计数器和接收出错计数器。

错误计数器按照一系列规则进行更新。

节点的状态迁移如图6所示。

根据错误计数器的数值,节点可能处于如下3种状态:(1)错误激活状态。

一个错
误激活状态下的节点可正常参与总线通信,并在检测到错误时发送一个活动错误标志。

(2)错误认可状态。

一个错误认可状态下的节点不发送活动错误标志,它参与总线通信,但在检测到错误时,发送一个认可错误标志。

(3)总线关闭状态。

当一个节点对总线处于关闭状态时,即处于总线关闭状态,在该状态下,节点既不发送也不接收任何帧。

文中以飞思卡尔单片机MC9S12G48MLH为平台,实现了上述解析的协议,并将该CAN节点用于模拟汽车换挡器,将采集的请求挡位信息通过CAN总线发送给CANoe仿真工具模拟的车身控制模块(VCM),并接收VCM模拟发送的实际挡位信号,若请求挡位与实际挡位相同,则点亮相应的挡位指示灯,否则使相应的挡位指示灯闪烁。

请求挡位信号与开关霍尔输出之间的关系及挡位指示灯与请求挡位和实际挡位的关系分别见表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所示。

主控制器主板CAN模块接口外接CAN收发器,CAN收发器再连接到整车CAN 总线上,文中采用的收发器为NXP公司生产的TJA1040T,其接口电路如图8所示。

图中,L226为共模电感,目的是为了抑制共模干扰、提高电磁兼容性。

两个MMBZ33V的作用为双重ESD保护二极管瞬态过电压抑制。

3.2 软件设计
软件部分主要分为驱动层、数据链路层和应用层,其结构和各部分的作用如图9
所示。

主要实现的功能是将请求挡位通过CAN报文发送给VCM,VCM将实际所处的挡位通过报文发送给GSM模块,GSM再将接收的实际挡位与请求挡位进行
比较,点亮相应的挡位指示灯。

GSM发送和接收报文的流程图分别如图10所示。

3.3 实验结果及分析
采用德国Vector公司的产品CANoe对实现的CAN协议进行仿真。

CANoe是进行网络和ECU开发、测试和分析的全面工具,包括模型创建、仿真、测试、诊断
及通信分析等。

使用CANoe对CAN总线仿真的原理见图11,图中的虚线部分表示可以接更多的物理节点,并模拟更多的仿真节点。

文中实验只用一个物理节点和一个仿真节点,仿真分析界面如图12所示。

仿真结果分别如图13—16所示。

图13为模拟发送P挡的结果分析,从发送和接收的报文中可知:当请求挡位为P 挡且反馈挡位为P挡时,点亮P挡指示灯(Flag=1)(图中圈出的部分);当请求挡位为P挡而实际挡位不为P挡时,闪烁P挡指示灯(Flag=0)。

R、N和D挡的报文
发送和接收情况分别见图14—16。

对目前乘用车广泛应用的ISOCAN协议栈的体系结构进行了分析说明,并对协议
栈的数据链路层进行了具体的解析。

对数据链路层中逻辑链路子层(LLC)和介质访
问层(MAC)、CAN的帧结构以及CAN的错误检测和管理进行了详细的阐述。


了实现解析的协议,基于飞思卡尔单片机平台设计了CAN物理节点来模拟汽车换挡器单元,并通过Vector公司的CAN总线仿真软件CANoe对CAN收发过程进行验证。

实验结果表明:设计的CAN协议可成功实现与CANoe模拟的VCM节
点之间的通信。

相关文档
最新文档