有些传感器给出的并不是你要分析的物理量,而是还需要软件算一步的东西:旋变给的是两路调幅电压而不是角度, 增量编码器给的是脉冲串而不是转速,GPS 给的是文本语句,Modbus 寄存器给的是整数。 把这些还原成"带单位的普通通道"这一步就叫解码。本页面让你把这一步显式做出来、 看一眼结果对不对、然后存下来。
| 解码器 | 输入 | 输出 |
|---|---|---|
| 旋变 Resolver | 正弦与余弦通道,可选励磁载波——三路都接模拟通道 | 转速、连续角、缠绕角、频率 |
| 编码器 Encoder | 增量编码器 A(可选 B、Z),接脉冲通道。轴上真实编码器与电机控制器由旋变解出的 A/B/Z 都适用 | 转速、连续角、缠绕角、频率 |
| 触发 Trigger | 接在模拟通道上的脉冲波形(磁电传感器的正弦、灌到模拟口的 TTL、光电放大输出) | 转速、连续角、缠绕角、频率 |
| GPS | 一份 NMEA 记录(串口原始抓包或文本日志) | 对地速度、纬度、经度、海拔 |
| Modbus | RS485 / Modbus 工况侧录写出的 CSV | 每个点位一条通道——转速、扭矩、温度、母线电压… |
| CAN | 报文日志(Vector ASC、PEAK TRC 或通用 CSV),或录音文件里存的原始总线流 —— 外加定义信号的 .dbc |
每个信号一条通道——车速、电机扭矩、水温… |
用本软件采集的文件,通道设置里已经记下了每一路接的是什么(传感器类型 Resolver Sin、 Encoder A、RPM Analog 等),解码器会自己找到输入。 别处采集的文件没有这份元数据,所以每个解码器都同时支持按通道名或序号显式指定—— 传感器类型标记是"我方采集时的便利",绝不是硬依赖。
旋变的角度信息在两个绕组的幅值比里。数字脉冲口会把输入二值化成两个电平, 幅值就此丢失,只剩载波过零方波。而编码器 A/B/Z 本身是数字信号,就该走脉冲通道。
录旋变时最容易弄错的三个设置:
A、B 都在时可以打开 QuadratureX4。每周期数全部四个状态跳变,角分辨率提高到 4 倍; 而且方向是逐个跳变判定的,因此测量过程中换向也能跟住。没有 B 就无法判方向,只能按单向旋转处理。
若诊断行报出"对角跳变",说明脉冲位流速率相对沿密度不够——要么降线数,要么提采样率, 因为那种状态下计数已经不可靠了。
有 Z 通道时,角度零位钉在第一个零位脉冲上,因而跨录音可复现—— 这正是"一次性 d 轴偏置标定可以反复用"的前提。没有 Z 时零位就是通道起点, 基于它做的标定只对这一个文件有效。
寄存器在两次轮询之间就是保持不变的,所以解码器把前一个值一直重复到下一次采样(零阶保持 ZOH)。 插值会凭空造出并不存在的斜坡,而且恰好会把判据要看的工况阶跃抹圆。 这里刻意不提供插值选项:实时串口/TCP 侧录、事后 CSV 合并、本解码器三条路 共用同一份零阶保持实现,因此"实时录下来的值"与"离线解出来的值"逐位一致。
总线信号只在报文到达的那一刻更新,两帧之间解码器保持上一个值——与本软件其它地方同一套零阶保持。 需要知道的是:有些别家工具把 CAN 通道按帧间插值存储,所以拿数值和那类工具对比时, 快变信号上会有最多"一个报文间隔内的变化量"这么大的差异。那是插值口径不同,不是解码不同。
二进制的 Vector BLF 日志本软件不解析:它是带压缩的私有容器,解错时是静默给出错误报文 而不是解析失败。请先在 CAN 工具里导出成 ASC 或 CSV。
DBC 属于整车厂,往往不随数据一起给。如果这份录音里同时存着采集它的那个软件已经解好的
总线信号,那些就是普通通道——直接就能用,不需要 DBC。若只有原始流,位定义常常可以从那些已解码
通道反查出来(可向技术支持索取 --can-match-signal 诊断工具)。
但要知道它的局限:反查是数据驱动的,只保证在这段录音出现过的取值范围内等价——
一直没变过的高位,和"压根不存在的位"是分不出来的。
DBC 回答的问题和传感器灵敏度是同一个——这一路的原始计数怎么变成物理量,所以它属于传感器库。 在传感器库里右键选从 DBC 导入 CAN 传感器…,会先列出这份文件定义的**全部**信号——整车 DBC 往往几百条。 默认一条都不勾:你挑真正要录的那几条,只有勾中的进库。 在过滤框输关键词可缩小范围,此时全选只作用于当前匹配项—— 所以"过滤 Spd 再全选"是一步到位。可以一次导入多份 DBC,真车本来就需要这样(动力、底盘、车身…)。
别家软件导出的传感器库,其中的 CAN 传感器现在也会一并读进来。要知道的是:那类文件给信号位编号的 方式与 DBC 不同,导入时会做换算,所以你在库里看到的位定义始终是 DBC 口径。