Pico汽车示波器论坛(广州虹科)

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2|回复: 0

Manitou DEF 液位传感器诊断:CAN总线J1939协议译码与分析

[复制链接]
发表于 4 小时前 | 显示全部楼层 |阅读模式
故障现象
一台Manitou工程机械,客户反馈DEF(柴油机尾气处理液)油箱即使加注到无法再加的状态,设备仍显示DEF 液位为空,系统中还存有故障代码。由于这个DEF液位过低提示,整台机器的功率被自动降低,严重影响了正常作业。
面对这种情况,传统维修思路通常是直接更换液位传感器。但这个部件的价格高达上万块,如果诊断错误就会造成巨大损失。更关键的是,如何确保更换昂贵的部件真的能解决问题?
为此,我们将使用虹科Pico汽车示波器测量相关波形,排查故障的真正原因。
故障诊断
诊断思路确定
参考DEF液位传感器工作原理手册,DEF液位传感器的液位数据通过CAN总线传输,遵循J1939标准,没有终端电阻,标准传输速率为250 kbit/s。
PicoScope 7 中自带J1939译码功能,可以帮助我们翻译和分析CAN总线上的数据,并借助PGN(参数组编号)和ID进行过滤。
根据技术文档,液位传感器使用的ID3是0xA3,ID3(source address)即CAN J1939的ID源地址。有了这个关键信息,我们就可以使用译码功能来捕获和分析相关数据。
注:文档中的传感器和Manitou上搭载的并不是同款,但J1939标准的DEF液位相关信息具有通用性。
总线译码与过滤
首先使用虹科Pico汽车示波器,采集到DEF液位传感器所在的CAN总线的信号,并利用串行译码功能进行J1939协议译码。译码结果如图1所示。
图1 J1939协议译码结果.png
1 J1939协议译码结果
如图2,接下来进行过滤。通过添加ID30xA3的过滤器,我们就可以去除我们不感兴趣的数据,方法如下:
1.点击译码结果上方的【添加过滤】按钮,选择您想要过滤的参数。
2.选择【ID3】过滤。
3.操作符选择默认的【包含】。
4.参数输入【A3】,即你希望软件筛选的内容,点击添加。
图2 添加ID3为0xA3的过滤器.png
2 添加ID3为0xA3的过滤器
如图3,现在我们就排除了所有无关的数据,只关注液位传感器发送的信息即可。
图3 过滤后的数据.png
3 过滤后的数据  
通过过滤,我们很快就发现,数据中包含多个不同的ID2(PGN),即参数组编号。参考技术文档,我们找到了液位相关的PGN编号。
图4 技术文档中液位传感器相关的PGN编号.png
4 技术文档中液位传感器相关的PGN编号
接下来,我们添加第二个过滤器,按PGN进行过滤。
根据之前的技术资料,PGN是CAN消息ID中间的2个字节。在我们的案例中,FE56就是我们要找的液位PGN。
图5 过滤出ID2(PGN)为FE56的数据.png
5 过滤出ID2(PGN)为FE56的数据
经过两层过滤后,只剩下2条报文了,现在处理起来就会轻松很多。
观察这些数据,我们发现前4个字节的数值在不断变化。结合缓冲区数据包的间隔为 1 秒,我们还可推断数据传输速率为 1 秒 / 次。
数据转化与分析
根据技术文档的说明,DEF液位百分比信息从第0个字节开始,占用8位(即1个字节)。在我们采集的数据中,第一个数据包的这个字节值是11(十六进制)。将十六进制的11转换成十进制,得到17。
但这并不是最终的液位百分比,需要根据技术文档提供的转换公式进行计算。文档显示,转换需应用0.4的缩放因子(图4),没有偏移量。
即DEF相对于油箱总容量的百分比为:17 × 0.4 = 6.8%。
但这里出现了一个问题:这个6.8%到底表示油箱实际油量占比,还是表示油箱剩余空间占比?考虑到仪表盘显示液位为空,我们可以推测百分比越低,液位就越低。为了验证这个推测,我们还需要分析物理液位传感器的数据。
物理液位测量可以通过多种方式实现,比如超声波或浮子式来测量油箱底部到液面的高度。由于我们不确定Manitou使用的是哪种方式,所以我们将根据技术文档中的信息进行计算,以进一步验证。
如图6,根据文档中的信息,物理液位数据的位长度是16位(2个字节),起始位位置是16。
图6 技术文档中的相关资料.png
6 技术文档中的相关资料
7展示了总线数据中,前两个字节的位位置bit position)分配方式。物理液位数据的起始位置是16,这就意味着我们需要使用第3和第4个字节的数据,其排布的逻辑和前两位也是相同的。
图7 位位置的分配方式.png
7 位位置的分配方式
在我们的数据中,第3和第4字节是55 0F。根据J1939标准,我们需要将字节顺序翻转,变成0F 55,然后将其转换为十进制。即0F55 = 3925。再应用技术文档中的0.1缩放因子(图6),可以得到:3925 × 0.1 = 392.5mm
验证与对比
这个392.5mm(约40厘米)的读数,远未到达油箱底部。但我们如何确定,这是油箱底部到液面的距离,还是液面到油箱顶部的距离呢?已知故障机器的油箱是满的,无论这个40cm指向哪一种情况,都说明了这个传感器组件存在故障——这个是数据无论如何,都是错的。但我们是否还能收集更多证据来证明这一点?有没有办法确定这个40cm究竟指向什么?
有的,方法也很简单,找一台正常的设备进行验证即可。
于是我们找到了一台,没有故障且DEF油箱在仪表盘上显示为满的机器。捕捉到其CAN总线数据,并使用同样的方法进行译码、过滤和计算:
第一个字节的十六进制值是FA。使用相同的转换方法:0xFA = 250(十进制),250 × 0.4 = 100%。很显然,这表明这个数值指向的是油箱实际油量占比。当然这也验证了,我们的转换方法是正确的。
对于物理液位数据,正常机器显示的是4B 00,翻转后变成004B,转换为十进制是75,再乘以0.1得到7.5mm。显然,这指向的是液面到油箱顶部的距离。
图8 正常机器的相关波形与译码结果.png
8 正常机器的相关波形与译码结果
问题解决
通过一系列的数据分析和对比,我们有充分的证据证明:故障机器的液位传感器读数确实是错误的。基于这个准确的诊断结果,我们更换了液位传感器,故障未再出现,故障解决!
案例总结
随着总线的应用越来越广、愈来愈深,如今很多传感器的详细数据已无法直接读取,如:微尘传感器、液位传感器等。而通过总线译码,对照传感器相关技术文档,我们就可以破译这些隐藏的信息,进一步识别潜在的问题,实现精准维修!



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|Pico汽车示波器论坛(广州虹科)

GMT+8, 2026-4-8 22:17 , Processed in 0.204882 second(s), 27 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表