Commit Graph
55 Commits
Author SHA1 Message Date
zjk 88bed850ee pCCU 锂电池通信切换为 CAN 总线(BMS 协议,经 pCanBridge 透传)
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 页面校验)。
2026-08-31 21:42:26 +08:00
zjk 7e4d08808a pCCU新增锂电池通信/协调操作 + 电源协调状态机骨架(惰性)
锂电池通信(docs/锂电池协议20230324.docx):
- 协议层 BatProtocol:自检0x0000(2B)/设备控制0x0001(17B)/电池组状态0x0003(80B)/
  电池包报警0x0004(68B),uint32字节和校验、小端
- 链路层 BatLinkManager:动力/仪表锂电池独立UDP链路,本机监听与远端IP端口
  均由.moos配置(dyn_bat_*/ins_bat_*/bat_work_condition)
- SystemData/SnapshotBuilder/网页:电池数据按动力/仪表归类展示(运行状态/接触器
  电气量/电池包电压温度/报警),收发帧落库SQLite,网页新增电池标签页

操作->指令下发(PowerCoordinator):
- 操作接口:自检/上下电(母线接触器55H接通77H断开,含预充)/功率设定(0~500kW)/
  电池切换(低压->高压6步、高压->低压5步,按协议时序)
- 步骤引擎:每电池独立步骤队列,下发->状态反馈确认->超时兜底;周期1s心跳控制帧
- PM操控指令insBatCmd/dynBatCmd/dynBatPower自动映射为电池操作

电源协调状态机骨架(CoordFsm, TinyFSM):
- 事件Tick/PmControl/StepDone + 状态Normal/Switching/Fault,react均为TODO占位
- 当前未接线(无start/dispatch调用,运行行为与接入前一致),CoordFsm.hpp头部附接线指南

测试与部署:
- pccuTest新增电池协议编解码/帧长/链路分发用例(175项通过);集成测试覆盖电池
  心跳、启停映射(0x10->0x55/0x20->0x77)、状态落库;同步pccu_it.moos与ws_check
- h100.moos与pCCU.moos增加锂电池链路配置;归档锂电池协议文档
2026-08-30 14:40:27 +08:00
zjk 2590282aed 0827协议修订:姿态数据2改预留 + 状态帧新增剩余发电量 + CCU地址可配置
build-test-deploy / ci (push) Successful in 1h13m13s
FC协议(0827 docx):
- 控制指令域:字节12,13/16,17由纵倾/横倾姿态数据2改为预留(编码恒0、解码忽略)
- 状态反馈域:字节147,148由预留12改为剩余发电量(MWh),贯通JSON/网页显示
- PM→CCU链路:姿态字段4xuchar改为2xshort(数据1),结构体大小与线上布局不变
- 同步更新:CCU转发映射、SnapshotBuilder、pCCU网页、fuelcell网页、SQLite列描述、单测/模拟器
- 修正集成测试遗留断言(20B→24B、心跳d[19]→d[23])并增强预留字节校验

CCU地址可配置:
- pPowerManger 支持 moos 配置项 ccuhost/ccuport(默认127.0.0.1:7000)
- build-board.sh 增加 --ccu-host/--ccu-port 参数

文档:FC协议文档更新为0827版,清理过期协议docx
2026-08-28 00:09:17 +08:00
zjk c8becd1f6c 2026-08-27 调试完成版本
- FC 控制指令域修正:payload 14→18 字节,纵倾/横倾姿态拆分为数据1/数据2
- WebServer 广播改为待发队列模式,修复 mongoose 跨线程调用问题
- build-board.sh 增加板卡组网说明(/23 掩码方案)、pCCU 服务部署与 mission 同步
- 同步 0824 协议文档更新
2026-08-27 21:51:36 +08:00
zjk 54c32a180a 新增复合管控器(pCCU) + 惯导数据解析 + 设备控制页增强 + 0824协议文档归档
- 新增 pCCU 复合管控器程序(src/pCCU):FC/PM 双链路(UDP)、协议编解码器
  (FcProtocol/PmProtocol/Frame/Message/MessageRegistry)、快照与落库(DbStore)、
  内置 WebServer;挂入 src/CMakeLists.txt 与板卡 mission(h100.moos)
- 惯导/深度数据:新增 uDevice_insData 消息解析,接入 UpperCommManager,
  pPowerMangerHost 注册监视,UpmsgTest 覆盖
- pPowerMangerHost 设备控制页增强(web/index.html)
- 部署/运维脚本改为 4 个 systemd 服务(moosdb/pPowerManger/pPowerMangerHost/pCCU):
  deploy/clean-data/fetch-data 同步适配
