UDS与DoIp整理

UDS与Doip 知识框架整理

UDS(Unified Diagnostic Service)

1、概念

由ISO14229协议规定,使用诊断测试仪(客户端)控制车载电子单元(ECU,服务端),实现电子喷油喷射、自动变速和防抱死制动系统工作等等。

简单的意思就是外部设备与ECU的通信协议,可以与ECU进行交互,但是不是传输数据的链路,传输数据的协议由ISO15765协议规定。

下文中服务器指下位机或者ECU。

  • 诊断数据:
    测试人员修改可以位于电子控制单元存储器中的数据,诊断数据包括模拟输入和输出,数字输入和输出,中间值和各种状态信息。诊断数据示例包括车速、油门角度、后视镜位置、系统状态等。

三种类型为诊断数据定义的值:
1、电流值:电子控制单元正常操作当前使用的值;
2、存储值:在特定时刻(例如,当故障发生或
定期);本副本在电子控制单元的控制下制作;
3、静态值:例如VIN。

服务器不保留诊断数据,测试人员可以只保留请求的当前值。

  • 诊断程序:

它是一种嵌入在电子单元内部的一种程序,通过客户端的请求可以开启相应的服务。

  • 诊断服务:

客户端请求服务器进行信息交换,目的是需要从服务器获取诊断数据,或者对服务器进行某种操作,

  • 诊断会话:
    服务器中的状态,其中启用了一组特定的诊断服务和功能。意思就是某种特定的诊断操作需要进入特定的会话才能正确执行,否则就会出现该会话模式不支持该操作的提示。

比如常见的刷APP程序,需要在编程会话模式中才可以执行,要不然随便一刷就刷掉原始代码了,不安全。刷APP代码需要在Boot Software中进行。

Boot Software:在ECU上电或复位后立即执行,其主要目的是以检查有效的应用程序是否可用以执行,而不是将控件转移到重编程软件,意思就是如果重编程软件(也成为APP程序)不可以执行,则直接不进行跳转,只在Boot软件中。

在一些NXP的芯片中,自带固件,会扫描一些区域是否有可执行文件,会跳到相应的区域去执行。比如可以执行不带Boot软件的APP程序。

  • 诊断故障代码:DTC(diagnoise trouble Code)

由车载诊断系统识别的故障状态的数字通用标识符,就是车载故障的编码。

  • ECU:电子控制单元,一个功能模块的控制器,比如车门ECU、车窗ECU、调速ECU。

2、UDS框架图

  • 可以通过多种通讯手段进行诊断(数据交互),比如CAN、IP和Lin等,DoCAN即Diagnosis on CAN,不同的通讯协议对应着不同的定义说明,在不同14229协议中比如14229-5,定义了车载以太网,即diagnosis on internet

  • 应用层服务通常被称为诊断服务。应用层服务是用于基于客户机-服务器的系统,在车辆车载服务器执行测试、检查、监视或诊断等功能。客户端(通常称为外部测试设备)使用应用层
    请求在一个或多个服务器上执行诊断功能。服务器,通常是一个功能,它是ECU的一部分,使用应用层服务提供诊断服务的响应数据返回到客户端。

  • 客户端通常是一个外部测试人员,在同一车辆系统中可能有多个客户端。诊断应用层的服务访问点提供许多服务,这些服务都具有相同的一般结构。
    在这里插入图片描述

  • 服务标识符:Service Identifier(SI)
    0x10-0x3E、0x83-0x88、0xBA-0xBE 请求服务
    0x50-0x7E、0xC3-0xC8、0xFA-0xFE 积极响应

  • 7F 否定响应服务标识符

  • 请求分为物理请求和功能请求,物理请求像单个设备请求诊断,功能请求类似广播请求。

  • 功能请求不回复部分否定响应。

  • 否定响应分为:SNS(不支持该服务)、SNSIS(该会话不支持该服务)、SFNS(不支持该子函数)、SFNSIAS(在该会话不支持该子函数功能)和ROOR(请求超出范围)
    注意:否定响应中 78表示等待。比如 0x7F 0x27 0x78
    在这里插入图片描述

  • 通用服务器响应流程
    首先进行多个否定响应的判断
    0x21:服务器忙
    0x11:不支持该服务
    0x7F:在该会话模式不支持该服务
    0x33:在服务器未解锁的状态访问,
    0x31:不支持该服务的子功能
    然后正确解析服务,并执行操作
    在这里插入图片描述

3、接下来介绍具体的服务

3.1、诊断以及通信管理功能
3.1.1 诊断会话模式:0x10

诊断会话在服务器中启用一组特定的诊断服务或功能。服务器始终仅存在一个活动的诊断会话。服务器应始终启动默认值开机时进行诊断会话。如果没有启动其他诊断会话,则默认诊断只要服务器通电,会话就应该一直在运行。

在不同的会话模式,可以进行特定的诊断功能,比如在扩展会话模式,可以禁止通讯,其他模式下就不可以。

  • 子功能服务标识符:01 默认会话
    服务器中的默认诊断会话,并且不支持任何诊断应用程序超时处理规定(例如,不需要TesterPresent服务来保持该会话处于活动状态)。
    服务器在发送DiagnosticSessionControl肯定响应消息后,应停止当前诊断会话,并在此后启动新请求的诊断会话。

  • 子功能服务标识符:02 编程会话

此diagnosticSession主要的功能就是对下位机进行编程,俗称刷APP程序

如果服务器在引导软件中运行programmingSession,则只能通过ECUReset(0x11)服务保留programmingSession。
如果服务器在APP中运行编程会话,则服务器会复位,然后在引导程序中运行编程会话。
可以执行擦除代码,刷写代码等服务(0x31 0x34 0x36)

  • 子功能服务标识符:03 扩展会话

该DiagnosticSession可用于启用支持功能调整所需的所有诊断服务。 它也可以用于启用诊断服务,这些服务不专门与功能调整相关。

  • 子功能服务标识复:04 安全系统诊断会话

可以执行所有与诊断相关的服务功能函数。
在这里插入图片描述
诊断仪发送10 03,然后服务器返回50 03 ,代表成功进入扩展模式,可以进行一些操作,比如安全访问,禁止DTC,禁止通信等。

CAN通讯一次只能发送8个字节,第一个字节代表有效字节数,00 32 01 F4 需要看具体的参数意义。

其否定响应码主要有 12 13 22
12:不支持该子函数,比如在默认会话模式 就不支持直接跳转到编程会话,否则返回否定响应
13:消息长度错误
22:当前状态不支持该会话模式,比如在无BootLoader的APP程序中,执行10 02,就会返回22。
在这里插入图片描述
如果执行该指令需要的时间较长,则下位机(服务器)就会先返回78,让诊断仪等待,然后再返回正确的响应数据。

3.1.2 0x11 ECU复位
3.1.3 0x27 安全访问服务
3.1.4 0x28 通信控制服务
3.1.5 0x3E
3.1.6 0x85 控制DTC设置服务
二、数据传输功能单元
三、存储数据传输单元
四、协程功能单元
五、上传下载功能单元

DoIP

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张一西

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值