当前位置:网站首页>SENT协议译码的深入探讨

SENT协议译码的深入探讨

2022-07-05 12:12:00 全栈程序员站长

大家好,又见面了,我是你们的朋友全栈君。

作者:Ben

在工作期间,我有机会仔细地研究现代车辆上的一些最新传感器技术。虽然这些特殊的传感器已经存在一段时间了, 但是SENT技术越来越多地出现在车辆中。在汽车论坛中,我发现有关使用这些传感器的问题和讨论有所增加。这些现象促使我去研究如何利用虹科Pico示波器从这些传感器中获得尽可能多的信息。

我不会在SENT协议上花费太多时间,因为网络上有很多关于该协议如何工作的资料。但是,我会简单介绍一下这个网络。

SENT代表单边半字节传输,并遵循J2716标准。它是低成本且单向的(仅一个方向),这意味着传感器只能发送数据。SENT传感器与其他传感器的不同之处在于,可以通过一根导线“发送”多个数据。例如,一个SENT传感器可以使用一根导线同时发送压力和温度测量值。这使其成本低廉,并减少了布线需求,而这正是制造商一直想要做的。这意味着您很可能会看到MAF传感器只有三根线,当需要测量时,会有一个5V电源线,一个GND和一个信号线。

如上所述,SENT可以传输多个数据,它可以通过从FAST消息中取出的“半字节”创建SLOW消息来实现此目的。要建立一条SLOW消息,它需要多条FAST消息。这里重要的一点是,可以使用PicoScope 6 Automotive软件中的串行译码功能对这两个消息进行译码。

那么,SENT数据包是什么样子的呢?

图1

如图1所示,SENT数据包很容易被误认为是一个脉宽调制信号(PWM),这是因为它的电压为0-5V,工作周期在不断变化。在本文中您可能还注意到,SENT似乎还存在反转信号。这不是故意的,这只是发送协议的另一个特征,信号的极性可以改变,但数据保持不变。

图2

我将介绍如何设置译码器的参数,但是为了让大家都能看到SLOW信号是如何构成的,我已经在提前设置好了译码器。由图2可见,组成一个SLOW消息需要几个FAST数据包。请注意这一点,因为SLOW消息包含与传感器相关非常有用的信息。但是请注意,为了确保您采集到所有数据,通常需要花足够长的时间捕获信号波形。如果我们继续使用上面的波形,最实际的做法是先从SLOW译码器开始。

图3

单击工具>串行译码>创建> SENT Slow

我建议您首先从SLOW消息开始的原因是,通常您可以在此数据中找到有关传感器的信息,这是设置SENT Fast译码器所必需的,比如传感器的类型。为了完成译码,软件将根据所选通道自动设置阈值和滞后量。您会注意到该信号并不是“完美的”信号,存在一些干扰。您可以使用通道选项中的低通滤波器来“清除”干扰信号,我发现300 kHz的过滤效果很好。您也可以自定义设置电压阈值以及滞后量,下面的设置是在低通滤波器被激活后完成的,可以将电压阈值设置为3 V,滞后最小设置为40mv(图4)。完成后,单击“确定”并确保在再次单击“确定”之前勾选中译码器(图5)。在波形的底部将生成一些可读的数据。不幸的是,我们仍然缺少一些其他传感器信息。如果在屏幕上捕获更多的时间,我们就可以获得有关传感器的更多信息,这也意味着我们可以更准确地创建SENT Fast译码器。

图4

图5

我们本可以继续进行此捕获并猜测传感器的类型,但是需要更长的捕获时间才能将其与其他信息一起译码。如图6所示,我对捕获到的波形应用了Slow译码器,该传感器是EGR冷却器中的压力传感器,捕获发动机启动时快速WOT测试的信号。

图6

数据包越多,我们就越有机会找到在SLOW信号中传输的一些其他信息。图6中第8个数据包是我们感兴趣的数据包,如您所见,它为我们提供了有关传感器类型的信息。在设置FAST译码器时,有一点很重要,我们可以看到在传感器类型中可以选择压力/安全传感器(图8)。但是其他数据也同样重要,尤其是制造商代码(图7)。消息ID可用于确定是哪个制造商制造的传感器,可以在Internet上进行快速搜索,下面列出了我到目前为止发现的,仅供参考:

