|
故障现象 一台Manitou工程机械,客户反馈DEF(柴油机尾气处理液)油箱即使加注到无法再加的状态,设备仍显示DEF 液位为空,系统中还存有故障代码。由于这个DEF液位过低提示,整台机器的功率被自动降低,严重影响了正常作业。 面对这种情况,传统维修思路通常是直接更换液位传感器。但这个部件的价格高达上万块,如果诊断错误就会造成巨大损失。更关键的是,如何确保更换昂贵的部件真的能解决问题? 为此,我们将使用虹科Pico汽车示波器测量相关波形,排查故障的真正原因。 故障诊断 诊断思路确定 PicoScope 7 中自带的J1939译码功能,可以帮助我们翻译和分析CAN总线上的数据,并借助PGN(参数组编号)和ID进行过滤。 根据技术文档,液位传感器使用的ID3是0xA3,ID3(source address)即指CAN J1939的ID源地址。有了这个关键信息,我们就可以使用译码功能来捕获和分析相关数据。 注:文档中的传感器和Manitou上搭载的并不是同款,但J1939标准的DEF液位相关信息具有通用性。 总线译码与过滤 首先使用虹科Pico汽车示波器,采集到DEF液位传感器所在的CAN总线的信号,并利用串行译码功能进行J1939协议译码。译码结果如图1所示。 图1 J1939协议译码结果 如图2,接下来进行过滤。通过添加ID3为0xA3的过滤器,我们就可以去除我们不感兴趣的数据,方法如下: 1.点击译码结果上方的【添加过滤】按钮,选择您想要过滤的参数。 2.选择【ID3】过滤。 3.操作符选择默认的【包含】。 4.参数输入【A3】,即你希望软件筛选的内容,点击添加。 图2 添加ID3为0xA3的过滤器 如图3,现在我们就排除了所有无关的数据,只关注液位传感器发送的信息即可。 图3 过滤后的数据 通过过滤,我们很快就发现,数据中包含多个不同的ID2(PGN),即参数组编号。参考技术文档,我们找到了液位相关的PGN编号。 图4 技术文档中液位传感器相关的PGN编号 接下来,我们添加第二个过滤器,按PGN进行过滤。 根据之前的技术资料,PGN是CAN消息ID中间的2个字节。在我们的案例中,FE56就是我们要找的液位PGN。 图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 技术文档中的相关资料 图7展示了总线数据中,前两个字节的位位置(bit position)分配方式。物理液位数据的起始位置是16,这就意味着我们需要使用第3和第4个字节的数据,其排布的逻辑和前两位也是相同的。 图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 正常机器的相关波形与译码结果 问题解决 通过一系列的数据分析和对比,我们有充分的证据证明:故障机器的液位传感器读数确实是错误的。基于这个准确的诊断结果,我们更换了液位传感器,故障未再出现,故障解决! 案例总结 随着总线的应用越来越广、愈来愈深,如今很多传感器的详细数据已无法直接读取,如:微尘传感器、液位传感器等。而通过总线译码,对照传感器相关技术文档,我们就可以破译这些隐藏的信息,进一步识别潜在的问题,实现精准维修!
|