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
This commit is contained in:
@@ -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; //补给/排放指令
|
||||
|
||||
Reference in New Issue
Block a user