- 协议文档:归档 0824 控制主机与复合管控器通信协议 xlsx 及关联 docx,移除旧 md
- 测试:新增 pccu 单元/集成测试与 disSysTest Python 配电仿真
- 清理:移除未使用的 CCU 状态调试打印 coutMsg;.gitignore 补充编译产物/临时文件忽略
2026-08-26 22:43:10 +08:00
zjk e0488d513b 协议:按0824协议更新复合管控通信解析 + 新增燃料电池监控网页
- pmSysvariable/ccuUdpMsg: 域起始符改为0x40 0x40,域标识符重编号0x0001~0x0004,
  ccuState/ccuColCmd/ccuSetParmCmd 按新协议字段布局与字节序重写(状态248B/操控45B/参数28B)
- systemData/httpserver: 新增FC单片电压、甲醇制氢装置、DC/DC、尾气装置、一体化罐、
  供氢供氧流量、应急上浮等字段解析与WebSocket JSON推送
- 新增 /fcs 燃料电池监控页(fuelcell.h):实时数据显示 + 操控指令交互按钮,
  过滤日志推送消息避免界面闪烁
- SQLite/LowerCommManager/测试:更新建表列、解析打印与单元/集成测试适配新协议
2026-08-26 20:56:39 +08:00
zjk 12f0dee86e 修复:跨线程数据竞争 + 协议字段越界 + UDP 发送失败吞错
- 并发安全:PowerManger 新增 m_stateMutex,保护 m_pmCurrentState /
  m_currentDisBreakerState / m_CcuColCmd / faultCode,并封装
  addFaultCode/clearFaultCodes/getFaultCodes 访问器
- SystemData 新增跨线程读访问器(getDynVoltageLink/getPowerBusStatus/
  getDcdcStatus/getDeviceCommonStatus 等)及配电故障码集合加锁访问
- upmsg buildMsg / httpserver pushSystemData / LowerCommManager 均改为
  持锁快照,避免 listen 线程与 comm 线程撕裂读写
- 修复析构顺序:先删 httpServer 再删其他对象,避免 use-after-free
- 修复 ccuState reserved2 越界读(协议预留 2 字节,结构体仅声明 1),
  修正 coutMsg 中 SOC 门限/功率限制字段打印
- udpComm::sendDisSysCmd 不再吞掉异常,返回 sendMsg 实际结果并记录 ERROR,
  新增 SendDisSysCmdFailsWithoutSocket 单测
- 新增 fullFeeder 全类型 UDP 集成仿真器与 fetch-data/clean-data 脚本,
  .gitignore 补充 SQLite 运行期文件与 fullFeeder 二进制
