最近关于CAN 总线哪个模块在通讯以及传输了什么信息的讨论非常多,因此我想和大家分享用PicoScope 6 Automotive软件处理这个问题的一些方法。众所周知,要想将CAN总线信 正确有效地译码并不容易。虹科Pico汽车示波器4425A的优异性能可以帮我们很好地观察和分析CAN信 。
如图1所示,在CAN bus总线上测得两个CAN数据包。CAN高3.5V动态电压,CAN低1.5V动态电压,静态电平为2.5V。
放大波形如图2所示,可以看到CAN信 的“振铃”和“过冲”。请注意,这些现象对于CAN总线信 是正常的,测试线和环境噪音都会对此产生影响。“振铃”和“过冲”并不是故障现象,CAN 物理层具有很强的抗干扰和容错能力。
为了可以观察多一些CAN信 波形,我将时基设置为100ms/div,这样一个屏幕的捕获时间为1秒。使用PicoScope软件的串行译码功能,在1秒的CAN信 中就得出了1066条信息!如图3所示。
如果您对串行译码对话框中“波特率”的设置不太确定的话,可以按照图4进行测量。
请注意,图3中有一个“采样率可能过低”的警告。这是因为,采集CAN信 的理想采样率是2MS/s。从图3右侧属性对话框可以看到,采样率为1MS/s,小于理想采样率因此出现警告。采样率过低有可能导致串行译码出现一些红色数据,即不能完全正确地进行译码。
为了避免这种情况出现,我们会从软件和硬件两方面采取一些方法来改善。
-
第一个方法是调整时基和样本数以达到理想采样率。如图5所示,我将时基设置为500ms/div,样本数设置为10MS,这样一个屏幕采集时间为5s。采样率=10MS/5s=2MS/s,以确保可以正常译码CAN信 。
-
第二个方法是使用高阻抗探头TA499采集CAN高,在保证信 完整的前提下,减少了振铃、噪音等干扰信 。
如图5所示,我已经按照上述两种方法进行改进,虽然仍有”采样率可能过低”的警告,但是串行译码表格内的全部数据都是正确有效的,总共有5318条信息!
图5中B通道连接了一个TA234电流钳,接在变速杆处测信 电流。变速杆向CAN总线发送信息时,CAN信 差分电压(0-2V)会变化,变速杆支线上会有电流流动,出现电流尖峰。
使用软件的缩放功能,拖动时间标尺,我们可以测出相邻两个电流尖峰的时间间隔,约为30ms。然后我们将鼠标移动到电流峰值对应的译码栏上,会弹出一个窗口显示该位置数据包的数据。如图6所示。
在这里我建议将B通道电流波形放大50倍,以确保电流尖峰和数据包特定位置对齐,方便我们将鼠标移到对应位置,如图7所示。通过观察发现,电流尖峰(在变速杆上)总是与ID为1 97的CAN模块传输相对应,并且这些传输每30 ms发生一次!因此基本可以说,ID 1 97是属于变速杆的。
关于ID我在这里简单讲一下,ID有11位的和29位的,ID值越小优先级越高,并且一个模块可能有很多不同的ID。举个例子,发动机冷却液温度的ID和发动机转速的ID是不一样的,但它们都来自发动机这个模块。再比如,假设某个ID数据中某一字节表示的是“打开/关闭刹车”,我们可能会觉得这个ID是属于ABS系统的。这并不准确,因为“打开/关闭刹车”这个信息也有可能是来自定速巡航系统。
请注意图8中黄色区域里的数据,特别是第四个字节C0。没有操纵变速杆时,各个数据包里的ID 1 97第四个字节一直保持C0。接下来我将操纵变速杆以改变变速杆的位置,我们之所以这样做是为了再次确认ID 1 97是不是属于变速杆。
使用PicoScope的第三个通道(通道C),我们在变速杆“Park”按钮上(电子手刹按钮)放置了一个压力开关,NVH接口盒(TA259)用于为这个压力开关供电,然后又通过TA259 BNC至BNC线连接到虹科Pico示波器上。这样打开和关闭“Park”按钮时,信 都会以波形显示PicoScope软件上。请注意,我们是在钥匙打到ON挡、未起动发动机下进行测试的,避免CAN信 上信息通讯太多,并且蓄电池正常工作。
打开串行译码设置对话框,勾选“时间标尺间”,“过滤”中输入ID 1 97,如图10。
观察图10黄色框里的数据,第四个字节在打开/关闭电子手刹按钮时发生变化。从C0(打开电子手刹)变成D5(关闭电子手刹),再回到C0(打开电子手刹)。我原本以为一按下电子手刹按钮,就会马上出现电流尖峰,但实际上并不是这样,不过30ms的传输时间也足以确保变速杆指令正常执行了。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!