【ISO14229_UDS_0x10服务详解】

1、0x10服务

  诊断会话控制服务(0x10服务)可用于启动ECU内部不同的诊断会话。
  在服务端不同诊断会话下,都对应着特定的诊断服务及功能组合。0x10服务启用哪种诊断会话,服务端在该会话下就可以通过数据链路层获取具体的参数值(如时序参数),而在国际标准中也定义了在各诊断会话下对应的服务及功能集合。
  服务器中只允许某一种诊断会话处于运行状态,而且要求在ECU上电时,总是从默认诊断会话开始。在整车制造厂商规定的常规工况及其他工况(如车辆上电状态等),要求ECU能够提供一些诊断功能。
  当客户对ECU发送了一种正处于运行状态的诊断会话,那么要求ECU能够回复肯定应答。ECU内部诊断会话发生跳转时,发生的一些行为状态示意图如下图所示。
图1 诊断会话跳转状态
关键点:
  1)默认会话:当ECU处于默认会话下,客户端发送了请求默认会话指令,要求ECU能够完全重新初始化默认会话。在激活会话期间,ECU能够复位所有的激活/启动/更改的设置及控件,不包括已经编程写入到NVM(非易失性存储器)中的数据。
  2)其它会话:当从默认会话切换到除了默认会话的其它会话时,在默认会话中通过0x86服务(事件响应服务)配置的一些事件都应该被停止。
  3)相同或者其他会话:当ECU从其它会话跳转到另一个其它会话时,ECU能够重新初始化对应的诊断会话,即:
    i) ECU中通过0x86服务(事件响应服务)配置的一些事件都应该被停止;
    ii) 安全等级应被重新设置,这就意味着对于那些先通过安全验证再才能使用的服务(如读取DID服务),则此时被重新上锁;
    iii) 在新的会话下,对于那些不需要通过安全验证的诊断服务功能则维持当前状态即可。例如,在非默认会话下跳转到另外一个非默认会话或者与当前一样的非默认会话时,任何配置的周期性的调度器都应该激活,不会影响到0x28服务(通讯控制服务)及0x85(故障码控制服务)的使用,也就是说在会话处于切换点时正常的通讯模式会被禁用掉;
  4) 默认会话:当ECU从其它非默认会话跳转到默认会话时,通过0x86服务(事件响应服务)配置的一些事件都应该被停止并且安全等级应该被重新设置,在默认会话下不支持的一些诊断服务功能都应该被终止。例如,任意配置周期性调度器或者输出控制都应被禁止,并且0x28服务(通讯控制服务)及0x85(故障码控制服务)应该被重置,会话处于切换点时正常的通讯模式会被禁用掉,切换到默认会话时,正常的通讯会被重新启用。在激活会话期间,ECU能够复位所有的激活/启动/更改的设置及控件,不包括已经编程写入到NVM(非易失性存储器)中的数据。

默认和非默认会话下被允许的服务:

服务默认会话非默认会话
0x10xx
0x11xx
0x27not applicablex
0x28not applicablex
0x3Exx
0x83not applicablex
0x84not applicablex
0x85not applicablex
0x86xx
0x87not applicablex
0x22xx
0x23xx
0x24xx
0x2Anot applicablex
0x2Cxx
0x2Exx
0x3Dxx
0x14xx
0x19xx
0x2Fnot applicablex
0x31xx
0x34not applicablex
0x35not applicablex
0x36not applicablex
0x37not applicablex
0x38not applicablex

2、请求消息格式

2.1 请求消息格式定义:

序号参数名称约定字节值
#1DiagnosticSessionControl Request SID (SID_服务标识符)M (强制)0x10
#2sub_function = [diagnosticSessionType]M (强制)0x00 - 0xFF

2.2 请求消息子函数参数定义:
  诊断会话控制服务通过配置子函数参数即 sub_function = [diagnosticSessionType],以此能够使用一些具体的诊断功能,可能会用到的诊断会话的详细解释见下表:

Bit 6 - 0
描述
约定  
0x00ISOSAE 保留未使用M
0x01默认会话:
  默认诊断会话不支持任何诊断应用超时处理请求 (无需0x3E服务保持会话激活);
  当从其它会话跳转到默认会话下,需要遵循如下规则:
    1) 在服务端发送了诊断会话控制正响应消息时,服务端需要停止当前诊断会话并且启动新的诊断会话;
    2) 如果客户在诊断会话期间上锁了服务端,在服务端发送诊断会话控制正响应消息后,应该可以解锁服务端;
    3) NOTE: 假如使用的数据链路需要初始化,服务应该默认启动默认会话。
M
0x02刷新会话:
   刷新会话允许启动所有的诊断服务来支持服务端的内存刷新;
  在boot软件中进入刷新会话下,客户可通过0x11服务重启ECU、0x10 01命令或者是通过会话层的超时服务,来重新回到默认会话;
U
0x03扩展会话:
   扩展会话可以启动所有诊断服务,用来支持对内存中值改写的功能 (如修改怠速值,发动机CO值);
U
0x04系统安全会话:
   系统安全会话可以启动所有支持与系统安全的功能 (如安全气囊部署);
U
0x05-0x3FISOSAE 文档定义预留M
0x40-0x5FOEM预留U
0x60 -0x7E供应商预留U
0x7FISOSAE 文档定义预留M

3、肯定应答消息

3.1 肯定应答消息格式定义:

序号
参数名称
约定字节值
#1DiagnosticSessionControl Request SID (SID_服务标识符)M (强制)0x50
#2sub_function = [diagnosticSessionType]M (强制)0x00 - 0xFF
#3
.
.
#6
sessionParameterRecord[]# = [
              data#1
              .  
              .
              data#4]
