来自:ISO 14229-1-2020.pdf

10.2.1 服务描述

DiagnosticSessionControl服务用于在服务器中启用不同的诊断会话。
诊断会话启用服务器中的一组特定诊断服务和/或功能。该服务提供了服务器可以报告数据链路层特定参数值的能力,这些参数值对于已启用的诊断会话有效(例如,定时参数值)。本文档的用户应定义在每个诊断会话中启用的确切服务和/或功能集。
服务器中始终只有一个诊断会话处于活动状态。服务器在上电时应始终启动默认诊断会话。如果没有启动其他诊断会话,那么只要服务器通电,默认诊断会话就将运行。
服务器应能够在正常操作条件和车辆制造商规定的其他操作条件下(例如,跛行家用操作条件)提供诊断功能。
如果客户端请求了一个已经在运行的诊断会话,那么服务器应该发送一个积极的响应消息,并表现为如图7所示,图7描述了在会话之间转换时服务器的内部行为。
每当客户端请求一个新的诊断会话时,服务器应该在新会话的计时在服务器中激活之前发送diagnostic sessioncontrol阳性响应消息。在某些情况下,可能需要在发送积极响应之前进入新的会话,同时保持发送响应的旧协议计时。如果服务器无法启动所请求的新诊断会话,那么它将响应一条DiagnosticSessionControl否定响应消息,当前会话将继续(有关服务器和客户端如何行为的进一步信息,请参阅diagnosticSession参数定义)。非默认诊断会话(不包括programmingSession)中的诊断服务和诊断功能集是defaultSession中提供的功能的超集,这意味着在切换到任何非默认诊断会话时,defaultSession的诊断功能也是可用的。会话可以启用车辆制造商特定的服务和功能,这不是本文档的一部分。

为了启动一个新的诊断会话,服务器可以请求满足某些条件。所有这些条件都是用户定义的。这种条件的例子有:

  • 服务器可能只允许具有特定客户端标识符(客户端诊断地址)的客户端启动特定的新诊断会话(例如,服务器可能要求只有具有客户端标识符F416的客户端才能启动extendedDiagnosticSession)。
  • 可能需要满足某些安全条件(例如车辆不得移动或发动机不得运行)。例如,过渡到programmingSession可能会导致正常功能的丧失,因此一些ecu可能要求车辆处于安全状态。

在一些系统中,当启动一个新的诊断会话时,需要更改通信定时参数。DiagnosticSessionControl服务实体可以使用适当的服务原语更改为底层指定的计时参数,从而更改本地节点(可能还包括客户机希望与之通信的节点)中的通信计时。
图7提供了诊断会话转换的概述,以及服务器在转换到另一个会话时应该做什么。

  1. 当服务器在defaultSession中并且客户端请求启动defaultSession时,服务器应该完全重新初始化defaultSession。服务器将在激活会话期间重置所有激活/启动/更改的设置/控件。这还不包括编程到非易失性存储器中的长期变化
  2. 其他转换到任何defaultSession:当服务器从defaultSession转换到defaultSession以外的任何其他会话时,服务器应该只暂停在defaultSession期间通过ResponseOnEvent(86)服务在服务器中配置的事件(类似于非defaultSession激活期间的stopResponseOnEvent)
  3. 当服务器从defaultSession以外的任何诊断会话转换到defaultSession以外的另一个会话(包括当前激活的诊断会话)时,服务器应该(重新)初始化诊断会话,这意味着:
    1. 通过ResponseOnEvent(86)服务在服务器中配置的每个事件都应停止;
    2. 重新上锁。安全访问的锁定将重置任何依赖于安全访问的活动诊断功能以解锁(例如DID的活动inputOutputControl);
    3. 应保持新会话中支持的、不依赖于安全访问的所有其他主动诊断功能。例如,当从一个非defaultsession转换到另一个或相同的非defaultsession时,任何配置的定期调度器都应保持活动状态,并且CommunicationControl和ControlDTCSetting服务的状态不应受到影响,这意味着在会话切换的时间点禁用正常通信时,通信应保持禁用状态。
  4. transition to defaultSession:当服务器从缺省会话以外的任何诊断会话转换到defaultSession时,服务器将恢复通过ResponseOnEvent(86)服务在服务器中配置的每个事件,并且事件窗口仍然有效。此外,应在服务器中激活锁定的安全级别。defaultSession中不支持的任何其他活动诊断功能都将被终止。例如,任何已配置的定期调度器或输出控制都应该被禁用,并且CommunicationControl和ControlDTCSetting服务的状态应该被重置,这意味着在会话切换到defaultSession的时间点上,当正常通信被禁用时,应该重新启用正常通信。服务器将在激活会话期间重置所有激活/启动/更改的设置/控件。这还不包括编程到非易失性存储器中的长期变化。

