Western Formula Racing 的 PECAN 遥测链

作者:

在

结论:这份档案记录的是 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 文件。

延伸阅读

参考资料

  • 项目 01 —— public-can-dbc-datasets/additional/western-formula-racing/README.md(本项目车型档案主来源:系统架构、数据流、部署与配置;本快照仅含此文件)。

说明:本文整理自第三方开源项目的公开文档,仅代表该文档所记录的单个车辆样本,不代表同型号全系车型。CAN 与诊断操作存在风险,任何实车操作前请自行复核并遵守当地法规。

更新记录

首次发布 2026-10-11 最近核对:2026-10-11

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注