新增复合管控器(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 补充编译产物/临时文件忽略
This commit is contained in:
zjk
2026-08-26 22:43:10 +08:00
parent e0488d513b
commit 54c32a180a
79 changed files with 8731 additions and 1398 deletions
+22 -19
View File
@@ -1,18 +1,18 @@
#!/bin/bash
#=======================================================================
# FILE: scripts/deploy.sh
# DESC: 部署 pPowerManger / pPowerMangerHost(aarch64 二进制 + mission)
# 到目标板卡 (RK3588 / Ubuntu 22.04),并用三个独立 systemd 服务
# (moosdb / pPowerManger / pPowerMangerHost)管理。
# 只安装服务 + daemon-reload,默认不启动、不自启。
# DESC: 部署 pPowerManger / pPowerMangerHost / pCCU(aarch64 二进制 +
# mission)到目标板卡 (RK3588 / Ubuntu 22.04),并用四个独立
# systemd 服务(moosdb / pPowerManger / pPowerMangerHost / pCCU)
# 管理。只安装服务 + daemon-reload,默认不启动、不自启。
#
# 用法:
# ./scripts/deploy.sh setup-ssh 一次性:生成 ed25519 key + ssh-copy-id
# ./scripts/deploy.sh 默认:推送二进制 + mission + 装 3 个
# ./scripts/deploy.sh 默认:推送二进制 + mission + 装 4 个
# systemd 服务 + daemon-reload(不启动)
# ./scripts/deploy.sh --start 部署后按依赖顺序启动服务
# ./scripts/deploy.sh status 板卡 3 个服务状态
# ./scripts/deploy.sh stop 停止 3 个服务
# ./scripts/deploy.sh status 板卡 4 个服务状态
# ./scripts/deploy.sh stop 停止 4 个服务
# ./scripts/deploy.sh help 显示帮助
#
# 参数:
@@ -24,9 +24,9 @@
# 板卡布局:
# /root/work/h100/bin/ aarch64 二进制
# /root/work/h100/missions/ 板卡 mission h100.moos
# /root/work/h100/data/ 数据库存储目录 (power_data.db)
# /root/work/h100/data/ 数据库存储目录 (power_data.db 等)
# /etc/systemd/system/ moosdb.service / pPowerManger.service /
# pPowerMangerHost.service
# pPowerMangerHost.service / pCCU.service
#=======================================================================
set -uo pipefail
@@ -38,7 +38,7 @@ USER="root"
BOARD_DIR="/root/work/h100"
DO_START=0
SERVICES=(moosdb pPowerManger pPowerMangerHost)
SERVICES=(moosdb pPowerManger pPowerMangerHost pCCU)
info() { printf '\033[1;36m[deploy]\033[0m %s\n' "$*"; }
ok() { printf '\033[1;32m[deploy]\033[0m %s\n' "$*"; }
@@ -91,7 +91,7 @@ cmd_setup_ssh() {
#-------------------------------------------------------------------
check_local() {
local missing=0
for b in pPowerManger pPowerMangerHost; do
for b in pPowerManger pPowerMangerHost pCCU; do
if [ ! -f "${PROJECT_ROOT}/bin/arm64/${b}" ]; then
err "缺少本地 aarch64 二进制: bin/arm64/${b}(先运行 ./scripts/build-arm64.sh)"; missing=1
elif ! file "${PROJECT_ROOT}/bin/arm64/${b}" | grep -q "aarch64"; then
@@ -178,16 +178,17 @@ cmd_deploy() {
info "推送 aarch64 二进制 ..."
${SCP} -q "${PROJECT_ROOT}/bin/arm64/pPowerManger" \
"${PROJECT_ROOT}/bin/arm64/pPowerMangerHost" \
"${PROJECT_ROOT}/bin/arm64/pCCU" \
"${SSH_TARGET}:${BOARD_DIR}/bin/" || { err "推送二进制失败"; return 1; }
info "推送 mission h100.moos ..."
${SCP} -q "${PROJECT_ROOT}/missions/h100.moos" \
"${SSH_TARGET}:${BOARD_DIR}/missions/" || { err "推送 mission 失败"; return 1; }
${SSH} "${SSH_TARGET}" "chmod +x ${BOARD_DIR}/bin/pPowerManger ${BOARD_DIR}/bin/pPowerMangerHost"
${SSH} "${SSH_TARGET}" "chmod +x ${BOARD_DIR}/bin/pPowerManger ${BOARD_DIR}/bin/pPowerMangerHost ${BOARD_DIR}/bin/pCCU"
ok "二进制与 mission 已推送"
# 2. 生成并安装 3 个 systemd unit
# 2. 生成并安装 4 个 systemd unit
local unit
for s in "${SERVICES[@]}"; do
info "生成 ${s}.service ..."
@@ -211,8 +212,10 @@ cmd_deploy() {
else
echo ""
info "部署完成。手动启动(或加 --start):"
echo " systemctl start moosdb pPowerManger pPowerMangerHost"
echo " 浏览器: http://${HOST}:18080"
echo " systemctl start moosdb pPowerManger pPowerMangerHost pCCU"
echo " 浏览器: http://${HOST}:18080 (上位机模拟)"
echo " http://${HOST}:8090 (pPowerManger)"
echo " http://${HOST}:8080 (pCCU)"
fi
}
@@ -220,19 +223,19 @@ cmd_deploy() {
# 命令: start / status / stop
#-------------------------------------------------------------------
cmd_start() {
info "启动服务 (moosdb -> pPowerManger -> pPowerMangerHost) ..."
info "启动服务 (moosdb -> pPowerManger / pPowerMangerHost / pCCU) ..."
${SSH} "${SSH_TARGET}" "systemctl start moosdb && sleep 1 && \
systemctl start pPowerManger pPowerMangerHost" || { err "启动失败"; return 1; }
systemctl start pPowerManger pPowerMangerHost pCCU" || { err "启动失败"; return 1; }
ok "服务已启动"
cmd_status
}
cmd_status() {
${SSH} "${SSH_TARGET}" "systemctl --no-pager status moosdb pPowerManger pPowerMangerHost" || true
${SSH} "${SSH_TARGET}" "systemctl --no-pager status ${SERVICES[*]}" || true
}
cmd_stop() {
${SSH} "${SSH_TARGET}" "systemctl stop pPowerMangerHost pPowerManger moosdb" && \
${SSH} "${SSH_TARGET}" "systemctl stop pPowerMangerHost pPowerManger pCCU moosdb" && \
ok "服务已停止" || err "停止服务失败"
}