表23指定了在defaultSession和非defaultSession(定时服务)期间允许的服务。任何非defaultsession都绑定到诊断会话计时器,该计时器应由客户端保持活动状态。

  1. 诊断会话控制- 10
  2. ECU复位- 11
  3. 安全访问- 27
  4. 通信控制- 28
  5. 测试仪出现- 3E
  6. 认证- 29
  7. 安全数据传输- 84
  8. 控制DTC设置- 85
  9. 事件响应- 86
  10. 连接控制- 87
  11. 按标识符读取数据- 22
  12. 按地址读取内存- 23
  13. 按标识符读取伸缩数据- 24
  14. 按周期标识读取数据- 2A
  15. 动态定义数据标识符- 2C
  16. 按标识符写数据- 2E
  17. 按地址写内存- 3D
  18. 清除诊断信息- 14
  19. 读取DTC信息- 19
  20. 按标识符控制输入输出- 2F
  21. 例程控制- 31
  22. 请求下载- 34
  23. 请求上传- 35
  24. 传输数据- 36
  25. 终止数据传输- 37
  26. 请求文件传输- 38

a.在defaultSession期间是否允许ResponseOnEvent服务是实现特定的。

b.安全的dataIdentifiers需要SecurityAccess服务,因此需要一个非默认诊断会话。

c.安全内存区域需要SecurityAccess服务,因此需要一个非默认诊断会话。

d. dataIdentifier可以在默认诊断会话和非默认诊断会话中动态定义。

e.安全例程需要SecurityAccess服务,因此需要非默认诊断会话。需要由客户端主动停止的例程也需要一个非默认会话。

重要-服务器和客户端必须满足8.7中规定的请求和响应消息行为。

10.2.2 请求消息

10.2.2.1 请求消息定义

表24指定了请求消息。

注:

  • #1 诊断会话控制请求诊断服务标识符,值为10
  • #2 子功能=[诊断会话类型],例如值为01

10.2.2.2 请求消息子功能参数$Level (LEV_)定义

SubFunction参数diagnosticSessionType被DiagnosticSessionControl服务用来选择服务器的特定行为。表25详细说明了可能的诊断会话的解释和用法。

指定以下SubFunction值(suppressPosRspMsgIndicationBit(位7)未显示)。

注:

  • 00: ISOSAEReserved。此值为本文档保留。
  • 01: defaultSession。
    • 此诊断会话启用服务器中的默认诊断会话,并且不支持任何诊断应用程序超时处理规定(例如,不需要TesterPresent服务来保持会话活动)。
    • 如果除defaultSession之外的任何其他会话在服务器中处于活动状态,并且defaultSession再次启动,则应遵循以下实现规则(也请参阅上面给出的服务器诊断会话状态图):
    • 服务器在发送了DiagnosticSessionControl阳性响应消息后应停止当前诊断会话,随后应启动新请求的诊断会话。
    • 如果服务器发送了一个diagnostic sessioncontrol阳性响应消息,如果客户端在诊断会话期间解锁了服务器,那么它应该已经重新锁定了服务器。
    • 如果服务器发送带有DiagnosticSessionControl请求服务标识符的否定响应消息,则活动会话将继续。
    • 如果使用的数据链路需要初始化步骤,则初始化的服务器将默认启动默认诊断会话。初始化步骤后,不需要将diagnosticSession设置为defaultSession的DiagnosticSessionControl。
  • 02: ProgrammingSession。
    • 这个diagnosticSession启用支持服务器内存编程所需的所有诊断服务。
    • 积极响应是在ECU切换到/从programmingSession之前还是之后发送,这是车辆制造商特有的。
    • 如果服务器在引导软件中运行programmingSession,那么programmingSession只能通过客户端发起的ECUReset(11)服务、sessionType等于defaultSession的DiagnosticSessionControl(10)服务或服务器中的会话层超时来保留。
    • 如果服务器在接收到DiagnosticSessionControl(10)服务且sessionType等于defaultSession时运行在引导软件中,或者发生会话层超时,并且在这两种情况下都存在有效的应用软件,那么服务器应该重新启动应用软件。本文档没有说明如何实现有效应用软件的重新启动的各种实现方法(例如,在ECU启动阶段执行ECU复位时,可以在启动软件中直接确定有效应用软件等)。
  • 03: extendedDiagnosticSession。这个诊断会话可用于启用所有诊断服务,以支持调整服务器内存中的“空闲速度、CO值等”等功能。它还可以用于启用诊断服务,这些服务与功能的调整没有特别的联系(例如,请参阅表23中的定时服务)。
  • 04: safetySystemDiagnosticSession。此诊断会话启用支持安全系统相关功能所需的所有诊断服务(例如安全气囊部署)。
  • 05 ~ 3F: isosaerreserved。此值由本文档保留,以供将来定义。
  • 40到5F:车辆制造商特定。这个范围的数值是保留给车辆制造商特定的使用。
  • 60 ~ 7E: systemSupplierSpecific。这个范围的值是为系统供应商特定的使用而保留的。
  • 7F: ISOSAEReserved。此值由本文档保留,以供将来定义。

