zjk 873a1a9b09
build-test-deploy / ci (push) Failing after 32m37s
新增 pMotor 推进电机操作程序:经 pCanBridge(CAN1) 与电机控制器交互
- 协议模块(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
2026-01-19 21:52:26 +08:00
2025-04-07 21:18:02 +08:00
2024-10-22 17:28:15 +08:00
2025-09-12 11:35:17 +08:00
2025-06-06 13:28:05 +08:00
2025-05-23 15:38:23 +08:00
2025-07-02 16:20:36 +08:00

H100PowerManger

H100 能源管理程序

CI

测试报告

每次 CI 运行后自动生成测试报告:

自动化测试(PowerManger)

CI 在 aarch64 (QEMU) 环境下运行两类测试,不改动任何 src/ 生产代码:

单元测试(GoogleTest,PowerMangerTests,56 例)

  • DriverTest:10 个工况的设备表生成(STANDBY/岸基备航/水中备航/巡航/高速/上浮下潜/浮调/水下侦查/水面侦查/DJ)+ 设备状态读写 + JSON 往返
  • SystemDataTest:4 类配电/CCU 反馈的故障检测(断路器 0x55/0xAA/0x5A 映射、绝缘低、电源失电、漏水、DCDC、继电器位提取、缩放)+ 故障码集合/等级 + 漏水位
  • FaultMapTest:锂电池故障表(54) / 配电故障表(45) 完整性
  • UpmsgTest:上位机/外部通信 JSON 消息解析与序列化往返
  • UdpCommTest:UDP 校验和 / 消息头识别 / 校验解析 / 日期
  • PmSysvariableTest:#pragma pack(1) 协议结构体大小/偏移 + 枚举完整性
  • SqliteTest:用裸 sqlite3 读回校验 10 个 insertData 写入

集成测试

  • 冒烟:MOOSDB + pPowerManger 拉起存活
  • UDP 回环:udpFeeder 发送真实 CCU 反馈 → 校验 power_data.db 落行(验证 UDP→SystemData→SQLite 全链路)

本地跑测试:需要 GoogleTest(git clone https://gitea2.zhaojingkui.xyz/zjk/googletest.git 后 cmake && make && make install),然后 ./build.sh 即可。

构建产物(Gitea Releases,手动部署)

CI 构建的 aarch64 二进制(RK3588 / Ubuntu 22.04,板卡实测为 Orange Pi 5 Plus 的 Jammy 系统)会发布到 Gitea Releases,供手动下载部署:

  • 版本号 Release:推送 v* tag(如 v1.0.0)时创建,正式版 → https://gitea2.zhaojingkui.xyz/zjk/H100PowerManger/releases/tag/v1.0.0
  • latest Release(测试):每次 main push 时更新,标记为预发布(测试用) → https://gitea2.zhaojingkui.xyz/zjk/H100PowerManger/releases/tag/latest

发布流程(CI 自动执行,仅测试通过后发布)

Publish release / Publish latest release 步骤(if: success(),即构建 + 测试全部通过才发布)用 ${{ secrets.CI_TOKEN }} 调 Gitea API 完成:

  1. 创建 Release:POST /releases
  2. 删除旧 latest(仅 latest):DELETE /releases/tags/latest
  3. 上传附件:POST /releases/{id}/assets?name=pPowerManger(multipart 字段 attachment)
  4. 按 github.ref 分支处理:
    • refs/tags/v* → 直接为该 tag 创建版本号 Release
    • refs/heads/main → git tag -f latest && git push -f origin latest,删除旧 latest Release,重建为 prerelease,再上传二进制
  5. Release body 自动带上:commit / 时间 / 测试报告链接 / 手动部署命令

手动部署到板卡

从 Releases 页面下载 pPowerManger 后,手动推送到板卡(仅推送,不自动重启):

rsync -avz pPowerManger root@192.168.0.223:/root/work/moos_ws/moos-ivp-extend/bin/pPowerManger
S
Description
No description provided
Readme
33 MiB
Languages
C 79%
C++ 14.4%
Python 5.4%
Shell 0.6%
HTML 0.4%
Other 0.2%