统一诊断服务 (Unified diagnostic services , UDS) (五)

这篇文章介绍Stored Data Transmission (存储数据传输,用于操作DTC)这一类诊断服务,涉及到两条诊断命令,分别是:

0x14:ClearDiagnosticInformation

0x19:ReadDTCInformation

这两条服务用于操作存储在ECU中的DTC,使用频率很高,而且它们比较好地体现了“诊断”两个字的含义。

0x14:ClearDiagnosticInformation

这条诊断命令的格式比较简单,用法也很好理解,即删除存储在ECU中的DTC。

0x14诊断命令请求的格式

第一个字节就是SID了,后边的三个字节用于标识将要被删除的DTC种类,UDS规定用FF FF FF表示所有种类的DTC,由厂家自定义代表Powertrain、Chassis、、Body、Network Communication等种类DTC的值。

比如,14 FF FF FF这条指令表示的就是删除掉ECU中的所有DTC。ECU只需要返回一个0x54表示成功执行即可。

0x19:ReadDTCInformation

这条指令用于读取存储在ECU中的DTC,它的格式如下

0x19诊断命令请求的格式

0x14诊断命令请求的格式

0x19服务的sub-function代表了各式各样读取DTC的方法,UDS给19服务的sub-function从0x00到0x19进行了明确定义,我只使用过其中4种,下面对我用过的这些进行介绍,如果大家对其他的感兴趣,可以查阅ISO 14229的定义。

sub-function = 0x01 (reportNumberOfDTCByStatusMask)

sub-function = 0x01用于读取符合特定条件的DTC数量,此时parameter为一个byte的Mask,用于与DTC的Status进行“与”运算,而ECU返回的则是"与"运算之后结果不为0的DTC的数量。DTC的Status用一个byte表示,其中的8个bit分别代表DTC的不同状态,比如,bit 0 表示这个DTC是active的还是passive的,bit 4表示这个DTC是否已经被confirm了,如果DTC的状态是confirm,则说明该DTC已经被ECU存储下来了。

比如:19 01 08这个命令的用途,就是读取所有状态为confirm的DTC的数量。

sub-function = 0x02 (reportDTCByStatusMask)

sub-function = 0x02用于读取符合特定条件的DTC列表,此时parameter仍然为一个byte的Mask,用于与DTC的Status进行“与”运算,而ECU返回的则是"与"运算之后结果不为0的DTC列表。

比如19 02 01这个命令的用途,就是读取所有状态为active的DTC的数量。此时ECU返回的格式应该是59 02 01 XX XX XX 01 YY YY YY 09......。返回的DTC列表中的每个条目为4个字节,前三个字节用于标识DTC,比如 XX XX XX,最后一个字节用于标识DTC状态,比如01,表示DTC是active的,09表示DTC是active且confirm的。

sub-function = 0x06 (reportDTCExtDataRecordByDTCNumber)

sub-function = 0x06用于读取某个DTC及其相关的环境数据,此时parameter为4个byte,前三个byte用于标识我们要读取的DTC,第四个byte用于标识要读取的环境数据的范围,UDS规定使用FF来表示读取所有的环境数据,各厂家可以要根据自己的需求定义其他的值来代表要读取的环境数据的范围。环境数据包括DTC状态,优先级,发生次数,老化计数器,时间戳,里程等,厂家还可以根据自己的需求定义一些此DTC产生时的测量数据。

比如 19 06 XX XX XX FF就表示读取 XX XX XX这个DTC的所有环境数据,ECU的返回值应该是59 06 XX XX XX AA BB CC DD.....,其中AA BB CC DD...代表的就是XX XX XX这个DTC产生时所一起存储的环境数据。

sub-function = 0x0E(reportMostRecentConfirmedDTC)

sub-function = 0x0E时,不需要parameter。0x0E表示,要求ECU上报最近的一条被置为confirm的DTC。我在《统一诊断服务 (Unified diagnostic services , UDS) (三)》一文中介绍过0x86服务,sub-function = 0x0E的19服务通常被作为参数传递给86指令,要求ECU在发生DTC存储的时候进行自动上报,即19 0E这两个字节的指令被嵌入到86服务的命令中。这条命令在开发阶段会用到,比如验证某个故障路径是否生效。

 

关于处理DTC的UDS服务就介绍这么多,如有疑问欢迎留言交流指正。

  • 4
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
恒润科技UDSUnified Diagnostic Services)统一诊断服务是一种用于汽车电子系统诊断和维修的通信协议。这种协议是在汽车行业普遍采用的诊断标准,用于实现车辆故障诊断、故障码读取和清除、参数设置以及其他诊断功能。通过UDS协议,技术人员能够与车辆的电子控制单元(ECU)进行双向通信,获取故障码和实时数据,以便准确诊断和解决汽车故障。 恒润科技的UDS统一诊断服务是一种集成化的解决方案,旨在提供高效、准确、全面的汽车诊断服务。它包括诊断软件、硬件设备和相关技术支持。用户可以通过特定的诊断工具连接到车辆的诊断接口,然后使用恒润科技提供的软件进行诊断和维修操作。 通过恒润科技的UDS统一诊断服务,用户可以对车辆进行全系统诊断,包括发动机、变速器、刹车系统、空调系统等。用户可以读取车辆的故障码,对问题进行定位和分析,并进行清除。此外,还可以读取实时数据,以了解车辆各个部件的工作情况,为故障诊断提供更准确的信息。 恒润科技的UDS统一诊断服务还支持特殊功能的执行,例如重新编程ECU、重置适应值、激活执行器等。这些功能可以帮助用户对车辆进行更深入的维修和调整,提高诊断效率和维修质量。 总而言之,恒润科技的UDS统一诊断服务是一种功能全面、操作简便、高效可靠的汽车诊断解决方案。它能够帮助汽车技术人员快速诊断和解决车辆故障,提供更好的维修服务

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值