10.2.2.3 请求消息数据参数定义

此服务不支持请求消息中的数据参数。

10.2.3 积极响应信息

10.2.3.1 正面响应消息定义

表26指定了积极响应消息定义。

注:

  • #1: 诊断会话控制响应SID,值为50
  • #2: 子函数=[诊断会话类型],值为00到FF
  • #3: #6: 会话参数记录[]#1 = [数据#1: 数据#4]

10.2.3.2 积极响应消息数据参数定义

表27指定了响应消息数据参数定义。

注:

  • diagnosticSessionType:该参数是请求消息中SubFunction参数的第6位到第0位的回显。
  • sessionParameterRecord:此参数记录包含服务器报告的会话特定参数值。sessionParameterRecord的内容在表28和表29中定义。

表28和表29定义了响应消息数据参数sessionParameterRecord的结构,该结构适用于在受支持的数据链路上实现此服务。

有关P2Server和P2*Server的更多详细信息,请参阅ISO 14229-2。

10.2.4 支持的负响应码(NRC_)

本服务应实施以下否定响应代码。表30记录了每个响应代码发生的情况。如果错误场景适用于服务器,则列出的否定响应应使用。

注:

  • 12:SubFunctionNotSupported(SFNS),如果SubFunction参数不支持,将发送此NRC。
  • 13:incorrectMessageLengthOrInvalidFormat(IMLOIF),如果信息长度错误,则应发送此NRC。
  • 22:conditionsNotCorrect(CNC),如果请求DiagnosticSessionControl的条件不满足,这个NRC将被返回。

10.2.5 消息流示例 diagnostics sessioncontrol - Start programmingSession

此消息流显示如何在服务器中启用诊断会话“programmingSession”。通过将suppressPosRspMsgIndicationBit (SubFunction参数的第7位)设置为"FALSE"('0'),客户端请求有一个响应消息。对于给定的示例,假设P2Server_max等于50 ms, P2*Server_max等于5 000 ms。
表31指定了diagnostics sessioncontrol请求消息流示例#1。

表32指定了DiagnosticSessionControl积极响应消息流示例。

