From d9d715326a7e5837bf7e760e4891dc742c09eae6 Mon Sep 17 00:00:00 2001 From: zhaojingkui <1553836110@qq.com> Date: Mon, 2 Dec 2024 23:21:55 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86=E4=BA=8B=E4=BB=B6?= =?UTF-8?q?=E8=B7=B3=E8=BD=AC=E7=8A=B6=E6=80=81=E8=B7=B3=E8=BD=AC=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98,=E4=BD=86=E6=98=AF=E7=9B=AE=E5=89=8D?= =?UTF-8?q?=E4=BA=8B=E4=BB=B6=E8=B7=B3=E8=BD=AC=E4=BB=8D=E7=84=B6=E4=B8=8D?= =?UTF-8?q?=E5=AE=8C=E5=96=84,=E8=BF=94=E5=9B=9E=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E6=8C=87=E9=92=88=E8=B7=B3=E8=BD=AC=E7=9A=84=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/msg/uPower_currentState_st.json | 76 ++++++++++++++-------------- data/msg/uPower_disSysState_st.json | 2 +- data/msg/uPower_fcsState_st.json | 54 ++++++++++---------- data/msg/uPower_liBatState_st.json | 58 ++++++++++----------- src/pPowerManger/PowerManger.cpp | 20 +++++++- src/pPowerManger/fsm.cpp | 65 ++++++++++++++---------- src/pPowerManger/fsm.h | 4 +- 7 files changed, 153 insertions(+), 126 deletions(-) diff --git a/data/msg/uPower_currentState_st.json b/data/msg/uPower_currentState_st.json index 5d11f87..afe1901 100644 --- a/data/msg/uPower_currentState_st.json +++ b/data/msg/uPower_currentState_st.json @@ -1,47 +1,47 @@ { - "HVABFTDev123Cur_uint16": 0, - "HVABactCur_uint16": 0, - "HVABbowRudCur_uint16": 0, - "HVABbusBCur_uint16": 0, - "HVABbusBVol_uint16": 255, - "HVABmastSteGeaCur_uint16": 0, - "HVABopenWaterCur_uint16": 0, - "HVABxczCur_uint16": 0, - "HVBBCCUCur_uint16": 276, - "HVBBFCSSecurSysCur_uint16": 43016, - "HVBBbatInsCur_uint16": 275, - "HVBBbowLowVolDisBoxCur_uint16": 275, - "HVBBdcC1InsCur_uint16": 43016, - "HVBBemer2BusVol_uint16": 6144, - "HVBBemerBatCur_uint16": 61440, - "HVBBinsBusVol_uint16": 47104, + "HVABFTDev123Cur_uint16": 24953, + "HVABactCur_uint16": 42982, + "HVABbowRudCur_uint16": 31, + "HVABbusBCur_uint16": 24576, + "HVABbusBVol_uint16": 0, + "HVABmastSteGeaCur_uint16": 127, + "HVABopenWaterCur_uint16": 65280, + "HVABxczCur_uint16": 32768, + "HVBBCCUCur_uint16": 24851, + "HVBBFCSSecurSysCur_uint16": 42982, + "HVBBbatInsCur_uint16": 24851, + "HVBBbowLowVolDisBoxCur_uint16": 0, + "HVBBdcC1InsCur_uint16": 0, + "HVBBemer2BusVol_uint16": 47104, + "HVBBemerBatCur_uint16": 36864, + "HVBBinsBusVol_uint16": 0, "HVBBplcCur_uint16": 127, - "HVBBreservedCur1_uint16": 127, + "HVBBreservedCur1_uint16": 0, "HVBBreservedCur2_uint16": 127, - "HVBBunit4Cur_uint16": 43016, - "HVBFTDev45Cur_uint16": 32680, - "HVBbatGroupCur_uint16": 5104, - "HVBbowHVolDisBoxCur_uint16": 2049, + "HVBBunit4Cur_uint16": 42982, + "HVBFTDev45Cur_uint16": 32679, + "HVBbatGroupCur_uint16": 48760, + "HVBbowHVolDisBoxCur_uint16": 58976, "HVBbusACur_uint16": 0, - "HVBbusAVol_uint16": 2049, + "HVBbusAVol_uint16": 58943, "HVBdcDc5Cur_uint16": 0, - "HVBfbCur_uint16": 51236, - "HVBmotorCur_uint16": 32680, - "HVBpowerBusCur_uint16": 5048, - "HVBpowerBusVol_uint16": 32680, - "HVBreservedCur1_uint16": 2049, + "HVBfbCur_uint16": 5144, + "HVBmotorCur_uint16": 32679, + "HVBpowerBusCur_uint16": 7264, + "HVBpowerBusVol_uint16": 32679, + "HVBreservedCur1_uint16": 58977, "HVBreservedCur2_uint16": 0, - "HVBreservedCur3_uint16": 2041, - "HVBsternRud1Cur_uint16": 5144, - "HVBsternRud2Cur_uint16": 32680, + "HVBreservedCur3_uint16": 58977, + "HVBsternRud1Cur_uint16": 5048, + "HVBsternRud2Cur_uint16": 32679, "HVBtyzCur_uint16": 0, - "LVBBbowPZDevCur_uint16": 0, - "LVBBemerBatCur_uint16": 0, - "LVBBemerBusVol_uint16": 0, - "LVBBinsBusCur_uint16": 43016, + "LVBBbowPZDevCur_uint16": 127, + "LVBBemerBatCur_uint16": 6144, + "LVBBemerBusVol_uint16": 24852, + "LVBBinsBusCur_uint16": 42982, "LVBBunit1Cur_uint16": 127, - "LVBBunit2Cur_uint16": 0, - "LVBBunit3Cur_uint16": 0, - "LVBBunit5Cur_uint16": 0, - "LVBinsBusVol_uint16": 276 + "LVBBunit2Cur_uint16": 61440, + "LVBBunit3Cur_uint16": 24851, + "LVBBunit5Cur_uint16": 42982, + "LVBinsBusVol_uint16": 24852 } \ No newline at end of file diff --git a/data/msg/uPower_disSysState_st.json b/data/msg/uPower_disSysState_st.json index ed8e1bf..940a773 100644 --- a/data/msg/uPower_disSysState_st.json +++ b/data/msg/uPower_disSysState_st.json @@ -1,7 +1,7 @@ { "HVolABusBreaker_unit16": 0, "HVolBBusBreaker_unit16": 0, - "HVolBusBreaker_uint16": 0, + "HVolBusBreaker_uint16": 512, "LVolBusBreaker_uint16": 0, "faultCode_array": [ diff --git a/data/msg/uPower_fcsState_st.json b/data/msg/uPower_fcsState_st.json index a7755c1..a268b59 100644 --- a/data/msg/uPower_fcsState_st.json +++ b/data/msg/uPower_fcsState_st.json @@ -1,30 +1,30 @@ { - "backpressure1_fp32": -5.4051763149612203e-28, - "backpressure2_fp32": 7.0480565570603022e-25, - "ch4oConcent1_fp32": 5.7198690228688065e-12, - "ch4oConcent2_fp32": 1.172338626680628e-38, + "backpressure1_fp32": -9.0950115693742826e-30, + "backpressure2_fp32": 1.1723338622658493e-38, + "ch4oConcent1_fp32": 0.0, + "ch4oConcent2_fp32": 0.0, "ch4o_fp32": 0.0, - "excTemp_fp32": 7.8389743120117084e-39, - "faultCode1_uint16": 22608, - "faultCode2_uint16": 34680, - "faultCode3_uint16": 32767, - "fcuCurIns_fp32": 3.5873240686715317e-43, - "fcuCurPower_fp32": 0.0, - "fcuCur_fp32": 1.7600060933568737e+34, - "fcuFaultLeve_uint8": 43, - "fcuOutIns_fp32": 1.172338626680628e-38, - "fcuOutPower_fp32": 5.8264504332328215e-11, - "fcuState_uint8": 84, - "fcuVolIns_fp32": 3.1653568655087838e-12, - "fcuVolPower_fp32": 1.172338626680628e-38, - "fcuVol_fp32": 1.1723384865507816e-38, - "flameDet_uint8": 170, - "h2Concent1_fp32": 0.0, - "h2Concent2_fp32": 0.0, - "o2Concent1_fp32": 8.2589490801865395e-13, - "o2Concent2_fp32": 1.172338626680628e-38, - "o2Level_fp32": 1.1754773951108692e-38, - "o2_fp32": -1.049113533195957e+19, - "powLimit_fp32": 1.172338626680628e-38, - "powerGen_fp32": 4.6635212892729912e-42 + "excTemp_fp32": 1.1723338622658493e-38, + "faultCode1_uint16": 39232, + "faultCode2_uint16": 59024, + "faultCode3_uint16": 32679, + "fcuCurIns_fp32": -6.5672670359649233e-28, + "fcuCurPower_fp32": 1.1723338622658493e-38, + "fcuCur_fp32": 4.6635212892729912e-42, + "fcuFaultLeve_uint8": 144, + "fcuOutIns_fp32": 1.1753926165537775e-38, + "fcuOutPower_fp32": -1.104591035133728e+23, + "fcuState_uint8": 46, + "fcuVolIns_fp32": -410840465408.0, + "fcuVolPower_fp32": 7.8490804765364189e-39, + "fcuVol_fp32": 1.1723338622658493e-38, + "flameDet_uint8": 0, + "h2Concent1_fp32": -3.4461820052887443e-29, + "h2Concent2_fp32": 1.1723338622658493e-38, + "o2Concent1_fp32": 3.5873240686715317e-43, + "o2Concent2_fp32": 0.0, + "o2Level_fp32": 0.0, + "o2_fp32": -8.1197206455365864e-30, + "powLimit_fp32": 1.1723338622658493e-38, + "powerGen_fp32": 3.5873240686715317e-43 } \ No newline at end of file diff --git a/data/msg/uPower_liBatState_st.json b/data/msg/uPower_liBatState_st.json index 650576a..7365d33 100644 --- a/data/msg/uPower_liBatState_st.json +++ b/data/msg/uPower_liBatState_st.json @@ -1,38 +1,38 @@ { - "fcuCurToInsLimit1_uint8": 85, + "fcuCurToInsLimit1_uint8": 127, "fcuCurToinsLimit2_uint8": 0, - "insBatCurElect_uint16": 0, - "insBatLimit_uint16": 0, - "insBatSoc_uint8": 0, - "insBatTotalElect_uint16": 0, - "insChargeState_uint8": 240, - "insCurSocHold1_uint8": 23, - "insCurSocHold2_uint8": 223, - "insCurSocHold3_uint8": 91, + "insBatCurElect_uint16": 32765, + "insBatLimit_uint16": 39552, + "insBatSoc_uint8": 97, + "insBatTotalElect_uint16": 47744, + "insChargeState_uint8": 2, + "insCurSocHold1_uint8": 144, + "insCurSocHold2_uint8": 230, + "insCurSocHold3_uint8": 167, "insCurrent_uint16": 0, - "insLinkVol_uint16": 34680, + "insLinkVol_uint16": 0, "insNegRelayState_uint8": 0, - "insNegRes_uint16": 2092, - "insPackVol_uint16": 32767, + "insNegRes_uint16": 0, + "insPackVol_uint16": 0, "insPosRelayState_uint8": 0, - "insPosRes_uint16": 33210, - "insfaultCode_uint8": 80, + "insPosRes_uint16": 0, + "insfaultCode_uint8": 186, "powBatCurElect_uint16": 0, - "powBatSoc_uint8": 0, - "powBatTotalElect_uint16": 0, - "powChargeState_uint8": 88, + "powBatSoc_uint8": 175, + "powBatTotalElect_uint16": 10981, + "powChargeState_uint8": 0, "powCurSocHold1_uint8": 0, - "powCurSocHold2_uint8": 76, - "powCurSocHold3_uint8": 43, - "powCurToInsLimit1_uint8": 146, - "powCurToinsLimit2_uint8": 117, - "powCur_uint16": 55776, - "powLinkVol_uint16": 32680, - "powNegRelayState_uint8": 0, - "powNegRes_uint16": 21851, - "powPosRelayState_uint8": 2, - "powPosRes_uint16": 57111, - "powerBatLimit_uint16": 0, + "powCurSocHold2_uint8": 224, + "powCurSocHold3_uint8": 233, + "powCurToInsLimit1_uint8": 210, + "powCurToinsLimit2_uint8": 11, + "powCur_uint16": 47904, + "powLinkVol_uint16": 0, + "powNegRelayState_uint8": 115, + "powNegRes_uint16": 32765, + "powPosRelayState_uint8": 238, + "powPosRes_uint16": 10981, + "powerBatLimit_uint16": 42026, "powerPackVol_uint16": 0, - "powfaultCode_uint8": 175 + "powfaultCode_uint8": 81 } \ No newline at end of file diff --git a/src/pPowerManger/PowerManger.cpp b/src/pPowerManger/PowerManger.cpp index 20185f0..0cd877e 100644 --- a/src/pPowerManger/PowerManger.cpp +++ b/src/pPowerManger/PowerManger.cpp @@ -46,7 +46,15 @@ PowerManger::PowerManger() m_fsm.RegisterHandleFunction(&m_state3,handleState3); // 注册状态机转换条件 - // m_fsm.RegisterEvent() + // m_fsm.RegisterEvent(&m_state1, "a", &m_state2); + // m_fsm.RegisterEvent(&m_state2, "b", &m_state3); + // m_fsm.RegisterEvent(&m_state3, "c", &m_state1); + + // cout << m_state1.event["a"]->name << endl; + // cout << m_state2.event["b"]->name << endl; + // cout << m_state1.event["a"]->id << endl; + + // m_pmEvent = "a"; // 初始化状态机 m_pmState = m_state1; @@ -108,6 +116,13 @@ bool PowerManger::OnConnectToServer() bool PowerManger::Iterate() { m_fsm.run(m_pmState,this); + // m_fsm.run(&m_pmState,this,m_pmEvent); + + cout <<"CURRENT STATE:" << m_pmState.name << " | CURRENT EVENT :" << m_pmEvent << endl; + // cout <<"____________________________________-" << m_pmState.event[m_pmEvent]->name << endl; + + // cout << m_pmState.name << endl; + // cout << m_pmEvent << endl; AppCastingMOOSApp::Iterate(); // 更新当前状态 updatePmState(); @@ -785,6 +800,7 @@ int PowerManger::handleState1(FSM_State &fsm,void* pData) cout << fsm.name << endl; PowerManger* pm = (PowerManger*)pData; fsm = pm->m_fsm.getState("PM_STATE2"); + // pm->m_pmEvent = "a"; return 0; } int PowerManger::handleState2(FSM_State &fsm,void* pData) @@ -792,6 +808,7 @@ int PowerManger::handleState2(FSM_State &fsm,void* pData) cout << fsm.name << endl; PowerManger* pm = (PowerManger*)pData; fsm = pm->m_fsm.getState("PM_STATE3"); + // pm->m_pmEvent = "b"; return 0; } int PowerManger::handleState3(FSM_State &fsm,void* pData) @@ -799,5 +816,6 @@ int PowerManger::handleState3(FSM_State &fsm,void* pData) cout << fsm.name << endl; PowerManger* pm = (PowerManger*)pData; fsm = pm->m_fsm.getState("PM_STATE"); + // pm->m_pmEvent = "c"; return 0; } \ No newline at end of file diff --git a/src/pPowerManger/fsm.cpp b/src/pPowerManger/fsm.cpp index 9ff9551..871ae17 100644 --- a/src/pPowerManger/fsm.cpp +++ b/src/pPowerManger/fsm.cpp @@ -1,5 +1,5 @@ #include "fsm.h" - +#include FSM::FSM(/* args */) @@ -61,34 +61,43 @@ FSM_State FSM::getState(std::string name) } -// int FSM::RegisterEvent(FSM_State* fsm, std::string event, FSM_State state) -// { -// if(fsm == NULL) -// return -1; -// fsm->event[event] = state; -// return 0; -// } +int FSM::RegisterEvent(FSM_State* fsm, std::string event, FSM_State *state) +{ + if(fsm == NULL) + return -1; + fsm->event[event] = state; + return 0; +} -// int FSM::unRegisterEvent(FSM_State* fsm, std::string event) -// { -// if(fsm == NULL) -// return -1; -// if(fsm->event.count(event) <= 0) -// return -1; -// fsm->event.erase(event); -// return 0; -// } +int FSM::unRegisterEvent(FSM_State* fsm, std::string event) +{ + if(fsm == NULL) + return -1; + if(fsm->event.count(event) <= 0) + return -1; + fsm->event.erase(event); + return 0; +} -// int FSM::run(FSM_State &fsm,void* data, std::string event) -// { -// if(fsm.event.count(event) <= 0) -// { -// return run(fsm,data); -// } -// else -// { -// fsm = fsm.event[event]; -// return run(fsm,data); -// } +int FSM::run(FSM_State *fsm,void* data, std::string event) +{ + if(fsm->event.count(event) <= 0) + { + std::cout << "no event" << std::endl; + return run(*(fsm),data); + } + else + { + int r = run(*(fsm),data); + // fsm = fsm->event[event]; + *fsm = *fsm->event[event]; + // std::cout << "event " << event <name << std::endl; + return r; + } +} +// int FSM::run(FSM_State *fsm,void* data) +// { +// return run(*fsm,data); // } \ No newline at end of file diff --git a/src/pPowerManger/fsm.h b/src/pPowerManger/fsm.h index ce4fde7..f40a6e2 100644 --- a/src/pPowerManger/fsm.h +++ b/src/pPowerManger/fsm.h @@ -25,10 +25,10 @@ public: std::map idStateMap; int run(FSM_State &fsm,void* data); - int run(FSM_State &fsm,void* data, std::string event); + int run(FSM_State *fsm,void* data, std::string event); //TODO: 事件注册机制实现 - int RegisterEvent(FSM_State* fsm, std::string event, FSM_State &state); + int RegisterEvent(FSM_State* fsm, std::string event, FSM_State *state); int unRegisterEvent(FSM_State* fsm, std::string event); int RegisterState(std::string name, unsigned int id,FSM_State &state);