商用车电控单元UDS诊断协议栈的开发与应用
2020-11-10白蒲江孟晨兴
白蒲江 孟晨兴
摘要:首先介绍了UDS的特点及优势,然后具体对UDS的服务功能进行了说明,最后以缓速器电控单元的诊断设计为例,阐述了UDS的设计要点及其在车辆标定诊断测试中的应用。
关键词:UDS;电控单元;诊断标定
1 技术背景
CAN(Controller Area Network,控制器局域网)是国际上应用最广泛的汽车通信总线之一。为实现智能化控制、共享数据信息,商用车将所有的车载电器和ECU控制单元都搭载到CAN网络总线上[1]。
随着汽车ISO(International Standard Organization)诊断标准日趋完善,ISO 15765诊断通信协议规范了基于CAN总线的诊断服务UDS(Unified Diagnostic Services)。UDS是面向商用车控制单元的应用层协议(ISO 14229-1),提供了诊断服务的基本框架,主机厂和零部件供应商可以根据自身情况自定义诊断服务。
2 缓速器控制器诊断需求说明
随着汽车嵌入式技术的发展,商用车控制系统规模日益扩大,复杂程度不断提高,给整车各种控制单元的诊断、升级服务带来了新的挑战。对缓速器而言,信号连接上,控制器与整车信号的交互已经从全硬线传输过渡到硬线加CAN通信传输上来,未来为了满足整车数据共享的需求,将实现全CAN通信传输;整车均配备了OBD诊断接口,控制器与该接口连接,利用诊断仪等可以实现控制器程序升级及数据监测等。功能方面,原来识别驾驶员手柄档位控制缓速器输出制动力,现在能响应来自电子制动系统装置(制动踏板)、车身装置(手柄)的扭矩请求,精准控制缓速器辅助整车进行制动。整车人机接口方面,控制器与智能化仪表通过CAN方式进行交互,不仅线束连接更加简单,还能实现运行数据、故障灯、故障码显示。综上所述,对于缓速器控制而言,为满足驾驶员对车辆功能持续提升、维修人员对车辆故障快速处理的需求,缓速器控制系统应支持用户利用诊断仪对控制器进行程序刷写、故障诊断、参数标定、数据采集等方面的操作。为了便于主机厂统一诊断,缓速器在进行自诊断开发的同时,也需要同步按照UDS规范进行诊断协议栈开发[2]。下面将详细描述诊断协议栈的开发过程。
3 UDS诊断服务介绍
3.1 UDS服务原理
按照UDS规范,某一时刻控制单元处于某个诊断会话模式,此时若外部诊断设备对其按照物理或功能寻址的方式进行请求,作为控制器应实现相应的服务。
3.2 UDS服务功能总述
UDS诊断服务包括:诊断和通信管理(通信控制、安全访问、诊断会话控制)、数据传输(读取缓速器温度数据、控制器版本信息)、存储数据传输(清除诊断信息、读取诊断码DTC信息)、上传下载服务(刷写程序)[3]。
3.3 寻址方式描述
物理寻址:当需要对某一具体ECU进行诊断服务时,外部诊断设备的数据传输层对ID进行配置,设备地址为被请求设备的节点地址,被请求的ECU支持相应的服务功能,执行必要的操作。
功能寻址:当需要对CAN网络中的多个ECU进行诊断服务时,外部诊断设备的数据传输层对ID进行配置,设备地址为广播地址,多个ECU应支持相应的服务功能,执行相关操作[3]。
对具体ECU进行诊断服务时,需要功能寻址和物理寻址结合使用,对网络中的多个ECU进行服务请求。
4 基于CAN总线的诊断服务开发
4.1 诊断服务开发
ISO标准规定了汽车通信协议,所有的汽车通信协议都是基于ISO模型[3]。缓速器RCU的诊断服务开发内容如下:
(1)通过芯片自带数据库生成完整的底层驱动函数后,设计人員调用对应的函数,配置物理层及传输层参数即可。
(2)数据链路层完成通信数据帧的解析和封装,使用CAN扩展帧(29位标识符)。
(3)网络层参考IS0 15765-2标准对数据包进行分组,通过对单帧(SF)、第一帧(FF)、连续帧(CF)和流控制帧(FC)的操作,满足数据传输的协议要求[4]。
(4)应用层由于缓速器控制单元对数据流读取功能的设计要求极高,因此开发时针对故障诊断等应用而定义了必要的UDS诊断服务。
(5)功能层内置了对Flash读写的库函数,该模块的Bootloader引导程序调用Flash读写函数即可完成程序刷写等功能。一个设计良好的Bootloader能加快汽车电控单元应用程序的开发,更能为后期的维护和升级工作提供便利[5]。
4.2 设计要点
4.2.1 会话模式控制服务
控制服务的选项有:01默认会话、02编程会话、03扩展会话。在同一时刻,仅能有一个诊断会话模式被激活。RCU上电后,诊断会话请求未接收到,将自动进入默认会话模式(01)。其他诊断会话模式超时后,RCU回到默认会话模式(01)。当诊断设备成功进入某一特定的诊断会话模式,RCU将不再继续监测与该诊断会话模式相关的条件是否满足;诊断设备和操作人员有责任保证允许进入的条件在整个诊断会话过程中一直有效[6]。
4.2.2 故障读取功能开发
在控制器上电运行期间,故障诊断功能使能,则若某故障触发故障记录,则相应的DTC信息更新。UDS服务模块基于服务请求,依据状态掩码,反馈相应的DTC信息。状态掩码选项为“1.当前故障” “9.当前和历史故障” “8.历史故障”等。
4.2.3 故障清除功能开发
基于服务请求,清除DTC信息的存储及变量,复位DTC状态到零。即故障状态码被复位为零,同时故障存储也被复位到零。
4.3 功能测试
首先诊断设备发出请求信息,此时数据传输层按照表1格式打包数据,然后传递给数据链路层和物理层。
接收到外部设备请求后,根据标识符从FLASH存储中取出对应的17个字节数据,然后按照UDS的数据场要求进行打包,同时按照定时要求进行数据的发送。
对表2数据进行传输时,应用到了多帧,多帧的设计要点包括管理存储、帧顺序、帧之间时间间隔的控制等。
外部诊断设备对上述信息进行解包,便可得到需要的信息。
5 结语
随着软件、通信技术的发展,诊断技术的应用越来越广泛,从产品研发到售后服务贯穿车辆的整个生命周期。本设计已成功应用,采用该方式实现程序刷写、故障诊断、参数标定,方便了生产、测试、应用和维护。
[参考文献]
[1] 詹克旭.基于UDS协议的汽车ECU升级方案[J].计算机应用与软件,2019,36(1):191-196.
[2] 孙俊扬.UDS诊断协议工作原理和诊断协议栈的开发[J].汽车与配件,2019(5):64-65.
[3] 白蒲江,刘小龙.一种液力缓速器控制系统自诊断设计研究[J].汽车维修,2014(9):4-6.
[4] Road Vehicles-Diagnostic on Controller Area Networks (CAN)-Part 2:Network layer services:ISO 15765-2:2004[S].
[5] 陈彤,黄立梅.一种用于汽车电控单元CAN Bootloader的设计与实现[J].汽车实用技术,2016(9):156-160.
[6] Road Vehicles-Unified Diagnostic Services (UDS)-Part1:
Specification and requirements:ISO 14229-1:2006[S].
收稿日期:2020-08-11
作者簡介:白蒲江(1979—),男,陕西蒲城人,工程师,研究方向:汽车电子控制系统软件开发。