M
.
.
M
0x00 - 0xFF
.
.
0x00 - 0xFF

3.2 肯定应答消息数据参数定义:

Definition
[diagnosticSessionType]
该参数是对请求消息中子函数的0-6位的回显;
sessionParameterRecord
该参数包含了服务端会话的具体参数,此参数的具体内容详见下表;

肯定应答消息中的sessionParameterRecord的数据结构如下表:

Byte pos in record
描述
约定Byte Value
sessionParameterRecord[] = [
#1
P2 Server_max (high byte)
M0x00 - 0xFF
#2
P2 Server_max (low byte)
M0x00 - 0xFF
#3
P2* Server_max (high byte)
M0x00 - 0xFF
#4
P2* Server_max (low byte)]
M0x00 - 0xFF

肯定应答消息中的sessionParameterRecord的内容定义如下表:

Parameter
描述
字节数精度最小值最大值
P2Server_max 激活的诊断会话的默认时序参数21ms0ms65535 ms
P2*Server_max 增强型(NRC 0x78) 时序参数210ms0ms655350 ms

4、否定应答码(NRC_)

本服务实施以下否定应答码(NRC-Negative response code),在各工况下每个应答码的具体含义详见下表:

NRC
描述
0x12子函数不支持:
当不支持子函数参数时,应发送该否定应答码;
0x13消息长度不正确或格式错误:
当消息长度发生错误时,应发送该否定应答码;
0x22条件不正确
诊断会话控制服务请求不满足使用条件时,该否定应答码被返回;

5、0x10服务使用案例说明

  以刷新会话为案例,当0x10服务中的子函数参数最高位 = FALSE 时,表示抑制正响应 (suppressPosRspMsgIndicationBit) 功能未激活),需要服务端有答复消息,在该案例中P2Server_max = 50 ms,P2*Server_max = 5000 ms。
  Client -> Server: 10 02
  Server -> Client: 50 02 00 32 01 F4
在这里插入图片描述
返回UDS诊断服务功能单元介绍目录

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: iso-14229是一项用于汽车电子系统通信的协议,其全称为ISO14229 Unified Diagnostic Services(UDS)on Controller Area Network(CAN)。该协议旨在为车辆的诊断、维护和修复提供标准化的方法。ISO 14229定义了诊断服务和通信的标准化消息格式,包括诊断数据、错误码、故障清除等,以使不同车辆的系统实现得到统一和互操作性。 ISO14229 UDS协议栈是用于实现ISO 14229诊断协议的软件组件。该协议栈的实现可分为物理层和软件层两个部分,其中物理层是指使用CAN总线对车辆的执行单元进行通信,而软件层则是指实现ISO 14229标准的协议堆栈。该协议栈具有标准化、可重用和可配置的特点,可在不同的客户平台上使用。 ISO 14229的文档是对该协议的规范和说明,包括协议的基本架构、消息格式、错误码表、会话层和传输层的细节等。该文档是实现ISO 14229协议的必要依据,可用于开发UDS协议栈的开发人员和车辆诊断工程师。 源码.zip则是UDS协议栈的实现源代码,包括物理层和软件层代码。开发人员可根据该源码了解UDS协议栈的实现细节和技术实现,并根据需求进行二次开发。 综上所述,ISO-14229_14229_UDS协议栈_UDS-ISO-14229_ISO14229文档_ISO 14229_源码.zip等组件,是用于实现汽车电子系统诊断的标准化协议,可为车辆的维护和修复提供规范的方法。开发人员和车辆诊断工程师可根据这些组件进行UDS协议栈的开发和实现。 ### 回答2: ISO-14229是用于诊断汽车电子控制单元(ECU)的标准协议。该协议旨在提供一种标准化的方法,让技术人员可以使用相同的工具和流程诊断不同制造商的汽车。 14229 UDS是该标准的通信协议栈。UDS指协议栈中定义的通用诊断服务,该服务可用于访问ECU的内部数据和状态。ISO14229文档提供了UDS协议栈的详细规范,以及相关的数据格式和命令集合。 此外,文档和源代码可以帮助工程师实现符合ISO-14229标准的诊断工具或ECU,提高汽车诊断系统的质量和效率。源码.zip则是UDS协议栈的代码包。 总之,ISO-14229标准和UDS协议栈提供了一种标准化的、可靠的汽车诊断协议。它们有助于提高汽车技术人员的工作效率,同时减少汽车诊断工具和软件的开发成本。 ### 回答3: ISO-14229是一种用于汽车电子系统的通讯协议。它定义了诊断通信的规范和协议,允许车辆厂商和供应商使用这些规范和协议来开发和测试车载电子控制单元。其中,UDS协议栈是实现ISO-14229的关键技术之一,能够为客户端提供远程访问ECEs的可能性。 ISO-14229规定了接口:UDS(Unified Diagnostic Service),用于与电子控制单元(ECU)之间进行通讯。 UDS协议栈则实现了UDS协议的接口,可以自动进行诊断和测试,发生故障时还能产生错误报告。 相应地, ISO14229文档描述了在ISO14229-1文档中定义的UDS协议的特定应用,与ISO15765-2的特定要求相结合。 它还包括了EVITA Light文档中的安全方面。 源码.zip文件则包含了UDS协议栈的源代码,可以在开发与应用中使用,实现对汽车电子控制单元的简便对话操作。 总之,ISO-14229及其UDS协议栈实现了车载控制电子单元的标准化通讯,可简化车辆诊断和维护过程,提高效率和可靠性。同时,相应的规范、文档和源代码也为相关人员提供了方便和支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值