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项);集成测试新增桥接字节一致+不误转发用例
This commit is contained in:
@@ -6,9 +6,48 @@
|
||||
#include "../protocol/FcProtocol.h"
|
||||
#include "../protocol/PmProtocol.h"
|
||||
#include "../protocol/CanBms.h"
|
||||
#include "../protocol/DisProtocol.h"
|
||||
|
||||
namespace ccu {
|
||||
|
||||
//============================================================================
|
||||
// RealCcuState:真实 CCU 设备的桥接数据缓存(配电协议)。
|
||||
//
|
||||
// 数据来源:RCU 链路(真实CCU -> pCCU),由 DisBridge 在转发的同时
|
||||
// 解码写入;网页快照读取展示。各 lastRx 时间由写入方更新(MOOSTime),
|
||||
// 供在线判定与新鲜度展示。
|
||||
//============================================================================
|
||||
|
||||
struct RealCcuState {
|
||||
// 四条配电母线最新反馈(valid 表示收到过对应反馈帧)
|
||||
disHighVolBusState hvBus{}; bool hvValid = false;
|
||||
disHighAVolBusState hvaBus{}; bool hvaValid = false;
|
||||
disLowMainBusState hvbBus{}; bool hvbValid = false;
|
||||
disLowBusState lvBus{}; bool lvValid = false;
|
||||
double hvLastRx = 0, hvaLastRx = 0, hvbLastRx = 0, lvLastRx = 0;
|
||||
|
||||
// 最近收到的配电指令(pPowerManger 下发、已转发真实CCU,用于展示)
|
||||
disHighVolBusCmd lastHvCmd{};
|
||||
disHighAVolBusCmd lastHvaCmd{};
|
||||
disLowMainBusCmd lastHvbCmd{};
|
||||
disLowBusCmd lastLvCmd{};
|
||||
bool cmdValid = false;
|
||||
double lastCmdRx = 0;
|
||||
|
||||
// 真实CCU 状态报文 0x0004(仅解码显示,不转发)
|
||||
PmStatusValue ccuStatus{};
|
||||
bool ccuStatusValid = false;
|
||||
double ccuStatusLastRx = 0;
|
||||
|
||||
// 桥接统计
|
||||
unsigned long fbCount = 0; // 收到配电反馈帧数
|
||||
unsigned long fwdFbOk = 0; // 反馈转发 pPowerManger 成功帧数
|
||||
unsigned long fwdFbErr = 0; // 反馈转发失败帧数
|
||||
unsigned long cmdCount = 0; // 收到配电指令帧数
|
||||
unsigned long fwdCmdOk = 0; // 指令转发真实CCU 成功帧数
|
||||
unsigned long fwdCmdErr = 0; // 指令转发失败帧数
|
||||
};
|
||||
|
||||
//============================================================================
|
||||
// SystemData:跨线程共享的最新状态快照。
|
||||
//
|
||||
@@ -138,6 +177,18 @@ public:
|
||||
return m_canFrameCount;
|
||||
}
|
||||
|
||||
//-------- 真实 CCU 桥接数据(配电协议,RCU 链路) --------
|
||||
|
||||
// 整体更新真实CCU 快照(DisBridge 在接收线程先取副本->修改->写回)
|
||||
void updateRealCcu(const RealCcuState& v) {
|
||||
std::lock_guard<std::mutex> lock(m_mutex);
|
||||
m_realCcu = v;
|
||||
}
|
||||
RealCcuState realCcu() const {
|
||||
std::lock_guard<std::mutex> lock(m_mutex);
|
||||
return m_realCcu;
|
||||
}
|
||||
|
||||
private:
|
||||
mutable std::mutex m_mutex;
|
||||
FcStatusValue m_fcStatus;
|
||||
@@ -147,6 +198,7 @@ private:
|
||||
PmStatusValue m_pmStatus;
|
||||
PmParamSetFbValue m_pmParamFb;
|
||||
BcuNodeStatus m_bcuNodes[kBcuNodeCount]; // 下标 = 节点地址-1
|
||||
RealCcuState m_realCcu;
|
||||
unsigned long m_fcStatusCount = 0;
|
||||
unsigned long m_pmControlCount = 0;
|
||||
unsigned long m_fcControlCount = 0;
|
||||
|
||||
Reference in New Issue
Block a user