UDS - 10.2 DiagnosticSessionControl (10) service相关推荐

  1. UDS之浅谈10服务

    一.服务概述 DiagnosticSessionControl(诊断会话控制)服务用于启用服务器中的不同诊断会话. 服务说明: ① 服务器中应该始终只有一个有效诊断会话 ② 服务器上电时应始终启动默认 ...

  2. 跟我学UDS(ISO14229) ———— 0x10(DiagnosticSessionControl)

    文章目录 前言 为什么需要有不同的诊断会话模式呢? 诊断请求发送 发送格式 诊断响应 正响应格式 负响应格式 前言 在UDS协议中,我们首先接触到的是诊断和通信管理功能单元(Diagnostic an ...

  3. gitlab 迁移、升级打怪之路:8.8.5-- 8.10.8 -- 8.17.8 -- 9.5.9 -- 10.1.4 -- 10.2.5

    gitlab 迁移.升级打怪之路:8.8.5--> 8.10.8 --> 8.17.8 --> 9.5.9 --> 10.1.4 --> 10.2.5 gitlab 数据 ...

  4. 微软正式发布Windows 10 2020年10月更新

    让大家等待多时的Windows 10 2020年10月更新终于来了,这也是今年微软为Win10准备的最后一个重大更新. Windows 10 2020年10月更新就是之前多次说道的Windows 10 ...

  5. ArcGIS Engine 项目10.1升级10.2

    一 10.1 到 10.2 ArcGIS Engine 项目,相同代码,从10.1升级10.2: 首先是VS载入项目时窗体上的控件会出现问题:然后,如下面图,即可: 看下引用,已经出了问题: 右击添加 ...

  6. 安装程序无法创建新的系统分区也无法定位现有系统分区_如何拥有一个 Windows 10 和 Debian 10 的双系统...

    在无数次劝说自己后,你终于做出了一个大胆的决定,试试 Linux.-- James Kiarie(作者) 在无数次劝说自己后,你终于做出了一个大胆的决定,试试 Linux.不过,在完全熟悉 Linux ...

  7. Java黑皮书课后题第10章:*10.26(计算器)修改程序清单7-9,接收一个字符串表达式,其中操作符和操作数由0到多个空格隔开

    第10章:*10.26(计算器) 题目 程序清单7-9 本题代码:大幅优化升级 题目 程序清单7-9 对代码进行了修改:原代码将"."认做乘号,修改后将"*"作 ...

  8. Java黑皮书课后题第10章:**10.25(新的字符串split方法)String类中的split方法会返回一个字符串数组,该数组是由分隔符分隔开的子串构成的

    Java黑皮书课后题第10章:**10.25(新的字符串split方法) 题目 代码 运行实例 题目 代码 public class Test25 {public static String[] sp ...

  9. Java黑皮书课后题第10章:10.21(被5或6整除)找出能被5或6整除的大于Long.MAX_VALUE的前10个数字

    Java黑皮书课后题第10章:10.21(被5或6整除)找出能被5或6整除的大于Long.MAX_VALUE的前10个数字 题目 代码 结果 题目 都在上面 代码 import java.math.B ...

最新文章

  1. cad 怎么显示块句柄_新手必看的CAD小技巧,老师傅精选汇总,三分钟教你学习用处多多...
  2. break和continue-continue代码演练
  3. ejb模式_EJB的完整形式是什么?
  4. android onscrolllistener判断到底部,判断RecyclerView是否滑动到底部
  5. thinkpad t460p恢复原厂系统以及设置的方式
  6. 软件测试第八次作业—— 缺陷管理(含缺陷管理工具的配置实验)
  7. SAP License:满足管理三重属性 ERP发展专业化是方向
  8. [转载] 使用Python中的NLTK和spaCy删除停用词与文本标准化
  9. DotNetBar的初步使用
  10. php闭包 js闭包,JavaScript闭包与PHP闭包的区别是什么?
  11. 预充电电路工作原理_变频器整流回路 为什么要预充电电路-工业支持中心-西门子中国...
  12. android webview 获取cookie,Android WebView 之Cookie
  13. Lenovo y50-70 1080P 10.15.2 修改驱动 更新驱动
  14. Shell中uniq命令的用法
  15. ros2 launch 用法以及一些基础功能函数的示例
  16. Vmware 8里运行冒险岛097——提取Vmware Tools源文件
  17. 空间日志html,30条空间日志个性签名
  18. 证明:不同特征值对应的特征向量线性无关
  19. 如何实现类似锚链接的导航联动效果
  20. python中星号怎么打出来_Python中的星号:用途及使用方法

热门文章

  1. div阻止点击穿透+实现点击穿透
  2. MT9V034六个寄存器的配置
  3. 内存正确性测试工具 memtester
  4. 【黑苹果升级到ventura13】 Y7000P-2018升级到 ventura13
  5. 2022个人秋招总结
  6. 组件化攻略 - 代码物理隔离
  7. 一花一世界 一树一菩提
  8. 解决无线网卡断线两绝招!
  9. 职称计算机考试题库word2003,2016职称计算机考试Word2003练习试题
  10. 自然数,有理数,无理数,实数,整数