记:从零开始讲解UDS(二)——传输层帧格式

7 篇文章 11 订阅
6 篇文章 26 订阅

0x00 UDS概述

UDS(University Diagnostics System通用诊断系统)是一个在整车系统上经常使用的设备维护协议。其主要遵循的法规为:ISO-15765、ISO-14229,其主要协议模式脱胎于OBD(On-board diagnostics)诊断协议。经常应用在整车的各种ECU上面。是一个在整车ECU应用层开发经常使用的也是较为复杂的协议层之一。
本篇文章主要介绍了UDS关于反馈码与故障码相关的简要介绍。阅读本文之前,您需要了解的一些前置技能有:

技能名称技能熟练度技能教程链接
CAN总线熟悉暂无
数据类型熟悉暂无
OBD了解暂无
整车缩写了解暂无

0x01 反馈码的简要介绍

反馈码,也就是ECU回复给诊断仪的状态码,也就是某些情况在诊断仪中看到的报错信息或者正确提示(当然更多时候是看不到正确提示的)。其实ECU与诊断仪更像是典型的C-S关系,也就是ECU=服务器、诊断仪=客户端。因此,反馈码也就相当于服务器对于客户端访问方式的一种回复,故此,我将其称为反馈。

0x02 反馈码的分类

反馈码主要分为两类:正反馈、负反馈。
正反馈顾名思义,就是正常的情况下,ECU检测当前诊断仪在当前状态当前应用等级下可以完成当前指令,执行完当前指令之后,进行的一种回复。此回复主要作用在与让客户端可以确认当前指令的执行状态。
负反馈应该是相对于正反馈的翻译而来(negative),但是我觉得错误反馈反而更加的合乎逻辑,就像Master和Slave如果硬翻译也许就哲学了……
负反馈主要是ECU发现当前诊断仪传输的数据异常或执行指令异常。需要操作诊断仪的用户进行相关操作或者仅为提示。也是我们日常开发时经常需要处理的地方。
这里仅讲解了反馈码的大致使用,如果需要详细的使用与介绍,我会放在应用层相关的实现上介绍。

0x03 正反馈

正反馈的反馈头格式较为固定,主要是跟随当前的指令变化,并在接收到的指令位数(一般为8位)的第六位置一,例如,ECU接收到当前指令为0x10,其正确执行后,即可返回0x50的指令正反馈,而后的数据位一般为1,也可标志当前的状态,以车厂释出的协议为准。

0x04 负反馈

负反馈的格式较多,位数也不固定1,但基本上不会超过一帧数据。而报错的状态及其繁琐,但是总结下来无外乎一下几点:

报错类型错误原因(大多数情况下)解决方式
超出指定长度对于指令位数不熟悉或指令使用不正确仔细检查当前定义的协议中对于长度限制
填充数据错误一般在移植时会出现当前问题仔细检查当前是否按照整车厂协议要求填充无用帧数据
不再当前应用等级开发时未确认当前应用是否在需要的等级下仔细检查当前指令分级是否出现问题

负反馈的反馈头一般为0x7F开头(八位全为1),而后面的数据组合也较为分散,但是基本符合上表中的报错位置,再者就是某些特别的指令所特有的错误反馈(0x27的校准错误)
需要注意的是,这些负反馈仅会在当前帧格式正确的时候才会正常返回。如果帧格式本身就出现错误,当前指令是不会有错误异常的。避免了在特定条件下的异常错误反馈。

0x05 空闲帧数据位

空闲帧数据位是UDS必然的产物,就是在某些情况下,单一帧发送数据已经足够并且没有使用完一帧数据,则这一帧数据剩下的位置就是空闲帧的数据位,也是ECU需要处理的一部分。一般情况下,空闲帧会被强制填充为指定数据例如0x17或者其他的,这个具体根据各个车厂进行变化。而理论上来讲,填充与不填充的时候,数据的传输速度相差最大30%。相信这也是为什么需要将其填充为指定数据的原因之一。至于其中原理,我会在从零开始讲解CAN总线(二)(还没写)中讲解。

0x06 总结

其实,UDS有了较为严谨的传输数据类型定义,所以对于传输层相关的帧格式的设计就可以十分简明轻快,也十分方便理解。下面我将对UDS各个模式的特性进行相关说明,如果您发现了我有什么不对的地方,欢迎相互交流。

0x07 后记

后面还会将其进行扩展,将一些各层的详细描述、模式的相关的切换方式、反馈相关的流程与错误记录。敬请期待~

更多

本文首发自 记:从零开始讲解UDS(二)——传输层帧格式-我的博客,更多文章可进入我的博客详查。


  1. 这里的位数单指有效数据位,一般UDS为了稳定性和可靠性,会规定当前帧数据DLC为8 ↩︎

  • 3
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

GreenDreamer

如果帮到了你,还望请我喝杯咖啡

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

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

打赏作者

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

抵扣说明:

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

余额充值