信号解码(原始信号转派生通道)

有些传感器给出的并不是你要分析的物理量,而是还需要软件算一步的东西:旋变给的是两路调幅电压而不是角度, 增量编码器给的是脉冲串而不是转速,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 每个信号一条通道——车速、电机扭矩、水温…

操作步骤

  1. 选源文件与解码器。参数表上方那行会告示这个解码器需要哪些输入角色。
  2. 调参数。每个参数都是文本值,第三列列出可选取值,不把选项藏在对话框里。保持默认即为该解码器的常规口径。
  3. 点解码,看曲线。这正是本页面的意义所在——线数填错、正弦余弦接反,在这里一眼就能看出来; 否则要等到分析结果异常时才发现,代价大得多。
  4. 点另存为…写出新文件:原通道(各保持原采样率)+ 派生通道。

通道认领:自动或手选

用本软件采集的文件,通道设置里已经记下了每一路接的是什么(传感器类型 Resolver Sin、 Encoder A、RPM Analog 等),解码器会自己找到输入。 别处采集的文件没有这份元数据,所以每个解码器都同时支持按通道名或序号显式指定—— 传感器类型标记是"我方采集时的便利",绝不是硬依赖。

几条实践中真会踩的注意事项

旋变信号必须接模拟通道

旋变的角度信息在两个绕组的幅值比里。数字脉冲口会把输入二值化成两个电平, 幅值就此丢失,只剩载波过零方波。而编码器 A/B/Z 本身是数字信号,就该走脉冲通道。

录旋变时最容易弄错的三个设置:

编码器:4× 正交计数

A、B 都在时可以打开 QuadratureX4。每周期数全部四个状态跳变,角分辨率提高到 4 倍; 而且方向是逐个跳变判定的,因此测量过程中换向也能跟住。没有 B 就无法判方向,只能按单向旋转处理。

若诊断行报出"对角跳变",说明脉冲位流速率相对沿密度不够——要么降线数,要么提采样率, 因为那种状态下计数已经不可靠了。

编码器:Z 脉冲决定你的零位能不能留住

有 Z 通道时,角度零位钉在第一个零位脉冲上,因而跨录音可复现—— 这正是"一次性 d 轴偏置标定可以反复用"的前提。没有 Z 时零位就是通道起点, 基于它做的标定只对这一个文件有效。

Modbus 的值是保持,不是插值

寄存器在两次轮询之间就是保持不变的,所以解码器把前一个值一直重复到下一次采样(零阶保持 ZOH)。 插值会凭空造出并不存在的斜坡,而且恰好会把判据要看的工况阶跃抹圆。 这里刻意不提供插值选项:实时串口/TCP 侧录、事后 CSV 合并、本解码器三条路 共用同一份零阶保持实现,因此"实时录下来的值"与"离线解出来的值"逐位一致。

CAN 的值在两帧之间是保持的

总线信号只在报文到达的那一刻更新,两帧之间解码器保持上一个值——与本软件其它地方同一套零阶保持。 需要知道的是:有些别家工具把 CAN 通道按帧间插值存储,所以拿数值和那类工具对比时, 快变信号上会有最多"一个报文间隔内的变化量"这么大的差异。那是插值口径不同,不是解码不同。

二进制的 Vector BLF 日志本软件不解析:它是带压缩的私有容器,解错时是静默给出错误报文 而不是解析失败。请先在 CAN 工具里导出成 ASC 或 CSV。

没有 DBC 怎么办:录音里可能已经带着答案

DBC 属于整车厂,往往不随数据一起给。如果这份录音里同时存着采集它的那个软件已经解好的 总线信号,那些就是普通通道——直接就能用,不需要 DBC。若只有原始流,位定义常常可以从那些已解码 通道反查出来(可向技术支持索取 --can-match-signal 诊断工具)。 但要知道它的局限:反查是数据驱动的,只保证在这段录音出现过的取值范围内等价—— 一直没变过的高位,和"压根不存在的位"是分不出来的。

DBC 放在哪:传感器库

DBC 回答的问题和传感器灵敏度是同一个——这一路的原始计数怎么变成物理量,所以它属于传感器库。 在传感器库里右键选从 DBC 导入 CAN 传感器…,会先列出这份文件定义的**全部**信号——整车 DBC 往往几百条。 默认一条都不勾:你挑真正要录的那几条,只有勾中的进库。 在过滤框输关键词可缩小范围,此时全选只作用于当前匹配项—— 所以"过滤 Spd 再全选"是一步到位。可以一次导入多份 DBC,真车本来就需要这样(动力、底盘、车身…)。

别家软件导出的传感器库,其中的 CAN 传感器现在也会一并读进来。要知道的是:那类文件给信号位编号的 方式与 DBC 不同,导入时会做换算,所以你在库里看到的位定义始终是 DBC 口径。

相关主题