[行业规范] 漫谈UDS协议之Service 83

[复制链接]
查看710 | 回复0 | 2022-8-17 22:17:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册 |

×
今天是2022年八月14日,时间犹如白驹过隙,不经意间2022年已过去三分之二。工作已慢慢熟悉并深入进行,生活也在一步一步向前走,只有疫情像个调皮的汪星人,时不时来骚扰正常的生活。
老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师:

要继续调整心性,安静读书,一步一步按计划完成工作,然后就可以更加幸福。这个道理真简单,但是我从没有见谁做到过。


对于自己,无人问津也好,技不如人也罢,自己需要做的就是尝试安静下来,去做自己该做的事,而不是让内心烦躁、焦虑,毁掉自己本来就不多的热情和定力。

Return to today's topic!
在车载诊断范畴,应用到的协议(应用层)如下:
car-4339879.jpg
-> ISO 14229
ISO 14229协议在业界应用最广,主要是面向OEM的诊断需求做功能实现。现阶段有2006/2013/2020三个版本。每个版本之间多少有些不同,比如在功能寻址情况下,如果ECU返回NRC 11/13/7E/7F NRC,2006版UDS协议需要响应,而2013/2020版UDS则不需要响应。目的可以认为降低总线负载。
2020版UDS协议,由于以太网引入到车载网络中,带来了远程诊断、刷写和远程数据采集(特别是应用于ADAS领域),不可避免会涉及到信息安全,因此最新版协议增加了Service 29,自己以前文章也做了简单介绍,后续再增加其描述深度:
增加了一个Service 29,但是个数还是26个服务,因此对应也删除了一个服务,这里留个彩蛋,文章末尾告知那个服务在2020版UDS协议删除了!😄
UDS协议包含服务如下:
d951e9cd-43e7-4315-8b8b-4c8070e76f8b.png
f9e84243-0dd7-4b87-a4d9-abedc4db490d.png
-> ISO 15031
该协议主要应用场景是排放,因为与环境密切相关,因此具备法律效应(具有强制执行性)。包含服务在如下文章有简单介绍:
链接
-> ISO 27145
在传统燃油车软件架构中,UDS和OBD II是属于不同协议栈。业界常用的通过配置工具生成代码协议栈的输入文件一般也是分开,UDS是一个诊断数据库,OBD排放相关的是一个数据库。这样带来不便,对于动力域相关的控制器(ECU),需要综合两个共同实现。
现阶段有通过ISO 27145来实现两者共同功能。在OBD中也是通过0x01-0x09来读取ECU相应状态信息,有自属信息也有对应的故障信息(DTC、冻结帧等)。因此可以采用Service 14/19/22/31来实现0x01-0x09服务功能,达到整个协议一致性。
在以往时间(从2021年开始),自己慢慢将UDS协议中26个服务中大多数常用的服务做了简单汇总:
链接:
接下来会将剩余不常用服务补齐,后续随着国内电动车崛起,我国的电动车规范将是业界规范,因此以往一些不常用的服务,也可以作为功能补充点来实现。
本文简略分享下UDS Service 83.
Service 83(Access Timing Parameter)主要用于在通信链路处于活动状态期间读取和更改通信链路的默认时间参数。此服务的使用较为复杂,取决于Server端的能力和数据链路拓扑。每一个诊断回话中只支持一个扩展时序参数集,由于Server端支持不同的扩展时序参数集,建议将该服务用于物理寻址方式请求。
建议使用一下系列服务:
-> Diagnostic Session Control (diagnostic Session Type);
-> Access Timing Parameter (Read ExtendedTimingParameter);
-> Access Timing Parameter(Set Timing Parameter To Given Value)
对于需要Server发送响应的情况,Client端和Server端应在Server端发送Access Timing Parameter肯定响应消息后激活新的计时参数设置。
如果不影响响应消息,Client端和Server端在发送/接受请求消息之后激活新的计时参数。成功切换到另一个或相同的回话模式后,比如Diagnostic Session Control、ECU Reset服务或会话计时超时,Client端和Server端将其计时参数重置为默认值。
Service 83(Access Timing Parameter)为client访问Server时间参数提供了四种不同模式:
通过子服务作为载体实现:
   062ae95c-5afa-4325-a339-62f2c972b685.png
b60af344-d332-462f-8e91-cbd8cf3aaa18.png
8c1d5f33-bd21-4d35-8302-85482434ed77.png
df36110e-9abf-4f11-a8e3-e970d3c361d1.png   
1、 Read Extended Timing Parameter Set;
当Server端(ECU)收到Subfunction = Read Extended Timing Parameter Set时,Server端读取扩展时序参数集(ECU能够支持的参数值),如果对时许参数集访问不成功,Server(ECU)返回否定响应以及对应的NRC(否定响应码)。该子服务为当前激活的诊断会话提供一组额外的定时参数。
2、 Set Timing Parameter To Default Values;
当Server端(ECU)收到Subfunction = Set Timing Parameter To Default Values时,Server(ECU)应将所有定时参数改为默认值,并将默认事件参数变成激活状态之前,发送至带有事件参数的肯定响应中。如果处于其他原因,定时事件参数不能更改为默认值,Server应当维持当前会话模式的事件参数并发送否定响应以及对应的NRC。
clematis-7336249.jpg
3、 Read Currently Active Timing Parameters;
当ECU收到请求为Subfunction = Read Currently Active Timing Parameters时,Server端(ECU)应该读取当前使用的事件参数值。
若对定时参数访问成功,ECU给与对应带有时间参数的肯定响应。
若出于其他原因,对当前使用的定时参数的访问读取不成功,则Server端(ECU)回应相应NRC的否定响应。
4、Set Timing Parameter To Given Values;
Server端在接受到Subfunction = Set Timing Parameter To Given Values时,Server端检查当前条件下是否可以更改时间参数,如果条件有效,Server端执行所有必要的操作用于更改时间参数值,并在新的时间参数激活之前发送对应的肯定响应。
如果由于某种原因,时间参数值不能更改,Server会维持当前时间参数值。
如上是关于Service 83简略介绍,这里揭晓彩蛋。就是Service 83在最新版的UDS协议中被剔除。哈哈!!!

"您的鼓励,是我前进的动力"
还没有人打赏,支持一下
车研会员,开心每一天!
您需要登录后才可以回帖 登录 | 立即注册 |

本版积分规则