虹科技术分享 | LIN总线译码功能与LIN控制交流发电机(二)
引入
上一期,我们详细分享了LIN总线的结构、译码方法、休眠与唤醒过程。
如何借助串行译码分析总线故障?常见的方法包括寻找未在通信中的模块、查看响应是否缺失等等。但能否从译码结果中,进一步提取LIN线发送的信息?答案是肯定的。
这一期,我们就将结合LIN总线控制的交流发电机,探讨提取电压设定值变化曲线、获得更多故障标志提示的方法。
确认LIN总线配置的版本
尽管关于LCF(LIN的配置文件)的信息有限,但在LIN控制交流发电机方面,译码数据具有一些非常显著优势。我们可以将译码数据导出,进行更多的分析。
以下的探究是结合 NXP(恩智浦半导体公司) 提供的资料表进行的。共有 11 种配置可以用来定义发电机的收发信息。这些配置是基于用于传输和接收数据包的 ID。
这些配置包括——
图1 发电机配置信息
注:资料表源文件可私聊助教获取(全英版本)
由于我们在这个点对点的网络中通常只有两个节点,因此可以利用 Pico 内置的译码功能识别交流发电机所使用的配置。细心的你可能会注意到,上表中的 ID 在不同版本中是重复的。例如LIN1 Version A使用的 ID 为 29、11、12 和 15,LIN1 Version B 也使用 29、12 和 15,而 LIN1 Version D 则包含 29、11 和 12。
那我们如何确定应使用哪个版本?一个简单的方法是对捕获的数据进行译码。译码功能会直接显示交流发电机和ECM的ID,然后我们可以将其与上表进行关联。
图2 译码确认配置的版本
从上述译码表可以看出,存在两个不同的ID:11和29。我们将其与LIN版本表关联,发现有两个可能的选项:LIN 1 Version A 和 LIN 1 Version D。
在查看AR6000(NXP的一个芯片)数据手册时,可以看到这两个版本的信息配置,虽然在接收(Rx)和发送(Tx)格式上存在一些差异,但也有一些相似之处,我认为对于故障诊断最重要的两个方面是:用于电压设定值的Rx,以及用于诊断标志(指示故障)的Tx。
数据帧的数据结构
在我们开始更详细地分析这些数据的含义之前,首先应了解这些数据帧的结构。对于接收(Rx)而言,我们有4个字节的数据,其中的位根据其所代表的内容而具有不同的用途。
图3 接收(Rx)的数据帧结构
A. 电压设定值
B. 负载响应斜坡时间
C. 负载响应截止转速
D. 激励电流限制
E. 变量,取决于是否存在 Tx15
F. “盲区”(详细信息请参见 AR6000 文档)
G. 高温下的电压限制
H. “盲区抑制”(详细内容请参见 AR6000 文档)
注:资料表源文件可私聊助教获取(全英版本)
LIN 1 Version A 与 Version D 的区别在于,Version D 不使用字节 4 中的任何数据,这在某些方面有助于简化译码。从上述内容来看,在故障诊断中,我们可以有效利用两组数据。如果我们知道电压设定值应该是多少,就可以将其与交流发电机的实际输出进行比较。
根据我们对6种不同帧的学习,我们几乎可以确定,上述格式的唯一实现方式是通过使用零星帧。
概念回顾:零星帧模式下,主节点通过响应自己的报头来充当从节点。这允许从节点"看到"主节点发送的数据并可以使用它。
由于我们通常只有一个从节点,也就是交流发电机,因此上述情况是成立的。
图4 ID 0x29与ID 0x11的数据帧
例如上面的数据帧。ID 0x29(Rx接收)由主节点发送,然后主节点用数据字段 1F A5 1F 00 来响应,提供电压设定值的信息。随后,主节点发送 ID 0x11(Tx发送),但此时请求从节点提供信息,从节点用数据2A 02进行响应。
为了全面理解 ID 0x29 和 ID 0x11 中的数据,我们必须将十六进制值转换为二进制。同样可以通过译码功能实现。只需要在显示设置界面,将【表格显示格式】设置为【二进制】即可。
图5 设置译码的表格显示格式为二进制
图6 表格显示格式更改为二进制
关于ID 0x29
利用前面提到表格所描述的 ID 0x29 的位分配方式,最终得到如下内容——
图7 ID 0x29的数据结构
仅仅观察电压设定值,我们知道它由第一个字节的前6位组成,上述为111110。在AR6000文档中的第24页,有查找表可用来将这些值转换为可读的数值。上述的111110 等同于16V,即电压设定值为16V。
图8 电压设定值参考表
为了获取电压设定值的变化曲线图,我们将转换为二进制的译码数据表导出,使用Excel打开。
图9 导出二进制的译码数据
同时参考AR6000文档中的第24页的数据表,并且使用Excel内置的MID函数和VLOOKUP函数进行计算,最终得出电压设定值的变化曲线图。
图10 计算得到的电压设定值变化曲线
注:计算过程此处不做展开分享,可私聊助教获取完整计算步骤
关于ID 0x11
该 ID 包含从交流发电机返回到主节点的数据。响应中的数据只有2个字节,但包含一些非常有用的信息。再次参考AR6000文档,如前所述,有两个选项:LIN 1 Version A 和 LIN 1 Version D。对于ID 0x11,有两个版本,取决于是否传输温度。其帧结构如下:
图11 发送(Tx)的数据帧结构
A. 高温诊断标志
B. 机械故障诊断标志
C. 电气故障诊断标志
D. 激励电流 PWM 的占空比值
E. 测量的激励电流和/或温度测量值
F. LIN 错误的诊断标志
G. LIN 通信超时的诊断标志。
如你所见,此帧中包含一些非常有用的项目,利用前面提到的 MID 函数,我们可以将位分离出来,从而获取数据字段中的数值。
图12 经过处理后的数据字段
可以看到,高温诊断标志为0,机械故障诊断标志为1,电气故障诊断标志为0。这意味着,这台交流发电机可能存在机械故障。
利用这些标志,我们就可以更好地理解为何交流发电机会失效或导致仪表盘上的电机控制灯(EML)亮起,即便故障码并不特别有用。通过观察在 LIN 错误和 LIN 超时条目下可能存在的标志,可以帮助理解为何即使更换了新交流发电机仍可能引发问题。
注:本文中,我们多次提及 AR6000 文档,毫无疑问,这份文档是帮助理解 ECM 与交流发电机之间通信非常全面的资料。当然,该文档中包含的内容也远不止上述文章所提及的。但请注意,这只是一个信息来源。可能在某些交流发电机中使用了其他 LIN 芯片,这些芯片可能采用了略有不同的文档版本。如需资料表源文件,可私聊助教获取(全英版本)