2.2 CAN线诊断
CAN线主要采用的协议为UDS( Unified diagnostic services)协议。其OSI参考模型如图5所示。
基于CAN总线的KWP2000协议,即IS015765协议,其中ISO 15765-1为物理层和数据链路层,ISO 15765-2对应网络层,ISO15765-3对应于应用层。在早期的版本中,ISO 15765使用的是ISO 14230的应用层,在以后的版本中采用的是ISO 14229的标准。ISO 15765-3规定了服务命令的格式,没有规定服务的具体内容,ISO 14229一规定了服务的具体内容。基于CAN总线的UDS是在ISO 15765-3和ISO 14229-1两个相关的协议基础上定义的诊断服务。
在基于CAN总线的诊断协议中,物理层和数据链路层采用基于ISO 11898的CAN总线底层协议。调研的诊断协议中波特率分为250kb/s和1 Mb/s两种。采用物理寻址的方式。物理地址格式如表1所示。
网络层15765-2中定义了数据的封装与解封装、分包和组包、多帧处理等问题。其中数据帧分为以下4种情况:单帧(SF )、首帧(FF )、连续帧(CF)、流控制(FC)。如表2所示。
应用层采用ISO 14229-1和ISO 14230-3协议,主要定义了诊断服务功能,包括诊断服务管理、数据传输、输入输出控制、启动例程等服务。
2.3总结
经过调研,控制器诊断协议主要分为CAN线诊断和K线诊断。K线诊断的控制器在物理层和数据链路层都基本一致,在应用层诊断协议有所差异。CAN线诊断的控制器在波特率和应用层诊断协议有差异,其他基本一致。如表3所示。
在应用层协议中,不同控制器使用的诊断服务不同,比如K线的控制器在读取故障码功能时,使用的服务有18(readDiagnosticTroubleCodes ByStatus)和13( read DiagnosticTroubleCodes)服务。CAN线的控制器在读取故障码功能时,使用的服务有17( read Status OfDiagnosticTroubleCodes)、19(readDTCInformation)和18(readDiagnosticTroubleCodes ByStatus)服务。各控制器诊断服务的子服务也存在较大差别。
3 诊断系统设计
根据整车网络架构以及控制器诊断协议的分析,结合主机厂实际诊断需求设计诊断系统。
3.1诊断系统功能设计
根据上述诊断协议分析,设计诊断系统诊断功能如下。
1)系统识别功能诊断仪可以识别不同控制器的软、硬件版本等信息。
2)读取/清除故障码功能①读故障码:诊断仪可以读取控制器当前故障和历史故障;②清故障码:通过诊断仪能够实现历史故障的清除;③冻结帧:诊断仪可以读取控制器故障码的冻结帧。
3)执行器动作测试诊断仪可以对电控单元发送命令,使其执行负载动作,对负载进行检测。
4)控制器标定诊断仪能对控制器参数进行标定。
5)数据流监控诊断仪可以动态监控控制器端口信号的输入输出状况。
6)数据刷写诊断仪可以实现控制器应用层数据的刷写。
7)故障维修指导诊断仪配备整车电控系统故障维修数据库,当出现故障时,诊断仪可以给出相应故障的维修指导,方便用户排查故障。
3.2诊断系统总体架构
诊断系统主要由PC软件和硬件适配器组成。在诊断应用模块中,进行控制器诊断参数(诊断协议、波特率、诊断方式、适配器参数等)配置,之后调用协议栈模块进行诊断命令请求发送,硬件驱动模块驱动适配器发送报文与整车网络中的控制器进行信息交互,诊断响应模块根据控制器响应命令进行逻辑处理,之后将信息传输给报文解析模块并向上层输出显示接口,最后界面显示模块进行数据显示。数据管理模块用于用户权限、控制器分类、诊断参数等信息管理。数据库模块用于诊断系统数据存储管理。维修帮助模块用于整车电控系统故障维修指导管理。系统框架如图6所示。