diff --git a/bin/static/script.js b/bin/static/script.js index e231491..3642eee 100644 --- a/bin/static/script.js +++ b/bin/static/script.js @@ -144,10 +144,10 @@ document.getElementById('moos-send-btn').addEventListener('click', sendMoosNotif setInterval(updateData, 1000); updateData(); // 初始加载 -// 每3秒检查一次数据库连接状态 +// 每10秒检查一次数据库连接状态 setInterval(() => { checkDbConnection(); checkMoosDbConnection(); -}, 3000); +}, 10000); checkDbConnection(); // 初始检查 checkMoosDbConnection(); // 初始检查 diff --git a/data/msg/uPower_currentState_st.json b/data/msg/uPower_currentState_st.json index 41648bf..a8a0701 100644 --- a/data/msg/uPower_currentState_st.json +++ b/data/msg/uPower_currentState_st.json @@ -6,7 +6,7 @@ "HVABbusBVol_uint16": 0, "HVABmastSteGeaCur_uint16": 0, "HVABopenWaterCur_uint16": 0, - "HVABxczCur_uint16": 0, + "HVABxczCur_uint16": 1, "HVBBCCUCur_uint16": 0, "HVBBFCSSecurSysCur_uint16": 0, "HVBBbatInsCur_uint16": 0, diff --git a/data/msg/uPower_disSysState_st.json b/data/msg/uPower_disSysState_st.json index ed8e1bf..90bc4ac 100644 --- a/data/msg/uPower_disSysState_st.json +++ b/data/msg/uPower_disSysState_st.json @@ -1,8 +1,8 @@ { "HVolABusBreaker_unit16": 0, - "HVolBBusBreaker_unit16": 0, - "HVolBusBreaker_uint16": 0, - "LVolBusBreaker_uint16": 0, + "HVolBBusBreaker_unit16": 79, + "HVolBusBreaker_uint16": 58, + "LVolBusBreaker_uint16": 159, "faultCode_array": [ 0 diff --git a/data/msg/uPower_fcsState_st.json b/data/msg/uPower_fcsState_st.json index 31141fb..8c925cc 100644 --- a/data/msg/uPower_fcsState_st.json +++ b/data/msg/uPower_fcsState_st.json @@ -1,30 +1,30 @@ { - "backpressure1_fp32": 0.0, - "backpressure2_fp32": 0.0, - "ch4oConcent1_fp32": 0.0, - "ch4oConcent2_fp32": 0.0, + "backpressure1_fp32": 3.0, + "backpressure2_fp32": 8.0, + "ch4oConcent1_fp32": 13.0, + "ch4oConcent2_fp32": 57.0, "ch4o_fp32": 0.0, - "excTemp_fp32": 0.0, + "excTemp_fp32": 64.0, "faultCode1_uint16": 0, "faultCode2_uint16": 0, "faultCode3_uint16": 0, "fcuCurIns_fp32": 0.0, "fcuCurPower_fp32": 0.0, - "fcuCur_fp32": 0.0, + "fcuCur_fp32": 74.0, "fcuFaultLeve_uint8": 0, - "fcuOutIns_fp32": 0.0, - "fcuOutPower_fp32": 0.0, + "fcuOutIns_fp32": 81.0, + "fcuOutPower_fp32": 848.0, "fcuState_uint8": 0, "fcuVolIns_fp32": 0.0, "fcuVolPower_fp32": 0.0, - "fcuVol_fp32": 0.0, - "flameDet_uint8": 0, - "h2Concent1_fp32": 0.0, - "h2Concent2_fp32": 0.0, - "o2Concent1_fp32": 0.0, - "o2Concent2_fp32": 0.0, + "fcuVol_fp32": 384.0, + "flameDet_uint8": 1, + "h2Concent1_fp32": 55.0, + "h2Concent2_fp32": 34.0, + "o2Concent1_fp32": 67.0, + "o2Concent2_fp32": 53.0, "o2Level_fp32": 0.0, "o2_fp32": 0.0, - "powLimit_fp32": 0.0, - "powerGen_fp32": 0.0 + "powLimit_fp32": 23.0, + "powerGen_fp32": 539.0 } \ No newline at end of file diff --git a/data/msg/uPower_liBatState_st.json b/data/msg/uPower_liBatState_st.json index b3e9fd4..8be04ea 100644 --- a/data/msg/uPower_liBatState_st.json +++ b/data/msg/uPower_liBatState_st.json @@ -2,14 +2,14 @@ "fcuCurToInsLimit1_uint8": 0, "fcuCurToinsLimit2_uint8": 0, "insBatCurElect_uint16": 0, - "insBatLimit_uint16": 0, - "insBatSoc_uint8": 0, - "insBatTotalElect_uint16": 0, + "insBatLimit_uint16": 86, + "insBatSoc_uint8": 95, + "insBatTotalElect_uint16": 741, "insChargeState_uint8": 0, "insCurSocHold1_uint8": 0, "insCurSocHold2_uint8": 0, "insCurSocHold3_uint8": 0, - "insCurrent_uint16": 0, + "insCurrent_uint16": 9, "insLinkVol_uint16": 0, "insNegRelayState_uint8": 0, "insNegRes_uint16": 0, @@ -18,21 +18,21 @@ "insPosRes_uint16": 0, "insfaultCode_uint8": 0, "powBatCurElect_uint16": 0, - "powBatSoc_uint8": 0, - "powBatTotalElect_uint16": 0, + "powBatSoc_uint8": 47, + "powBatTotalElect_uint16": 860, "powChargeState_uint8": 0, "powCurSocHold1_uint8": 0, "powCurSocHold2_uint8": 0, "powCurSocHold3_uint8": 0, "powCurToInsLimit1_uint8": 0, "powCurToinsLimit2_uint8": 0, - "powCur_uint16": 0, + "powCur_uint16": 34, "powLinkVol_uint16": 0, "powNegRelayState_uint8": 0, "powNegRes_uint16": 0, - "powPosRelayState_uint8": 0, + "powPosRelayState_uint8": 1, "powPosRes_uint16": 0, - "powerBatLimit_uint16": 0, + "powerBatLimit_uint16": 65, "powerPackVol_uint16": 0, "powfaultCode_uint8": 0 } \ No newline at end of file diff --git a/data/uPower_sysState_cmd.json b/data/uPower_sysState_cmd.json new file mode 100644 index 0000000..4309ae7 --- /dev/null +++ b/data/uPower_sysState_cmd.json @@ -0,0 +1,5 @@ +{ + "powerCMD":0, + "modCMD":0, + "workCMD":0 +} \ No newline at end of file diff --git a/src/appPowerMangerWebUI/main.cpp b/src/appPowerMangerWebUI/main.cpp index e1569ff..63ad493 100644 --- a/src/appPowerMangerWebUI/main.cpp +++ b/src/appPowerMangerWebUI/main.cpp @@ -24,7 +24,7 @@ int main() { SQLiteDB db("/home/zjk/project/H100/H100PowerManger/data/power_data.db"); MOOS::MOOSAsyncCommClient moosClient; moosClient.Run("localhost", 9000, "appPowerMangerWebUI"); - + std::cout << " Current Path -> " << std::system("pwd") << std::endl; // 定义路由,处理根路径的请求 @@ -100,8 +100,6 @@ int main() { return response; }); - - // 定义路由,处理 /api/moos-notify 的请求(POST) CROW_ROUTE(app, "/api/moos-notify").methods("POST"_method) ([&moosClient](const crow::request& req) { @@ -137,8 +135,14 @@ int main() { return res; }); - // 启动服务器,监听端口 18080 - app.port(18080).multithreaded().run(); + // 启动服务器,监听端口 18080 并启动多线程 + std::cout << "Server started on port 18080" << std::endl; + // app.port(18080).multithreaded().run(); + + app.port(18080) + .multithreaded() + .concurrency(16) // 增加并发线程数 + .run(); return 0; } diff --git a/src/pPowerManger/PowerManger.cpp b/src/pPowerManger/PowerManger.cpp index 8fc7a92..a5b2536 100644 --- a/src/pPowerManger/PowerManger.cpp +++ b/src/pPowerManger/PowerManger.cpp @@ -584,6 +584,19 @@ bool PowerManger::writeDataToDB() } +int PowerManger::checkError() +{ + //1.检查复合管控器状态 + if(m_pmCurrentState.ccustate.fcuGZ_1H != 0 || + m_pmCurrentState.ccustate.fcuGZ_1L != 0 || + m_pmCurrentState.ccustate.fcuGZ_2H != 0 || + m_pmCurrentState.ccustate.fcuGZ_2L != 0 || + m_pmCurrentState.ccustate.fcuGZ_3H != 0 || + m_pmCurrentState.ccustate.fcuGZ_3L != 0 || + m_pmCurrentState.ccustate.insEmergencyStatusWord != 0) + return 0; + //2.检查断路器状态 +} void PowerManger::printState(FSM_State st, string desp){ @@ -619,13 +632,7 @@ int PowerManger::handleInite_s1(FSM_State &fsm, void* pData) pm->printState(fsm,desp); } //2. 检查复合管控器是否上报故障 如果故障则进入故障状态 - if(pm->m_pmCurrentState.ccustate.fcuGZ_1H != 0 || - pm->m_pmCurrentState.ccustate.fcuGZ_1L != 0 || - pm->m_pmCurrentState.ccustate.fcuGZ_2H != 0 || - pm->m_pmCurrentState.ccustate.fcuGZ_2L != 0 || - pm->m_pmCurrentState.ccustate.fcuGZ_3H != 0 || - pm->m_pmCurrentState.ccustate.fcuGZ_3L != 0 || - pm->m_pmCurrentState.ccustate.insEmergencyStatusWord != 0) + if(pm->checkError() < 0) { ok = false; pm->m_faultNum = 2; //能源故障 @@ -633,11 +640,30 @@ int PowerManger::handleInite_s1(FSM_State &fsm, void* pData) //3. 初始化系统为待机状态 pm->initControlCmd(); //4.判断关键断路器是否闭合 + ok = false; + while (!ok) + { + if(pm->m_currentDisBreakerState.bus3Breaker.unit4InstrumentDC48VCircuitBreaker == 1 || + pm->m_currentDisBreakerState.bus4Breaker.unit5CircuitBreaker == 1 || + pm->m_currentDisBreakerState.bus4Breaker.unit2CircuitBreaker == 1 || + pm->m_currentDisBreakerState.bus4Breaker.unit3CircuitBreaker == 1 || + pm->m_currentDisBreakerState.bus4Breaker.unit1CircuitBreaker == 1) + { + ok = true; + } + pm->m_pmEvent = "等待关键断路器闭合"; + MOOSPause(1000); + pm->printState(fsm,pm->m_pmEvent); + } + //5. 进入下一状态 + if(ok) + { + pm->m_pmState = pm->m_Standby_s2; + } if(!ok) { pm->m_pmState = pm->m_Fault_s99; } - pm->m_pmState = pm->m_Standby_s2; return 0; } @@ -649,6 +675,109 @@ int PowerManger::handleStandby_s2(FSM_State &fsm, void* pData) { string desp = "待机状态"; pm->printState(fsm,desp); + //1. 检查当前是否存在故障 + if(pm->checkError() < 0) + { + pm->m_pmState = pm->m_Fault_s99; + break; + } + //2. 检查上位机上电控制指令 + switch (pm->m_msCmd.powerCMD) + { + case 0: + pm->m_pmEvent = "收到上位机控制指令:关机"; + pm->shutdown(); + break; + case 1: + pm->m_pmEvent = "动力电上电"; + break; + case 2: + pm->m_pmEvent = "锂动力电启动"; + break; + case 3: + pm->m_pmEvent = "燃料电池启动"; + break; + case 4: + pm->m_pmEvent = "锂动力电关闭"; + case 5: + pm->m_pmEvent = "燃料电池停机"; + break; + case 6: + pm->m_pmEvent = "燃料电池预热指令"; + break; + case 7: + pm->m_pmEvent = "燃料电池自检指令"; + break; + case 8: + pm->m_pmEvent = "燃料电池紧急停机"; + break; + case 9: + pm->m_pmEvent = "燃料电池复位指令"; + break; + case 10: + pm->m_pmEvent = "燃料电池补给指令"; + break; + case 11: + pm->m_pmEvent = "燃料电池停机维护"; + break; + default: + break; + } + //2. 检查上位机模式切换指令 + switch (pm->m_msCmd.modCMD) + { + case 0: + //无效 + break; + case 1: + pm->m_pmEvent = "待机工况"; + break; + case 2: + pm->m_pmEvent = "岸基备航"; + break; + case 3: + pm->m_pmEvent = "水中备航"; + break; + case 4: + pm->m_pmEvent = "遥控工况"; + break; + case 5: + pm->m_pmEvent = "巡航模式"; + break; + case 6: + pm->m_pmEvent = "高速模式"; + break; + case 7: + pm->m_pmEvent = "上浮下潜"; + break; + case 8: + pm->m_pmEvent = "浮调模式"; + break; + case 9: + pm->m_pmEvent = "水下侦查"; + break; + case 10: + pm->m_pmEvent = "水面侦查"; + break; + case 11: + pm->m_pmEvent = "DJ模式"; + break; + default: + break; + } + //3. 检查上位机工作模式切换控制指令 + switch (pm->m_msCmd.workCMD) + { + case 0: + pm->m_pmEvent = "正常模式(默认)"; + break; + case 1: + pm->m_pmEvent = "试验模式"; + break; + case 2: + pm->m_pmEvent = "调试模式"; + break; + } MOOSPause(1000); } @@ -673,6 +802,14 @@ int PowerManger::handleFault_s99(FSM_State &fsm, void* pData) } +//==============================系统操作函数==================== +bool PowerManger::shutdown() +{ + m_CcuColCmd.masterState = 0xFF; //关机 + return true; +} + + void PowerManger::initControlCmd() { //================初始化配电指令============================= @@ -724,9 +861,9 @@ void PowerManger::initControlCmd() m_CcuColCmd.masterState = 0xAA;//主站状态,运行中 //================初始化上位机指令========================= - m_msCmd.modCMD = 0; - m_msCmd.powerCMD = 0; - m_msCmd.workCMD = 0; + m_msCmd.modCMD = 99; + m_msCmd.powerCMD = 99; + m_msCmd.workCMD = 99; //================初始化设备驱动指令======================== diff --git a/src/pPowerManger/PowerManger.h b/src/pPowerManger/PowerManger.h index 9928be4..66e6486 100644 --- a/src/pPowerManger/PowerManger.h +++ b/src/pPowerManger/PowerManger.h @@ -129,7 +129,6 @@ class PowerManger : public AppCastingMOOSApp msg_disLowBusFbMsg m_disLowBusState; //下位机操作函数 - //断路器状态 ccuColCmd m_CcuColCmd; void disSysOption(); void ccuOption(); @@ -172,10 +171,22 @@ class PowerManger : public AppCastingMOOSApp FSM_State m_Standby_s2; static int handleStandby_s2(FSM_State &fsm, void* pData); + //岸基备航 + // FSM_State m_ShoreReady_s3; + + //水中备航 + + //自动工况 + //故障处理 FSM_State m_Fault_s99; static int handleFault_s99(FSM_State &fsm, void* pData); //====================================================================================== + int checkError(); + bool shutdown(); + bool powerOn(); + bool powerOff(); + }; #endif