From 2590282aedd14d9d330a33396da21cb20c4fd9f1 Mon Sep 17 00:00:00 2001 From: zjk <1553836110@qq.com> Date: Fri, 28 Aug 2026 00:09:17 +0800 Subject: [PATCH] =?UTF-8?q?0827=E5=8D=8F=E8=AE=AE=E4=BF=AE=E8=AE=A2?= =?UTF-8?q?=EF=BC=9A=E5=A7=BF=E6=80=81=E6=95=B0=E6=8D=AE2=E6=94=B9?= =?UTF-8?q?=E9=A2=84=E7=95=99=20+=20=E7=8A=B6=E6=80=81=E5=B8=A7=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E5=89=A9=E4=BD=99=E5=8F=91=E7=94=B5=E9=87=8F=20+=20CC?= =?UTF-8?q?U=E5=9C=B0=E5=9D=80=E5=8F=AF=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- ...息中心-复合管控双锂电阶段协议20231006.docx | Bin 53314 -> 0 bytes docs/控制主机与复合管控器通信协议- 0824.xlsx | Bin 32287 -> 32242 bytes docs/超滑FC和复合管控器通讯协议 - 0821.docx | Bin 48265 -> 0 bytes docs/超滑FC和复合管控器通讯协议 - 0827.docx | Bin 0 -> 52524 bytes docs/锂电池协议20230324(1).docx | Bin 43079 -> 0 bytes missions/h100.moos | 3 ++ missions/pPowerManger.moos | 3 ++ scripts/build-board.sh | 45 ++++++++++++++++-- scripts/deploy.sh | 42 ++++++++++++++-- src/pCCU/CCU.cpp | 4 +- src/pCCU/core/SnapshotBuilder.cpp | 3 +- src/pCCU/protocol/FcProtocol.cpp | 21 ++++---- src/pCCU/protocol/FcProtocol.h | 13 ++--- src/pCCU/protocol/PmProtocol.cpp | 6 +-- src/pCCU/protocol/PmProtocol.h | 4 +- src/pCCU/web/pages/index.h | 3 +- src/pPowerManger/LowerCommManager.cpp | 9 ++++ src/pPowerManger/LowerCommManager.h | 3 ++ src/pPowerManger/PowerManger.cpp | 27 +++++++++-- src/pPowerManger/PowerManger.h | 3 ++ src/pPowerManger/httpserver/fuelcell.h | 14 ++---- src/pPowerManger/httpserver/httpserver.cpp | 34 +++++-------- src/pPowerManger/pPowerManger.moos | 3 ++ src/pPowerManger/pmSysvariable.h | 6 +-- src/pPowerManger/sqlit3/SQLite.cpp | 2 - test/pccu/pccuTest.cpp | 16 +++---- test/pccu/pccu_integration_test.py | 22 ++++++--- test/pccu/pccu_sim.py | 4 +- 28 files changed, 199 insertions(+), 91 deletions(-) delete mode 100644 docs/信息中心-复合管控双锂电阶段协议20231006.docx delete mode 100644 docs/超滑FC和复合管控器通讯协议 - 0821.docx create mode 100644 docs/超滑FC和复合管控器通讯协议 - 0827.docx delete mode 100644 docs/锂电池协议20230324(1).docx diff --git a/docs/信息中心-复合管控双锂电阶段协议20231006.docx b/docs/信息中心-复合管控双锂电阶段协议20231006.docx deleted file mode 100644 index 2ffdcaab436fe74df4863e8f2086e7e714850cd8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53314 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 G*}nj+NQR>T delta 4108 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

plC|f-h}-r zm>f6scw1EDp@H$&VJwpgYomUU#bY-K-hi?9+Vpje7cJhq4ISE{$Oq9;1FgxQ?Bw%U zm4V@HiZni?1sU^tUmksL))GcYHC7T`T6Q_sJ9e8 zNfuErw!~lxAoKb+&iNjv^DeWihB1-%x6Q-eN%Q_*Slyj5k~D@(y)J=&$=l^Kb+GMV8Vj|!p< z?69+g_W?{85sfRP-Faw{q%u2{T~jo{MM66}@Y9xgLqD7UB!3Jz{m@}P)=xYXM1{Bl!tp*G9~rE52AveGMA&TJ;# za`AUFrfRcfUVMTyeEf-}E7-O;;ic3seJA|O8Scae`Q~BcXwjqz?>HOCBVJd4$JP4S z&4823wUwpOzH_M{CvIXQijnX0nX}yDGB`aZgX@)PPPFW2ZK~5(8`LG}$L>0DOtNRm zDkBEflQFIZDp$@sOXC`cxLSh+)f|56oo`QC<~Ce9)0Tg=28PvLNqS;?8ox|*nUYUi zRj!QY4o=Qo^q#UrH;U?Jo)=63uw-hzdlxoY47$YqRBsAyVuv}ow-7AW;76YlyI2jg zaH{ZGZp7}E1|3{Q<1=-#tt=V4=3Q}9&c-v@z;e`2v#kQv2=t7F|9$lBndt(qC-W9; z9BU||e>LkmGT*dT`u<$H8@>nR_GhveUfj^d&fyEhIm*}+rQRVZ5)C-aoO+Qx2DK)c*EKwro(7n0;3m7Ky|zc zVWzpUOfyDWSk}jL9Nl_5(&&il+!57X&7(L{-5GU!dRgC*bB+Q2M|SzZ%=ri9O|(rv zw)M(r%9!KS3(tVBn6xiHqe9+k+n&pdP({r`)mHN`8{A~ZNW0)wlp5#PP<7M`Ef?=M zV`rIuI(AaTHTJ>PL#Mc}fi;K=cx`YpQR;>wxSZ&8gLvXUqcw5+h9$UwXdJ2y-X4wZm8+h5$bzu7_#U$#@bK!Y|PAF%bU@ zSEDmvAnFKl5!=GK1pYf3fWV9p=9`SuisYnIoj>4o?03X%Zn%XC-v_ V%168tAq_SmwnxY?F5!=0{{o%9mzn?o diff --git a/docs/超滑FC和复合管控器通讯协议 - 0821.docx b/docs/超滑FC和复合管控器通讯协议 - 0821.docx deleted file mode 100644 index e1dda24be37b9c8753b0f356e43ce4c056eda084..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48265 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 diff --git a/docs/超滑FC和复合管控器通讯协议 - 0827.docx b/docs/超滑FC和复合管控器通讯协议 - 0827.docx new file mode 100644 index 0000000000000000000000000000000000000000..523db56f5f4e794701d9a3259fd90580c1304410 GIT binary patch literal 52524 zcmeFXV|!-7*Wer5wr$(CZKu<*ZQC8&wrx8dn;rX(lga;?Ip;icosTfHU+foEt7`96 zS1r`4pOP#n7#a`+5EKv)5HS!zPyBp3Fc45ZBoGiP5EO{6sJ)$wxt)ulnx})gvp$1| ztqoBj7zkB95Xg`G|9$=sUV-LRdD$T$q_CTyZ{kb!BwPLnsU?CBuFCwN)vN1b{Vhf} z%HQ8T$))flHOQNKAQRK?y>kjimMrhh6yD+K&FwWy3`uUP1+CmCdjoCVF>$`OYRq7idWnBgvU7>fcyk-^c~Ld zgNE>M5jk?UgvfsfuU}F6+DVh74>w-4HcZfDKn?t&PB{PAt{|j-r6?de?xdu5m9kv! zf0+#_Z4@*r^3Gont0D46L%sdnvoVJ^vU8?Y7udqJ`ZRlifmS!_QT3&Dmo zR{Dha!JS6^VYTz*c9z)R)K7FcHcX7<*@-6AFgUl}3+G-%ePtt&p>)s%(2JdlG4eZu3C6}vxBO9{%hS{1`J7HP{NVGF!Ozgu z&oboU?rZN}_Bt6KSvgPi_W|^MxB0g_Tpry=K3M9?T01);%T|psWb@ulC$d^wpT^@tV&Uj62S+VXi-%EtumwZxgX(Li8$bW%{-qA(F z@1SyAUiqykT&*JPSOZ8Iu1ZzAbt=@6HnW#*)RA_vm#);2_8vaFGypafSk;MA%+)dA z=Iz7y?r?hhxBi-{Ih*HA!|<~8u`zfTIuhCv?U*5TiN@Mj|0olRGvfXv!zHU2rx(QM z<@Rc3otV2tZT^};daC&+&h^H>(!H

