diff --git a/.vscode/settings.json b/.vscode/settings.json index b526429..fcebba8 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -54,5 +54,6 @@ "cinttypes": "cpp", "typeinfo": "cpp" }, - "C_Cpp.errorSquiggles": "disabled" + "C_Cpp.errorSquiggles": "disabled", + "marscode.chatLanguage": "cn" } \ No newline at end of file diff --git a/data/msg/uPower_currentState_st.json b/data/msg/uPower_currentState_st.json index d62b00d..5d11f87 100644 --- a/data/msg/uPower_currentState_st.json +++ b/data/msg/uPower_currentState_st.json @@ -1,47 +1,47 @@ { - "HVABactuatorCurrent_uint16": 0, - "HVABbowFTDevice123Current_uint16": 0, - "HVABbowRudderControlBoxCurrent_uint16": 0, - "HVABbusbarBCurrent_uint16": 0, - "HVABbusbarBVoltage_uint16": 0, - "HVABmastSteeringGearControlBoxCurrent_uint16": 0, - "HVABopenWaterCoverStartCylinderCurrent_uint16": 0, - "HVABxczCurrent_uint16": 1, - "HVBBbowLowVoltageDistributionBoxCurrent_uint16": 0, - "HVBBcompositeEnergyManagementSystemEmergencyDC48VCurrent_uint16": 0, - "HVBBdcC1InstrumentDC48VCurrent_uint16": 0, - "HVBBemergency2BusbarVoltage_uint16": 0, - "HVBBemergencyLithiumBatteryGroup2Current_uint16": 0, - "HVBBfuelCellSecuritySystemEmergencyDC48VCurrent_uint16": 0, - "HVBBinstrumentBusbarVoltage_uint16": 0, - "HVBBlithiumBatteryGroupInstrumentCurrent_uint16": 0, - "HVBBplcControlPowerCurrent_uint16": 0, - "HVBBreservedCurrent1_uint16": 0, - "HVBBreservedCurrent2_uint16": 0, - "HVBBunit4InstrumentDC48VCurrent_uint16": 0, - "HVBbowHighVoltageDistributionBoxCurrent_uint16": 0, - "HVBbusbarACurrent_uint16": 0, - "HVBbusbarAVoltage_uint16": 6, - "HVBdcDc5ModuleCurrent_uint16": 0, - "HVBfbReservedSwitchCurrent_uint16": 0, - "HVBlithiumBatteryGroupMeterCurrent_uint16": 0, - "HVBpowerBusCurrent_uint16": 0, - "HVBpowerBusVoltage_uint16": 0, - "HVBpropulsionMotorControlBoxCurrent_uint16": 0, - "HVBreservedCurrent1_uint16": 0, - "HVBreservedCurrent2_uint16": 0, - "HVBreservedCurrent3_uint16": 0, - "HVBsternFTDevice45Current_uint16": 0, - "HVBsternRudderSwitch1Current_uint16": 0, - "HVBsternRudderSwitch2Current_uint16": 0, - "HVBtyzReservedSwitchCurrent_uint16": 0, - "LVBBbowPZDeviceCurrent_uint16": 0, - "LVBBemergency1BusbarVoltage_uint16": 0, - "LVBBemergencyLithiumBatteryGroup1Current_uint16": 0, - "LVBBinstrumentBusbarCurrent_uint16": 0, - "LVBBunit1Current_uint16": 0, - "LVBBunit2Current_uint16": 0, - "LVBBunit3Current_uint16": 0, - "LVBBunit5Current_uint16": 0, - "LVBinstrumentBusbarVoltage_uint16": 0 + "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, + "HVBBplcCur_uint16": 127, + "HVBBreservedCur1_uint16": 127, + "HVBBreservedCur2_uint16": 127, + "HVBBunit4Cur_uint16": 43016, + "HVBFTDev45Cur_uint16": 32680, + "HVBbatGroupCur_uint16": 5104, + "HVBbowHVolDisBoxCur_uint16": 2049, + "HVBbusACur_uint16": 0, + "HVBbusAVol_uint16": 2049, + "HVBdcDc5Cur_uint16": 0, + "HVBfbCur_uint16": 51236, + "HVBmotorCur_uint16": 32680, + "HVBpowerBusCur_uint16": 5048, + "HVBpowerBusVol_uint16": 32680, + "HVBreservedCur1_uint16": 2049, + "HVBreservedCur2_uint16": 0, + "HVBreservedCur3_uint16": 2041, + "HVBsternRud1Cur_uint16": 5144, + "HVBsternRud2Cur_uint16": 32680, + "HVBtyzCur_uint16": 0, + "LVBBbowPZDevCur_uint16": 0, + "LVBBemerBatCur_uint16": 0, + "LVBBemerBusVol_uint16": 0, + "LVBBinsBusCur_uint16": 43016, + "LVBBunit1Cur_uint16": 127, + "LVBBunit2Cur_uint16": 0, + "LVBBunit3Cur_uint16": 0, + "LVBBunit5Cur_uint16": 0, + "LVBinsBusVol_uint16": 276 } \ No newline at end of file diff --git a/data/msg/uPower_disSysState_st.json b/data/msg/uPower_disSysState_st.json index 3b318e7..ed8e1bf 100644 --- a/data/msg/uPower_disSysState_st.json +++ b/data/msg/uPower_disSysState_st.json @@ -1,8 +1,8 @@ { - "HightVoltageABusBreaker_unit16": 0, - "HightVoltageBBusBreaker_unit16": 0, - "HightVoltageBusBreaker_uint16": 0, - "LowVoltageBusBreaker_uint16": 0, + "HVolABusBreaker_unit16": 0, + "HVolBBusBreaker_unit16": 0, + "HVolBusBreaker_uint16": 0, + "LVolBusBreaker_uint16": 0, "faultCode_array": [ 0 diff --git a/data/msg/uPower_fcsState_st.json b/data/msg/uPower_fcsState_st.json index 0c80aea..a7755c1 100644 --- a/data/msg/uPower_fcsState_st.json +++ b/data/msg/uPower_fcsState_st.json @@ -1,26 +1,30 @@ { - "backpressure1_fp32": 0.0, - "backpressure2_fp32": 0.0, - "ch4oConcentration1_fp32": 0.0, - "ch4oConcentration2_fp32": 0.0, + "backpressure1_fp32": -5.4051763149612203e-28, + "backpressure2_fp32": 7.0480565570603022e-25, + "ch4oConcent1_fp32": 5.7198690228688065e-12, + "ch4oConcent2_fp32": 1.172338626680628e-38, "ch4o_fp32": 0.0, - "exchangerTemperature_fp32": 0.0, - "fcuCurrentIns_fp32": 0.0, - "fcuCurrentPower_fp32": 0.0, - "fcuCurrent_fp32": 0.0, - "fcuFaultLeve_uint8": 32, - "fcuOutIns_fp32": 0.0, - "fcuOutPower_fp32": 0.0, - "fcuState_uint8": 86, - "fcuVoltageIns_fp32": 0.0, - "fcuVoltagePower_fp32": 0.0, - "fcuVoltage_fp32": 0.0, - "h2Concentration1_fp32": 0.0, - "h2Concentration2_fp32": 0.0, - "o2Concentration1_fp32": 0.0, - "o2Concentration2_fp32": 0.0, - "o2Level_fp32": 0.0, - "o2_fp32": 0.0, - "powerLimit_fp32": 0.0, - "totalPowerGeneration_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 } \ No newline at end of file diff --git a/data/msg/uPower_liBatState_st.json b/data/msg/uPower_liBatState_st.json index c3f7a93..650576a 100644 --- a/data/msg/uPower_liBatState_st.json +++ b/data/msg/uPower_liBatState_st.json @@ -1,36 +1,38 @@ { - "fcuCurrentToInsLimit1_uint8": 0, - "fcuCurrentToinsLimit2_uint8": 0, - "insBatCurrentElectricity_uint16": 0, + "fcuCurToInsLimit1_uint8": 85, + "fcuCurToinsLimit2_uint8": 0, + "insBatCurElect_uint16": 0, "insBatLimit_uint16": 0, "insBatSoc_uint8": 0, - "insBatTotalElectricity_uint16": 0, - "insChargeState_uint8": 0, - "insCurrentSocHold1_uint8": 0, - "insCurrentSocHold2_uint8": 0, - "insCurrentSocHold3_uint8": 0, + "insBatTotalElect_uint16": 0, + "insChargeState_uint8": 240, + "insCurSocHold1_uint8": 23, + "insCurSocHold2_uint8": 223, + "insCurSocHold3_uint8": 91, "insCurrent_uint16": 0, - "insLinkVoltage_uint16": 0, - "insNegInsulationResistance_uint16": 0, + "insLinkVol_uint16": 34680, "insNegRelayState_uint8": 0, - "insPackVoltage_uint16": 0, - "insPosInsulationResistance_uint16": 0, + "insNegRes_uint16": 2092, + "insPackVol_uint16": 32767, "insPosRelayState_uint8": 0, - "powerBatCurrentElectricity_uint16": 0, + "insPosRes_uint16": 33210, + "insfaultCode_uint8": 80, + "powBatCurElect_uint16": 0, + "powBatSoc_uint8": 0, + "powBatTotalElect_uint16": 0, + "powChargeState_uint8": 88, + "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, - "powerBatSoc_uint8": 0, - "powerBatTotalElectricity_uint16": 0, - "powerChargeState_uint8": 0, - "powerCurrentSocHold1_uint8": 0, - "powerCurrentSocHold2_uint8": 0, - "powerCurrentSocHold3_uint8": 0, - "powerCurrentToInsLimit1_uint8": 0, - "powerCurrentToinsLimit2_uint8": 0, - "powerCurrent_uint16": 0, - "powerLinkVoltage_uint16": 0, - "powerNegInsulationResistance_uint16": 0, - "powerNegRelayState_uint8": 0, - "powerPackVoltage_uint16": 0, - "powerPosInsulationResistance_uint16": 0, - "powerPosRelayState_uint8": 0 + "powerPackVol_uint16": 0, + "powfaultCode_uint8": 175 } \ No newline at end of file diff --git a/src/pPowerManger/CMakeLists.txt b/src/pPowerManger/CMakeLists.txt index b16aa9b..7b368bb 100644 --- a/src/pPowerManger/CMakeLists.txt +++ b/src/pPowerManger/CMakeLists.txt @@ -19,6 +19,7 @@ SET(SRC PowerManger.cpp PowerManger_Info.cpp udpComm.cpp + fsm.cpp main.cpp ) diff --git a/src/pPowerManger/PowerManger.cpp b/src/pPowerManger/PowerManger.cpp index a5bfa30..20185f0 100644 --- a/src/pPowerManger/PowerManger.cpp +++ b/src/pPowerManger/PowerManger.cpp @@ -33,6 +33,24 @@ PowerManger::PowerManger() soc = 0; sustainableTime = 0; faultCode.push_back(0); + + + + //注册状态机 + m_fsm.RegisterState("PM_STATE", 1, m_state1); + m_fsm.RegisterState("PM_STATE2", 2, m_state2); + m_fsm.RegisterState("PM_STATE3", 3, m_state3); + + m_fsm.RegisterHandleFunction(&m_state1,handleState1); + m_fsm.RegisterHandleFunction(&m_state2,handleState2); + m_fsm.RegisterHandleFunction(&m_state3,handleState3); + + // 注册状态机转换条件 + // m_fsm.RegisterEvent() + + // 初始化状态机 + m_pmState = m_state1; + } //--------------------------------------------------------- @@ -89,6 +107,7 @@ bool PowerManger::OnConnectToServer() bool PowerManger::Iterate() { + m_fsm.run(m_pmState,this); AppCastingMOOSApp::Iterate(); // 更新当前状态 updatePmState(); @@ -352,10 +371,10 @@ bool PowerManger::buildPowerSysReport() fcs[VAR_TO_STR(fcuFaultLeve)+suffix] = m_pmCurrentState.ccustate.fcuFaultLeve; suffix = getTypeName(typeid(m_pmCurrentState.ccustate.powerLimit).name()); - fcs[VAR_TO_STR(powerLimit)+suffix] = m_pmCurrentState.ccustate.powerLimit; + fcs[VAR_TO_STR(powLimit)+suffix] = m_pmCurrentState.ccustate.powerLimit; suffix = getTypeName(typeid(m_pmCurrentState.ccustate.totalPowerGeneration).name()); - fcs[VAR_TO_STR(totalPowerGeneration)+suffix] = m_pmCurrentState.ccustate.totalPowerGeneration; + fcs[VAR_TO_STR(powerGen)+suffix] = m_pmCurrentState.ccustate.totalPowerGeneration; suffix = getTypeName(typeid(m_pmCurrentState.ccustate.ch4o).name()); fcs[VAR_TO_STR(ch4o)+suffix] = m_pmCurrentState.ccustate.ch4o; @@ -364,16 +383,16 @@ bool PowerManger::buildPowerSysReport() fcs[VAR_TO_STR(o2)+suffix] = m_pmCurrentState.ccustate.o2; suffix = getTypeName(typeid(m_pmCurrentState.ccustate.fcuVoltage).name()); - fcs[VAR_TO_STR(fcuVoltage)+suffix] = m_pmCurrentState.ccustate.fcuVoltage; + fcs[VAR_TO_STR(fcuVol)+suffix] = m_pmCurrentState.ccustate.fcuVoltage; suffix = getTypeName(typeid(m_pmCurrentState.ccustate.fcuCurrent).name()); - fcs[VAR_TO_STR(fcuCurrent)+suffix] = m_pmCurrentState.ccustate.fcuCurrent; + fcs[VAR_TO_STR(fcuCur)+suffix] = m_pmCurrentState.ccustate.fcuCurrent; suffix = getTypeName(typeid(m_pmCurrentState.ccustate.o2Level).name()); fcs[VAR_TO_STR(o2Level)+suffix] = m_pmCurrentState.ccustate.o2Level; suffix = getTypeName(typeid(m_pmCurrentState.ccustate.exchangerTemperature).name()); - fcs[VAR_TO_STR(exchangerTemperature)+suffix] = m_pmCurrentState.ccustate.exchangerTemperature; + fcs[VAR_TO_STR(excTemp)+suffix] = m_pmCurrentState.ccustate.exchangerTemperature; suffix = getTypeName(typeid(m_pmCurrentState.ccustate.fcuOutPower).name()); fcs[VAR_TO_STR(fcuOutPower)+suffix] = m_pmCurrentState.ccustate.fcuOutPower; @@ -382,34 +401,34 @@ bool PowerManger::buildPowerSysReport() fcs[VAR_TO_STR(fcuOutIns)+suffix] = m_pmCurrentState.ccustate.fcuOutIns; suffix = getTypeName(typeid(m_pmCurrentState.ccustate.fcuVoltageIns).name()); - fcs[VAR_TO_STR(fcuVoltageIns)+suffix] = m_pmCurrentState.ccustate.fcuVoltageIns; + fcs[VAR_TO_STR(fcuVolIns)+suffix] = m_pmCurrentState.ccustate.fcuVoltageIns; suffix = getTypeName(typeid(m_pmCurrentState.ccustate.fcuVoltagePower).name()); - fcs[VAR_TO_STR(fcuVoltagePower)+suffix] = m_pmCurrentState.ccustate.fcuVoltagePower; + fcs[VAR_TO_STR(fcuVolPower)+suffix] = m_pmCurrentState.ccustate.fcuVoltagePower; suffix = getTypeName(typeid(m_pmCurrentState.ccustate.fcuCurrentIns).name()); - fcs[VAR_TO_STR(fcuCurrentIns)+suffix] = m_pmCurrentState.ccustate.fcuCurrentIns; + fcs[VAR_TO_STR(fcuCurIns)+suffix] = m_pmCurrentState.ccustate.fcuCurrentIns; suffix = getTypeName(typeid(m_pmCurrentState.ccustate.fcuCurrentPower).name()); - fcs[VAR_TO_STR(fcuCurrentPower)+suffix] = m_pmCurrentState.ccustate.fcuCurrentPower; + fcs[VAR_TO_STR(fcuCurPower)+suffix] = m_pmCurrentState.ccustate.fcuCurrentPower; suffix = getTypeName(typeid(m_pmCurrentState.ccustate.h2Concentration1).name()); - fcs[VAR_TO_STR(h2Concentration1)+suffix] = m_pmCurrentState.ccustate.h2Concentration1; + fcs[VAR_TO_STR(h2Concent1)+suffix] = m_pmCurrentState.ccustate.h2Concentration1; suffix = getTypeName(typeid(m_pmCurrentState.ccustate.h2Concentration2).name()); - fcs[VAR_TO_STR(h2Concentration2)+suffix] = m_pmCurrentState.ccustate.h2Concentration2; + fcs[VAR_TO_STR(h2Concent2)+suffix] = m_pmCurrentState.ccustate.h2Concentration2; suffix = getTypeName(typeid(m_pmCurrentState.ccustate.o2Concentration1).name()); - fcs[VAR_TO_STR(o2Concentration1)+suffix] = m_pmCurrentState.ccustate.o2Concentration1; + fcs[VAR_TO_STR(o2Concent1)+suffix] = m_pmCurrentState.ccustate.o2Concentration1; suffix = getTypeName(typeid(m_pmCurrentState.ccustate.o2Concentration2).name()); - fcs[VAR_TO_STR(o2Concentration2)+suffix] = m_pmCurrentState.ccustate.o2Concentration2; + fcs[VAR_TO_STR(o2Concent2)+suffix] = m_pmCurrentState.ccustate.o2Concentration2; suffix = getTypeName(typeid(m_pmCurrentState.ccustate.ch4oConcentration1).name()); - fcs[VAR_TO_STR(ch4oConcentration1)+suffix] = m_pmCurrentState.ccustate.ch4oConcentration1; + fcs[VAR_TO_STR(ch4oConcent1)+suffix] = m_pmCurrentState.ccustate.ch4oConcentration1; suffix = getTypeName(typeid(m_pmCurrentState.ccustate.ch4oConcentration2).name()); - fcs[VAR_TO_STR(ch4oConcentration2)+suffix] = m_pmCurrentState.ccustate.ch4oConcentration2; + fcs[VAR_TO_STR(ch4oConcent2)+suffix] = m_pmCurrentState.ccustate.ch4oConcentration2; suffix = getTypeName(typeid(m_pmCurrentState.ccustate.backpressure1).name()); fcs[VAR_TO_STR(backpressure1)+suffix] = m_pmCurrentState.ccustate.backpressure1; @@ -418,6 +437,27 @@ bool PowerManger::buildPowerSysReport() fcs[VAR_TO_STR(backpressure2)+suffix] = m_pmCurrentState.ccustate.backpressure2; suffix = getTypeName(typeid(m_pmCurrentState.ccustate.flameDetection).name()); + fcs[VAR_TO_STR(flameDet)+suffix] = m_pmCurrentState.ccustate.flameDetection; + + // unsigned char fcuGZ_1L; + // unsigned char fcuGZ_1H; + // unsigned char fcuGZ_2L; + // unsigned char fcuGZ_2H; + // unsigned char fcuGZ_3L; + // unsigned char fcuGZ_3H; + unsigned short faultCode1; + unsigned short faultCode2; + unsigned short faultCode3; + faultCode1 = (m_pmCurrentState.ccustate.fcuGZ_1H << 8) | m_pmCurrentState.ccustate.fcuGZ_1L; + faultCode2 = (m_pmCurrentState.ccustate.fcuGZ_2H << 8) | m_pmCurrentState.ccustate.fcuGZ_2L; + faultCode3 = (m_pmCurrentState.ccustate.fcuGZ_3H << 8) | m_pmCurrentState.ccustate.fcuGZ_3L; + + suffix = getTypeName(typeid(faultCode1).name()); + fcs[VAR_TO_STR(faultCode1)+suffix] = faultCode1; + suffix = getTypeName(typeid(faultCode2).name()); + fcs[VAR_TO_STR(faultCode2)+suffix] = faultCode2; + suffix = getTypeName(typeid(faultCode3).name()); + fcs[VAR_TO_STR(faultCode3)+suffix] = faultCode3; //4.构建动力锂电池状态报告 suffix = getTypeName(typeid(m_pmCurrentState.ccustate.insPosRelayState).name()); @@ -427,10 +467,10 @@ bool PowerManger::buildPowerSysReport() lbs[VAR_TO_STR(insNegRelayState)+suffix] = m_pmCurrentState.ccustate.insNegRelayState; suffix = getTypeName(typeid(m_pmCurrentState.ccustate.powerPosRelayState).name()); - lbs[VAR_TO_STR(powerPosRelayState)+suffix] = m_pmCurrentState.ccustate.powerPosRelayState; + lbs[VAR_TO_STR(powPosRelayState)+suffix] = m_pmCurrentState.ccustate.powerPosRelayState; suffix = getTypeName(typeid(m_pmCurrentState.ccustate.powerNegRelayState).name()); - lbs[VAR_TO_STR(powerNegRelayState)+suffix] = m_pmCurrentState.ccustate.powerNegRelayState; + lbs[VAR_TO_STR(powNegRelayState)+suffix] = m_pmCurrentState.ccustate.powerNegRelayState; suffix = getTypeName(typeid(m_pmCurrentState.ccustate.insBatLimit).name()); lbs[VAR_TO_STR(insBatLimit)+suffix] = m_pmCurrentState.ccustate.insBatLimit; @@ -442,86 +482,91 @@ bool PowerManger::buildPowerSysReport() lbs[VAR_TO_STR(insBatSoc)+suffix] = m_pmCurrentState.ccustate.insBatSoc; suffix = getTypeName(typeid(m_pmCurrentState.ccustate.powerBatSoc).name()); - lbs[VAR_TO_STR(powerBatSoc)+suffix] = m_pmCurrentState.ccustate.powerBatSoc; + lbs[VAR_TO_STR(powBatSoc)+suffix] = m_pmCurrentState.ccustate.powerBatSoc; suffix = getTypeName(typeid(m_pmCurrentState.ccustate.insBatTotalElectricity).name()); - lbs[VAR_TO_STR(insBatTotalElectricity)+suffix] = m_pmCurrentState.ccustate.insBatTotalElectricity; + lbs[VAR_TO_STR(insBatTotalElect)+suffix] = m_pmCurrentState.ccustate.insBatTotalElectricity; suffix = getTypeName(typeid(m_pmCurrentState.ccustate.powerBatTotalElectricity).name()); - lbs[VAR_TO_STR(powerBatTotalElectricity)+suffix] = m_pmCurrentState.ccustate.powerBatTotalElectricity; + lbs[VAR_TO_STR(powBatTotalElect)+suffix] = m_pmCurrentState.ccustate.powerBatTotalElectricity; suffix = getTypeName(typeid(m_pmCurrentState.ccustate.insBatCurrentElectricity).name()); - lbs[VAR_TO_STR(insBatCurrentElectricity)+suffix] = m_pmCurrentState.ccustate.insBatCurrentElectricity; + lbs[VAR_TO_STR(insBatCurElect)+suffix] = m_pmCurrentState.ccustate.insBatCurrentElectricity; suffix = getTypeName(typeid(m_pmCurrentState.ccustate.powerBatCurrentElectricity).name()); - lbs[VAR_TO_STR(powerBatCurrentElectricity)+suffix] = m_pmCurrentState.ccustate.powerBatCurrentElectricity; + lbs[VAR_TO_STR(powBatCurElect)+suffix] = m_pmCurrentState.ccustate.powerBatCurrentElectricity; suffix = getTypeName(typeid(m_pmCurrentState.ccustate.insChargeState).name()); lbs[VAR_TO_STR(insChargeState)+suffix] = m_pmCurrentState.ccustate.insChargeState; suffix = getTypeName(typeid(m_pmCurrentState.ccustate.powerChargeState).name()); - lbs[VAR_TO_STR(powerChargeState)+suffix] = m_pmCurrentState.ccustate.powerChargeState; + lbs[VAR_TO_STR(powChargeState)+suffix] = m_pmCurrentState.ccustate.powerChargeState; suffix = getTypeName(typeid(m_pmCurrentState.ccustate.insLinkVoltage).name()); - lbs[VAR_TO_STR(insLinkVoltage)+suffix] = m_pmCurrentState.ccustate.insLinkVoltage; + lbs[VAR_TO_STR(insLinkVol)+suffix] = m_pmCurrentState.ccustate.insLinkVoltage; suffix = getTypeName(typeid(m_pmCurrentState.ccustate.insPackVoltage).name()); - lbs[VAR_TO_STR(insPackVoltage)+suffix] = m_pmCurrentState.ccustate.insPackVoltage; + lbs[VAR_TO_STR(insPackVol)+suffix] = m_pmCurrentState.ccustate.insPackVoltage; suffix = getTypeName(typeid(m_pmCurrentState.ccustate.insCurrent).name()); lbs[VAR_TO_STR(insCurrent)+suffix] = m_pmCurrentState.ccustate.insCurrent; suffix = getTypeName(typeid(m_pmCurrentState.ccustate.insPosInsulationResistance).name()); - lbs[VAR_TO_STR(insPosInsulationResistance)+suffix] = m_pmCurrentState.ccustate.insPosInsulationResistance; + lbs[VAR_TO_STR(insPosRes)+suffix] = m_pmCurrentState.ccustate.insPosInsulationResistance; suffix = getTypeName(typeid(m_pmCurrentState.ccustate.insNegInsulationResistance).name()); - lbs[VAR_TO_STR(insNegInsulationResistance)+suffix] = m_pmCurrentState.ccustate.insNegInsulationResistance; + lbs[VAR_TO_STR(insNegRes)+suffix] = m_pmCurrentState.ccustate.insNegInsulationResistance; suffix = getTypeName(typeid(m_pmCurrentState.ccustate.powerLinkVoltage).name()); - lbs[VAR_TO_STR(powerLinkVoltage)+suffix] = m_pmCurrentState.ccustate.powerLinkVoltage; + lbs[VAR_TO_STR(powLinkVol)+suffix] = m_pmCurrentState.ccustate.powerLinkVoltage; suffix = getTypeName(typeid(m_pmCurrentState.ccustate.powerPackVoltage).name()); - lbs[VAR_TO_STR(powerPackVoltage)+suffix] = m_pmCurrentState.ccustate.powerPackVoltage; + lbs[VAR_TO_STR(powerPackVol)+suffix] = m_pmCurrentState.ccustate.powerPackVoltage; suffix = getTypeName(typeid(m_pmCurrentState.ccustate.powerCurrent).name()); - lbs[VAR_TO_STR(powerCurrent)+suffix] = m_pmCurrentState.ccustate.powerCurrent; + lbs[VAR_TO_STR(powCur)+suffix] = m_pmCurrentState.ccustate.powerCurrent; suffix = getTypeName(typeid(m_pmCurrentState.ccustate.powerPosInsulationResistance).name()); - lbs[VAR_TO_STR(powerPosInsulationResistance)+suffix] = m_pmCurrentState.ccustate.powerPosInsulationResistance; + lbs[VAR_TO_STR(powPosRes)+suffix] = m_pmCurrentState.ccustate.powerPosInsulationResistance; suffix = getTypeName(typeid(m_pmCurrentState.ccustate.powerNegInsulationResistance).name()); - lbs[VAR_TO_STR(powerNegInsulationResistance)+suffix] = m_pmCurrentState.ccustate.powerNegInsulationResistance; + lbs[VAR_TO_STR(powNegRes)+suffix] = m_pmCurrentState.ccustate.powerNegInsulationResistance; suffix = getTypeName(typeid(m_pmCurrentState.ccustate.insCurrentSocHold1).name()); - lbs[VAR_TO_STR(insCurrentSocHold1)+suffix] = m_pmCurrentState.ccustate.insCurrentSocHold1; + lbs[VAR_TO_STR(insCurSocHold1)+suffix] = m_pmCurrentState.ccustate.insCurrentSocHold1; suffix = getTypeName(typeid(m_pmCurrentState.ccustate.insCurrentSocHold2).name()); - lbs[VAR_TO_STR(insCurrentSocHold2)+suffix] = m_pmCurrentState.ccustate.insCurrentSocHold2; + lbs[VAR_TO_STR(insCurSocHold2)+suffix] = m_pmCurrentState.ccustate.insCurrentSocHold2; suffix = getTypeName(typeid(m_pmCurrentState.ccustate.insCurrentSocHold3).name()); - lbs[VAR_TO_STR(insCurrentSocHold3)+suffix] = m_pmCurrentState.ccustate.insCurrentSocHold3; + lbs[VAR_TO_STR(insCurSocHold3)+suffix] = m_pmCurrentState.ccustate.insCurrentSocHold3; suffix = getTypeName(typeid(m_pmCurrentState.ccustate.fcuCurrentToInsLimit1).name()); - lbs[VAR_TO_STR(fcuCurrentToInsLimit1)+suffix] = m_pmCurrentState.ccustate.fcuCurrentToInsLimit1; + lbs[VAR_TO_STR(fcuCurToInsLimit1)+suffix] = m_pmCurrentState.ccustate.fcuCurrentToInsLimit1; suffix = getTypeName(typeid(m_pmCurrentState.ccustate.fcuCurrentToinsLimit2).name()); - lbs[VAR_TO_STR(fcuCurrentToinsLimit2)+suffix] = m_pmCurrentState.ccustate.fcuCurrentToinsLimit2; + lbs[VAR_TO_STR(fcuCurToinsLimit2)+suffix] = m_pmCurrentState.ccustate.fcuCurrentToinsLimit2; suffix = getTypeName(typeid(m_pmCurrentState.ccustate.powerCurrentSocHold1).name()); - lbs[VAR_TO_STR(powerCurrentSocHold1)+suffix] = m_pmCurrentState.ccustate.powerCurrentSocHold1; + lbs[VAR_TO_STR(powCurSocHold1)+suffix] = m_pmCurrentState.ccustate.powerCurrentSocHold1; suffix = getTypeName(typeid(m_pmCurrentState.ccustate.powerCurrentSocHold2).name()); - lbs[VAR_TO_STR(powerCurrentSocHold2)+suffix] = m_pmCurrentState.ccustate.powerCurrentSocHold2; + lbs[VAR_TO_STR(powCurSocHold2)+suffix] = m_pmCurrentState.ccustate.powerCurrentSocHold2; suffix = getTypeName(typeid(m_pmCurrentState.ccustate.powerCurrentSocHold3).name()); - lbs[VAR_TO_STR(powerCurrentSocHold3)+suffix] = m_pmCurrentState.ccustate.powerCurrentSocHold3; + lbs[VAR_TO_STR(powCurSocHold3)+suffix] = m_pmCurrentState.ccustate.powerCurrentSocHold3; suffix = getTypeName(typeid(m_pmCurrentState.ccustate.powerCurrentToInsLimit1).name()); - lbs[VAR_TO_STR(powerCurrentToInsLimit1)+suffix] = m_pmCurrentState.ccustate.powerCurrentToInsLimit1; + lbs[VAR_TO_STR(powCurToInsLimit1)+suffix] = m_pmCurrentState.ccustate.powerCurrentToInsLimit1; suffix = getTypeName(typeid(m_pmCurrentState.ccustate.powerCurrentToinsLimit2).name()); - lbs[VAR_TO_STR(powerCurrentToinsLimit2)+suffix] = m_pmCurrentState.ccustate.powerCurrentToinsLimit2; - + lbs[VAR_TO_STR(powCurToinsLimit2)+suffix] = m_pmCurrentState.ccustate.powerCurrentToinsLimit2; + + suffix = getTypeName(typeid(m_pmCurrentState.ccustate.insAlarmIdentificationWord).name()); + lbs[VAR_TO_STR(insfaultCode)+suffix] = m_pmCurrentState.ccustate.insAlarmIdentificationWord; + suffix = getTypeName(typeid(m_pmCurrentState.ccustate.powerAlarmIdentificationWord).name()); + lbs[VAR_TO_STR(powfaultCode)+suffix] = m_pmCurrentState.ccustate.powerAlarmIdentificationWord; + //5.构建配电系统状态报告 disBus1Breaker* pdis1=new disBus1Breaker; @@ -569,10 +614,10 @@ bool PowerManger::buildPowerSysReport() (m_pmCurrentState.bus4State.emergencyLithiumBatteryGroup1CircuitBreaker == BREAK_ON)? pdis4 -> emergencyLithiumBatteryGroup1CircuitBreaker = 1 : pdis4 -> emergencyLithiumBatteryGroup1CircuitBreaker = 0; pdis4 -> paceholder = 0; - dis["HightVoltageBusBreaker_uint16"] = *(unsigned short*) pdis1; - dis["HightVoltageABusBreaker_unit16"] = *(unsigned short*) pdis2; - dis["HightVoltageBBusBreaker_unit16"] = *(unsigned short*) pdis3; - dis["LowVoltageBusBreaker_uint16"] = *(unsigned short*) pdis3; + dis["HVolBusBreaker_uint16"] = *(unsigned short*) pdis1; + dis["HVolABusBreaker_unit16"] = *(unsigned short*) pdis2; + dis["HVolBBusBreaker_unit16"] = *(unsigned short*) pdis3; + dis["LVolBusBreaker_uint16"] = *(unsigned short*) pdis3; delete pdis1; delete pdis2; @@ -590,98 +635,98 @@ bool PowerManger::buildPowerSysReport() Json::Value currentBusState; suffix = getTypeName(typeid(m_pmCurrentState.bus1State.powerBusVoltage).name()); - currentBusState[VAR_TO_STR(HVBpowerBusVoltage)+suffix] = m_pmCurrentState.bus1State.powerBusVoltage; + currentBusState[VAR_TO_STR(HVBpowerBusVol)+suffix] = m_pmCurrentState.bus1State.powerBusVoltage; suffix = getTypeName(typeid(m_pmCurrentState.bus1State.dcDc5ModuleCurrent).name()); - currentBusState[VAR_TO_STR(HVBdcDc5ModuleCurrent)+suffix] = m_pmCurrentState.bus1State.dcDc5ModuleCurrent; + currentBusState[VAR_TO_STR(HVBdcDc5Cur)+suffix] = m_pmCurrentState.bus1State.dcDc5ModuleCurrent; suffix = getTypeName(typeid(m_pmCurrentState.bus1State.powerBusCurrent).name()); - currentBusState[VAR_TO_STR(HVBpowerBusCurrent)+suffix] = m_pmCurrentState.bus1State.powerBusCurrent; + currentBusState[VAR_TO_STR(HVBpowerBusCur)+suffix] = m_pmCurrentState.bus1State.powerBusCurrent; suffix = getTypeName(typeid(m_pmCurrentState.bus1State.busbarAVoltage).name()); - currentBusState[VAR_TO_STR(HVBbusbarAVoltage)+suffix] = m_pmCurrentState.bus1State.busbarAVoltage; + currentBusState[VAR_TO_STR(HVBbusAVol)+suffix] = m_pmCurrentState.bus1State.busbarAVoltage; suffix = getTypeName(typeid(m_pmCurrentState.bus1State.propulsionMotorControlBoxCurrent).name()); - currentBusState[VAR_TO_STR(HVBpropulsionMotorControlBoxCurrent)+suffix] = m_pmCurrentState.bus1State.propulsionMotorControlBoxCurrent; + currentBusState[VAR_TO_STR(HVBmotorCur)+suffix] = m_pmCurrentState.bus1State.propulsionMotorControlBoxCurrent; suffix = getTypeName(typeid(m_pmCurrentState.bus1State.busbarACurrent).name()); - currentBusState[VAR_TO_STR(HVBbusbarACurrent)+suffix] = m_pmCurrentState.bus1State.busbarACurrent; + currentBusState[VAR_TO_STR(HVBbusACur)+suffix] = m_pmCurrentState.bus1State.busbarACurrent; suffix = getTypeName(typeid(m_pmCurrentState.bus1State.lithiumBatteryGroupMeterCurrent).name()); - currentBusState[VAR_TO_STR(HVBlithiumBatteryGroupMeterCurrent)+suffix] = m_pmCurrentState.bus1State.lithiumBatteryGroupMeterCurrent; + currentBusState[VAR_TO_STR(HVBbatGroupCur)+suffix] = m_pmCurrentState.bus1State.lithiumBatteryGroupMeterCurrent; suffix = getTypeName(typeid(m_pmCurrentState.bus1State.bowHighVoltageDistributionBoxCurrent).name()); - currentBusState[VAR_TO_STR(HVBbowHighVoltageDistributionBoxCurrent)+suffix] = m_pmCurrentState.bus1State.bowHighVoltageDistributionBoxCurrent; + currentBusState[VAR_TO_STR(HVBbowHVolDisBoxCur)+suffix] = m_pmCurrentState.bus1State.bowHighVoltageDistributionBoxCurrent; suffix = getTypeName(typeid(m_pmCurrentState.bus1State.sternFTDevice45Current).name()); - currentBusState[VAR_TO_STR(HVBsternFTDevice45Current)+suffix] = m_pmCurrentState.bus1State.sternFTDevice45Current; + currentBusState[VAR_TO_STR(HVBFTDev45Cur)+suffix] = m_pmCurrentState.bus1State.sternFTDevice45Current; suffix = getTypeName(typeid(m_pmCurrentState.bus1State.tyzReservedSwitchCurrent).name()); - currentBusState[VAR_TO_STR(HVBtyzReservedSwitchCurrent)+suffix] = m_pmCurrentState.bus1State.tyzReservedSwitchCurrent; + currentBusState[VAR_TO_STR(HVBtyzCur)+suffix] = m_pmCurrentState.bus1State.tyzReservedSwitchCurrent; suffix = getTypeName(typeid(m_pmCurrentState.bus1State.sternRudderSwitch1Current).name()); - currentBusState[VAR_TO_STR(HVBsternRudderSwitch1Current)+suffix] = m_pmCurrentState.bus1State.sternRudderSwitch1Current; + currentBusState[VAR_TO_STR(HVBsternRud1Cur)+suffix] = m_pmCurrentState.bus1State.sternRudderSwitch1Current; suffix = getTypeName(typeid(m_pmCurrentState.bus1State.reservedCurrent1).name()); - currentBusState[VAR_TO_STR(HVBreservedCurrent1)+suffix] = m_pmCurrentState.bus1State.reservedCurrent1; + currentBusState[VAR_TO_STR(HVBreservedCur1)+suffix] = m_pmCurrentState.bus1State.reservedCurrent1; suffix = getTypeName(typeid(m_pmCurrentState.bus1State.sternRudderSwitch2Current).name()); - currentBusState[VAR_TO_STR(HVBsternRudderSwitch2Current)+suffix] = m_pmCurrentState.bus1State.sternRudderSwitch2Current; + currentBusState[VAR_TO_STR(HVBsternRud2Cur)+suffix] = m_pmCurrentState.bus1State.sternRudderSwitch2Current; suffix = getTypeName(typeid(m_pmCurrentState.bus1State.reservedCurrent2).name()); - currentBusState[VAR_TO_STR(HVBreservedCurrent2)+suffix] = m_pmCurrentState.bus1State.reservedCurrent2; + currentBusState[VAR_TO_STR(HVBreservedCur2)+suffix] = m_pmCurrentState.bus1State.reservedCurrent2; suffix = getTypeName(typeid(m_pmCurrentState.bus1State.fbReservedSwitchCurrent).name()); - currentBusState[VAR_TO_STR(HVBfbReservedSwitchCurrent)+suffix] = m_pmCurrentState.bus1State.fbReservedSwitchCurrent; + currentBusState[VAR_TO_STR(HVBfbCur)+suffix] = m_pmCurrentState.bus1State.fbReservedSwitchCurrent; suffix = getTypeName(typeid(m_pmCurrentState.bus1State.reservedCurrent3).name()); - currentBusState[VAR_TO_STR(HVBreservedCurrent3)+suffix] = m_pmCurrentState.bus1State.reservedCurrent3; + currentBusState[VAR_TO_STR(HVBreservedCur3)+suffix] = m_pmCurrentState.bus1State.reservedCurrent3; suffix = getTypeName(typeid(m_pmCurrentState.bus2State.busbarBVoltage).name()); - currentBusState[VAR_TO_STR(HVABbusbarBVoltage)+suffix] = m_pmCurrentState.bus2State.busbarBVoltage; + currentBusState[VAR_TO_STR(HVABbusBVol)+suffix] = m_pmCurrentState.bus2State.busbarBVoltage; suffix = getTypeName(typeid(m_pmCurrentState.bus2State.busbarBCurrent).name()); - currentBusState[VAR_TO_STR(HVABbusbarBCurrent)+suffix] = m_pmCurrentState.bus2State.busbarBCurrent; + currentBusState[VAR_TO_STR(HVABbusBCur)+suffix] = m_pmCurrentState.bus2State.busbarBCurrent; suffix = getTypeName(typeid(m_pmCurrentState.bus2State.bowFTDevice123Current).name()); - currentBusState[VAR_TO_STR(HVABbowFTDevice123Current)+suffix] = m_pmCurrentState.bus2State.bowFTDevice123Current; + currentBusState[VAR_TO_STR(HVABFTDev123Cur)+suffix] = m_pmCurrentState.bus2State.bowFTDevice123Current; suffix = getTypeName(typeid(m_pmCurrentState.bus2State.actuatorCurrent).name()); - currentBusState[VAR_TO_STR(HVABactuatorCurrent)+suffix] = m_pmCurrentState.bus2State.actuatorCurrent; + currentBusState[VAR_TO_STR(HVABactCur)+suffix] = m_pmCurrentState.bus2State.actuatorCurrent; suffix = getTypeName(typeid(m_pmCurrentState.bus2State.mastSteeringGearControlBoxCurrent).name()); - currentBusState[VAR_TO_STR(HVABmastSteeringGearControlBoxCurrent)+suffix] = m_pmCurrentState.bus2State.mastSteeringGearControlBoxCurrent; + currentBusState[VAR_TO_STR(HVABmastSteGeaCur)+suffix] = m_pmCurrentState.bus2State.mastSteeringGearControlBoxCurrent; suffix = getTypeName(typeid(m_pmCurrentState.bus2State.xczCurrent).name()); - currentBusState[VAR_TO_STR(HVABxczCurrent)+suffix] = m_pmCurrentState.bus2State.xczCurrent; + currentBusState[VAR_TO_STR(HVABxczCur)+suffix] = m_pmCurrentState.bus2State.xczCurrent; suffix = getTypeName(typeid(m_pmCurrentState.bus2State.bowRudderControlBoxCurrent).name()); - currentBusState[VAR_TO_STR(HVABbowRudderControlBoxCurrent)+suffix] = m_pmCurrentState.bus2State.bowRudderControlBoxCurrent; + currentBusState[VAR_TO_STR(HVABbowRudCur)+suffix] = m_pmCurrentState.bus2State.bowRudderControlBoxCurrent; suffix = getTypeName(typeid(m_pmCurrentState.bus2State.openWaterCoverStartCylinderCurrent).name()); - currentBusState[VAR_TO_STR(HVABopenWaterCoverStartCylinderCurrent)+suffix] = m_pmCurrentState.bus2State.openWaterCoverStartCylinderCurrent; + currentBusState[VAR_TO_STR(HVABopenWaterCur)+suffix] = m_pmCurrentState.bus2State.openWaterCoverStartCylinderCurrent; suffix = getTypeName(typeid(m_pmCurrentState.bus3State.instrumentBusbarVoltage).name()); - currentBusState[VAR_TO_STR(HVBBinstrumentBusbarVoltage)+suffix] = m_pmCurrentState.bus3State.instrumentBusbarVoltage; + currentBusState[VAR_TO_STR(HVBBinsBusVol)+suffix] = m_pmCurrentState.bus3State.instrumentBusbarVoltage; suffix = getTypeName(typeid(m_pmCurrentState.bus3State.bowLowVoltageDistributionBoxCurrent).name()); - currentBusState[VAR_TO_STR(HVBBbowLowVoltageDistributionBoxCurrent)+suffix] = m_pmCurrentState.bus3State.bowLowVoltageDistributionBoxCurrent; + currentBusState[VAR_TO_STR(HVBBbowLowVolDisBoxCur)+suffix] = m_pmCurrentState.bus3State.bowLowVoltageDistributionBoxCurrent; suffix = getTypeName(typeid(m_pmCurrentState.bus3State.dcC1InstrumentDC48VCurrent).name()); - currentBusState[VAR_TO_STR(HVBBdcC1InstrumentDC48VCurrent)+suffix] = m_pmCurrentState.bus3State.dcC1InstrumentDC48VCurrent; + currentBusState[VAR_TO_STR(HVBBdcC1InsCur)+suffix] = m_pmCurrentState.bus3State.dcC1InstrumentDC48VCurrent; suffix = getTypeName(typeid(m_pmCurrentState.bus3State.reservedCurrent1).name()); - currentBusState[VAR_TO_STR(HVBBreservedCurrent1)+suffix] = m_pmCurrentState.bus3State.reservedCurrent1; + currentBusState[VAR_TO_STR(HVBBreservedCur1)+suffix] = m_pmCurrentState.bus3State.reservedCurrent1; suffix = getTypeName(typeid(m_pmCurrentState.bus3State.emergencyLithiumBatteryGroup2Current).name()); - currentBusState[VAR_TO_STR(HVBBemergencyLithiumBatteryGroup2Current)+suffix] = m_pmCurrentState.bus3State.emergencyLithiumBatteryGroup2Current; + currentBusState[VAR_TO_STR(HVBBemerBatCur)+suffix] = m_pmCurrentState.bus3State.emergencyLithiumBatteryGroup2Current; suffix = getTypeName(typeid(m_pmCurrentState.bus3State.lithiumBatteryGroupInstrumentCurrent).name()); - currentBusState[VAR_TO_STR(HVBBlithiumBatteryGroupInstrumentCurrent)+suffix] = m_pmCurrentState.bus3State.lithiumBatteryGroupInstrumentCurrent; + currentBusState[VAR_TO_STR(HVBBbatInsCur)+suffix] = m_pmCurrentState.bus3State.lithiumBatteryGroupInstrumentCurrent; suffix = getTypeName(typeid(m_pmCurrentState.bus3State.unit4InstrumentDC48VCurrent).name()); - currentBusState[VAR_TO_STR(HVBBunit4InstrumentDC48VCurrent)+suffix] = m_pmCurrentState.bus3State.unit4InstrumentDC48VCurrent; + currentBusState[VAR_TO_STR(HVBBunit4Cur)+suffix] = m_pmCurrentState.bus3State.unit4InstrumentDC48VCurrent; suffix = getTypeName(typeid(m_pmCurrentState.bus3State.reservedCurrent2).name()); - currentBusState[VAR_TO_STR(HVBBreservedCurrent2)+suffix] = m_pmCurrentState.bus3State.reservedCurrent2; + currentBusState[VAR_TO_STR(HVBBreservedCur2)+suffix] = m_pmCurrentState.bus3State.reservedCurrent2; suffix = getTypeName(typeid(m_pmCurrentState.bus3State.emergency2BusbarVoltage).name()); - currentBusState[VAR_TO_STR(HVBBemergency2BusbarVoltage)+suffix] = m_pmCurrentState.bus3State.emergency2BusbarVoltage; + currentBusState[VAR_TO_STR(HVBBemer2BusVol)+suffix] = m_pmCurrentState.bus3State.emergency2BusbarVoltage; suffix = getTypeName(typeid(m_pmCurrentState.bus3State.compositeEnergyManagementSystemEmergencyDC48VCurrent).name()); - currentBusState[VAR_TO_STR(HVBBcompositeEnergyManagementSystemEmergencyDC48VCurrent)+suffix] = m_pmCurrentState.bus3State.compositeEnergyManagementSystemEmergencyDC48VCurrent; + currentBusState[VAR_TO_STR(HVBBCCUCur)+suffix] = m_pmCurrentState.bus3State.compositeEnergyManagementSystemEmergencyDC48VCurrent; suffix = getTypeName(typeid(m_pmCurrentState.bus3State.fuelCellSecuritySystemEmergencyDC48VCurrent).name()); - currentBusState[VAR_TO_STR(HVBBfuelCellSecuritySystemEmergencyDC48VCurrent)+suffix] = m_pmCurrentState.bus3State.fuelCellSecuritySystemEmergencyDC48VCurrent; + currentBusState[VAR_TO_STR(HVBBFCSSecurSysCur)+suffix] = m_pmCurrentState.bus3State.fuelCellSecuritySystemEmergencyDC48VCurrent; suffix = getTypeName(typeid(m_pmCurrentState.bus3State.plcControlPowerCurrent).name()); - currentBusState[VAR_TO_STR(HVBBplcControlPowerCurrent)+suffix] = m_pmCurrentState.bus3State.plcControlPowerCurrent; + currentBusState[VAR_TO_STR(HVBBplcCur)+suffix] = m_pmCurrentState.bus3State.plcControlPowerCurrent; suffix = getTypeName(typeid(m_pmCurrentState.bus4State.instrumentBusbarVoltage).name()); - currentBusState[VAR_TO_STR(LVBinstrumentBusbarVoltage)+suffix] = m_pmCurrentState.bus4State.instrumentBusbarVoltage; + currentBusState[VAR_TO_STR(LVBinsBusVol)+suffix] = m_pmCurrentState.bus4State.instrumentBusbarVoltage; suffix = getTypeName(typeid(m_pmCurrentState.bus4State.instrumentBusbarCurrent).name()); - currentBusState[VAR_TO_STR(LVBBinstrumentBusbarCurrent)+suffix] = m_pmCurrentState.bus4State.instrumentBusbarCurrent; + currentBusState[VAR_TO_STR(LVBBinsBusCur)+suffix] = m_pmCurrentState.bus4State.instrumentBusbarCurrent; suffix = getTypeName(typeid(m_pmCurrentState.bus4State.unit1Current).name()); - currentBusState[VAR_TO_STR(LVBBunit1Current)+suffix] = m_pmCurrentState.bus4State.unit1Current; + currentBusState[VAR_TO_STR(LVBBunit1Cur)+suffix] = m_pmCurrentState.bus4State.unit1Current; suffix = getTypeName(typeid(m_pmCurrentState.bus4State.unit2Current).name()); - currentBusState[VAR_TO_STR(LVBBunit2Current)+suffix] = m_pmCurrentState.bus4State.unit2Current; + currentBusState[VAR_TO_STR(LVBBunit2Cur)+suffix] = m_pmCurrentState.bus4State.unit2Current; suffix = getTypeName(typeid(m_pmCurrentState.bus4State.unit3Current).name()); - currentBusState[VAR_TO_STR(LVBBunit3Current)+suffix] = m_pmCurrentState.bus4State.unit3Current; + currentBusState[VAR_TO_STR(LVBBunit3Cur)+suffix] = m_pmCurrentState.bus4State.unit3Current; suffix = getTypeName(typeid(m_pmCurrentState.bus4State.unit5Current).name()); - currentBusState[VAR_TO_STR(LVBBunit5Current)+suffix] = m_pmCurrentState.bus4State.unit5Current; + currentBusState[VAR_TO_STR(LVBBunit5Cur)+suffix] = m_pmCurrentState.bus4State.unit5Current; suffix = getTypeName(typeid(m_pmCurrentState.bus4State.bowPZDeviceCurrent).name()); - currentBusState[VAR_TO_STR(LVBBbowPZDeviceCurrent)+suffix] = m_pmCurrentState.bus4State.bowPZDeviceCurrent; + currentBusState[VAR_TO_STR(LVBBbowPZDevCur)+suffix] = m_pmCurrentState.bus4State.bowPZDeviceCurrent; suffix = getTypeName(typeid(m_pmCurrentState.bus4State.emergencyLithiumBatteryGroup1Current).name()); - currentBusState[VAR_TO_STR(LVBBemergencyLithiumBatteryGroup1Current)+suffix] = m_pmCurrentState.bus4State.emergencyLithiumBatteryGroup1Current; + currentBusState[VAR_TO_STR(LVBBemerBatCur)+suffix] = m_pmCurrentState.bus4State.emergencyLithiumBatteryGroup1Current; suffix = getTypeName(typeid(m_pmCurrentState.bus4State.emergency1BusbarVoltage).name()); - currentBusState[VAR_TO_STR(LVBBemergency1BusbarVoltage)+suffix] = m_pmCurrentState.bus4State.emergency1BusbarVoltage; + currentBusState[VAR_TO_STR(LVBBemerBusVol)+suffix] = m_pmCurrentState.bus4State.emergency1BusbarVoltage; // dis["currentBusState"] = currentBusState; @@ -733,4 +778,26 @@ bool PowerManger::saveStringToJsonFile(const string &strJson, const string &file std::cerr << "无法打开文件!" << std::endl; return false; } +} + +int PowerManger::handleState1(FSM_State &fsm,void* pData) +{ + cout << fsm.name << endl; + PowerManger* pm = (PowerManger*)pData; + fsm = pm->m_fsm.getState("PM_STATE2"); + return 0; +} +int PowerManger::handleState2(FSM_State &fsm,void* pData) +{ + cout << fsm.name << endl; + PowerManger* pm = (PowerManger*)pData; + fsm = pm->m_fsm.getState("PM_STATE3"); + return 0; +} +int PowerManger::handleState3(FSM_State &fsm,void* pData) +{ + cout << fsm.name << endl; + PowerManger* pm = (PowerManger*)pData; + fsm = pm->m_fsm.getState("PM_STATE"); + return 0; } \ No newline at end of file diff --git a/src/pPowerManger/PowerManger.h b/src/pPowerManger/PowerManger.h index fb54af5..de23318 100644 --- a/src/pPowerManger/PowerManger.h +++ b/src/pPowerManger/PowerManger.h @@ -28,6 +28,7 @@ #include "json/json.h" #include "udpComm.h" #include "pmSysvariable.h" +#include "fsm.h" #define VAR_TO_STR(var) #var @@ -101,6 +102,20 @@ class PowerManger : public AppCastingMOOSApp // CMOOSThread m_SendThread; private: // bool inline saveStringToJsonFile(const string &strJson, const string &strFileName); + + + public: //状态实现 + FSM_State m_pmState; + string m_pmEvent; + FSM m_fsm; + FSM_State m_state1; + FSM_State m_state2; + FSM_State m_state3; + + static int handleState1(FSM_State &fsm, void* pData); + static int handleState2(FSM_State &fsm, void* pData); + static int handleState3(FSM_State &fsm, void* pData); + }; #endif diff --git a/src/pPowerManger/fsm.cpp b/src/pPowerManger/fsm.cpp new file mode 100644 index 0000000..9ff9551 --- /dev/null +++ b/src/pPowerManger/fsm.cpp @@ -0,0 +1,94 @@ +#include "fsm.h" + + + +FSM::FSM(/* args */) +{ + idStateMap.clear(); + handleMap.clear(); + stateMap.clear(); +}; + +FSM::~FSM() +{ +}; + +int FSM::run(FSM_State &fsm,void* data) +{ + FSM_Handle handle = handleMap[fsm.id]; + return handle(fsm,data); +} +int FSM::RegisterHandleFunction(FSM_State* fsm, FSM_Handle handle) +{ + if(fsm == NULL) + return -1; + if(handleMap.count(fsm->id) > 0) + return -1; + handleMap[fsm->id] = handle; + return 0; +} +int FSM::unRegisterHandleFunction(FSM_State* fsm) +{ + if(fsm == NULL) + return -1; + if(handleMap.count(fsm->id) <= 0) + return -1; + handleMap.erase(fsm->id); + return 0; +} + +int FSM::RegisterState(std::string name, unsigned int id,FSM_State &state) +{ + if(stateMap.count(name) > 0) + return -1; + if(idStateMap.count(id) > 0) + return -1; + state.name = name; + state.id = id; + stateMap[name] = state; + idStateMap[id] = state; + return 0; +} + +unsigned int FSM::getStateId(std::string name) +{ + return stateMap[name].id; +} + +FSM_State FSM::getState(std::string name) +{ + return stateMap[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::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); +// } + +// } \ No newline at end of file diff --git a/src/pPowerManger/fsm.h b/src/pPowerManger/fsm.h new file mode 100644 index 0000000..ce4fde7 --- /dev/null +++ b/src/pPowerManger/fsm.h @@ -0,0 +1,40 @@ +#ifndef FSM_H +#define FSM_H + +#include +#include + + +typedef struct FSM_State +{ + std::string name; + unsigned int id; + std::map event; +}; + +typedef int (*FSM_Handle)(FSM_State &fsm, void *data); +// typedef int (*FSM_EventHandle)(FSM_State &fsm,std::string event,void *data); + +class FSM +{ +public: + FSM(); + ~FSM(); + std::map handleMap; + std::map stateMap; + std::map idStateMap; + + int run(FSM_State &fsm,void* data); + int run(FSM_State &fsm,void* data, std::string event); + + //TODO: 事件注册机制实现 + 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); + FSM_State getState(std::string name); + unsigned int getStateId(std::string name); + int RegisterHandleFunction(FSM_State* fsm, FSM_Handle handle); + int unRegisterHandleFunction(FSM_State* fsm); +}; +#endif \ No newline at end of file diff --git a/src/pPowerManger/udpComm.cpp b/src/pPowerManger/udpComm.cpp index 7fd8a1f..b08ecdb 100644 --- a/src/pPowerManger/udpComm.cpp +++ b/src/pPowerManger/udpComm.cpp @@ -44,22 +44,10 @@ bool udpComm::getMsgId(char *m,unsigned short &id) sError.push_back("Msg Header errar"); return false; } -bool udpComm::getCcuState(char *m, msg_CcuStateFbMsg &s) { - m_header h; +bool udpComm::getMsgFromBuff(char *m, msg_CcuStateFbMsg &s) { Checksum sum; msg_CcuStateFbMsg *p; p = reinterpret_cast(m); - h = p->header; - - // 判断消息是否有效 - // if (h.start1 != 0x20 || h.start2 != 0x20) { - // sError.push_back("CcuState Msg Header errar"); - // return false; - // } - // if (h.id != 0x0051) { - // sError.push_back("CcuState Msg ID error"); - // return false; - // } sum = calculateChecksum((unsigned char*)m, sizeof(msg_CcuStateFbMsg)); if (sum != p->checkCode) { @@ -70,26 +58,11 @@ bool udpComm::getCcuState(char *m, msg_CcuStateFbMsg &s) { return true; } -bool udpComm::getCcuSetParmFb(char *m, msg_CcuSetParmFbMsg &s) +bool udpComm::getMsgFromBuff(char *m, msg_CcuSetParmFbMsg &s) { - m_header h; Checksum sum; msg_CcuSetParmFbMsg *p; p = reinterpret_cast(m); - - h = p->header; - - // 判断消息是否有效 - // if (h.start1!= 0x20 || h.start2!= 0x20) { - // sError.push_back("CcuSetParm Msg Header errar"); - // return false; - // } - - // if (h.id!= 0x0040) - // { - // sError.push_back("CcuSetParm Msg ID error"); - // return false; - // } sum = calculateChecksum((unsigned char*)m, sizeof(msg_CcuSetParmFbMsg)); if (sum!= p->checkCode) { @@ -101,22 +74,11 @@ bool udpComm::getCcuSetParmFb(char *m, msg_CcuSetParmFbMsg &s) return true; } -bool udpComm::getDisSysHVBusFb(char *m, msg_disHighVolBusFbMsg &s) +bool udpComm::getMsgFromBuff(char *m, msg_disHighVolBusFbMsg &s) { - m_header h; cChecksum sum; msg_disHighVolBusFbMsg *p; p = reinterpret_cast(m); - h = p->header; - // 判断消息是否有效 - // if (h.start1!= 0x20 || h.start2!= 0x20) { - // sError.push_back("DisSys HVBus Msg Header errar"); - // return false; - // } - // if (h.id!= DIS_HVBUS_FB_ID) { - // sError.push_back("DisSys HVBus Msg ID error"); - // return false; - // } sum = calculateChecksum((unsigned char*)m, sizeof(msg_disHighVolBusFbMsg), sizeof(cChecksum)) & 0xFF; if (sum != p->checkCode) { sError.push_back("DisSys HVBus Msg Check error"); @@ -127,22 +89,11 @@ bool udpComm::getDisSysHVBusFb(char *m, msg_disHighVolBusFbMsg &s) return true; } -bool udpComm::getDisSysHVABusFb(char *m, msg_disHighAVolBusFbMsg &s) +bool udpComm::getMsgFromBuff(char *m, msg_disHighAVolBusFbMsg &s) { - m_header h; cChecksum sum; msg_disHighAVolBusFbMsg *p; p = reinterpret_cast(m); - h = p->header; - // 判断消息是否有效 - // if (h.start1!= 0x20 || h.start2!= 0x20) { - // sError.push_back("DisSys HVABus Msg Header errar"); - // return false; - // } - // if (h.id!= DIS_HVBUSA_FB_ID) { - // sError.push_back("DisSys HVABus Msg ID error"); - // return false; - // } sum = calculateChecksum((unsigned char*)m, sizeof(msg_disHighAVolBusFbMsg), sizeof(cChecksum)) & 0xFF; if (sum!= p->checkCode) { sError.push_back("DisSys HVABus Msg Check error"); @@ -151,22 +102,11 @@ bool udpComm::getDisSysHVABusFb(char *m, msg_disHighAVolBusFbMsg &s) s = *p; return true; } -bool udpComm::getDisSysHVBBusFb(char *m, msg_disHighBVolBusFbMsg &s) +bool udpComm::getMsgFromBuff(char *m, msg_disHighBVolBusFbMsg &s) { - m_header h; cChecksum sum; msg_disHighBVolBusFbMsg *p; p = reinterpret_cast(m); - h = p->header; - // 判断消息是否有效 - // if (h.start1!= 0x20 || h.start2!= 0x20) { - // sError.push_back("DisSys HVBBus Msg Header errar"); - // return false; - // } - // if (h.id!= DIS_HVBUSB_FB_ID) { - // sError.push_back("DisSys HVBBus Msg ID error"); - // return false; - // } sum = calculateChecksum((unsigned char*)m, sizeof(msg_disHighBVolBusFbMsg), sizeof(cChecksum)) & 0xFF; if (sum!= p->checkCode) { sError.push_back("DisSys HVBBus Msg Check error"); @@ -176,22 +116,11 @@ bool udpComm::getDisSysHVBBusFb(char *m, msg_disHighBVolBusFbMsg &s) return true; } -bool udpComm::getDisSysLVBusFb(char *m, msg_disLowBusFbMsg &s) +bool udpComm::getMsgFromBuff(char *m, msg_disLowBusFbMsg &s) { - m_header h; cChecksum sum; msg_disLowBusFbMsg *p; p = reinterpret_cast(m); - h = p->header; - // 判断消息是否有效 - // if (h.start1!= 0x20 || h.start2!= 0x20) { - // sError.push_back("DisSys LVBus Msg Header errar"); - // return false; - // } - // if (h.id!= DIS_LVBUS_FB_ID) { - // sError.push_back("DisSys LVBus Msg ID error"); - // return false; - // } sum = calculateChecksum((unsigned char*)m, sizeof(msg_disLowBusFbMsg), sizeof(cChecksum)) & 0xFF; if (sum!= p->checkCode) { sError.push_back("DisSys LVBus Msg Check error"); @@ -208,8 +137,9 @@ bool udpComm::pushMsgToQueue(unsigned char *m) sError.push_back("pushMsgToQueue faile,Msg is NULL"); return false; } + unsigned char* Buff = m; - //判断消息 + //消息头鉴定 char *header = new char[sizeof(m_header)]; unsigned short id; memcpy(header,Buff,sizeof(m_header)); @@ -224,7 +154,7 @@ bool udpComm::pushMsgToQueue(unsigned char *m) { case CCU_STATE_FB_ID: //CCU_STATE_FB 0x0051 { msg_CcuStateFbMsg s; - if(getCcuState((char *)Buff,s)) + if(getMsgFromBuff((char *)Buff,s)) { if(m_qReceiveCcuStateBuffer.size() sError; - std::pair getError(); // std::queue m_qReceiveCcuStateBuffer;