结论:Talaria 电动摩托的总线是一条 250 kbit/s、11 位标准帧的小型 CAN:源文档记录 15 个 ID、约 92 帧/秒,并把其中的 9 条消息、26 个信号行整理成 DBC。这条总线的价值在于「小而有坑」——源文档明确记录了三处「看起来像但并不是」的误判(电池百分比、里程、温度),还修正了里程字段并标注为临时值。以下所有结论仅限源文档记录的这一台车。
车辆与适用范围
本文数据来自第三方开源项目对一台 Talaria 电动摩托的 CAN 解析。项目用只监听方式读车,DBC 基于更早的第三方整理做了修订,并把每个信号的溯源写在注释里。
| 项 | 内容 |
|---|---|
| 车型 | Talaria 电动摩托;具体型号源文档未确认 |
| 电池包 | 16S;源文档由「电芯高/低平均 × 16」与包电压吻合到 0.02 V 推出 |
| 采集硬件 | ESP32-S3 加 SN65HVD230 收发器;默认只监听 |
| 采集跨度 | 多条骑行日志与台架检查;源文档记录总线约 92 帧/秒、15 个 ID |
| 适用范围 | 仅限源文档记录的这一台车;源文档另指出另一台参考车上的字节偏移不同 |
总线与寻址
这条总线的规模很小,接入门槛不高,但正因为 ID 少、字段挤,误判的风险反而更高。识别要点是速率、位宽与终端电阻三件事。
| 项 | 内容 |
|---|---|
| 速率 / 帧格式 | 250 kbit/s;11 位标准帧 |
| 总线规模 | 15 个 ID,约 92 帧/秒 |
| 终端 | 车端已两端终端,整对约 60 Ω;采集器若自带 120 Ω 终端应拆除,否则会降到约 40 Ω |
| 采集方式 | 只监听(listen-only);收发器不驱动总线也不应答,因此速率设错也不会干扰车辆 |
| DBC 规模 | 9 条消息、26 个信号行;基于第三方先期整理修订 |
已解码信号
下表从源文档的解码清单中抽取。项目对未确认的条目明确标注「单位未确认」或「临时值」,本文原样保留这些标注。
| 信号 | 位置(ID / DID / 字节) | 解码 | 证据 |
|---|---|---|---|
| 车速 | 0x303 B0:B1(小端) | 0.1 km/h | 已确认(与转速比值恒定 5.887,r=0.999) |
| 电机转速 | 0x203 B0:B1(小端) | 1 rpm | 已确认(同上) |
| 功率 | 0x203 B2:B3(小端) | 1 W | 标定记录 |
| 电流 | 0x302 B4:B5(小端) | 0.1 A | 标定记录 |
| 包电压 | 0x101 B0:B1(小端) | 0.1 V | 已确认(电芯高低平均 × 16 吻合到 0.02 V) |
| 电池百分比 | 0x401 B0 | 1 % | 标定记录 |
| 最高电芯 + 编号 | 0x201 B0:B1、B4 | 1 mV | 标定记录 |
| 最低电芯 + 编号 | 0x201 B2:B3、B5 | 1 mV | 标定记录 |
| 侧撑 | 0x202 B0 bit7 | 1 = 放下 | 标定记录 |
| 骑行模式 | 0x202 B0 bits5:4 | 1 Eco、2 Sport | 标定记录 |
| 回充等级 | 0x490 B0 bits2:0 | 1–4 | 标定记录(须按 3 位掩码) |
| 骑行模式(仪表指令) | 0x490 B0 bits5:3 | 1 Eco、2 Sport | 标定记录 |
| 里程 | 0x402 B2:B3(小端) | 1 km | 临时值(源文档要求增量复核) |
| 油门需求 | 0x202 B3:B4(小端) | 单位未确认 | 未确认 |
读取方法与注意事项
第一条是终端电阻。车端已经在两端做终端,整对读下来约 60 Ω;如果采集器再挂一个 120 Ω 终端,会把阻抗拉到约 40 Ω,可能影响总线。源文档建议把采集模块自带的终端拆掉。
第二条是「看起来像但不是」的三处误判。其一,某个字节被当成电池百分比,其实是恒定的 100,源文档判断它更可能是健康状态而非荷电状态;其二,某个字段单调递增,看着像里程,但它与车速的相关系数只有 −0.0005,且每公里计数在两次骑行间相差 34%——真正的里程在另一个 ID 上;其三,某个字节既不是温度也不是单一字段,它同时承载模式位与回充位,必须按 3 位掩码拆开。
第三条是写入操作的风险边界。源文档记录了对「模式/回充指令所在 ID」是仪表下发还是控制器回显的讨论,并做了注入实验来判断控制权归属。这类对车辆控制总线的写入涉及安全风险,本文不复述具体做法,也不建议尝试。
证据等级与边界
项目对已确认信号给出了可复现的依据:车速与转速在两个独立骑行中保持固定比值 5.887(r=0.999),电芯高低平均 × 16 能把包电压还原到 0.02 V。这两条互相独立的证据把「车速、转速、包电压、16S 结构」串成了可信的一组。
里程是新近发现的字段,源文档明确标注为临时值:它是靠「车自己显示的 400 km」与一次全总线采集里的数值匹配找到的,但只匹配了一次。源文档提醒这条总线上有整数常量(例如某两个 ID 里都出现 1200),所以一次与整数吻合只是「有说服力」,不是证明——必须等到一次骑行里看到它递增才能定案。
边界上必须强调:以上字段位置与刻度限定在这一台车与这一版固件。源文档已指出另一台参考车上的油门字节偏移就不同(本车在 0x202 的 B3:B4,参考车在 B2:B4 且并不跟随油门)。换车使用前必须重新核对偏移。
常见问题
为什么里程字段被标成「临时值」?
因为它只被匹配到一次:源文档读到车辆自身显示的 400 km,并在一次全总线采集的某个 ID 里找到同样的 400。但这条总线上存在整数常量,单次与整数吻合不能排除巧合,必须等一次骑行里看到该值递增才能确认。
那个恒定 100 的字节是什么?
源文档明确它「不是电池百分比」——它在实际电量变化时仍读 100,因此更可能是健康状态之类的字段。不要把它当作荷电状态使用。
回充等级为什么容易读错?
因为它与骑行模式共用同一个字节,且只能按低 3 位掩码读。若按整个低半字节(4 位)读,在 Eco 模式下 bit3 会被置位,本该读成 1 的回充等级会读成 9。源文档强调「掩 3 位,不是 4 位」。
这条总线上有哪些信号是找不到的?
源文档记录喇叭与灯光不经过总线,它们是来自车把开关的 12 V 通断电路;刹车拉杆只出现在部分车型上,不带传感器的改装拉杆则什么都不产生。因此这些量无法从 CAN 上读到。
延伸阅读
- 车载信号为什么会说谎:TTL、源时间与 500 ms 新鲜度阈值 —— 与本文「单调递增的字段并非里程」是同一类新鲜度与语义陷阱
- 同一个「转向灯」在三家车厂是三种实现 —— 与本文「同一字节承载模式位与回充位」直接相关
- CAN 报文解析的「健康位」在说什么 —— 校验、计数器与总线空窗,与本文电芯高低平均还原包电压的交叉验证思路相通
- Nissan Leaf ZE0 的只读遥测档案 —— 同批另一篇电动车档案,对照两车「只监听读车」的不同实现
参考资料
- 项目 07 ——
public-can-dbc-datasets/additional/kbirand-talaria-tripper/README.md(本项目车型档案主来源:解码清单、陷阱与硬件说明) - 项目 07 ——
public-can-dbc-datasets/additional/kbirand-talaria-tripper/SOURCE.md(DBC 规模、先期工作与许可证说明)
说明:本文整理自第三方开源项目的公开文档,仅代表该文档所记录的单个车辆样本,不代表同型号全系车型。CAN 与诊断操作存在风险,任何实车操作前请自行复核并遵守当地法规。
更新记录
首次发布 2026-10-11 最近核对:2026-10-11