zjk
|
f7d2b98dc1
|
脚本/mission 移除已废弃的 deploy.sh:clean-data/fetch-data/sync-board-time 帮助与报错文案改用 ssh-copy-id 指引,mission 注释同步改为 build-board.sh 部署,避免引用已删除脚本
|
2026-09-09 20:52:14 +08:00 |
|
zjk
|
91be306a92
|
pELoad 多处完善:测量改为 FETCh 读缓存(不触发测量、修复真实设备 MEAS 查询超时失败)+ 异步查询不阻塞 100ms 控制循环;CV 优先控制路径与 FUNC:MODE FIX 防护;sqlite 增加 volt_set/cmd_volt 列并支持旧库自动迁移;页面重构为静态骨架(输入框永不重建、聚焦不被打断)+ 指令确认/步骤引导/测量诊断;deploy.sh 服务列表补 pMotor/pELoad,missions/h100.moos 补 pELoad 新配置
|
2026-09-03 16:40:27 +08:00 |
|
zjk
|
2a34b79461
|
新增 pELoad 电子负载(IT6000C)控制程序:以太网 Raw Socket SCPI 直连设备,100ms 周期功率控制(订阅 MOOS 功率消息按 P/U 折算电流,CC/CV 双环路优先 + FUNC:MODE FIX 防护),网页人机交互(步骤引导/防误触确认),sqlite3 存储(100ms 高采样 V/I/P 测量表 meas_log + CSV 导出分析),并接入 scripts/build-board.sh 板卡部署与 systemd 服务、missions/h100.moos 配置
|
2026-09-03 12:26:02 +08:00 |
|
zjk
|
873a1a9b09
|
新增 pMotor 推进电机操作程序:经 pCanBridge(CAN1) 与电机控制器交互
build-test-deploy / ci (push) Failing after 32m37s
- 协议模块(protocol/MotorCan):12 条 CAN ID、指令帧 0x18EF2010 编码、
状态帧(转速/母线电压/温度)与支路一/二故障报警帧解码,故障位按协议
逐位映射中文描述(docs/推进电机通信协议20260321.docx)
- 主程序(MOOS 应用):订阅 pCanBridge 透传 CAN_0x* 解码电机状态;
500ms 周期下发指令帧(CAN_TX_0x18EF2010,m_sSrcAux=CAN1),
可选 red_channel 冗余下发 0x18EF2011;复位位保持 reset_hold_sec
- 网页(18081):按协议指令帧字段独立下发(使能命令 Byte0 bit0 /
复位命令 Byte0 bit1 / 期望转速 Byte2/3,无联动按钮);
WebSocket 1Hz 推送转速/电压/温度/故障告警/链路统计
- 配置接入:missions/h100.moos 增加 pMotor 配置块(can_channel=CAN1)
- 测试:pmotorTest 92 项(指令帧字节级对照协议示例、解码/故障表)
- 部署:scripts/build-board.sh 增加 pMotor 产物拷贝 + pMotor.service;
.gitignore 补 bin/pMotor、bin/pmotorTest
- 联调验证:MOOSDB+pCanBridge+假CANET 全链路,下行帧 01 00 E8 03
与协议文档示例一致,复位位 3s 保持行为正确
|
2026-09-02 10:50:28 +08:00 |
|
zjk
|
67e732045a
|
pCanBridge 扩展多通道支持:每通道独立TCP链路 + 上下行对称通道标注(m_sSrcAux)
pCanBridge:
- 配置改为 channel = <通道名>,<IP>,<工作端口> 重复行(兼容旧 can_host/can_port 单通道回退),
每通道一条独立 CanEndpoint(TCP Client) + 接收线程,对应 CANET 的 CAN0=4001..CAN7=4008
- 上行 CAN_0x%08X 不变,m_sSrcAux=通道名区分来源通道
- 下行按 m_sSrcAux 路由到对应通道;回退规则:default_channel > 单通道 > 多通道告警丢弃
- buildReport 逐通道统计(连接/收发帧数/错误/重连)
pCCU:
- 新增 bcu_can_channel 配置(默认 CAN0),BCU 断路器下行 Post 前 SetSourceAux 指定目标通道,
key 保持 CAN_TX_0x%08X(与上行通道标注对称,key 格式不变)
配置/文档:pCanBridge.moos、CanBridge_Info、pCCU.moos、missions/h100.moos、
test/pccu/pccu_it.moos 同步新格式。
验证:伪造 CANET Server 冒烟通过(多通道建链/上行解析发布/SQLite channel 列/
下行通道路由与回退丢弃/srcAux 经 MOOSDB 往返);
pccu 集成测试 PASSED(BCU 断路器下行 3 帧经新路由全部正确);
pccuTest 183/183、PowerMangerTests 64/64 通过。
|
2026-09-01 21:23:52 +08:00 |
|
zjk
|
0639b5904d
|
pCCU 新增真实CCU配电桥接(rcu链路原帧透传+网页显示)并适配板卡端口拓扑
- protocol/DisProtocol: 配电协议8条消息(指令0x0001~4/反馈0x0005~8, Sum8),复用pmSysvariable结构体+static_assert核对
- ChecksumPolicy 新增 Sum8;Frame 支持 1 字节校验和
- MessageRegistry 支持 (id+帧总长) 二维查找:配电指令与PM操控指令共用id按帧长区分(帧头length字段不可信)
- LinkManager: 按实际帧长分发 + sendRaw原帧透传 + 非本协议帧头落库节流告警;UdpEndpoint sendTo 加锁
- comm/RcuLinkManager: 真实CCU链路;core/DisBridge: 配电桥接器(反馈转pPowerManger+解码显示,指令转真实CCU,0x0004仅显示不转发)
- 网页新增"真实CCU"页签全字段展示;SnapshotBuilder realCcu 节 + rcu 链路描述
- h100.moos: 端口腾挪(真实CCU固定上报5001归pCCU,pPowerManger iport=5002),rcu_remote=192.168.0.140:7000
- 测试: pccuTest 新增配电/Sum8/长度分发/RCU注册表用例(176项);集成测试新增桥接字节一致+不误转发用例
|
2026-09-01 15:06:11 +08:00 |
|
zjk
|
5b8f0b1421
|
锂电池改用 BCU-MBMS CAN 协议按节点解析 + bcu_node 解析数据落库 + 板卡对时脚本
- pCCU/CanBms:按《04KT38电池BCU-MBMS通信(CAN)定义》重写解码,
BmsStatus 单状态模型改为 BcuNodeStatus 多节点模型(0x10XX00YY,
节点地址 01~36h),支持 0x0000 电压/电流/SOC/告警码、0x0001 单体
电压、0x0002 单体温度、0x0003 继电器、0x0006 绝缘/端口电压、
0x0010 告警位(附录1 中文码表)六类报文
- 平均单体温度偏移修正:协议文档 BYTE5 写"偏移0"有误,实测固件与
最高/最低一致均带 -40℃ 偏移(实车 0x10020002 原始 68/69 减 40 后
为 28/29℃,落在最低28~最高30区间内,按文档直读则超出物理范围)
- pCCU/DbStore:新增 bcu_node 解析数据表,锂电池 BMS 报文每帧落一行
节点合成状态(原 comm_log 仅原始帧,BMS/CAN 帧此前不落 pCCU 库),
buildReport 增加 BMS 记录数
- 快照/网页:BCU 按节点分组展示(告警位解析中文含义、数据 age),
PM 状态报文锂电池/应急电池卡片
- pPowerManger:新增 iport 本地输入端口配置(UDP bind 延迟到
OnStartUp 读取配置后执行,保证 iport/ccuhost/ccuport 生效),
各 mission 文件补充注释
- test:CAN BCU 解码用例按新协议/新偏移更新(实车抓包 + 文档示例值),
133 项全部通过
- docs:删除旧 BMS 协议(xlsx/20230324docx),归档 04KT38 BCU-MBMS
CAN 定义、配电控制器通信协议 20260824、配电系统 CAN 通讯协议
- scripts:新增 sync-board-time.sh,223 板卡(RK3588)时间校正
(本机为基准 + RTT 折半补偿对时,尽力写 RTC,支持 status/--time)
|
2026-09-01 12:58:33 +08:00 |
|
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
|
b547772709
|
新增 pCanBridge:USBCAN-8E-U CAN->MOOSDB 透传桥 + SQLite 落库
新应用 src/pCanBridge(独立 MOOS App,单通道):
- CanEndpoint:TCP Client 连接 CANET/USBCAN-8E-U 工作端口
(目标 IP/端口可配置,默认 192.168.0.222:4001=CAN0),
接收线程流式缓冲按 13 字节切帧,过滤无效 DLC(>8),
断线自动重连(非阻塞 connect+超时 / SO_RCVTIMEO 读超时)。
- 帧协议(CANET-8E-U 手册 8.1):byte0=帧信息(bit7 FF/bit6 RTR/
bit3~0 DLC),byte1~4=ID 大端,byte5~12=数据。
- MOOS 映射:变量名 CAN_0x%08X=CAN ID(不缩减),m_sVal=二进制
data(逐帧透传不限流),m_sSrcAux=通道名(can_channel_name),
m_dfVal2=原始帧信息字节(用于区分标准/扩展、数据/远程帧)。
- CanDbStore:每帧落库 SQLite(can_frame 表:time/channel/
frame_info/can_id/dlc/hex,含 time、can_id 索引),参考 pCCU
DbStore:预处理语句 + WAL + synchronous=NORMAL,路径由 dbpath
配置;复用 pPowerManger 的 sqlite3 amalgamation。
- AppCast 输出连接状态/收帧/发布/落库统计。
配套:
- missions/h100.moos 新增 pCanBridge 配置块(板卡 dbpath 指向
data 目录)。
- build-board.sh / deploy.sh 支持 pCanBridge:产物部署 +
pCanBridge.service 安装,服务列表加入第 5 个服务。
- .gitignore 忽略 bin/pCanBridge 与本机默认数据库。
已验证(板卡 192.168.0.223 实测):服务 active,连接设备正常,
~60 帧/s 透传,落库 9000+ 行 integrity ok、无丢帧。
|
2026-08-31 19:14:59 +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
|
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
|
f219b13a47
|
日志:日志文件路径支持 mission 配置 logpath
- 移除 main.cpp 中硬编码的 pPowerManger.log
- OnStartUp 读取 logpath 配置后调用 loguru::add_file
- 不配置则默认当前目录 pPowerManger.log,板上配置为 h100/data 目录
|
2026-08-19 16:54:31 +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
|
48be5115c9
|
构建/部署:切换 Ubuntu 22.04 交叉编译环境,新增板卡部署工具
- ci/Dockerfile:基础镜像 20.04 → 22.04(板卡实测为 Orange Pi Jammy,
旧 focal 镜像保留为 h100-power-manager-ci:arm64-focal)
- scripts/build-arm64-image.sh:arm64 镜像构建(支持 --force 重建)
- scripts/build-arm64.sh:日常交叉编译(产物输出 bin/arm64/,与本地隔离)
- scripts/deploy.sh:板卡部署(推送二进制+mission,安装 3 个 systemd 服务)
- missions/h100.moos:板卡专用 mission 配置
- .gitignore:忽略 build-arm64/、webassets_gen.h 等构建产物
|
2026-08-19 14:32:46 +08:00 |
|