结论:这份档案记录的是 Western Formula Racing(学生方程式车队)的整车遥测链:车辆 CAN 报文由车上的树莓派 + CAN HAT 采集,打包成 UDP/TCP 经无线电发到基站,再经 Redis 广播到 WebSocket,最终在浏览器仪表板(PECAN)上实时显示,并落库到 TimescaleDB 供历史查询。它的价值是一条从总线到仪表盘的完整数据通路,而不是逐条信号解码:CAN 报文的分类由一份可配置清单管理(VCU、BMS、INV、TEST MSG 等),逐条定义放在 DBC 里。需要说明的是,本快照只包含项目 README,DBC 与逐条信号未包含在内。
车辆与适用范围
源文档是车队开源的数据采集系统仓库,覆盖车辆侧与基站侧两端软件,以及一台用于无实车测试的仿真器。
| 项 | 内容 |
|---|---|
| 车型 | Western Formula Racing 方程式赛车(车队项目 PECAN) |
| 年款 / 市场版本 | 源文档未给出具体赛季,仅出现运行数据标识 ECU_25 |
| ECU / 改装状态 | 车队自研 VCU、BMS、逆变器等部件,构成车辆 CAN 报文来源 |
| 采集跨度 | 源文档未给出日志数或帧数;提供 CSV 回放样例与仿真器 |
| 适用范围 | 仅限该队的这套软硬件;逐条信号定义见其 DBC(公开样例在仿真器内,私有部分在受限子模块) |
总线与寻址
数据流在源文档里以流程图给出:车辆 CAN → 树莓派 CAN HAT(SPI/CAN)→ 车上树莓派(原生 systemd 服务)→ 射频 UDP/TCP → 基站 → Redis → WebSocket → PECAN 仪表板;基站还可把解码后的 CAN 帧直接写入服务器的 TimescaleDB,由 Grafana 做历史可视化。
| 项 | 内容 |
|---|---|
| 物理层 | 车辆侧树莓派 CAN HAT(经 SPI 接口)读取 CAN 总线 |
| 链路层 / 比特率 | 源文档未给出 |
| 寻址方式 | 支持标准 CAN ID 与扩展 CAN ID 两类 |
| CAN FD | 源文档未提及 |
| 传输端口 | UDP 5005、TCP 重传 5006、本地 PECAN WebSocket 9080、基站地址 10.71.1.20 |
已解码信号
本快照只含项目 README,DBC 本体与逐条信号未包含在内。为守住「只抄源文档里有证据的条目」这条线,下表登记 README 明确写出的报文类别与数据资产,并逐条注明证据;任何具体报文 ID、字节与缩放系数,源文档均未提供。
| 条目 | 归属 / 位置 | 说明 | 证据 |
|---|---|---|---|
| VCU 报文 | 车辆 CAN 类别 | 整车控制单元报文类别 | README「CAN Message Categories」 |
| BMS 报文 | 车辆 CAN 类别 | 电池管理系统报文类别 | README「CAN Message Categories」 |
| INV 报文 | 车辆 CAN 类别 | 逆变器报文类别 | README「CAN Message Categories」 |
| TEST MSG | 车辆 CAN 类别 | 测试报文类别 | README「CAN Message Categories」 |
| 类别配置清单 | pecan/src/assets/categories.txt |
文本配置即可改分组与配色,无需改代码 | README「CAN Message Categories」 |
| 标准 / 扩展 CAN ID | WS 后端 | 广播服务支持两类 ID | README「WebSocket Backend」 |
| 蓄能器仿真 | WS 后端 | 内置 accumulator 仿真 | README「WebSocket Backend」 |
| 样例 CAN 数据 | car-simulate/(CSV) |
可回放的录制数据 | README「Car Simulator」 |
| 样例 DBC | car-simulate/ |
报文定义示例文件 | README「Car Simulator」 |
| 私有 DBC | secret-dbc/ 子模块 |
受限的私有 DBC 文件 | README「Project Structure」 |
| 运行数据标识 | ECU_25 |
Flight Recorder 记录的上传标识 | README「Flight Recorder」 |
| 实时遥测包 | UDP 5005 | 车上→基站的实时流 | README「Car RPi Deployment」 |
| 重传包 | TCP 5006 | 丢包重传通道 | README「Car RPi Deployment」 |
| 本地广播 | WebSocket 9080 | 车载 Pi 上的本地 PECAN 数据源 | README「Car RPi Deployment」 |
读取方法与注意事项
车辆侧不用容器:遥测栈以原生 systemd 服务 car-telemetry.service 运行,配置为 ROLE=car、基站地址、UDP 5005、TCP 重传 5006、本地 WebSocket 9080。部署步骤是 uv sync 后在服务文件里填入 git 短哈希,再 systemctl enable/start。这一点值得注意:车上运行时依赖与基站不同,车上没有 Docker 与 Redis。
基站侧则用 Docker Compose 起整套栈(Redis、WebSocket、状态页、视频中继,可选 TimescaleDB 日志)。在笔记本上有一份现成的 .env.macbook 默认配置可直接拉起;在 Windows 上还需要保留一个 PowerShell UDP 中继窗口,因为 Docker Desktop 不会把局域网 UDP 转发进容器。
没有实车时,可用仿真器回放 CSV 数据来做开发与自检:car-simulate 提供 CSV 回放、常驻 WebSocket 广播与示例 DBC。另有一条「Flight Recorder」路径,用手机在车辆热点上记录数据到浏览器 IndexedDB,等有网时再通过 POST /api/can-frames/batch 同步到服务器。
证据等级与边界
本档案属于项目登记,可核对的是系统架构、端口、部署方式与配置文件名;不能据此推出车辆具体有哪些信号,因为逐条定义在未被本快照收录的 DBC 里。
三处不能外推。第一,报文类别(VCU/BMS/INV/TEST MSG)是可配置的分组名,不是信号清单——它由 categories.txt 决定,改配置即可变。第二,公开样例 DBC 与私有 DBC 是两回事:公开的仅用于仿真器开发,实际车辆定义在受限子模块 secret-dbc/,本快照未包含。第三,端口(5005/5006/9080)与基站地址是这套部署的默认值,换环境即需调整。
关于「安全访问」类问题:本文只整理公开文档登记的数据通路,未涉及诊断写入或安全访问;源文档未提供绕过方法,且不建议尝试。
常见问题
PECAN 能读到哪些信号?
源文档未给出逐条信号。它说明报文按可配置清单分组(示例为 VCU、BMS、INV、TEST MSG),逐条定义放在 DBC 里;本快照未包含该 DBC。
车辆侧是怎么读 CAN 的?
车辆侧树莓派接 CAN HAT,遥测软件以原生 systemd 服务运行,把报文打包成 UDP 5005 发送,另有 TCP 5006 用于重传;车载 Pi 上还有本地 WebSocket 9080。
没有实车怎么测试?
用 car-simulate 仿真器:回放 CSV 录制数据、常驻 WebSocket 广播,并附带一份示例 DBC;开发时无需连接真车。
DBC 在哪里?
公开样例在仿真器目录内;实际车辆定义位于受限子模块 secret-dbc/。本快照只包含项目 README,未包含任何 DBC 文件。
延伸阅读
- 离线与实时数据管线 —— 与本档案「实时 WebSocket + 历史落库」的双通路架构直接相关。
- 公开 DBC 数据集的整理:来源、版本与可信度分层 —— 对照公开样例 DBC 与受限私有 DBC 的分层。
- 车型协议的 DBC 指纹:靠什么把一辆车认成它自己 —— 说明为何「类别配置」不等于「信号定义」。
- Waterloo 2024CAR DBC 档案:115 个报文与 890 条信号 —— 同批另一支学生车队的整车 CAN 处置样本。
- 赛道仪表的信息架构:从圈速到告警的设计顺序 —— 承接「从总线到仪表盘」的另一端。
参考资料
- 项目 01 ——
public-can-dbc-datasets/additional/western-formula-racing/README.md(本项目车型档案主来源:系统架构、数据流、部署与配置;本快照仅含此文件)。
说明:本文整理自第三方开源项目的公开文档,仅代表该文档所记录的单个车辆样本,不代表同型号全系车型。CAN 与诊断操作存在风险,任何实车操作前请自行复核并遵守当地法规。
更新记录
首次发布 2026-10-11 最近核对:2026-10-11
发表回复