build-test-deploy / ci (push) Failing after 1h9m57s
协议层:
- 新增 protocol/CanBms.{h,cpp}:按 docs/BMS_协议字段定义.xlsx 解码
0x10010000(总电压/SOC/故障码/状态位)、0x10010005(最大电流限制/
总电流/最高单体电压)、0x10010006(总电压校验)。
缩放用除法保证与十进制字面量严格一致;总电流按 2 字节 s16 实现
(xlsx 标注 3 字节与其自身示例/实车帧矛盾,已在代码注释说明)。
- 删除 UDP 锂电池协议:protocol/BatProtocol.{h,cpp}、
comm/BatLinkManager.h(动力/仪表双链路、自检/接触器/功率指令)。
pCCU 主体:
- CCU 订阅 pCanBridge 发布的 CAN_0x* 二进制消息并解码 BMS 报文;
SystemData 双电池槽位改为单一 BmsStatusValue + CAN 帧计数;
PM 电池启停/功率指令改为告警忽略(BMS CAN 协议未定义控制报文)。
- 修复两个本地联调发现的阻断性 bug:
1) MOOS 通配订阅必须用三参数 Register("CAN_0x*","*",0),
单参数形式不做通配匹配;
2) 变量名前缀匹配偏移(compare 少比 1 字符 / sscanf +5 指向 'x'),
改为 rfind 前缀判断 + +6 偏移。
- PowerCoordinator/CoordFsm 剥离电池接触器/切换时序(依赖已删除的
UDP 指令),保留 FC 联动与协调策略占位(CoordSwitchingState 改为
通用的 CoordBusyState)。
网页:
- 动力/仪表锂电池两个标签页合并为"锂电池BMS(CAN)":总电压/总电流/
SOC/最大电流限制/最高单体电压/校验帧/故障码高亮/在线状态,
附报文来源说明;链路状态页改为 CAN 链路行(pCanBridge)。
配置与测试:
- pCCU.moos / missions/h100.moos 移除电池 UDP 配置;
- pccuTest:删除旧电池编解码用例,新增 testCanBmsDecode
(向量取自实车抓包:533.8V/20.1%/49/3.752V/-25.0A)103/103 通过;
- 集成测试改为纯 FC/PM 流程,本地实测 PASSED(含 Web 页面校验)。
80 lines
2.5 KiB
Plaintext
80 lines
2.5 KiB
Plaintext
// MOOS file
|
||
// 板卡 (RK3588 / Ubuntu 20.04) 专用 mission 配置
|
||
// 五个 systemd 服务(moosdb / pPowerManger / pPowerMangerHost / pCCU / pCanBridge)
|
||
// 共用本文件。
|
||
// 由 scripts/deploy.sh 推送到板卡 /root/work/h100/missions/h100.moos
|
||
|
||
ServerHost = localhost
|
||
ServerPort = 9000
|
||
Community = h100
|
||
|
||
ProcessConfig = pPowerManger
|
||
{
|
||
AppTick = 4
|
||
CommsTick = 4
|
||
log_level = INFO
|
||
// 日志文件路径(目录需已存在,由 deploy.sh 创建)
|
||
logpath = /root/work/h100/data/pPowerManger.log
|
||
// 数据库存储路径(目录需已存在,由 deploy.sh 创建)
|
||
dbpath = /root/work/h100/data/power_data.db
|
||
// CCU 地址(pPowerManger -> pCCU 的 UDP 链路);不配置则默认 127.0.0.1:7000
|
||
ccuhost = 127.0.0.1
|
||
ccuport = 7000
|
||
}
|
||
|
||
ProcessConfig = pPowerMangerHost
|
||
{
|
||
AppTick = 4
|
||
CommsTick = 4
|
||
WEB_PORT = 18080
|
||
|
||
// 反馈落盘(SQLite),路径可配置;目录不存在会自动创建
|
||
DB_FILE = /root/work/h100/data/feedback_data.db
|
||
FB_LOG_ENABLED = true
|
||
FB_LOG_KEEP_SECONDS = 86400 // 历史保留时长(秒),24h
|
||
FB_LOG_PRUNE_INTERVAL_SECONDS = 60 // 清理检查周期(秒)
|
||
}
|
||
|
||
ProcessConfig = pCCU
|
||
{
|
||
AppTick = 4
|
||
CommsTick = 4
|
||
|
||
// FC 链路(本机监听 FC 状态;发送 FC 控制指令给燃料电池控制器)
|
||
fc_local_port = 6000
|
||
fc_remote_ip = 192.168.1.162
|
||
fc_remote_port = 7000
|
||
|
||
// PM 链路(监听 pPowerManger 指令;向 pPowerManger 周期发送 PM 状态)
|
||
// pPowerManger 与 pCCU 同机部署,pPowerManger 绑定 0.0.0.0:5001,
|
||
// 故 PM 状态发送目标用回环地址即可送达。
|
||
pm_local_port = 7000
|
||
pm_remote_ip = 127.0.0.1
|
||
pm_remote_port = 5001
|
||
|
||
//======== 锂电池 ========
|
||
// CAN 总线 BMS 协议(docs/BMS_协议字段定义.xlsx),
|
||
// 经 pCanBridge 发布的 CAN_0x* 消息透传,无需额外配置。
|
||
dbpath = /root/work/h100/data/pccu_data.db
|
||
logpath = /root/work/h100/data/pCCU.log
|
||
|
||
web_port = 8080
|
||
web_enable = true
|
||
}
|
||
|
||
ProcessConfig = pCanBridge
|
||
{
|
||
AppTick = 4
|
||
CommsTick = 4
|
||
|
||
// CAN->MOOSDB 透传:USBCAN-8E-U/CANET(TCP Server 模式)
|
||
// 工作端口:CAN0=4001,CAN1=4002,...,CAN7=4008
|
||
can_host = 192.168.0.222
|
||
can_port = 4001
|
||
// 通道名(写入消息 m_sSrcAux 辅助字段)
|
||
can_channel_name = CAN0
|
||
|
||
// CAN 帧 SQLite 落库路径(can_frame 表)
|
||
dbpath = /root/work/h100/data/pCanBridge_data.db
|
||
}
|