2026-08-21 11:36:19 +08:00
zjk 7819ea621f 基线:UDP 收包长度校验 + SQLite 表描述符重构 + 清理设计文档 2026-08-19 22:31:23 +08:00
zjk f50c7bd612 数据库:下位机交互数据全量落库,SQLite 封装重构
- 新增 msg_log 原始帧表,RX/TX 双向记录原始字节与校验结果
- SQLite 封装改为描述符驱动的泛化 insert,删除 10 个手写 SQL
- 新增 ccuSetParmCmd/ccuSetParmFb 表,补齐 CCU 参数设定反馈落库
- 错误防崩溃:统一加锁、fail-open 降级、损坏自动重建、析构顺序修复
- WAL/迁移/预编译语句路径,数据库路径支持 mission 配置 dbpath
- 清理未使用的 shell.c/sqlite3ext.h/SQLite.zip
2026-08-19 16:28:41 +08:00
zjk 4125d9ad77 清理:删除废弃代码与旧 WebUI 残留
- backup/:SQLiteDB 旧备份
- src/bck/:整个旧 pPowerManger 备份源码树
- src/appPowerMangerWebUI/:旧 crow WebUI(已从构建移除)
- bin/static、bin/templates:旧 crow WebUI 运行时资源
- test/SQLiteDBTest.cpp、test/udpCommTest.cpp:未参与编译,已被 test/until 取代
2026-08-19 14:32:35 +08:00
zjk f3dd9e2c5a 构建:修复 GTest 链接失败——显式指定 Linux GTest 配置,避免从 PATH 探测到 Windows Anaconda 的 .lib 2026-08-18 19:45:50 +08:00
zjk de298414ff 测试:GoogleTest 全面单测(10工况设备表/故障检测/协议/消息/SQLite读回)+ UDP→SQLite 集成测试,src 零改动
build-test-deploy / ci (push) Failing after 11m45s
2026-08-14 21:29:57 +08:00
zjk 5ac3ca5def 修复 SQLiteTest 链接:Ubuntu 20.04(glibc<2.34) dlopen/dladdr 在 libdl 中,需链接 dl
build-test-deploy / ci (push) Failing after 6m59s
2026-08-14 15:44:11 +08:00
zjk 987d8b3ce0 增加了info字段,增加了上电检测,调整了绝缘电阻上报逻辑 2026-02-09 14:48:58 +08:00
zjk e5193bd7f7 修复了程序在启动时偶尔崩溃的问题 2026-01-27 20:45:00 +08:00
zjk b5ca051831 为数据库插入增加保护 2026-01-19 21:52:26 +08:00
zjk 481171d9ea 增加了xc声纳的上电 2025-09-12 11:35:17 +08:00
zjk 2ef5fd92ac 0712提交 2025-07-12 15:39:28 +08:00
zjk 4116397f3e 完善了次级配电的功能 2025-07-04 09:53:56 +08:00
zjk ba8cd0383a 0702调试 2025-07-02 16:20:36 +08:00
zjk 16d4c25c77 系修复了dcdc和冷却系统获取状态的bug,优化故障码变量 2025-06-30 18:49:16 +08:00
zjk 45fdc455e9 修改了上电操作 2025-06-24 10:45:37 +08:00
zjk 035205101b 0606 2025-06-06 13:28:05 +08:00
zjk 8fab3bdf06 完善了显示,修改了复合管控的通信协议 2025-06-03 20:05:08 +08:00
zjk ee050bb58b 523调试 2025-05-23 15:38:23 +08:00
zjk e0b3e986c7 增加了网页服务 2025-05-16 01:08:12 +08:00
zjk 476be20025 修改了次级配电协议,优化消息结构 2025-05-14 10:02:47 +08:00
zjk a0e16ec538 调试完成了动力母线消息 2025-05-06 19:05:13 +08:00
zjk c46edb0015 配线app可用 2025-05-05 19:35:53 +08:00
zjk 3e33c95cb1 增加了配电app 2025-05-05 19:03:57 +08:00
zjk 97a86acae4 进行了水面端测试 2025-04-28 19:41:37 +08:00
zjk c51eb7073a 使用tinyfsm 2025-04-06 20:16:37 +08:00
zjk 115ee57b14 优化了主页的读取方式 2025-02-27 10:00:42 +08:00
zjk 4ee5cbfb86 增加了次级配电状态,设备状态表,设备上电指令的订阅\解析\发布等功能 2025-02-20 23:15:37 +08:00
zjk 14f7890d77 增加了解析上位机指令的功能 2025-02-18 23:01:29 +08:00
zjk 7dac85505b 为操作指令增加了数据库写入代码 2025-02-18 18:46:17 +08:00
zjk a179789b3f 增加了udp的测试代码,增加了时间获取函数,完善了ccu发送指令的函数 2025-02-18 16:57:11 +08:00
zjk 1aa46629a7 增加了配电控制器操作代码 2025-02-17 21:57:45 +08:00
zjk 845360c46b 增加了driver文件,并且删除了编译过程文件 2025-02-13 22:26:37 +08:00
zjk 6d00ecfbf2 完善了数据库功能,将udp单独编译为一个静态库 2025-02-13 22:00:15 +08:00
zjk f83f737a79 增加了数据库下载的功能 2025-02-13 09:34:12 +08:00
zjk ed0d7f7fe0 为状态机增加了线程运行,并补充了数据库 2025-02-10 21:30:53 +08:00
zjk 59faa14afb 增加了数据库及测试程序 2025-02-10 16:37:22 +08:00
zjk e072f2b9d4 优化了测试界面 2025-02-08 15:12:08 +08:00
zjk 6f5de4b614 增加了新的调试界面,优化了一些功能 2025-02-06 12:01:18 +08:00
zjk c824caa27e 优化了disSys的代码,增加了16进制显示的功能 2025-01-21 21:21:58 +08:00
zjk 0d5ffb31ce 更够实时更新弹窗的数据 2025-01-21 20:12:38 +08:00
zjk 57dd677271 增加了状态显示弹窗 2025-01-21 19:34:23 +08:00
zjk d2961cf005 使用状态机增加了初始状态和故障状态,编写了gui调试程序 2025-01-02 18:28:47 +08:00
zjk 6374e60b91 修复了UDP通信的BUG并优化了相关代码,增加了json报告功能 2024-11-23 17:28:51 +08:00