图7

让我们回到PicoScope 6软件,图8中A通道蓝色波形是在油轨高压传感器信号线测得的,该传感器通过SENT向ECU发送信号。在串行译码中,我们从列表中选择SENT FAST,然后配置参数(图8)。

图8

您会发现知道传感器类型对我们很重要,可以从列表中选择特定的传感器类型(图8),在这里我们从较早时就知道它是压力/安全传感器。对于这个我不做过多介绍,因为这不是本文的目的,重要的是数据字段的格式会根据传感器类型而变化。PicoScope允许您从标准J2716列表中选择所需的格式类型。

图9

如图9所示,译码表中同时包含 Slow data和 Fast data。要在两者之间切换,请单击屏幕底部每个表的选项卡,其中显示了SENT Slow和SENT Fast的标签。为了更好地了解传感器的功能,下一步是使用PicoScope中的导出功能。 在译码表中,确保已选中“SENT Fast ”选项卡,并且仅查看当前缓冲区的译码数据,然后单击“导出”(图10)。然后将文件保存在易于查找的位置,找到已保存的文件,并在Excel中打开它。

图10

图11导出的是EGR冷却器中的压力传感器SENT Fast译码后的数据,您将看到PicoScope的译码表,但仍需进一步处理数据。

图11

这么多的数据看起来有点复杂,但是我们将以熟悉的方式做一些非常简单的操作来可视化传感器的工作情况。SENT消息的数据包会根据传感器的类型进行拆分,分别标记为通道1和通道2。图12是一个示例,对此进行了更详细的说明。

图12

在PicoScope中应用SENT Fast串行译码器时,会告诉软件如何分割数据。在图12中,将数据字段进行了常见的偶数拆分,拆分为通道1的12位和通道2的12位。我们知道在PicoScope中查看的传感器类型是压力/安全传感器。根据J2716标准,可知通道1上存储的是压力数据。返回Excel工作表时,我们可以通过创建图表来可视化数据,选择通道ch1列D(图13)。

图13

选择数据后,单击“插入”并找到“折线图”选项,如图14和图15。

图14

图15

现在我们有了从SENT传感器捕获的数据的图形化图像。我们可以放大图形,选择数据源并修改范围能够将图形集中在我们想重点分析的数据区域上。在图16和图17中,我选择查看D5625和D12140之间的数据。

图16

图17

在图18中,我将数据范围修改为D5625和D6625之间,图像有点类似于排气脉动波形。

图18

图19是对MAF传感器SENT Fast译码后的数据做了相同的处理,MAF这个SENT传感器发送气流和温度信号。我使用PicoScope捕获了数据,将其译码并导出。然后,我根据通道1上的数据创建了一个图表。在WOT快速测试之前,我还在发动机怠速时进行了类似的测试。

图19

图20是我们通过修改范围得到的曲线图。

图20

但是到目前为止,我遇到了一个小问题。我无法正确解释通道1或2的值,并将其转换为我们可以关联的度量单位,比如压力单位和温度单位。传感器转换数据的方式和SENT Slow消息中的特征相关,我还没有成功地关联测量值。话虽如此,但我觉得这是一种以前所未有的方法,可以帮我们可视化传感器信号。对于排气压力传感器和MAF传感器,我发现最好把时基设置为1s/div至2s/div之间以进行长时间捕获,同时保持较高的采样率(目标是10MS),以确保可以正确译码。否则译码后会出现一个黄色警告三角形,提示“采样率可能太低”,除此之外,在译码方面还没有任何其他问题。您可以通过添加一个触发器来避免数据丢失,但是您必须准备好执行快速测试,我们也将继续研究触发器的功能,因为这是我在捕获时遇到的一个比较棘手的问题。

希望本文中的内容对您有所帮助,并请您提供任何相关的建议,如果我后续有其他想法,会继续进行更新。

本文的灵感来自有关论坛上的一个案例研究,链接如下:例研究:大众V8 高压燃油传感器未接地(SENT信号)

本文用到的一些文件分享给大家,欢迎点击这里下载学习!

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/149180.html原文链接:https://javaforall.cn

原网站

版权声明
本文为[全栈程序员站长]所创,转载请带上原文链接,感谢
https://cloud.tencent.com/developer/article/2040635