应用指南
使用 CAN-dbc 字符触发和解码更快速地完成汽车设计调试
Keysight InfiniiVision 3000T、4000和 6000 X 系列示波器
序言
差分控制器局域网(CAN)总线广泛应用于当前汽车的传动系统和车身控制中。CAN 总线是由 Bosch 公司在 30 多年前开发的一种通信协议,一直被视为汽车的“主力”串行控制总线。CAN 总线同时也在工业和医疗设备控制应用中得到了大量应用。
示波器作为最重要的测量工具,目前广泛用于汽车串行总线物理层的测试和调试。尽管 CAN 总线协议分析仪(例如 Vector 的 CAN 分析仪)非常适合测试和调试总线数据在更高协议层级别上的传输,示波器的优势在于它允许您监测 CAN 总线物理层的模拟信号质量(即信号完整性)。汽车自身的电气环境非常不理想,伴有大量噪声和意外瞬变。示波器的核心竞争力在于,它能够捕获和显示罕见汽车瞬变和噪声的细节(可能导致 CAN 总线误差)。
本应用指南首先将展示在 CAN 差分总线上进行示波器十六进制触发和解码与 CAN-dbc 字符触发和解码之间的区别。随后再就执行 CAN 总线字符解码所需的核心元件提供一些背景资料(行业标准的 .dbc 文件)。然后逐步讲解如何使用 Keysight 3000T、4000 和 6000 X 系列示波器执行 CAN 字符触发和解码。CAN-dbc字符触发和解码是选件 DSOXT3AUTO、DSOX4AUTO 和 DSOX6AUTO CAN/LIN 的标配。
对 CAN 总线进行触发和解码
为了同步和识别特定的 CAN 帧以进行测试和调试,目前大多数中档和高性能示波器(包括 Keysight InfiniiVision 000、3000、4000 和 6000 X 系列示波器)都能对 CAN 总线进行触发,并且解码成十六进制格式。此类测量功能可作为 InfiniiVision X 系列示波器的选件。
图 1 显示了 Keysight InfiniiVision X 系列示波器对 CAN 总线进行触发,并且解码成十六进制格式。注意:借助示波器的模拟捕获功能,我们在测量实例中可以看到噪声以及不同的脉冲幅度。在每个被捕获的帧下面都有时间关联的解码信息,用于告诉您每个帧的内容。在示波器显示屏的上半部分是协议列表显示,以用户熟悉的表格形式来提供所有捕获帧的内容,类似于传统的协议分析仪。
在这个测量示例中,示波器被设置为对帧 ID 0x201 十六进制进行触发,与 010 000 0001 二进制相互关联。帧(0x201)的 8 位数据字段显示了“0B A8 00 00 27 10 00 00”。什么是 0x201 十六进制?这个十六进制字符数据串表达什么意思呢?
CAN 总线字符解码
如前所述,CAN 协议分析仪的一个优势是它能够显示在更高抽象协议、应用级别上的结果。换言之,它是将捕获数据转换为人类语言,而不是神秘的计算机语言,例如“速度 = 852.52 rpm”。CAN-dbc 字符触发和解码也可使用 Keysight 3000T、4000 和6000 X 系列示波器完成(Keysight 2000 和 3000A X 系列不支持CAN-dbc)。图 2 显示了 4000 X 系列示波器现在对总线进行字符触发和解码。
在测量实例中,示波器被设置为触发信息“Brake_Torque”,与特定帧 ID(0x211)有直接关系。示波器没有使用一长串的十六进制字符来表示帧 / 信息中的数据字段,它现在用带符号的值、单位和 / 或编码状态(例如“On”、“Off”、“Reverse”等)来显示“信号”名称。注意在字符 CAN 语言中,“信号”不是向示波器 BNC 发送的电子输入信号。“信号”通常表示一个物理参数或条件,例如“Total_Torque:131.0640k ft/lbs”,如本实例所示。示波器如何将原始比特转换为符号代码?
了解 .dbc 文件
所有汽车都与每条 CAN 总线有关联,并且每辆汽车都关联着一个 .dbc 文件,即“数据库 CAN”文件。.dbc 文件是一个 ASCII 格式的文件,其 .dbc 扩展名可用于定义 CAN 网络。图 3 显示了是德科技创建的简单 .dbc 文件的一部分。这个 .dbc 文件定义了是德科技示波器培训常用的 CAN 演示信号。“信息”是表示特定帧 ID 的标签。例如,.dbc 文件中的信息:EngineData 定义了帧 ID 2,190,911,837 十进制。“信号”略微复杂。
在消息:EngineData(包含 5 个字节数据(DLC = 5))中,我们已经定义了三个信号,分别标有“Fuel”、“Temp”和“Speed”。每个信号都有特定的起始字节和长度。例如,“Temp”始于#24 字节,长度为 8 个字节。与每个已定义信号有关的是可变换算因数、单位、最小和最大警戒值,以及大端 / 小端指示器。除了将数据转换成物理值 / 变量外,信号还可以被状态编码。关于信息:ABS,信号“Frnt-R”始于 #7 字节,长度仅为 1 个字节。这意味着信号只有 0 或 1 的二进制值。在文件的底部,“Frnt-R”也被定义为编码状态,如果信号的值是 0,那么示波器将显示“解锁”。如果信号的值是 1,那么示波器将显示“锁定”。
用于定义特定汽车 CAN 总线的 .dbc 文件要比是德科技创建的.dbc 实例复杂很多,如图 3 所示。糟糕的是,本文无法显示在真正的汽车中更为复杂的 .dbc 文件。汽车厂商将这类文件视为高度机密。他们不希望竞争对手获悉自己定义网络的方式。如欲了解更多信息,请参考副标题为“.dbc File Security”的文件。虽然是德科技在图 3 中使用了文本编辑器来创建 .dbc 文件,但是这里还有其他更高效的创建方法——特别是对复杂的汽车 CAN 系统创建 .dbc 文件。如今最常用的工具就是 Vector的 CANdb++ 软件。如欲了解该软件工具的更多信息,请联系Vector Informatik GmbH。
请下载此文档以了解更多信息。
您希望搜索哪方面的内容?