N+OdTth<)_g~>hx{K+_|Z&!Z8OGUtCoQd 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 literal 0 HcmV?d00001 diff --git a/docs/锂电池协议20230324(1).docx b/docs/锂电池协议20230324(1).docx deleted file mode 100644 index 75d089c29e84721df8ae582d774a3b10d3c78a10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43079 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 CnAk!9 diff --git a/missions/h100.moos b/missions/h100.moos index 3420367..091dc9b 100644 --- a/missions/h100.moos +++ b/missions/h100.moos @@ -16,6 +16,9 @@ ProcessConfig = pPowerManger 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 diff --git a/missions/pPowerManger.moos b/missions/pPowerManger.moos index 3fe4061..60c307b 100644 --- a/missions/pPowerManger.moos +++ b/missions/pPowerManger.moos @@ -2,4 +2,7 @@ ProcessConfig = pPowerManger { AppTick = 4 CommsTick = 4 + // CCU 地址;不配置则默认 127.0.0.1:7000 + // ccuhost = 127.0.0.1 + // ccuport = 7000 } \ No newline at end of file diff --git a/scripts/build-board.sh b/scripts/build-board.sh index 5974d2a..c1b4b82 100755 --- a/scripts/build-board.sh +++ b/scripts/build-board.sh @@ -19,6 +19,8 @@ # --jobs 编译并行度(默认板卡 nproc) # --start 编译部署后重启服务 # --clean 先重新 cmake(配置变更时用) +# --ccu-host 覆盖 mission 中 pPowerManger 的 CCU 地址 (ccuhost) +# --ccu-port 覆盖 mission 中 pPowerManger 的 CCU 端口 (ccuport) # -h, --help 显示帮助 # # 前置: 板卡已配免密 SSH,且有编译环境(cmake/g++/MOOS/jsoncpp), @@ -39,7 +41,8 @@ # 关联端口: # FC 状态: FC:7000 -> 板卡:6000 (pCCU 监听) # FC 控制: 板卡:6000 -> FC:7000 (pCCU 发送) -# PM 指令: pPowerManger:5001 -> pCCU:7000 (127.0.0.1,见 PowerManger.h CCUHOST) +# PM 指令: pPowerManger:5001 -> pCCU:7000 (127.0.0.1, +# 见 missions/h100.moos ccuhost/ccuport,默认值在 PowerManger.h CCUHOST) # PM 状态: pCCU:7000 -> pPowerManger:5001 (127.0.0.1) # # 排障提示: @@ -62,6 +65,8 @@ BOARD_BIN="/root/work/h100/bin" JOBS="" DO_START=0 DO_CLEAN=0 +CCU_HOST="" +CCU_PORT="" SERVICES=(moosdb pPowerManger pPowerMangerHost pCCU) @@ -71,7 +76,7 @@ warn() { printf '\033[1;33m[build-board]\033[0m %s\n' "$*"; } err() { printf '\033[1;31m[build-board]\033[0m %s\n' "$*"; } usage() { - sed -n '2,29p' "${BASH_SOURCE[0]}" | sed 's/^# \{0,1\}//' + sed -n '2,31p' "${BASH_SOURCE[0]}" | sed 's/^# \{0,1\}//' exit 0 } @@ -87,6 +92,8 @@ while [ $# -gt 0 ]; do --jobs) [ $# -ge 2 ] || { err "--jobs 需要参数"; exit 1; }; JOBS="$2"; shift 2 ;; --start) DO_START=1; shift ;; --clean) DO_CLEAN=1; shift ;; + --ccu-host) [ $# -ge 2 ] || { err "--ccu-host 需要参数"; exit 1; }; CCU_HOST="$2"; shift 2 ;; + --ccu-port) [ $# -ge 2 ] || { err "--ccu-port 需要参数"; exit 1; }; CCU_PORT="$2"; shift 2 ;; -h|--help) usage ;; *) err "未知参数: $1(见 --help)"; exit 1 ;; esac @@ -95,6 +102,10 @@ done SSH_TARGET="${USER}@${HOST}" SSH="ssh -o BatchMode=yes -o ConnectTimeout=5" +case "${CCU_PORT}" in + ""|*[!0-9]*) [ -z "${CCU_PORT}" ] || { err "--ccu-port 必须是数字端口: ${CCU_PORT}"; exit 1; } ;; +esac + #------------------------------------------------------------------- # 1. 前置检查 #------------------------------------------------------------------- @@ -105,6 +116,21 @@ if ! ${SSH} "${SSH_TARGET}" 'true' 2>/dev/null; then fi ok "SSH 连接正常: ${SSH_TARGET}" +#------------------------------------------------------------------- +# mission 中插入/替换 "key = value"(键已存在则替换,否则插到第一个 +# 顶层 '}' 之前,即 pPowerManger 配置块末尾) +#------------------------------------------------------------------- +upsert_moos_param() { + local f="$1" key="$2" val="$3" + if grep -qE "^[[:space:]]*${key}[[:space:]]*=" "${f}"; then + sed -i -E "s|^([[:space:]]*)${key}[[:space:]]*=.*|\1${key} = ${val}|" "${f}" + else + awk -v kv=" ${key} = ${val}" \ + '!d && /^[[:space:]]*}[[:space:]]*$/ { print kv; d=1 } { print }' \ + "${f}" > "${f}.tmp" && mv "${f}.tmp" "${f}" + fi +} + #------------------------------------------------------------------- # 2. 同步源码到板卡(排除构建产物 / git / 数据) #------------------------------------------------------------------- @@ -129,8 +155,19 @@ ok "源码已同步" if [ -f "${PROJECT_ROOT}/missions/h100.moos" ]; then info "同步 mission h100.moos ..." - rsync -az "${PROJECT_ROOT}/missions/h100.moos" \ - "${SSH_TARGET}:/root/work/h100/missions/" || { err "rsync mission 失败"; exit 1; } + local_mission="${PROJECT_ROOT}/missions/h100.moos" + tmp_moos="" + if [ -n "${CCU_HOST}" ] || [ -n "${CCU_PORT}" ]; then + tmp_moos="$(mktemp)" + cp "${local_mission}" "${tmp_moos}" + [ -n "${CCU_HOST}" ] && upsert_moos_param "${tmp_moos}" ccuhost "${CCU_HOST}" + [ -n "${CCU_PORT}" ] && upsert_moos_param "${tmp_moos}" ccuport "${CCU_PORT}" + local_mission="${tmp_moos}" + info "CCU 地址覆盖: ccuhost=${CCU_HOST:-<保持原值>} ccuport=${CCU_PORT:-<保持原值>}" + fi + rsync -az "${local_mission}" \ + "${SSH_TARGET}:/root/work/h100/missions/h100.moos" || { err "rsync mission 失败"; [ -n "${tmp_moos}" ] && rm -f "${tmp_moos}"; exit 1; } + [ -n "${tmp_moos}" ] && rm -f "${tmp_moos}" ok "mission 已同步" fi diff --git a/scripts/deploy.sh b/scripts/deploy.sh index f70f974..2962b8b 100755 --- a/scripts/deploy.sh +++ b/scripts/deploy.sh @@ -20,6 +20,8 @@ # --user 登录用户(默认 root) # --board-dir 板卡部署根目录(默认 /root/work/h100) # --start 部署后立即启动服务 +# --ccu-host 覆盖 mission 中 pPowerManger 的 CCU 地址 (ccuhost) +# --ccu-port 覆盖 mission 中 pPowerManger 的 CCU 端口 (ccuport) # # 板卡布局: # /root/work/h100/bin/ aarch64 二进制 @@ -37,6 +39,8 @@ HOST="192.168.0.223" USER="root" BOARD_DIR="/root/work/h100" DO_START=0 +CCU_HOST="" +CCU_PORT="" SERVICES=(moosdb pPowerManger pPowerMangerHost pCCU) @@ -46,7 +50,7 @@ warn() { printf '\033[1;33m[deploy]\033[0m %s\n' "$*"; } err() { printf '\033[1;31m[deploy]\033[0m %s\n' "$*"; } usage() { - sed -n '2,29p' "${BASH_SOURCE[0]}" | sed 's/^# \{0,1\}//' + sed -n '2,31p' "${BASH_SOURCE[0]}" | sed 's/^# \{0,1\}//' exit 0 } @@ -60,6 +64,8 @@ while [ $# -gt 0 ]; do --user) [ $# -ge 2 ] || { err "--user 需要参数"; exit 1; }; USER="$2"; shift 2 ;; --board-dir)[ $# -ge 2 ] || { err "--board-dir 需要参数"; exit 1; }; BOARD_DIR="$2"; shift 2 ;; --start) DO_START=1; shift ;; + --ccu-host) [ $# -ge 2 ] || { err "--ccu-host 需要参数"; exit 1; }; CCU_HOST="$2"; shift 2 ;; + --ccu-port) [ $# -ge 2 ] || { err "--ccu-port 需要参数"; exit 1; }; CCU_PORT="$2"; shift 2 ;; setup-ssh|status|stop|help|-h|--help) ACTION="$1"; shift ;; "") shift ;; *) err "未知参数: $1(见 help)"; exit 1 ;; @@ -67,6 +73,10 @@ while [ $# -gt 0 ]; do done [ -n "${ACTION}" ] || ACTION="deploy" +case "${CCU_PORT}" in + ""|*[!0-9]*) [ -z "${CCU_PORT}" ] || { err "--ccu-port 必须是数字端口: ${CCU_PORT}"; exit 1; } ;; +esac + SSH_TARGET="${USER}@${HOST}" SSH="ssh -o BatchMode=yes -o ConnectTimeout=5" SCP="scp -o BatchMode=yes -o ConnectTimeout=5" @@ -164,6 +174,21 @@ WantedBy=multi-user.target EOF } +#------------------------------------------------------------------- +# mission 中插入/替换 "key = value"(键已存在则替换,否则插到第一个 +# 顶层 '}' 之前,即 pPowerManger 配置块末尾) +#------------------------------------------------------------------- +upsert_moos_param() { + local f="$1" key="$2" val="$3" + if grep -qE "^[[:space:]]*${key}[[:space:]]*=" "${f}"; then + sed -i -E "s|^([[:space:]]*)${key}[[:space:]]*=.*|\1${key} = ${val}|" "${f}" + else + awk -v kv=" ${key} = ${val}" \ + '!d && /^[[:space:]]*}[[:space:]]*$/ { print kv; d=1 } { print }' \ + "${f}" > "${f}.tmp" && mv "${f}.tmp" "${f}" + fi +} + #------------------------------------------------------------------- # 命令: deploy #------------------------------------------------------------------- @@ -182,8 +207,19 @@ cmd_deploy() { "${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; } + local mission_src="${PROJECT_ROOT}/missions/h100.moos" + local mission_push="${mission_src}" tmp_moos="" + if [ -n "${CCU_HOST}" ] || [ -n "${CCU_PORT}" ]; then + tmp_moos="$(mktemp)" + cp "${mission_src}" "${tmp_moos}" + [ -n "${CCU_HOST}" ] && upsert_moos_param "${tmp_moos}" ccuhost "${CCU_HOST}" + [ -n "${CCU_PORT}" ] && upsert_moos_param "${tmp_moos}" ccuport "${CCU_PORT}" + mission_push="${tmp_moos}" + info "CCU 地址覆盖: ccuhost=${CCU_HOST:-<保持原值>} ccuport=${CCU_PORT:-<保持原值>}" + fi + ${SCP} -q "${mission_push}" \ + "${SSH_TARGET}:${BOARD_DIR}/missions/" || { err "推送 mission 失败"; [ -n "${tmp_moos}" ] && rm -f "${tmp_moos}"; return 1; } + [ -n "${tmp_moos}" ] && rm -f "${tmp_moos}" ${SSH} "${SSH_TARGET}" "chmod +x ${BOARD_DIR}/bin/pPowerManger ${BOARD_DIR}/bin/pPowerMangerHost ${BOARD_DIR}/bin/pCCU" ok "二进制与 mission 已推送" diff --git a/src/pCCU/CCU.cpp b/src/pCCU/CCU.cpp index 092adfb..fa2f596 100644 --- a/src/pCCU/CCU.cpp +++ b/src/pCCU/CCU.cpp @@ -218,15 +218,13 @@ void CCU::handlePmMessage(Message* msg, const std::vector& frame) { LOG_F(INFO, "[PM] control: mode=%d cmd=%d power=%d", c.mode, c.cmd, c.outputPower); - // 映射并转发到 FC(1.1.1:姿态为双通道 int16,PM 单通道填数据1) + // 映射并转发到 FC(0827协议:姿态仅数据1有效,数据2字节预留填0) FcControlValue f; f.mode = c.mode; f.cmd = c.cmd; f.outputPower = c.outputPower; f.pitch1 = c.pitch; - f.pitch2 = 0; f.roll1 = c.roll; - f.roll2 = 0; f.emergencyAllow = c.emergencyAllow; f.depth = c.depth; f.supplyCmd = c.supplyCmd; diff --git a/src/pCCU/core/SnapshotBuilder.cpp b/src/pCCU/core/SnapshotBuilder.cpp index a4b7f71..c0063b9 100644 --- a/src/pCCU/core/SnapshotBuilder.cpp +++ b/src/pCCU/core/SnapshotBuilder.cpp @@ -133,6 +133,7 @@ JsonVal fcStatusJson(const FcStatusValue& v) { put(j, "alloy_h2_flow", v.alloy_h2_flow); put(j, "fc_h2_flow", v.fc_h2_flow); put(j, "fc_o2_flow", v.fc_o2_flow); + put(j, "remaining_generation", v.remaining_generation); put(j, "heartbeat", v.heartbeat); put(j, "emergency_cmd", v.emergency_cmd); return j; @@ -173,9 +174,7 @@ JsonVal fcControlJson(const FcControlValue& v) { put(j, "cmd", v.cmd); put(j, "outputPower", v.outputPower); j["pitch1"] = JsonVal(static_cast(v.pitch1)); // 有符号 int16,×0.1° - j["pitch2"] = JsonVal(static_cast(v.pitch2)); j["roll1"] = JsonVal(static_cast(v.roll1)); - j["roll2"] = JsonVal(static_cast(v.roll2)); put(j, "emergencyAllow", v.emergencyAllow); put(j, "depth", v.depth); put(j, "supplyCmd", v.supplyCmd); diff --git a/src/pCCU/protocol/FcProtocol.cpp b/src/pCCU/protocol/FcProtocol.cpp index 3a7d95f..8081944 100644 --- a/src/pCCU/protocol/FcProtocol.cpp +++ b/src/pCCU/protocol/FcProtocol.cpp @@ -22,9 +22,9 @@ enum : size_t { CO_CMD = 1, // 操控指令 (字节8) CO_OUT_POWER = 2, // 输出功率指令 (字节9) CO_PITCH1 = 3, // 纵倾姿态数据1 int16 (字节10,11) - CO_PITCH2 = 5, // 纵倾姿态数据2 int16 (字节12,13) + CO_RESERVED1 = 5, // 预留 (字节12,13),0827协议由纵倾姿态数据2改为预留 CO_ROLL1 = 7, // 横倾姿态数据1 int16 (字节14,15) - CO_ROLL2 = 9, // 横倾姿态数据2 int16 (字节16,17) + CO_RESERVED2 = 9, // 预留 (字节16,17),0827协议由横倾姿态数据2改为预留 CO_EMER_ALLOW = 11, // 应急允许 (字节18) CO_DEPTH = 12, // 潜深深度 u16 (字节19,20) CO_SUPPLY_CMD = 14, // 补给/排放指令 (字节21) @@ -42,9 +42,9 @@ std::vector FcControlMessage::encode(const void* obj) const { FieldCodec::putU8(payload, CO_CMD, v->cmd); FieldCodec::putU8(payload, CO_OUT_POWER, v->outputPower); FieldCodec::putU16(payload, CO_PITCH1, static_cast(v->pitch1)); - FieldCodec::putU16(payload, CO_PITCH2, static_cast(v->pitch2)); + FieldCodec::putU16(payload, CO_RESERVED1, 0); // 预留恒填0 FieldCodec::putU16(payload, CO_ROLL1, static_cast(v->roll1)); - FieldCodec::putU16(payload, CO_ROLL2, static_cast(v->roll2)); + FieldCodec::putU16(payload, CO_RESERVED2, 0); // 预留恒填0 FieldCodec::putU8(payload, CO_EMER_ALLOW, v->emergencyAllow); FieldCodec::putU16(payload, CO_DEPTH, v->depth); FieldCodec::putU8(payload, CO_SUPPLY_CMD, v->supplyCmd); @@ -64,9 +64,9 @@ bool FcControlMessage::decode(const std::vector& frame, void* obj) cons v->cmd = FieldCodec::getU8(frame, o + CO_CMD); v->outputPower = FieldCodec::getU8(frame, o + CO_OUT_POWER); v->pitch1 = static_cast(FieldCodec::getU16(frame, o + CO_PITCH1)); - v->pitch2 = static_cast(FieldCodec::getU16(frame, o + CO_PITCH2)); + // 字节12,13 预留,忽略 v->roll1 = static_cast(FieldCodec::getU16(frame, o + CO_ROLL1)); - v->roll2 = static_cast(FieldCodec::getU16(frame, o + CO_ROLL2)); + // 字节16,17 预留,忽略 v->emergencyAllow = FieldCodec::getU8(frame, o + CO_EMER_ALLOW); v->depth = FieldCodec::getU16(frame, o + CO_DEPTH); v->supplyCmd = FieldCodec::getU8(frame, o + CO_SUPPLY_CMD); @@ -153,7 +153,8 @@ enum : size_t { OFF_ALLOY_H2_FLOW = 112, // 合金供氢流量 (字节119-120) OFF_FC_H2_FLOW = 114, // FC供氢流量 (字节121-122) OFF_FC_O2_FLOW = 116, // FC供氧流量 (字节123-124) - OFF_RESERVED = 118, // 预留1~12 u16*12 -> 118..141 (字节125-148) + OFF_RESERVED = 118, // 预留1~11 u16*11 -> 118..138 (字节125-146) + OFF_REMAIN_GEN = 140, // 剩余发电量 u16 (字节147,148),0827协议由预留12改为 OFF_HEARTBEAT = 142, // 通信心跳 (字节149) OFF_EMERGENCY_CMD = 143, // 应急指令 (字节150) }; @@ -244,7 +245,8 @@ std::vector FcStatusMessage::encode(const void* obj) const { FieldCodec::putU16(p, OFF_FC_H2_FLOW, v->fc_h2_flow); FieldCodec::putU16(p, OFF_FC_O2_FLOW, v->fc_o2_flow); - putU16Arr(p, OFF_RESERVED, v->reserved, 12); + putU16Arr(p, OFF_RESERVED, v->reserved, 11); + FieldCodec::putU16(p, OFF_REMAIN_GEN, v->remaining_generation); FieldCodec::putU8(p, OFF_HEARTBEAT, v->heartbeat); FieldCodec::putU8(p, OFF_EMERGENCY_CMD, v->emergency_cmd); @@ -331,7 +333,8 @@ bool FcStatusMessage::decode(const std::vector& frame, void* obj) const v->fc_h2_flow = FieldCodec::getU16(frame, o + OFF_FC_H2_FLOW); v->fc_o2_flow = FieldCodec::getU16(frame, o + OFF_FC_O2_FLOW); - getU16Arr(frame, o + OFF_RESERVED, v->reserved, 12); + getU16Arr(frame, o + OFF_RESERVED, v->reserved, 11); + v->remaining_generation = FieldCodec::getU16(frame, o + OFF_REMAIN_GEN); v->heartbeat = FieldCodec::getU8(frame, o + OFF_HEARTBEAT); v->emergency_cmd = FieldCodec::getU8(frame, o + OFF_EMERGENCY_CMD); diff --git a/src/pCCU/protocol/FcProtocol.h b/src/pCCU/protocol/FcProtocol.h index 1a755b1..7b4b927 100644 --- a/src/pCCU/protocol/FcProtocol.h +++ b/src/pCCU/protocol/FcProtocol.h @@ -10,28 +10,28 @@ namespace ccu { //============================================================================ // FC 协议(燃料电池系统 <-> 复合管控器) -// 依据:docs/超滑FC和复合管控器通讯协议 - 0821.docx +// 依据:docs/超滑FC和复合管控器通讯协议 - 0827.docx // // 帧格式统一:0x40 0x40 + 域标识符(2B) + 域字节数(2B) + 数据域 + [校验和] // 注意:FC 协议文档未列出校验和行,故默认采用 None(可插拔,联调可切换)。 // // 两条消息: -// 0x0001 复合管控器->燃料电池控制器(控制指令域) payload 14B,总长 20B +// 0x0001 复合管控器->燃料电池控制器(控制指令域) payload 18B,总长 24B // 0x0002 燃料电池控制器->复合管控器(状态反馈域) payload 144B,总长 150B //============================================================================ //-------------------------------------------------------------------------- // 0x0001 控制指令域(复合管控器 -> 燃料电池) -// payload 14 字节,对应文档字节 7~20 +// payload 18 字节,对应文档字节 7~24 //-------------------------------------------------------------------------- struct FcControlValue { uint8_t mode = 0; // 模式设定 00~03 uint8_t cmd = 0; // 操控指令 00~0B uint8_t outputPower = 0; // 输出功率指令 0~250,分辨率0.1kW int16_t pitch1 = 0; // 纵倾姿态数据1 int16,分辨率0.1°(字节10,11) - int16_t pitch2 = 0; // 纵倾姿态数据2 int16,分辨率0.1°(字节12,13) + uint16_t reserved1 = 0; // 预留(字节12,13),0827协议由纵倾姿态数据2改为预留 int16_t roll1 = 0; // 横倾姿态数据1 int16,分辨率0.1°(字节14,15) - int16_t roll2 = 0; // 横倾姿态数据2 int16,分辨率0.1°(字节16,17) + uint16_t reserved2 = 0; // 预留(字节16,17),0827协议由横倾姿态数据2改为预留 uint8_t emergencyAllow = 0; // 应急允许:Bit0 允许降载 / Bit1 允许排气(字节18) uint16_t depth = 0; // 潜深深度,单位 m(字节19,20) uint8_t supplyCmd = 0; // 补给/排放指令 00~0B(字节21) @@ -119,7 +119,8 @@ struct FcStatusValue { uint16_t fc_h2_flow = 0; // FC供氢流量,0.01L/min uint16_t fc_o2_flow = 0; // FC供氧流量,0.01L/min - uint16_t reserved[12] = {0}; // 预留1~12 + uint16_t reserved[11] = {0}; // 预留1~11(字节125~146) + uint16_t remaining_generation = 0; // 剩余发电量,MWh(字节147,148),0827协议由预留12改为 uint8_t heartbeat = 0; // 通信心跳,每次+1 uint8_t emergency_cmd = 0; // 应急指令:Bit0 降载/Bit1 上浮/... diff --git a/src/pCCU/protocol/PmProtocol.cpp b/src/pCCU/protocol/PmProtocol.cpp index 667b6f7..f23c6d4 100644 --- a/src/pCCU/protocol/PmProtocol.cpp +++ b/src/pCCU/protocol/PmProtocol.cpp @@ -29,8 +29,8 @@ enum : size_t { PO_MODE = 8, PO_CMD = 9, PO_OUTPOWER = 10, - PO_PITCH = 11, // 纵倾姿态 数据1=低8位/数据2=高8位 (字节18-19) - PO_ROLL = 13, // 横倾姿态 数据1=低8位/数据2=高8位 (字节20-21) + PO_PITCH = 11, // 纵倾姿态数据1 int16 (字节18-19) + PO_ROLL = 13, // 横倾姿态数据1 int16 (字节20-21) PO_EMER_ALLOW = 15, PO_DEPTH = 16, // u16 PO_SUPPLY_CMD = 18, @@ -60,7 +60,7 @@ std::vector PmControlMessage::encode(const void* obj) const { FieldCodec::putU8(p, PO_MODE, v->mode); FieldCodec::putU8(p, PO_CMD, v->cmd); FieldCodec::putU8(p, PO_OUTPOWER, v->outputPower); - FieldCodec::putU16(p, PO_PITCH, static_cast(v->pitch)); // 数据1=低位/数据2=高位 + FieldCodec::putU16(p, PO_PITCH, static_cast(v->pitch)); // 姿态数据1,数据2字节预留 FieldCodec::putU16(p, PO_ROLL, static_cast(v->roll)); FieldCodec::putU8(p, PO_EMER_ALLOW, v->emergencyAllow); FieldCodec::putU16(p, PO_DEPTH, v->depth); diff --git a/src/pCCU/protocol/PmProtocol.h b/src/pCCU/protocol/PmProtocol.h index 74c6adb..ed3d693 100644 --- a/src/pCCU/protocol/PmProtocol.h +++ b/src/pCCU/protocol/PmProtocol.h @@ -38,8 +38,8 @@ struct PmControlValue { uint8_t mode = 0; // 模式设定 00~03 uint8_t cmd = 0; // 操控指令 00~0B uint8_t outputPower = 0; // 输出功率指令 0~250,0.1kW - int16_t pitch = 0; // 纵倾姿态(数据1=低8位 / 数据2=高8位,int16),0.1° - int16_t roll = 0; // 横倾姿态(数据1=低8位 / 数据2=高8位,int16),0.1° + int16_t pitch = 0; // 纵倾姿态数据1 int16,分辨率0.1°(字节18,19) + int16_t roll = 0; // 横倾姿态数据1 int16,分辨率0.1°(字节20,21) uint8_t emergencyAllow = 0; // 应急允许 uint16_t depth = 0; // 潜深深度 m uint8_t supplyCmd = 0; // 补给/排放指令 diff --git a/src/pCCU/web/pages/index.h b/src/pCCU/web/pages/index.h index 4c205ef..3068343 100644 --- a/src/pCCU/web/pages/index.h +++ b/src/pCCU/web/pages/index.h @@ -154,6 +154,7 @@ function fcCard(d){ h+=row('四级故障码', faultHex(d.fault_level_4)); h+=row('累积发电时间', (d.total_generation_time*0.1).toFixed(1)+' h'); h+=row('系统发电功率', (d.generation_power*0.01).toFixed(2)+' kW'); + h+=row('剩余发电量', d.remaining_generation+' MWh'); h+=row('储氢剩余容量', d.hydrogen_capacity+'%'); h+=row('液氧剩余容量', d.liquid_oxygen_capacity+'%'); h+=row('通信心跳', d.heartbeat); @@ -325,9 +326,7 @@ function fcCmdCard(d){ h+=row('操控指令', parsed(d.cmd, cmdText(d.cmd))); h+=row('输出功率指令', d.outputPower+' (×0.1kW)'); h+=row('纵倾姿态数据1', (d.pitch1*0.1).toFixed(1)+'°'); - h+=row('纵倾姿态数据2', (d.pitch2*0.1).toFixed(1)+'°'); h+=row('横倾姿态数据1', (d.roll1*0.1).toFixed(1)+'°'); - h+=row('横倾姿态数据2', (d.roll2*0.1).toFixed(1)+'°'); h+=row('应急允许', parsed(d.emergencyAllow, emerAllowText(d.emergencyAllow))); h+=row('潜深深度', d.depth+' m'); h+=row('补给/排放指令', parsed(d.supplyCmd, supplyCmdText(d.supplyCmd))); diff --git a/src/pPowerManger/LowerCommManager.cpp b/src/pPowerManger/LowerCommManager.cpp index 658a241..f6f4ea7 100644 --- a/src/pPowerManger/LowerCommManager.cpp +++ b/src/pPowerManger/LowerCommManager.cpp @@ -75,6 +75,15 @@ bool LowerCommManager::initUdpComm(){ return true; } +void LowerCommManager::setCcuAddress(const std::string& host, long port){ + m_ccuHost = host; + m_ccuPort = port; + if (m_udpComm) { + m_udpComm->ccuHost = host; + m_udpComm->ccuPort = port; + } +} + void LowerCommManager::setCommLogger(ICommLogger* logger) { if (m_udpComm) m_udpComm->setCommLogger(logger); diff --git a/src/pPowerManger/LowerCommManager.h b/src/pPowerManger/LowerCommManager.h index 6a8a406..eb24c4c 100644 --- a/src/pPowerManger/LowerCommManager.h +++ b/src/pPowerManger/LowerCommManager.h @@ -32,6 +32,9 @@ public: // 初始化UDP通信 bool initUdpComm(); + // 设置 CCU 地址(moos 配置读取后调用;须在监听/发送线程启动前调用) + void setCcuAddress(const std::string& host, long port); + // 设置原始帧日志回调(转发给 udpComm,可为空) void setCommLogger(ICommLogger* logger); diff --git a/src/pPowerManger/PowerManger.cpp b/src/pPowerManger/PowerManger.cpp index c75a949..5a5e031 100644 --- a/src/pPowerManger/PowerManger.cpp +++ b/src/pPowerManger/PowerManger.cpp @@ -48,6 +48,10 @@ PowerManger::PowerManger() m_skew = 10; + // CCU 地址默认值,可在 moos 文件中用 ccuhost/ccuport 覆盖 + m_ccuHost = CCUHOST; + m_ccuPort = CCUPORT; + m_pmCurrentState = {}; m_currentDisBreakerState = {}; m_targetDisBreakerState = {}; @@ -64,7 +68,7 @@ PowerManger::PowerManger() initControlCmd(); //初始化下位机通信 - m_lowerCommManager = new LowerCommManager(this,IPORT,CCUPORT,CCUHOST); + m_lowerCommManager = new LowerCommManager(this,IPORT,m_ccuPort,m_ccuHost); m_lowerCommManager->initUdpComm(); //初始化上位机通信 @@ -189,6 +193,8 @@ bool PowerManger::OnStartUp() std::string dbPath; // 数据库路径,不配置则默认当前目录 power_data.db std::string logPath; // 日志文件路径,不配置则默认当前目录 pPowerManger.log + std::string ccuHost; // CCU 地址,不配置则沿用默认值 + long ccuPort = 0; // CCU 端口,不配置则沿用默认值 STRING_LIST::iterator p; for(p=sParams.begin(); p!=sParams.end(); p++) { @@ -212,6 +218,14 @@ bool PowerManger::OnStartUp() logPath = value; handled = true; } + else if(param == "ccuhost") { + ccuHost = value; + handled = true; + } + else if(param == "ccuport") { + ccuPort = atoi(value.c_str()); + handled = true; + } if(!handled) reportUnhandledConfigWarning(orig); @@ -230,6 +244,13 @@ bool PowerManger::OnStartUp() LOG_F(INFO, "数据库存储路径: %s", dbPath.c_str()); m_db = new SQLite(dbPath); m_db->createTable(); + + // 应用 moos 文件中的 CCU 地址配置(在监听/通信线程启动前生效) + if (!ccuHost.empty()) m_ccuHost = ccuHost; + if (ccuPort > 0) m_ccuPort = ccuPort; + m_lowerCommManager->setCcuAddress(m_ccuHost, m_ccuPort); + LOG_F(INFO, "CCU 地址: %s:%ld", m_ccuHost.c_str(), m_ccuPort); + // 注入原始帧日志回调(RX/TX 双向落库) m_lowerCommManager->setCommLogger(m_db); // 数据库就绪后再启动下位机监听线程 @@ -365,10 +386,8 @@ void PowerManger::initControlCmd() m_CcuColCmd.fcmode = 0x00; //默认无效 m_CcuColCmd.fcuCmd = 0x00; //无效指令 m_CcuColCmd.fcuPowerEfficiency = 0; //输出功率指令,0~250,分辨率0.1kW - m_CcuColCmd.pitchData1 = 0; //纵倾姿态数据1 - m_CcuColCmd.pitchData2 = 0; //纵倾姿态数据2 + m_CcuColCmd.pitchData1 = 0; //纵倾姿态数据1(int16,分辨率0.1°;0824协议:姿态数据2已删除) m_CcuColCmd.rollData1 = 0; //横倾姿态数据1 - m_CcuColCmd.rollData2 = 0; //横倾姿态数据2 m_CcuColCmd.emergencyAllow = 0; //应急允许 m_CcuColCmd.depth = 0; //潜深深度 m_CcuColCmd.supplyExhaustCmd = 0x00; //补给/排放指令 diff --git a/src/pPowerManger/PowerManger.h b/src/pPowerManger/PowerManger.h index 626b761..aa45bf4 100644 --- a/src/pPowerManger/PowerManger.h +++ b/src/pPowerManger/PowerManger.h @@ -42,6 +42,7 @@ #define CCUPORT 7000 // #define CCUHOST "192.168.0.140" // pCCU 与本程序同机部署时用回环地址;127.0.0.0 是网络号,内核不路由 +// 默认值,可在 moos 文件中用 ccuhost/ccuport 覆盖 #define CCUHOST "127.0.0.1" #define MAX_UDP_PKT_SIZE 65535 #define SKEW_TOLERANCE 5 @@ -124,6 +125,8 @@ class PowerManger : public AppCastingMOOSApp bool isDeviceCmdEmpty() const; //===========================CONFIG======================================== long m_lPort; + std::string m_ccuHost; // CCU 地址,moos 配置项 ccuhost + long m_ccuPort; // CCU 端口,moos 配置项 ccuport unsigned int m_nReceiveBufferSizeKB; unsigned int m_nSendBufferSizeKB; double m_current_time; diff --git a/src/pPowerManger/httpserver/fuelcell.h b/src/pPowerManger/httpserver/fuelcell.h index 11afcec..1b12503 100644 --- a/src/pPowerManger/httpserver/fuelcell.h +++ b/src/pPowerManger/httpserver/fuelcell.h @@ -541,19 +541,15 @@ body {
- +
- - - - + +
- - - - + +
diff --git a/src/pPowerManger/httpserver/httpserver.cpp b/src/pPowerManger/httpserver/httpserver.cpp index 854c255..afb3852 100644 --- a/src/pPowerManger/httpserver/httpserver.cpp +++ b/src/pPowerManger/httpserver/httpserver.cpp @@ -107,10 +107,8 @@ void HttpServer::handleWebSocketEvent(struct mg_connection* c, int ev, void* ev_ unsigned char fcMode = 0; unsigned char fcCommand = 0; unsigned char fcPower = 0; - unsigned char pitch1 = 0; - unsigned char pitch2 = 0; - unsigned char roll1 = 0; - unsigned char roll2 = 0; + short pitch = 0; + short roll = 0; unsigned char emergencyAllow = 0; unsigned short depth = 0; unsigned char supplyExhaustCmd = 0; @@ -125,14 +123,10 @@ void HttpServer::handleWebSocketEvent(struct mg_connection* c, int ev, void* ev_ fcCommand = (unsigned char)strtoul(tmp, NULL, 16); mg_http_get_var(&body, "fcPower", tmp, sizeof(tmp)); fcPower = (unsigned char)atoi(tmp); - mg_http_get_var(&body, "pitch1", tmp, sizeof(tmp)); - pitch1 = (unsigned char)atoi(tmp); - mg_http_get_var(&body, "pitch2", tmp, sizeof(tmp)); - pitch2 = (unsigned char)atoi(tmp); - mg_http_get_var(&body, "roll1", tmp, sizeof(tmp)); - roll1 = (unsigned char)atoi(tmp); - mg_http_get_var(&body, "roll2", tmp, sizeof(tmp)); - roll2 = (unsigned char)atoi(tmp); + mg_http_get_var(&body, "pitch", tmp, sizeof(tmp)); + pitch = (short)atoi(tmp); + mg_http_get_var(&body, "roll", tmp, sizeof(tmp)); + roll = (short)atoi(tmp); mg_http_get_var(&body, "emergencyAllow", tmp, sizeof(tmp)); emergencyAllow = (unsigned char)strtoul(tmp, NULL, 16); mg_http_get_var(&body, "depth", tmp, sizeof(tmp)); @@ -148,8 +142,8 @@ void HttpServer::handleWebSocketEvent(struct mg_connection* c, int ev, void* ev_ mg_http_get_var(&body, "hostStatus", tmp, sizeof(tmp)); hostStatus = (unsigned char)strtoul(tmp, NULL, 16); - LOG_F(INFO, "Received fuel cell control config: fcMode=%02XH fcCommand=%02XH fcPower=%d pitch1=%d pitch2=%d roll1=%d roll2=%d emergencyAllow=%02XH depth=%d supplyExhaustCmd=%02XH insBatCmd=%02XH powerBatCmd=%02XH powerBatPower=%d hostStatus=%02XH", - fcMode, fcCommand, fcPower, pitch1, pitch2, roll1, roll2, + LOG_F(INFO, "Received fuel cell control config: fcMode=%02XH fcCommand=%02XH fcPower=%d pitch=%d roll=%d emergencyAllow=%02XH depth=%d supplyExhaustCmd=%02XH insBatCmd=%02XH powerBatCmd=%02XH powerBatPower=%d hostStatus=%02XH", + fcMode, fcCommand, fcPower, pitch, roll, emergencyAllow, depth, supplyExhaustCmd, insBatCmd, powerBatCmd, powerBatPower, hostStatus); { @@ -157,10 +151,8 @@ void HttpServer::handleWebSocketEvent(struct mg_connection* c, int ev, void* ev_ m_powerManger->m_CcuColCmd.fcmode = fcMode; m_powerManger->m_CcuColCmd.fcuCmd = fcCommand; m_powerManger->m_CcuColCmd.fcuPowerEfficiency = fcPower; - m_powerManger->m_CcuColCmd.pitchData1 = pitch1; - m_powerManger->m_CcuColCmd.pitchData2 = pitch2; - m_powerManger->m_CcuColCmd.rollData1 = roll1; - m_powerManger->m_CcuColCmd.rollData2 = roll2; + m_powerManger->m_CcuColCmd.pitchData1 = pitch; + m_powerManger->m_CcuColCmd.rollData1 = roll; m_powerManger->m_CcuColCmd.emergencyAllow = emergencyAllow; m_powerManger->m_CcuColCmd.depth = depth; m_powerManger->m_CcuColCmd.supplyExhaustCmd = supplyExhaustCmd; @@ -936,10 +928,8 @@ void HttpServer::pushSystemData() { j["ccuColCmd"]["fcmode"] = Json::Value(ccuCmd.fcmode); j["ccuColCmd"]["fcuCmd"] = Json::Value(ccuCmd.fcuCmd); j["ccuColCmd"]["fcuPowerEfficiency"] = Json::Value(ccuCmd.fcuPowerEfficiency); - j["ccuColCmd"]["pitchData1"] = Json::Value(ccuCmd.pitchData1); - j["ccuColCmd"]["pitchData2"] = Json::Value(ccuCmd.pitchData2); - j["ccuColCmd"]["rollData1"] = Json::Value(ccuCmd.rollData1); - j["ccuColCmd"]["rollData2"] = Json::Value(ccuCmd.rollData2); + j["ccuColCmd"]["pitchData1"] = Json::Value(static_cast(ccuCmd.pitchData1)); + j["ccuColCmd"]["rollData1"] = Json::Value(static_cast(ccuCmd.rollData1)); j["ccuColCmd"]["emergencyAllow"] = Json::Value(ccuCmd.emergencyAllow); j["ccuColCmd"]["depth"] = Json::Value(ccuCmd.depth); j["ccuColCmd"]["supplyExhaustCmd"] = Json::Value(ccuCmd.supplyExhaustCmd); diff --git a/src/pPowerManger/pPowerManger.moos b/src/pPowerManger/pPowerManger.moos index cb4522b..8a8f717 100644 --- a/src/pPowerManger/pPowerManger.moos +++ b/src/pPowerManger/pPowerManger.moos @@ -8,4 +8,7 @@ ProcessConfig = pPowerManger // logpath = /data/pPowerManger.log // 数据库存储路径;不配置则默认当前目录 power_data.db // dbpath = /data/power_data.db + // CCU 地址;不配置则默认 127.0.0.1:7000 + // ccuhost = 127.0.0.1 + // ccuport = 7000 } \ No newline at end of file diff --git a/src/pPowerManger/pmSysvariable.h b/src/pPowerManger/pmSysvariable.h index 57e9680..9c18377 100644 --- a/src/pPowerManger/pmSysvariable.h +++ b/src/pPowerManger/pmSysvariable.h @@ -212,10 +212,8 @@ typedef struct { unsigned char fcmode; // 模式设定:00H-无效, 01H-调试, 02H-自动, 03H-补给/排放 unsigned char fcuCmd; // 操控指令:00H-无效, 01H-自检, 02H-启动, 03H-停机, 04H-复位, 05H-紧急停机, 06H-补给, 07H-制氢预热, 08H-停机维护, 0AH-开机, 0BH-关机 unsigned char fcuPowerEfficiency; // 输出功率指令:0~250,分辨率0.1,单位kW,非净输出 - unsigned char pitchData1; // 纵倾姿态数据1:分辨率0.1,单位° - unsigned char pitchData2; // 纵倾姿态数据2:分辨率0.1,单位° - unsigned char rollData1; // 横倾姿态数据1:分辨率0.1,单位° - unsigned char rollData2; // 横倾姿态数据2:分辨率0.1,单位° + short pitchData1; // 纵倾姿态数据1:int16,分辨率0.1,单位°(0824协议:姿态数据2已删除) + short rollData1; // 横倾姿态数据1:int16,分辨率0.1,单位° unsigned char emergencyAllow; // 应急允许:Bit0允许降载, Bit1允许排气, Bit2~Bit7预留 unsigned short depth; // 潜深深度,单位:m unsigned char supplyExhaustCmd; // 补给/排放指令:00H-无效, 01H-液氧加注, 02H-甲醇加注, 03H-液氧排空, 04H-甲醇排空, 05H-CO2排空, 06H-/, 07H-合金加注, 08H-氮气加注, 09H-纯水加注, 0AH-备用, 0BH-备用 diff --git a/src/pPowerManger/sqlit3/SQLite.cpp b/src/pPowerManger/sqlit3/SQLite.cpp index b9b1796..f262f3b 100644 --- a/src/pPowerManger/sqlit3/SQLite.cpp +++ b/src/pPowerManger/sqlit3/SQLite.cpp @@ -286,9 +286,7 @@ const std::vector& SQLite::allTables() COL(ccuColCmd, fcuCmd), COL(ccuColCmd, fcuPowerEfficiency), COL(ccuColCmd, pitchData1), - COL(ccuColCmd, pitchData2), COL(ccuColCmd, rollData1), - COL(ccuColCmd, rollData2), COL(ccuColCmd, emergencyAllow), COL(ccuColCmd, depth), COL(ccuColCmd, supplyExhaustCmd), diff --git a/test/pccu/pccuTest.cpp b/test/pccu/pccuTest.cpp index 83fa833..e6e474f 100644 --- a/test/pccu/pccuTest.cpp +++ b/test/pccu/pccuTest.cpp @@ -52,8 +52,8 @@ static void testFrameLengths() { // 2. FC 控制指令编解码往返 static void testFcControlRoundTrip() { FcControlValue v; - v.mode = 2; v.cmd = 2; v.outputPower = 100; v.pitch1 = 35; v.pitch2 = -21; - v.roll1 = -12; v.roll2 = 48; + v.mode = 2; v.cmd = 2; v.outputPower = 100; v.pitch1 = 35; + v.roll1 = -12; v.emergencyAllow = 0x03; v.depth = 150; v.supplyCmd = 1; v.reservedCmd5 = 5; v.reservedCmd6 = 6; v.heartbeat = 7; @@ -64,11 +64,11 @@ static void testFcControlRoundTrip() { CHECK(frame[0] == 0x40 && frame[1] == 0x40); CHECK(frame[4] == 0x18 && frame[5] == 0x00); // 域字节数 0x0018 小端 - // 字节位置校验(数据域起点=帧头6):姿态各 int16 小端 + // 字节位置校验(数据域起点=帧头6):姿态数据1 int16 小端,数据2字节预留恒0 CHECK(frame[6 + 3] == 0x23 && frame[6 + 4] == 0x00); // 纵倾数据1 = 35 - CHECK(frame[6 + 5] == 0xEB && frame[6 + 6] == 0xFF); // 纵倾数据2 = -21 (0xFFEB) + CHECK(frame[6 + 5] == 0x00 && frame[6 + 6] == 0x00); // 预留(0827协议,原纵倾数据2) CHECK(frame[6 + 7] == 0xF4 && frame[6 + 8] == 0xFF); // 横倾数据1 = -12 (0xFFF4) - CHECK(frame[6 + 9] == 0x30 && frame[6 + 10] == 0x00); // 横倾数据2 = 48 + CHECK(frame[6 + 9] == 0x00 && frame[6 + 10] == 0x00); // 预留(0827协议,原横倾数据2) FcControlValue out; CHECK(msg.decode(frame, static_cast(&out))); @@ -76,9 +76,7 @@ static void testFcControlRoundTrip() { CHECK(out.cmd == 2); CHECK(out.outputPower == 100); CHECK(out.pitch1 == 35); - CHECK(out.pitch2 == -21); CHECK(out.roll1 == -12); - CHECK(out.roll2 == 48); CHECK(out.emergencyAllow == 0x03); CHECK(out.depth == 150); CHECK(out.supplyCmd == 1); @@ -101,7 +99,7 @@ static void testFcStatusRoundTrip() { v.methanol_total_use = 100; v.cabin_temp1 = 25; v.h2_concentration1 = 500; v.heartbeat = 9; v.emergency_cmd = 0x01; - v.reserved[0] = 0xAAAA; v.reserved[11] = 0xBBBB; + v.reserved[0] = 0xAAAA; v.remaining_generation = 0xBBBB; FcStatusMessage msg; std::vector frame = msg.encode(v); @@ -125,7 +123,7 @@ static void testFcStatusRoundTrip() { CHECK(out.methanol_total_use == 100); CHECK(out.cabin_temp1 == 25 && out.h2_concentration1 == 500); CHECK(out.heartbeat == 9 && out.emergency_cmd == 0x01); - CHECK(out.reserved[0] == 0xAAAA && out.reserved[11] == 0xBBBB); + CHECK(out.reserved[0] == 0xAAAA && out.remaining_generation == 0xBBBB); } //-------------------------------------------------------------------------- diff --git a/test/pccu/pccu_integration_test.py b/test/pccu/pccu_integration_test.py index e1cc45d..b6010a7 100644 --- a/test/pccu/pccu_integration_test.py +++ b/test/pccu/pccu_integration_test.py @@ -9,7 +9,7 @@ 校验: 1. FC 状态收到并整合,pCCU 周期发送 PM 状态(0x0004, 248B)到 16003 - 2. PM 操控(0x0001)转发为 FC 控制(0x0001, 20B)到 16001 + 2. PM 操控(0x0001)转发为 FC 控制(0x0001, 24B)到 16001 3. PM 参数设定(0x0002)触发参数反馈(0x0003, 12B)到 16003 4. SQLite 记录了收/发原始帧 5. Web 页面可访问 @@ -62,6 +62,7 @@ def fc_status_frame(): p[17] = 70 # 液氧 struct.pack_into("=1, 每帧20B)") + # 校验 2:PM 操控转发为 FC 控制(24B,0827协议:姿态数据1转发,数据2字节预留恒0) + fc_ctl = [d for d in fc_ctl_results if len(d) == 24] + print(f"[FC 控制转发] 收到 {len(fc_ctl)} 帧 (期望>=1, 每帧24B)") if fc_ctl: d = fc_ctl[0] - cmd = d[7]; power = d[8]; hb = d[19] - print(f" -> cmd={cmd}, outputPower={power}, heartbeat={hb}") + cmd = d[7]; power = d[8]; hb = d[23] + pitch = struct.unpack_from(" cmd={cmd}, outputPower={power}, pitch={pitch}, roll={roll}, " + f"resv1={resv1}, resv2={resv2}, heartbeat={hb}") ok = ok and (cmd == 2) and (power == 120) and (hb == 7) + ok = ok and (pitch == 123) and (roll == -45) + ok = ok and (resv1 == 0) and (resv2 == 0) else: ok = False diff --git a/test/pccu/pccu_sim.py b/test/pccu/pccu_sim.py index d1e7ebd..89b62d5 100644 --- a/test/pccu/pccu_sim.py +++ b/test/pccu/pccu_sim.py @@ -120,6 +120,8 @@ class FcSim: struct.pack_into("