吴含冰
(中国汽车技术研究中心有限公司,天津 300300)
控制器局域网 (Controller Area Network,以下简称CAN)作为现场总线是汽车企业为解决现代车辆中众多的控制和数据交换问题所开发的通信协议。CAN总线是一种多主总线,应用于车辆的CAN总线通信介质多为双绞线,通信速率最高可达1Mb/s。由于CAN总线具有数据结构较短、非破坏性总线仲裁技术以及灵活的通信方式特点,已被全世界众多汽车企业采用,成为最重要的汽车总线标准。而基于CAN网络故障诊断也越来越受到了各大汽车厂商的重视,汽车厂商通常在国际上统一的诊断通信标准的基础上构建自己的整车诊断网络。国际上针对基于CAN网络的诊断通信技术已经比较成熟,具备完善的配套标准。国际标准化组织ISO已经制定了覆盖整个诊断协议栈的国际标准 (包括ISO 15765《道路车辆 基于控制器局域网的诊断通信》系列标准和ISO 14229《道路车辆 统一的诊断服务》系列标准等),这些标准在全世界范围内已经得到广泛的实施和应用,在规范和引导车载诊断系统技术发展发挥了重大作用。
车载诊断系统遵循开放系统互联 (以下简称OSI)基本参考模型,该模型是国际标准化组织 (ISO)于1984年提出的分层网络体系结构模型,其定义的是一种抽象机构,而并非具体实现的描述,其目的是支持异构网络系统的互联互通。OSI参考模型将通信系统划分为7层,从上至下依次是应用层 (第7层)、表示层 (第6层)、会话层 (第5层)、传输层(第4层)、网络层 (第3层)、数据链路层 (第2层)和物理层(第1层)。各层的目的是向上层提供服务。 其中,物理层是利用传输介质为数据链路层提供物理连接,实现比特流的透明传输,一般情况下,物理层进行信道编码或解码,保障数据传输的可靠性;数据链路层主要保障在物理链路上进行数据的可靠传递,数据或指令被封装成特定的可被物理层传输的帧,还包括访问控制、资源管理、数据分段、 级联、纠错等功能;网络层负责进行路由选择,从而确定两节点之间的路径,可以进行流量控制;传输层负责为会话层提供网络线路,即传输通路;会话层负责两节点之间会话建立、维持和终止;表示层负责对数据进行编码或解码,从而将数据转换为兼容或适合的传输格式,也可以进行数据的解密与加密;应用层负责为应用程序 (或用户)提供服务。
车载诊断系统按照应用场景和应用目的不同,从协议栈层面分为3类:第1类是增强型诊断,主要用于车辆制造商开发车载诊断系统;第2类是排放相关车载诊断系统 (OBD);第3类是全球协调车载诊断系统 (WWH-OBD),主要应用于商用车。本文主要针对基于控制器局域网的增强型车载诊断展开研究。
增强型车载诊断系统遵循OSI架构,针对OSI架构的每一个层级,国际标准化组织都制定了相应的国际标准,并在全球汽车行业中得到广泛的实施和应用 (表1)。
表1 基于CAN的增强型车载诊断国际标准协议栈[1]
增强型诊断的传输层和网络层定义了网络节点间数据交互使用的传输层和网络层通信协议,例如从一个ECU到另一个ECU或外部测试设备和一个ECU之间的通信,其主要任务是传输报文,并且提供了分段、流控制传输和重组的方法。
CAN总线上的单个数据帧每帧只能传输8个字节,根据需要传输的诊断服务数据大小,可以使用单帧或多帧的方式进行传输。采用单帧传输时,可以传输6个 (扩展或混合寻址)或7个 (常规寻址)数据字节;如要传输较长报文,要先将其分段再传输多个网络层协议数据单元 (以下简称N_PDU)。多个N_PDU包括首帧 (报文的第1个N_PDU)及连续帧 (所有后续N_PDU),多个N_PDU报文的接收端通过流控机制使传输吞吐量适合自身容量,如图1所示。]
图1 多帧传输示意图[2
首帧,即第1帧 (FF)只能用于传输不适用于单个CAN帧传输的报文 (即分段报文)。收到FF后,网络层接收实体应开始重组分段报文。
发送分段数据时,将首帧以后所有连续的帧编码为连续帧 (CF)。收到连续帧后,网络层接收实体应重组接收到的数据字节,直到所有报文接收完毕。正确接收到最后一帧报文后,接收实体应将重组报文传递至相邻的上层协议层。
流控帧的目的是调节向接收端发送连续数据帧的速率,流控机制允许接收端将其能力通知发送端,如果发送实体传输的长度超出接收实体缓冲区大小,流控帧也可以在分段报文传输期间指示网络发送实体暂停传输后续的连续帧,或终止传输分段报文。
应用层服务通常称为诊断服务,用于基于客户端—服务器端的系统,以执行诸如车载车辆服务端的测试、检查、监控或诊断等功能。客户端 (通常称为诊断设备)使用应用层服务来请求在一个或多个服务端中执行诊断功能。服务器端 (通常作为ECU的部分功能)使用应用层服务将由请求的诊断服务提供的响应数据发送回客户端,客户端应用层和服务器应用层的诊断通信典型交互过程如图2所示。客户端通常是非车载诊断仪,但在某些系统中也可以是车载诊断仪,同一车辆系统中允许有多个客户端。应用层根据诊断交互的需求,能够提供多种诊断服务,其中最为常用的诊断服务包括诊断和通信管理类功能和数据传输类功能,如表2和表3所示。
图2 客户端和服务器的诊断通信交互示意图
汽车设计中的一大难点是如何预先评估潜在的危害和风险,并采取适当的方法和措施来降低风险。随着电子电气系统复杂性的提高,来自系统性失效、随机硬件失效和软件故障的风险也日益增加。因此,车载诊断服务对于车辆的整体安全性的作用也日益重要。
表2 诊断和通信管理功能[3]
表3 数据传输功能单元[3]