新增复合管控器(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
+118
View File
@@ -0,0 +1,118 @@
#ifndef PCCU_SYSTEM_DATA_H
#define PCCU_SYSTEM_DATA_H
#include <mutex>
#include <atomic>
#include "../protocol/FcProtocol.h"
#include "../protocol/PmProtocol.h"
namespace ccu {
//============================================================================
// SystemData:跨线程共享的最新状态快照。
//
// - 接收线程(FC 链路)写 FcStatus 快照
// - CCU 主循环(Iterate)读快照并整合编码为 PM 状态报文发送
// - 网页线程读快照展示
// 通过互斥锁保护读写。
//============================================================================
class SystemData {
public:
// 更新/获取燃料电池最新状态
void updateFcStatus(const FcStatusValue& v) {
std::lock_guard<std::mutex> lock(m_mutex);
m_fcStatus = v;
m_fcStatusCount++;
}
FcStatusValue fcStatus() const {
std::lock_guard<std::mutex> lock(m_mutex);
return m_fcStatus;
}
unsigned long fcStatusCount() const {
std::lock_guard<std::mutex> lock(m_mutex);
return m_fcStatusCount;
}
// 更新/获取最新 PM 操控指令(用于转发到 FC)
void updatePmControl(const PmControlValue& v) {
std::lock_guard<std::mutex> lock(m_mutex);
m_pmControl = v;
m_pmControlCount++;
}
PmControlValue pmControl() const {
std::lock_guard<std::mutex> lock(m_mutex);
return m_pmControl;
}
unsigned long pmControlCount() const {
std::lock_guard<std::mutex> lock(m_mutex);
return m_pmControlCount;
}
// 更新/获取最新 PM 参数设定(预留,用于未来转发/应用)
void updatePmParamSet(const PmParamSetValue& v) {
std::lock_guard<std::mutex> lock(m_mutex);
m_pmParamSet = v;
}
PmParamSetValue pmParamSet() const {
std::lock_guard<std::mutex> lock(m_mutex);
return m_pmParamSet;
}
// 更新/获取最新转发给 FC 的控制指令
void updateFcControl(const FcControlValue& v) {
std::lock_guard<std::mutex> lock(m_mutex);
m_fcControl = v;
m_fcControlCount++;
}
FcControlValue fcControl() const {
std::lock_guard<std::mutex> lock(m_mutex);
return m_fcControl;
}
unsigned long fcControlCount() const {
std::lock_guard<std::mutex> lock(m_mutex);
return m_fcControlCount;
}
// 更新/获取最新发送给 PM 的状态报文(整合后的)
void updatePmStatus(const PmStatusValue& v) {
std::lock_guard<std::mutex> lock(m_mutex);
m_pmStatus = v;
m_pmStatusCount++;
}
PmStatusValue pmStatus() const {
std::lock_guard<std::mutex> lock(m_mutex);
return m_pmStatus;
}
unsigned long pmStatusCount() const {
std::lock_guard<std::mutex> lock(m_mutex);
return m_pmStatusCount;
}
// 更新/获取最新发送给 PM 的参数反馈
void updatePmParamFb(const PmParamSetFbValue& v) {
std::lock_guard<std::mutex> lock(m_mutex);
m_pmParamFb = v;
}
PmParamSetFbValue pmParamFb() const {
std::lock_guard<std::mutex> lock(m_mutex);
return m_pmParamFb;
}
private:
mutable std::mutex m_mutex;
FcStatusValue m_fcStatus;
PmControlValue m_pmControl;
PmParamSetValue m_pmParamSet;
FcControlValue m_fcControl;
PmStatusValue m_pmStatus;
PmParamSetFbValue m_pmParamFb;
unsigned long m_fcStatusCount = 0;
unsigned long m_pmControlCount = 0;
unsigned long m_fcControlCount = 0;
unsigned long m_pmStatusCount = 0;
};
} // namespace ccu
#endif // PCCU_SYSTEM_DATA_H