增加了配电控制器操作代码
This commit is contained in:
@@ -1,47 +1,47 @@
|
|||||||
{
|
{
|
||||||
"HVABFTDev123Cur_uint16": 12373,
|
"HVABFTDev123Cur_uint16": 0,
|
||||||
"HVABactCur_uint16": 0,
|
"HVABactCur_uint16": 0,
|
||||||
"HVABbowRudCur_uint16": 48628,
|
"HVABbowRudCur_uint16": 0,
|
||||||
"HVABbusBCur_uint16": 58368,
|
"HVABbusBCur_uint16": 0,
|
||||||
"HVABbusBVol_uint16": 127,
|
"HVABbusBVol_uint16": 0,
|
||||||
"HVABmastSteGeaCur_uint16": 0,
|
"HVABmastSteGeaCur_uint16": 0,
|
||||||
"HVABopenWaterCur_uint16": 15788,
|
"HVABopenWaterCur_uint16": 0,
|
||||||
"HVABxczCur_uint16": 62464,
|
"HVABxczCur_uint16": 1,
|
||||||
"HVBBCCUCur_uint16": 0,
|
"HVBBCCUCur_uint16": 0,
|
||||||
"HVBBFCSSecurSysCur_uint16": 0,
|
"HVBBFCSSecurSysCur_uint16": 0,
|
||||||
"HVBBbatInsCur_uint16": 48768,
|
"HVBBbatInsCur_uint16": 0,
|
||||||
"HVBBbowLowVolDisBoxCur_uint16": 62844,
|
"HVBBbowLowVolDisBoxCur_uint16": 0,
|
||||||
"HVBBdcC1InsCur_uint16": 64539,
|
"HVBBdcC1InsCur_uint16": 0,
|
||||||
"HVBBemer2BusVol_uint16": 9472,
|
"HVBBemer2BusVol_uint16": 0,
|
||||||
"HVBBemerBatCur_uint16": 51712,
|
"HVBBemerBatCur_uint16": 0,
|
||||||
"HVBBinsBusVol_uint16": 29696,
|
"HVBBinsBusVol_uint16": 0,
|
||||||
"HVBBplcCur_uint16": 0,
|
"HVBBplcCur_uint16": 0,
|
||||||
"HVBBreservedCur1_uint16": 127,
|
"HVBBreservedCur1_uint16": 0,
|
||||||
"HVBBreservedCur2_uint16": 127,
|
"HVBBreservedCur2_uint16": 0,
|
||||||
"HVBBunit4Cur_uint16": 15788,
|
"HVBBunit4Cur_uint16": 0,
|
||||||
"HVBFTDev45Cur_uint16": 32573,
|
"HVBFTDev45Cur_uint16": 0,
|
||||||
"HVBbatGroupCur_uint16": 32970,
|
"HVBbatGroupCur_uint16": 0,
|
||||||
"HVBbowHVolDisBoxCur_uint16": 44222,
|
"HVBbowHVolDisBoxCur_uint16": 0,
|
||||||
"HVBbusACur_uint16": 0,
|
"HVBbusACur_uint16": 0,
|
||||||
"HVBbusAVol_uint16": 7157,
|
"HVBbusAVol_uint16": 0,
|
||||||
"HVBdcDc5Cur_uint16": 0,
|
"HVBdcDc5Cur_uint16": 0,
|
||||||
"HVBfbCur_uint16": 31908,
|
"HVBfbCur_uint16": 0,
|
||||||
"HVBmotorCur_uint16": 32764,
|
"HVBmotorCur_uint16": 0,
|
||||||
"HVBpowerBusCur_uint16": 31796,
|
"HVBpowerBusCur_uint16": 0,
|
||||||
"HVBpowerBusVol_uint16": 32573,
|
"HVBpowerBusVol_uint16": 0,
|
||||||
"HVBreservedCur1_uint16": 0,
|
"HVBreservedCur1_uint16": 0,
|
||||||
"HVBreservedCur2_uint16": 0,
|
"HVBreservedCur2_uint16": 0,
|
||||||
"HVBreservedCur3_uint16": 44222,
|
"HVBreservedCur3_uint16": 0,
|
||||||
"HVBsternRud1Cur_uint16": 3590,
|
"HVBsternRud1Cur_uint16": 0,
|
||||||
"HVBsternRud2Cur_uint16": 0,
|
"HVBsternRud2Cur_uint16": 0,
|
||||||
"HVBtyzCur_uint16": 0,
|
"HVBtyzCur_uint16": 0,
|
||||||
"LVBBbowPZDevCur_uint16": 127,
|
"LVBBbowPZDevCur_uint16": 0,
|
||||||
"LVBBemerBatCur_uint16": 29696,
|
"LVBBemerBatCur_uint16": 0,
|
||||||
"LVBBemerBusVol_uint16": 62844,
|
"LVBBemerBusVol_uint16": 0,
|
||||||
"LVBBinsBusCur_uint16": 15788,
|
"LVBBinsBusCur_uint16": 0,
|
||||||
"LVBBunit1Cur_uint16": 127,
|
"LVBBunit1Cur_uint16": 0,
|
||||||
"LVBBunit2Cur_uint16": 30720,
|
"LVBBunit2Cur_uint16": 0,
|
||||||
"LVBBunit3Cur_uint16": 62844,
|
"LVBBunit3Cur_uint16": 0,
|
||||||
"LVBBunit5Cur_uint16": 64539,
|
"LVBBunit5Cur_uint16": 0,
|
||||||
"LVBinsBusVol_uint16": 49434
|
"LVBinsBusVol_uint16": 0
|
||||||
}
|
}
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
"HVolABusBreaker_unit16": 0,
|
"HVolABusBreaker_unit16": 0,
|
||||||
"HVolBBusBreaker_unit16": 0,
|
"HVolBBusBreaker_unit16": 79,
|
||||||
"HVolBusBreaker_uint16": 0,
|
"HVolBusBreaker_uint16": 32,
|
||||||
"LVolBusBreaker_uint16": 0,
|
"LVolBusBreaker_uint16": 159,
|
||||||
"faultCode_array":
|
"faultCode_array":
|
||||||
[
|
[
|
||||||
0
|
0
|
||||||
|
|||||||
@@ -1,30 +1,30 @@
|
|||||||
{
|
{
|
||||||
"backpressure1_fp32": -0.2467193603515625,
|
"backpressure1_fp32": 2.0723892223585928e-36,
|
||||||
"backpressure2_fp32": 1.1685231712219644e-38,
|
"backpressure2_fp32": 4.5823861081885843e-41,
|
||||||
"ch4oConcent1_fp32": 1.8108811898653892e-39,
|
"ch4oConcent1_fp32": 2.0653300860562609e-36,
|
||||||
"ch4oConcent2_fp32": 0.0,
|
"ch4oConcent2_fp32": 4.5823861081885843e-41,
|
||||||
"ch4o_fp32": 1.1685231712219644e-38,
|
"ch4o_fp32": 4.5823861081885843e-41,
|
||||||
"excTemp_fp32": 1.1685231712219644e-38,
|
"excTemp_fp32": 4.5823861081885843e-41,
|
||||||
"faultCode1_uint16": 59856,
|
"faultCode1_uint16": 12207,
|
||||||
"faultCode2_uint16": 44221,
|
"faultCode2_uint16": 48388,
|
||||||
"faultCode3_uint16": 32573,
|
"faultCode3_uint16": 127,
|
||||||
"fcuCurIns_fp32": 8.3046377128711946e+19,
|
"fcuCurIns_fp32": 0.0,
|
||||||
"fcuCurPower_fp32": 1.1685231712219644e-38,
|
"fcuCurPower_fp32": 0.0,
|
||||||
"fcuCur_fp32": -0.2467193603515625,
|
"fcuCur_fp32": 1.3331306974422932e-36,
|
||||||
"fcuFaultLeve_uint8": 245,
|
"fcuFaultLeve_uint8": 0,
|
||||||
"fcuOutIns_fp32": 6.7262326287591219e-44,
|
"fcuOutIns_fp32": 4.5916346780531281e-41,
|
||||||
"fcuOutPower_fp32": -1.1348810210013775e-34,
|
"fcuOutPower_fp32": 1.0758022868002197e+20,
|
||||||
"fcuState_uint8": 123,
|
"fcuState_uint8": 0,
|
||||||
"fcuVolIns_fp32": 7.3381652328374862e+19,
|
"fcuVolIns_fp32": 1.0758019349564988e+20,
|
||||||
"fcuVolPower_fp32": 1.1685231712219644e-38,
|
"fcuVolPower_fp32": 0.0,
|
||||||
"fcuVol_fp32": 1.1685231712219644e-38,
|
"fcuVol_fp32": 0.0,
|
||||||
"flameDet_uint8": 0,
|
"flameDet_uint8": 96,
|
||||||
"h2Concent1_fp32": -3.1907161748557105e+32,
|
"h2Concent1_fp32": 0.0,
|
||||||
"h2Concent2_fp32": 1.1753546413653943e-38,
|
"h2Concent2_fp32": 0.0,
|
||||||
"o2Concent1_fp32": -0.2515411376953125,
|
"o2Concent1_fp32": 1.3337242202094549e-36,
|
||||||
"o2Concent2_fp32": 1.1685231712219644e-38,
|
"o2Concent2_fp32": 4.5823861081885843e-41,
|
||||||
"o2Level_fp32": 1.1685231712219644e-38,
|
"o2Level_fp32": 4.5823861081885843e-41,
|
||||||
"o2_fp32": -0.1107940673828125,
|
"o2_fp32": 2.6989008422895977e-42,
|
||||||
"powLimit_fp32": 1.1753546413653943e-38,
|
"powLimit_fp32": 4.5916346780531281e-41,
|
||||||
"powerGen_fp32": 2.1756349367871582e+21
|
"powerGen_fp32": 2.0725797092666392e-36
|
||||||
}
|
}
|
||||||
@@ -1,38 +1,38 @@
|
|||||||
{
|
{
|
||||||
"fcuCurToInsLimit1_uint8": 0,
|
"fcuCurToInsLimit1_uint8": 0,
|
||||||
"fcuCurToinsLimit2_uint8": 0,
|
"fcuCurToinsLimit2_uint8": 0,
|
||||||
"insBatCurElect_uint16": 32573,
|
"insBatCurElect_uint16": 127,
|
||||||
"insBatLimit_uint16": 62950,
|
"insBatLimit_uint16": 48,
|
||||||
"insBatSoc_uint8": 0,
|
"insBatSoc_uint8": 0,
|
||||||
"insBatTotalElect_uint16": 28728,
|
"insBatTotalElect_uint16": 57470,
|
||||||
"insChargeState_uint8": 80,
|
"insChargeState_uint8": 144,
|
||||||
"insCurSocHold1_uint8": 0,
|
"insCurSocHold1_uint8": 0,
|
||||||
"insCurSocHold2_uint8": 0,
|
"insCurSocHold2_uint8": 0,
|
||||||
"insCurSocHold3_uint8": 0,
|
"insCurSocHold3_uint8": 0,
|
||||||
"insCurrent_uint16": 0,
|
"insCurrent_uint16": 46080,
|
||||||
"insLinkVol_uint16": 44098,
|
"insLinkVol_uint16": 48387,
|
||||||
"insNegRelayState_uint8": 0,
|
"insNegRelayState_uint8": 218,
|
||||||
"insNegRes_uint16": 7157,
|
"insNegRes_uint16": 65376,
|
||||||
"insPackVol_uint16": 32573,
|
"insPackVol_uint16": 127,
|
||||||
"insPosRelayState_uint8": 0,
|
"insPosRelayState_uint8": 0,
|
||||||
"insPosRes_uint16": 31732,
|
"insPosRes_uint16": 47775,
|
||||||
"insfaultCode_uint8": 94,
|
"insfaultCode_uint8": 19,
|
||||||
"powBatCurElect_uint16": 0,
|
"powBatCurElect_uint16": 4096,
|
||||||
"powBatSoc_uint8": 0,
|
"powBatSoc_uint8": 152,
|
||||||
"powBatTotalElect_uint16": 44098,
|
"powBatTotalElect_uint16": 48387,
|
||||||
"powChargeState_uint8": 122,
|
"powChargeState_uint8": 224,
|
||||||
"powCurSocHold1_uint8": 0,
|
"powCurSocHold1_uint8": 164,
|
||||||
"powCurSocHold2_uint8": 164,
|
"powCurSocHold2_uint8": 76,
|
||||||
"powCurSocHold3_uint8": 124,
|
"powCurSocHold3_uint8": 48,
|
||||||
"powCurToInsLimit1_uint8": 190,
|
"powCurToInsLimit1_uint8": 4,
|
||||||
"powCurToinsLimit2_uint8": 172,
|
"powCurToinsLimit2_uint8": 189,
|
||||||
"powCur_uint16": 32970,
|
"powCur_uint16": 12368,
|
||||||
"powLinkVol_uint16": 32764,
|
"powLinkVol_uint16": 127,
|
||||||
"powNegRelayState_uint8": 22,
|
"powNegRelayState_uint8": 135,
|
||||||
"powNegRes_uint16": 32573,
|
"powNegRes_uint16": 127,
|
||||||
"powPosRelayState_uint8": 243,
|
"powPosRelayState_uint8": 22,
|
||||||
"powPosRes_uint16": 44222,
|
"powPosRes_uint16": 48388,
|
||||||
"powerBatLimit_uint16": 0,
|
"powerBatLimit_uint16": 0,
|
||||||
"powerPackVol_uint16": 0,
|
"powerPackVol_uint16": 51712,
|
||||||
"powfaultCode_uint8": 9
|
"powfaultCode_uint8": 0
|
||||||
}
|
}
|
||||||
@@ -56,7 +56,17 @@ SET(FSMLIB_SRC
|
|||||||
SET(DRIVER_SRC
|
SET(DRIVER_SRC
|
||||||
driver.cpp)
|
driver.cpp)
|
||||||
|
|
||||||
|
SET(POWERMANGE_SRC
|
||||||
|
PowerManger.cpp
|
||||||
|
PowerManger_Info.cpp
|
||||||
|
udpComm.cpp
|
||||||
|
fsm.cpp
|
||||||
|
SQLiteDB.cpp
|
||||||
|
driver.cpp)
|
||||||
|
|
||||||
ADD_LIBRARY(SQLiteDB STATIC ${SQLITEDB_SRC})
|
ADD_LIBRARY(SQLiteDB STATIC ${SQLITEDB_SRC})
|
||||||
ADD_LIBRARY(UDPComm STATIC ${UDPCOMM_SRC})
|
ADD_LIBRARY(UDPComm STATIC ${UDPCOMM_SRC})
|
||||||
ADD_LIBRARY(FSMLib STATIC ${FSMLIB_SRC})
|
ADD_LIBRARY(FSMLib STATIC ${FSMLIB_SRC})
|
||||||
ADD_LIBRARY(Driver STATIC ${DRIVER_SRC})
|
ADD_LIBRARY(Driver STATIC ${DRIVER_SRC})
|
||||||
|
ADD_LIBRARY(PowerMange STATIC ${POWERMANGE_SRC})
|
||||||
|
|
||||||
|
|||||||
+315
-229
@@ -41,6 +41,9 @@ PowerManger::PowerManger()
|
|||||||
m_faultNum = 0;
|
m_faultNum = 0;
|
||||||
faultCode.push_back(0);
|
faultCode.push_back(0);
|
||||||
|
|
||||||
|
//初始化断路器状态
|
||||||
|
initTargetDisBreakerState();
|
||||||
|
|
||||||
//初始化数据库
|
//初始化数据库
|
||||||
string dbPath = "/home/zjk/project/H100/H100PowerManger/data/power_data.db";
|
string dbPath = "/home/zjk/project/H100/H100PowerManger/data/power_data.db";
|
||||||
m_db = new SQLiteDB(dbPath);
|
m_db = new SQLiteDB(dbPath);
|
||||||
@@ -49,9 +52,11 @@ PowerManger::PowerManger()
|
|||||||
|
|
||||||
//注册状态机
|
//注册状态机
|
||||||
m_fsm.RegisterState("Init", 1, m_Inite_s1);
|
m_fsm.RegisterState("Init", 1, m_Inite_s1);
|
||||||
|
m_fsm.RegisterState("Stady", 2, m_Standby_s2);
|
||||||
m_fsm.RegisterState("Fault", 99, m_Fault_s99);
|
m_fsm.RegisterState("Fault", 99, m_Fault_s99);
|
||||||
|
|
||||||
m_fsm.RegisterHandleFunction(&m_Inite_s1, handleInite_s1);
|
m_fsm.RegisterHandleFunction(&m_Inite_s1, handleInite_s1);
|
||||||
|
m_fsm.RegisterHandleFunction(&m_Standby_s2, handleStandby_s2);
|
||||||
m_fsm.RegisterHandleFunction(&m_Fault_s99, handleFault_s99);
|
m_fsm.RegisterHandleFunction(&m_Fault_s99, handleFault_s99);
|
||||||
|
|
||||||
// 初始化状态机
|
// 初始化状态机
|
||||||
@@ -117,11 +122,12 @@ bool PowerManger::Iterate()
|
|||||||
updatePmState();
|
updatePmState();
|
||||||
updateTime();
|
updateTime();
|
||||||
//2. 运行状态机
|
//2. 运行状态机
|
||||||
// m_fsm.run(m_pmState,this);
|
|
||||||
if (FSM_RUN_IS_OK)
|
if (FSM_RUN_IS_OK)
|
||||||
m_FsmThread.Start();
|
m_FsmThread.Start();
|
||||||
else
|
else
|
||||||
m_FsmThread.Stop();
|
m_FsmThread.Stop();
|
||||||
|
//进行配电系统操作
|
||||||
|
disSysOption();
|
||||||
//3. 输出报告
|
//3. 输出报告
|
||||||
buildPowerSysReport();
|
buildPowerSysReport();
|
||||||
//4. 打印错误信息
|
//4. 打印错误信息
|
||||||
@@ -175,7 +181,7 @@ bool PowerManger::OnStartUp()
|
|||||||
}
|
}
|
||||||
|
|
||||||
registerVariables();
|
registerVariables();
|
||||||
//绑定UDP端口
|
//启动UDP监听线程
|
||||||
if(m_pCcuUdpComm = setUdpScoket(IPORT))
|
if(m_pCcuUdpComm = setUdpScoket(IPORT))
|
||||||
{
|
{
|
||||||
cout<<MOOS::ConsoleColours::green()<< "UDP set succeed!"<< MOOS::ConsoleColours::reset() << endl;
|
cout<<MOOS::ConsoleColours::green()<< "UDP set succeed!"<< MOOS::ConsoleColours::reset() << endl;
|
||||||
@@ -324,6 +330,303 @@ bool PowerManger::IsSkewed(double dfTimeNow, double * pdfSkew)
|
|||||||
return (dfSkew > SKEW_TOLERANCE) ? true : false;
|
return (dfSkew > SKEW_TOLERANCE) ? true : false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void PowerManger::disSysOption()
|
||||||
|
{
|
||||||
|
//1.更新断路器的状态
|
||||||
|
disBus1Breaker* pdis1=new disBus1Breaker;
|
||||||
|
(m_pmCurrentState.bus1State.fuelCellCircuitBreaker == BREAK_ON) ? pdis1 -> fuelCellCircuitBreaker = 1 : pdis1 -> fuelCellCircuitBreaker = 0;
|
||||||
|
(m_pmCurrentState.bus1State.powerLithiumBatteryCircuitBreaker == BREAK_ON) ? pdis1 -> powerLithiumBatteryCircuitBreaker = 1 : pdis1 -> powerLithiumBatteryCircuitBreaker = 0;
|
||||||
|
(m_pmCurrentState.bus1State.propulsionMotorCircuitBreaker == BREAK_ON) ? pdis1 -> propulsionMotorCircuitBreaker = 1 : pdis1 -> propulsionMotorCircuitBreaker = 0;
|
||||||
|
(m_pmCurrentState.bus1State.lithiumBatteryGroupInstrumentCircuitBreaker == BREAK_ON) ? pdis1 -> lithiumBatteryGroupInstrumentCircuitBreaker = 1 : pdis1 -> lithiumBatteryGroupInstrumentCircuitBreaker = 0;
|
||||||
|
(m_pmCurrentState.bus1State.dcDc5ModuleCircuitBreaker == BREAK_ON) ? pdis1 -> dcDc5ModuleCircuitBreaker = 1 : pdis1 -> dcDc5ModuleCircuitBreaker = 0;
|
||||||
|
(m_pmCurrentState.bus1State.bowHighVoltageDistributionBoxCircuitBreaker == BREAK_ON) ? pdis1 -> bowHighVoltageDistributionBoxCircuitBreaker = 1 : pdis1 -> bowHighVoltageDistributionBoxCircuitBreaker = 0;
|
||||||
|
(m_pmCurrentState.bus1State.sternFTDevice45CircuitBreaker == BREAK_ON) ? pdis1 -> sternFTDevice45CircuitBreaker = 1 : pdis1 -> sternFTDevice45CircuitBreaker = 0;
|
||||||
|
(m_pmCurrentState.bus1State.sternRudderSwitch1CircuitBreaker == BREAK_ON) ? pdis1 -> sternRudderSwitch1CircuitBreaker = 1 : pdis1 -> sternRudderSwitch1CircuitBreaker = 0;
|
||||||
|
(m_pmCurrentState.bus1State.sternRudderSwitch2CircuitBreaker == BREAK_ON) ? pdis1 -> sternRudderSwitch2CircuitBreaker = 1 : pdis1 -> sternRudderSwitch2CircuitBreaker = 0;
|
||||||
|
(m_pmCurrentState.bus1State.fbReservedCircuitBreaker == BREAK_ON) ? pdis1 -> fbReservedCircuitBreaker = 1 : pdis1 -> fbReservedCircuitBreaker = 0;
|
||||||
|
(m_pmCurrentState.bus1State.tyzReservedCircuitBreaker == BREAK_ON) ? pdis1 -> tyzReservedCircuitBreaker = 1 : pdis1 -> tyzReservedCircuitBreaker = 0;
|
||||||
|
(m_pmCurrentState.bus1State.reservedCircuitBreaker == BREAK_ON) ? pdis1 -> reservedCircuitBreaker = 1 : pdis1 -> reservedCircuitBreaker = 0;
|
||||||
|
pdis1 -> paceholder = 0;
|
||||||
|
|
||||||
|
disBus2Breaker* pdis2=new disBus2Breaker;
|
||||||
|
(m_pmCurrentState.bus2State.bowFTDevice123CircuitBreaker == BREAK_ON)? pdis2 -> bowFTDevice123CircuitBreaker = 1 : pdis2 -> bowFTDevice123CircuitBreaker = 0;
|
||||||
|
(m_pmCurrentState.bus2State.actuatorCircuitBreaker == BREAK_ON)? pdis2 -> actuatorCircuitBreaker = 1 : pdis2 -> actuatorCircuitBreaker = 0;
|
||||||
|
(m_pmCurrentState.bus2State.mastSteeringGearControlBoxCircuitBreaker == BREAK_ON)? pdis2 -> mastSteeringGearControlBoxCircuitBreaker = 1 : pdis2 -> mastSteeringGearControlBoxCircuitBreaker = 0;
|
||||||
|
(m_pmCurrentState.bus2State.xczCircuitBreaker == BREAK_ON)? pdis2 -> xczCircuitBreaker = 1 : pdis2 -> xczCircuitBreaker = 0;
|
||||||
|
(m_pmCurrentState.bus2State.bowRudderControlBoxCircuitBreaker == BREAK_ON)? pdis2 -> bowRudderControlBoxCircuitBreaker = 1 : pdis2 -> bowRudderControlBoxCircuitBreaker = 0;
|
||||||
|
(m_pmCurrentState.bus2State.openWaterCoverStartCylinderCircuitBreaker == BREAK_ON)? pdis2 -> openWaterCoverStartCylinderCircuitBreaker = 1 : pdis2 -> openWaterCoverStartCylinderCircuitBreaker = 0;
|
||||||
|
pdis2 -> paceholder = 0;
|
||||||
|
|
||||||
|
disBus3Breaker* pdis3=new disBus3Breaker;
|
||||||
|
(m_pmCurrentState.bus3State.lithiumBatteryGroupInstrumentCircuitBreaker == BREAK_ON)? pdis3 -> lithiumBatteryGroupInstrumentCircuitBreaker = 1 : pdis3 -> lithiumBatteryGroupInstrumentCircuitBreaker = 0;
|
||||||
|
(m_pmCurrentState.bus3State.bowLowVoltageDistributionBoxCircuitBreaker == BREAK_ON)? pdis3 -> bowLowVoltageDistributionBoxCircuitBreaker = 1 : pdis3 -> bowLowVoltageDistributionBoxCircuitBreaker = 0;
|
||||||
|
(m_pmCurrentState.bus3State.unit4InstrumentDC48VCircuitBreaker == BREAK_ON)? pdis3 -> unit4InstrumentDC48VCircuitBreaker = 1 : pdis3 -> unit4InstrumentDC48VCircuitBreaker = 0;
|
||||||
|
(m_pmCurrentState.bus3State.dcC1DCDistributionPanelCircuitBreaker == BREAK_ON)? pdis3 -> dcC1DCDistributionPanelCircuitBreaker = 1 : pdis3 -> dcC1DCDistributionPanelCircuitBreaker = 0;
|
||||||
|
(m_pmCurrentState.bus3State.reservedCircuitBreaker1 == BREAK_ON)? pdis3 -> reservedCircuitBreaker1 = 1 : pdis3 -> reservedCircuitBreaker1 = 0;
|
||||||
|
(m_pmCurrentState.bus3State.reservedCircuitBreaker2 == BREAK_ON)? pdis3 -> reservedCircuitBreaker2 = 1 : pdis3 -> reservedCircuitBreaker2 = 0;
|
||||||
|
(m_pmCurrentState.bus3State.emergencyLithiumBatteryGroup2CircuitBreaker == BREAK_ON)? pdis3 -> emergencyLithiumBatteryGroup2CircuitBreaker = 1 : pdis3 -> emergencyLithiumBatteryGroup2CircuitBreaker = 0;
|
||||||
|
pdis3->paceholder = 0;
|
||||||
|
|
||||||
|
disBus4Breaker* pdis4=new disBus4Breaker;
|
||||||
|
(m_pmCurrentState.bus4State.unit1CircuitBreaker == BREAK_ON)? pdis4 -> unit1CircuitBreaker = 1 : pdis4 -> unit1CircuitBreaker = 0;
|
||||||
|
(m_pmCurrentState.bus4State.unit2CircuitBreaker == BREAK_ON)? pdis4 -> unit2CircuitBreaker = 1 : pdis4 -> unit2CircuitBreaker = 0;
|
||||||
|
(m_pmCurrentState.bus4State.unit3CircuitBreaker == BREAK_ON)? pdis4 -> unit3CircuitBreaker = 1 : pdis4 -> unit3CircuitBreaker = 0;
|
||||||
|
(m_pmCurrentState.bus4State.unit5CircuitBreaker == BREAK_ON)? pdis4 -> unit5CircuitBreaker = 1 : pdis4 -> unit5CircuitBreaker = 0;
|
||||||
|
(m_pmCurrentState.bus4State.bowPZDeviceCircuitBreaker == BREAK_ON)? pdis4 -> bowPZDeviceCircuitBreaker = 1 : pdis4 -> bowPZDeviceCircuitBreaker = 0;
|
||||||
|
(m_pmCurrentState.bus4State.reservedCircuitBreaker1 == BREAK_ON)? pdis4 -> reservedCircuitBreaker1 = 1 : pdis4 -> reservedCircuitBreaker1 = 0;
|
||||||
|
(m_pmCurrentState.bus4State.reservedCircuitBreaker2 == BREAK_ON)? pdis4 -> reservedCircuitBreaker2 = 1 : pdis4 -> reservedCircuitBreaker2 = 0;
|
||||||
|
(m_pmCurrentState.bus4State.emergencyLithiumBatteryGroup1CircuitBreaker == BREAK_ON)? pdis4 -> emergencyLithiumBatteryGroup1CircuitBreaker = 1 : pdis4 -> emergencyLithiumBatteryGroup1CircuitBreaker = 0;
|
||||||
|
pdis4 -> paceholder = 0;
|
||||||
|
|
||||||
|
m_currentDisBreakerState.bus1Breaker = *pdis1;
|
||||||
|
m_currentDisBreakerState.bus2Breaker = *pdis2;
|
||||||
|
m_currentDisBreakerState.bus3Breaker = *pdis3;
|
||||||
|
m_currentDisBreakerState.bus4Breaker = *pdis4;
|
||||||
|
|
||||||
|
delete pdis1;
|
||||||
|
delete pdis2;
|
||||||
|
delete pdis3;
|
||||||
|
delete pdis4;
|
||||||
|
|
||||||
|
//2.根据目标状态进行断路器操作
|
||||||
|
//a. 高压母线的断路器
|
||||||
|
disHighVolBusCmd a;
|
||||||
|
a.fuelCellCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus1Breaker.fuelCellCircuitBreaker);
|
||||||
|
a.propulsionMotorCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus1Breaker.propulsionMotorCircuitBreaker);
|
||||||
|
a.bowHighVoltageDistributionBoxCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus1Breaker.bowHighVoltageDistributionBoxCircuitBreaker);
|
||||||
|
a.tyzReservedCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus1Breaker.tyzReservedCircuitBreaker);
|
||||||
|
a.sternFTDevice45CircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus1Breaker.sternFTDevice45CircuitBreaker);
|
||||||
|
a.sternRudderSwitch1CircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus1Breaker.sternRudderSwitch1CircuitBreaker);
|
||||||
|
a.sternRudderSwitch2CircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus1Breaker.sternRudderSwitch2CircuitBreaker);
|
||||||
|
a.reservedCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus1Breaker.reservedCircuitBreaker);
|
||||||
|
a.fbReservedCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus1Breaker.fbReservedCircuitBreaker);
|
||||||
|
m_udpComm.sendDisSysCmd(a);
|
||||||
|
//b. 高压汇流排A断路器
|
||||||
|
disHighAVolBusCmd b;
|
||||||
|
b.bowFTDevice123CircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus2Breaker.bowFTDevice123CircuitBreaker);
|
||||||
|
b.actuatorCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus2Breaker.actuatorCircuitBreaker);
|
||||||
|
b.mastSteeringGearControlBoxCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus2Breaker.mastSteeringGearControlBoxCircuitBreaker);
|
||||||
|
b.xczCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus2Breaker.xczCircuitBreaker);
|
||||||
|
b.bowRudderControlBoxCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus2Breaker.bowRudderControlBoxCircuitBreaker);
|
||||||
|
b.openWaterCoverStartCylinderCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus2Breaker.openWaterCoverStartCylinderCircuitBreaker);
|
||||||
|
m_udpComm.sendDisSysCmd(b);
|
||||||
|
//c. 高压汇流排B断路器
|
||||||
|
disHighBVolBusCmd c;
|
||||||
|
c.lithiumBatteryGroupInstrumentCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus3Breaker.lithiumBatteryGroupInstrumentCircuitBreaker);
|
||||||
|
c.bowLowVoltageDistributionBoxCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus3Breaker.bowLowVoltageDistributionBoxCircuitBreaker);
|
||||||
|
c.unit4InstrumentDC48VCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus3Breaker.unit4InstrumentDC48VCircuitBreaker);
|
||||||
|
c.dcC1DCDistributionPanelCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus3Breaker.dcC1DCDistributionPanelCircuitBreaker);
|
||||||
|
c.reservedCircuitBreaker1 = getBreakerOption(m_targetDisBreakerState.bus3Breaker.reservedCircuitBreaker1);
|
||||||
|
c.reservedCircuitBreaker2 = getBreakerOption(m_targetDisBreakerState.bus3Breaker.reservedCircuitBreaker2);
|
||||||
|
c.emergencyLithiumBatteryGroup2CircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus3Breaker.emergencyLithiumBatteryGroup2CircuitBreaker);
|
||||||
|
m_udpComm.sendDisSysCmd(c);
|
||||||
|
//d. 闭合低压汇流排断路器
|
||||||
|
disLowBusCmd d;
|
||||||
|
d.unit1CircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus4Breaker.unit1CircuitBreaker);
|
||||||
|
d.unit2CircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus4Breaker.unit2CircuitBreaker);
|
||||||
|
d.unit3CircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus4Breaker.unit3CircuitBreaker);
|
||||||
|
d.unit5CircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus4Breaker.unit5CircuitBreaker);
|
||||||
|
d.bowPZDeviceCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus4Breaker.bowPZDeviceCircuitBreaker);
|
||||||
|
d.reservedCircuitBreaker1 = getBreakerOption(m_targetDisBreakerState.bus4Breaker.reservedCircuitBreaker1);
|
||||||
|
d.reservedCircuitBreaker2 = getBreakerOption(m_targetDisBreakerState.bus4Breaker.reservedCircuitBreaker2);
|
||||||
|
d.emergencyLithiumBatteryGroup1CircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus4Breaker.emergencyLithiumBatteryGroup1CircuitBreaker);
|
||||||
|
m_udpComm.sendDisSysCmd(d);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool PowerManger::saveStringToJsonFile(const string &strJson, const string &filePath)
|
||||||
|
{
|
||||||
|
std::ofstream file(filePath, std::ios::trunc);
|
||||||
|
if (file.is_open()) {
|
||||||
|
file << strJson;
|
||||||
|
file.close();
|
||||||
|
// std::cout << "字符串已成功保存到文件中。" << std::endl;
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
std::cerr << "无法打开文件!" << std::endl;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool PowerManger::writeDataToDB()
|
||||||
|
{
|
||||||
|
m_stateData.state_id = m_pmState.id;
|
||||||
|
m_stateData.state_name = m_pmState.name;
|
||||||
|
m_stateData.event = m_pmEvent;
|
||||||
|
m_stateData.event_id = 1;
|
||||||
|
m_stateData.fault_code = m_faultNum;
|
||||||
|
m_stateData.note = "No fault";
|
||||||
|
if(!m_db->insertStateData(m_stateData))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void PowerManger::printState(FSM_State st, string desp){
|
||||||
|
cout << MOOS::ConsoleColours::Yellow() << "STATE " << st.id << " [" << st.name << "] " << MOOS::ConsoleColours::reset();
|
||||||
|
cout << MOOS::ConsoleColours::Blue() << " -> " << MOOS::ConsoleColours::reset();
|
||||||
|
// 检查desp是否有“故障”
|
||||||
|
if (desp.find("故障") != string::npos) {
|
||||||
|
cout << MOOS::ConsoleColours::Red() << desp << MOOS::ConsoleColours::reset() << endl;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
cout << MOOS::ConsoleColours::Green() << desp << MOOS::ConsoleColours::reset() << endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
int PowerManger::handleInite_s1(FSM_State &fsm, void* pData)
|
||||||
|
{
|
||||||
|
cout << fsm.name << endl;
|
||||||
|
PowerManger* pm = (PowerManger*)pData;
|
||||||
|
//1. 检查复合管控器连接 如果10S则进入故障状态
|
||||||
|
double StartTime = pm->GetAppStartTime();
|
||||||
|
while (!pm->m_connected)
|
||||||
|
{
|
||||||
|
MOOSPause(1000);
|
||||||
|
pm->updateTime();
|
||||||
|
double dft = abs(pm->m_current_time - StartTime);
|
||||||
|
if(dft > 10)
|
||||||
|
{
|
||||||
|
pm->m_pmState = pm->m_Fault_s99;
|
||||||
|
pm->m_faultNum = 1; // 通信超时
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
string desp = "等待复合管控消息 : " + to_string(10-dft);
|
||||||
|
pm->printState(fsm,desp);
|
||||||
|
}
|
||||||
|
//2. 检查复合管控器是否上报故障 如果故障则进入故障状态
|
||||||
|
bool ok = true;
|
||||||
|
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)
|
||||||
|
{
|
||||||
|
ok = false;
|
||||||
|
}
|
||||||
|
if(!ok)
|
||||||
|
{
|
||||||
|
pm->m_pmState = pm->m_Fault_s99;
|
||||||
|
}
|
||||||
|
//3. 初始化配电系统为待机状态
|
||||||
|
pm->initTargetDisBreakerState();
|
||||||
|
pm->m_pmState = pm->m_Standby_s2;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int PowerManger::handleStandby_s2(FSM_State &fsm, void* pData)
|
||||||
|
{
|
||||||
|
PowerManger* pm = (PowerManger*)pData;
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
string desp = "待机状态";
|
||||||
|
pm->printState(fsm,desp);
|
||||||
|
MOOSPause(1000);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int PowerManger::handleFault_s99(FSM_State &fsm, void* pData)
|
||||||
|
{
|
||||||
|
// cout << fsm.name << endl;
|
||||||
|
PowerManger* pm = (PowerManger*)pData;
|
||||||
|
switch (pm->m_faultNum)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
pm->printState(fsm,"通信故障");
|
||||||
|
pm->m_pmEvent = "复合管控连接超时";
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
pm->printState(fsm,"故障");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 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)
|
||||||
|
// {
|
||||||
|
// 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)
|
||||||
|
// {
|
||||||
|
// cout << fsm.name << endl;
|
||||||
|
// PowerManger* pm = (PowerManger*)pData;
|
||||||
|
// fsm = pm->m_fsm.getState("PM_STATE");
|
||||||
|
// // pm->m_pmEvent = "c";
|
||||||
|
// return 0;
|
||||||
|
// }
|
||||||
|
|
||||||
|
void PowerManger::initTargetDisBreakerState()
|
||||||
|
{
|
||||||
|
m_targetDisBreakerState.bus1Breaker.fuelCellCircuitBreaker = 0;
|
||||||
|
m_targetDisBreakerState.bus1Breaker.powerLithiumBatteryCircuitBreaker = 1; //动力锂电池默认接入
|
||||||
|
m_targetDisBreakerState.bus1Breaker.propulsionMotorCircuitBreaker = 0;
|
||||||
|
m_targetDisBreakerState.bus1Breaker.lithiumBatteryGroupInstrumentCircuitBreaker = 0; //仪表锂电池默认接入
|
||||||
|
m_targetDisBreakerState.bus1Breaker.dcDc5ModuleCircuitBreaker = 1; //DC-DC模块默认接入
|
||||||
|
m_targetDisBreakerState.bus1Breaker.bowHighVoltageDistributionBoxCircuitBreaker = 1; //艏部高压母线断路器默认接入
|
||||||
|
m_targetDisBreakerState.bus1Breaker.sternFTDevice45CircuitBreaker = 0; // sternFTDevice45CircuitBreaker默认接入
|
||||||
|
m_targetDisBreakerState.bus1Breaker.sternRudderSwitch1CircuitBreaker = 0;
|
||||||
|
m_targetDisBreakerState.bus1Breaker.sternRudderSwitch2CircuitBreaker = 0;
|
||||||
|
m_targetDisBreakerState.bus1Breaker.fbReservedCircuitBreaker = 0;
|
||||||
|
m_targetDisBreakerState.bus1Breaker.tyzReservedCircuitBreaker = 0;
|
||||||
|
m_targetDisBreakerState.bus1Breaker.reservedCircuitBreaker = 0;
|
||||||
|
|
||||||
|
m_targetDisBreakerState.bus2Breaker.bowFTDevice123CircuitBreaker = 0;
|
||||||
|
m_targetDisBreakerState.bus2Breaker.actuatorCircuitBreaker = 0;
|
||||||
|
m_targetDisBreakerState.bus2Breaker.mastSteeringGearControlBoxCircuitBreaker = 0;
|
||||||
|
m_targetDisBreakerState.bus2Breaker.xczCircuitBreaker = 0;
|
||||||
|
m_targetDisBreakerState.bus2Breaker.bowRudderControlBoxCircuitBreaker = 0;
|
||||||
|
m_targetDisBreakerState.bus2Breaker.openWaterCoverStartCylinderCircuitBreaker = 0;
|
||||||
|
//锂电池默认接入
|
||||||
|
m_targetDisBreakerState.bus3Breaker.lithiumBatteryGroupInstrumentCircuitBreaker = 1;
|
||||||
|
m_targetDisBreakerState.bus3Breaker.bowLowVoltageDistributionBoxCircuitBreaker = 1;
|
||||||
|
m_targetDisBreakerState.bus3Breaker.unit4InstrumentDC48VCircuitBreaker = 1;
|
||||||
|
m_targetDisBreakerState.bus3Breaker.dcC1DCDistributionPanelCircuitBreaker = 1;
|
||||||
|
m_targetDisBreakerState.bus3Breaker.reservedCircuitBreaker1 = 0;
|
||||||
|
m_targetDisBreakerState.bus3Breaker.reservedCircuitBreaker2 = 0;
|
||||||
|
m_targetDisBreakerState.bus3Breaker.emergencyLithiumBatteryGroup2CircuitBreaker = 1;
|
||||||
|
|
||||||
|
m_targetDisBreakerState.bus4Breaker.unit1CircuitBreaker = 1;
|
||||||
|
m_targetDisBreakerState.bus4Breaker.unit2CircuitBreaker = 1;
|
||||||
|
m_targetDisBreakerState.bus4Breaker.unit3CircuitBreaker = 1;
|
||||||
|
m_targetDisBreakerState.bus4Breaker.unit5CircuitBreaker = 1;
|
||||||
|
m_targetDisBreakerState.bus4Breaker.bowPZDeviceCircuitBreaker = 1;
|
||||||
|
m_targetDisBreakerState.bus4Breaker.reservedCircuitBreaker1 = 0;
|
||||||
|
m_targetDisBreakerState.bus4Breaker.reservedCircuitBreaker2 = 0;
|
||||||
|
m_targetDisBreakerState.bus4Breaker.emergencyLithiumBatteryGroup1CircuitBreaker = 1; //紧急锂电池默认接入
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
char PowerManger::getBreakerOption(char cmd)
|
||||||
|
{
|
||||||
|
if(cmd ==1)
|
||||||
|
return 0x55;
|
||||||
|
else if(cmd ==0)
|
||||||
|
return 0xAA;
|
||||||
|
else
|
||||||
|
return 0x00;
|
||||||
|
}
|
||||||
|
|
||||||
string PowerManger::getTypeName(const string typeName)
|
string PowerManger::getTypeName(const string typeName)
|
||||||
{
|
{
|
||||||
// 映射类型名称到指定的字符串
|
// 映射类型名称到指定的字符串
|
||||||
@@ -357,6 +660,7 @@ string PowerManger::getTypeName(const string typeName)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool PowerManger::buildPowerSysReport()
|
bool PowerManger::buildPowerSysReport()
|
||||||
{
|
{
|
||||||
//TODO: 构建能源系统报告
|
//TODO: 构建能源系统报告
|
||||||
@@ -591,62 +895,21 @@ bool PowerManger::buildPowerSysReport()
|
|||||||
lbs[VAR_TO_STR(powfaultCode)+suffix] = m_pmCurrentState.ccustate.powerAlarmIdentificationWord;
|
lbs[VAR_TO_STR(powfaultCode)+suffix] = m_pmCurrentState.ccustate.powerAlarmIdentificationWord;
|
||||||
|
|
||||||
//5.构建配电系统状态报告
|
//5.构建配电系统状态报告
|
||||||
|
|
||||||
disBus1Breaker* pdis1=new disBus1Breaker;
|
disBus1Breaker* pdis1=new disBus1Breaker;
|
||||||
(m_pmCurrentState.bus1State.fuelCellCircuitBreaker == BREAK_ON) ? pdis1 -> fuelCellCircuitBreaker = 1 : pdis1 -> fuelCellCircuitBreaker = 0;
|
|
||||||
(m_pmCurrentState.bus1State.powerLithiumBatteryCircuitBreaker == BREAK_ON) ? pdis1 -> powerLithiumBatteryCircuitBreaker = 1 : pdis1 -> powerLithiumBatteryCircuitBreaker = 0;
|
|
||||||
(m_pmCurrentState.bus1State.propulsionMotorCircuitBreaker == BREAK_ON) ? pdis1 -> propulsionMotorCircuitBreaker = 1 : pdis1 -> propulsionMotorCircuitBreaker = 0;
|
|
||||||
(m_pmCurrentState.bus1State.lithiumBatteryGroupInstrumentCircuitBreaker == BREAK_ON) ? pdis1 -> lithiumBatteryGroupInstrumentCircuitBreaker = 1 : pdis1 -> lithiumBatteryGroupInstrumentCircuitBreaker = 0;
|
|
||||||
(m_pmCurrentState.bus1State.dcDc5ModuleCircuitBreaker == BREAK_ON) ? pdis1 -> dcDc5ModuleCircuitBreaker = 1 : pdis1 -> dcDc5ModuleCircuitBreaker = 0;
|
|
||||||
(m_pmCurrentState.bus1State.bowHighVoltageDistributionBoxCircuitBreaker == BREAK_ON) ? pdis1 -> bowHighVoltageDistributionBoxCircuitBreaker = 1 : pdis1 -> bowHighVoltageDistributionBoxCircuitBreaker = 0;
|
|
||||||
(m_pmCurrentState.bus1State.sternFTDevice45CircuitBreaker == BREAK_ON) ? pdis1 -> sternFTDevice45CircuitBreaker = 1 : pdis1 -> sternFTDevice45CircuitBreaker = 0;
|
|
||||||
(m_pmCurrentState.bus1State.sternRudderSwitch1CircuitBreaker == BREAK_ON) ? pdis1 -> sternRudderSwitch1CircuitBreaker = 1 : pdis1 -> sternRudderSwitch1CircuitBreaker = 0;
|
|
||||||
(m_pmCurrentState.bus1State.sternRudderSwitch2CircuitBreaker == BREAK_ON) ? pdis1 -> sternRudderSwitch2CircuitBreaker = 1 : pdis1 -> sternRudderSwitch2CircuitBreaker = 0;
|
|
||||||
(m_pmCurrentState.bus1State.fbReservedCircuitBreaker == BREAK_ON) ? pdis1 -> fbReservedCircuitBreaker = 1 : pdis1 -> fbReservedCircuitBreaker = 0;
|
|
||||||
(m_pmCurrentState.bus1State.tyzReservedCircuitBreaker == BREAK_ON) ? pdis1 -> tyzReservedCircuitBreaker = 1 : pdis1 -> tyzReservedCircuitBreaker = 0;
|
|
||||||
(m_pmCurrentState.bus1State.reservedCircuitBreaker == BREAK_ON) ? pdis1 -> reservedCircuitBreaker = 1 : pdis1 -> reservedCircuitBreaker = 0;
|
|
||||||
pdis1 -> paceholder = 0;
|
|
||||||
|
|
||||||
disBus2Breaker* pdis2=new disBus2Breaker;
|
disBus2Breaker* pdis2=new disBus2Breaker;
|
||||||
(m_pmCurrentState.bus2State.bowFTDevice123CircuitBreaker == BREAK_ON)? pdis2 -> bowFTDevice123CircuitBreaker = 1 : pdis2 -> bowFTDevice123CircuitBreaker = 0;
|
|
||||||
(m_pmCurrentState.bus2State.actuatorCircuitBreaker == BREAK_ON)? pdis2 -> actuatorCircuitBreaker = 1 : pdis2 -> actuatorCircuitBreaker = 0;
|
|
||||||
(m_pmCurrentState.bus2State.mastSteeringGearControlBoxCircuitBreaker == BREAK_ON)? pdis2 -> mastSteeringGearControlBoxCircuitBreaker = 1 : pdis2 -> mastSteeringGearControlBoxCircuitBreaker = 0;
|
|
||||||
(m_pmCurrentState.bus2State.xczCircuitBreaker == BREAK_ON)? pdis2 -> xczCircuitBreaker = 1 : pdis2 -> xczCircuitBreaker = 0;
|
|
||||||
(m_pmCurrentState.bus2State.bowRudderControlBoxCircuitBreaker == BREAK_ON)? pdis2 -> bowRudderControlBoxCircuitBreaker = 1 : pdis2 -> bowRudderControlBoxCircuitBreaker = 0;
|
|
||||||
(m_pmCurrentState.bus2State.openWaterCoverStartCylinderCircuitBreaker == BREAK_ON)? pdis2 -> openWaterCoverStartCylinderCircuitBreaker = 1 : pdis2 -> openWaterCoverStartCylinderCircuitBreaker = 0;
|
|
||||||
pdis2 -> paceholder = 0;
|
|
||||||
|
|
||||||
disBus3Breaker* pdis3=new disBus3Breaker;
|
disBus3Breaker* pdis3=new disBus3Breaker;
|
||||||
(m_pmCurrentState.bus3State.lithiumBatteryGroupInstrumentCircuitBreaker == BREAK_ON)? pdis3 -> lithiumBatteryGroupInstrumentCircuitBreaker = 1 : pdis3 -> lithiumBatteryGroupInstrumentCircuitBreaker = 0;
|
|
||||||
(m_pmCurrentState.bus3State.bowLowVoltageDistributionBoxCircuitBreaker == BREAK_ON)? pdis3 -> bowLowVoltageDistributionBoxCircuitBreaker = 1 : pdis3 -> bowLowVoltageDistributionBoxCircuitBreaker = 0;
|
|
||||||
(m_pmCurrentState.bus3State.unit4InstrumentDC48VCircuitBreaker == BREAK_ON)? pdis3 -> unit4InstrumentDC48VCircuitBreaker = 1 : pdis3 -> unit4InstrumentDC48VCircuitBreaker = 0;
|
|
||||||
(m_pmCurrentState.bus3State.dcC1DCDistributionPanelCircuitBreaker == BREAK_ON)? pdis3 -> dcC1DCDistributionPanelCircuitBreaker = 1 : pdis3 -> dcC1DCDistributionPanelCircuitBreaker = 0;
|
|
||||||
(m_pmCurrentState.bus3State.reservedCircuitBreaker1 == BREAK_ON)? pdis3 -> reservedCircuitBreaker1 = 1 : pdis3 -> reservedCircuitBreaker1 = 0;
|
|
||||||
(m_pmCurrentState.bus3State.reservedCircuitBreaker2 == BREAK_ON)? pdis3 -> reservedCircuitBreaker2 = 1 : pdis3 -> reservedCircuitBreaker2 = 0;
|
|
||||||
(m_pmCurrentState.bus3State.emergencyLithiumBatteryGroup2CircuitBreaker == BREAK_ON)? pdis3 -> emergencyLithiumBatteryGroup2CircuitBreaker = 1 : pdis3 -> emergencyLithiumBatteryGroup2CircuitBreaker = 0;
|
|
||||||
pdis3->paceholder = 0;
|
|
||||||
|
|
||||||
disBus4Breaker* pdis4=new disBus4Breaker;
|
disBus4Breaker* pdis4=new disBus4Breaker;
|
||||||
(m_pmCurrentState.bus4State.unit1CircuitBreaker == BREAK_ON)? pdis4 -> unit1CircuitBreaker = 1 : pdis4 -> unit1CircuitBreaker = 0;
|
|
||||||
(m_pmCurrentState.bus4State.unit2CircuitBreaker == BREAK_ON)? pdis4 -> unit2CircuitBreaker = 1 : pdis4 -> unit2CircuitBreaker = 0;
|
|
||||||
(m_pmCurrentState.bus4State.unit3CircuitBreaker == BREAK_ON)? pdis4 -> unit3CircuitBreaker = 1 : pdis4 -> unit3CircuitBreaker = 0;
|
|
||||||
(m_pmCurrentState.bus4State.unit5CircuitBreaker == BREAK_ON)? pdis4 -> unit5CircuitBreaker = 1 : pdis4 -> unit5CircuitBreaker = 0;
|
|
||||||
(m_pmCurrentState.bus4State.bowPZDeviceCircuitBreaker == BREAK_ON)? pdis4 -> bowPZDeviceCircuitBreaker = 1 : pdis4 -> bowPZDeviceCircuitBreaker = 0;
|
|
||||||
(m_pmCurrentState.bus4State.reservedCircuitBreaker1 == BREAK_ON)? pdis4 -> reservedCircuitBreaker1 = 1 : pdis4 -> reservedCircuitBreaker1 = 0;
|
|
||||||
(m_pmCurrentState.bus4State.reservedCircuitBreaker2 == BREAK_ON)? pdis4 -> reservedCircuitBreaker2 = 1 : pdis4 -> reservedCircuitBreaker2 = 0;
|
|
||||||
(m_pmCurrentState.bus4State.emergencyLithiumBatteryGroup1CircuitBreaker == BREAK_ON)? pdis4 -> emergencyLithiumBatteryGroup1CircuitBreaker = 1 : pdis4 -> emergencyLithiumBatteryGroup1CircuitBreaker = 0;
|
|
||||||
pdis4 -> paceholder = 0;
|
|
||||||
|
|
||||||
dis["HVolBusBreaker_uint16"] = *(unsigned short*) pdis1;
|
*pdis1 = m_currentDisBreakerState.bus1Breaker;
|
||||||
dis["HVolABusBreaker_unit16"] = *(unsigned short*) pdis2;
|
*pdis2 = m_currentDisBreakerState.bus2Breaker;
|
||||||
dis["HVolBBusBreaker_unit16"] = *(unsigned short*) pdis3;
|
*pdis3 = m_currentDisBreakerState.bus3Breaker;
|
||||||
dis["LVolBusBreaker_uint16"] = *(unsigned short*) pdis3;
|
*pdis4 = m_currentDisBreakerState.bus4Breaker;
|
||||||
|
|
||||||
|
dis["HVolBusBreaker_uint16"] = *(unsigned short*)pdis1;
|
||||||
|
dis["HVolABusBreaker_unit16"] = *(unsigned short*)pdis2;
|
||||||
|
dis["HVolBBusBreaker_unit16"] = *(unsigned short*)pdis3;
|
||||||
|
dis["LVolBusBreaker_uint16"] = *(unsigned short*)pdis4;
|
||||||
|
|
||||||
delete pdis1;
|
|
||||||
delete pdis2;
|
|
||||||
delete pdis3;
|
|
||||||
delete pdis4;
|
|
||||||
|
|
||||||
//TODO: 构建配电系统故障码
|
//TODO: 构建配电系统故障码
|
||||||
Json::Value faultCodeDis_array;
|
Json::Value faultCodeDis_array;
|
||||||
for(auto val : faultCode)
|
for(auto val : faultCode)
|
||||||
@@ -788,180 +1051,3 @@ bool PowerManger::buildPowerSysReport()
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool PowerManger::saveStringToJsonFile(const string &strJson, const string &filePath)
|
|
||||||
{
|
|
||||||
std::ofstream file(filePath, std::ios::trunc);
|
|
||||||
if (file.is_open()) {
|
|
||||||
file << strJson;
|
|
||||||
file.close();
|
|
||||||
// std::cout << "字符串已成功保存到文件中。" << std::endl;
|
|
||||||
return true;
|
|
||||||
} else {
|
|
||||||
std::cerr << "无法打开文件!" << std::endl;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool PowerManger::writeDataToDB()
|
|
||||||
{
|
|
||||||
m_stateData.state_id = m_pmState.id;
|
|
||||||
m_stateData.state_name = m_pmState.name;
|
|
||||||
m_stateData.event = m_pmEvent;
|
|
||||||
m_stateData.event_id = 1;
|
|
||||||
m_stateData.fault_code = m_faultNum;
|
|
||||||
m_stateData.note = "No fault";
|
|
||||||
if(!m_db->insertStateData(m_stateData))
|
|
||||||
return false;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//TODO:配电系统操作函数
|
|
||||||
bool PowerManger::disSystemOperation(disBreaker optBreaker, disBreakerOpt)
|
|
||||||
{
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
void PowerManger::printState(FSM_State st, string desp){
|
|
||||||
cout << MOOS::ConsoleColours::Yellow() << "STATE " << st.id << " [" << st.name << "] " << MOOS::ConsoleColours::reset();
|
|
||||||
cout << MOOS::ConsoleColours::Blue() << " -> " << MOOS::ConsoleColours::reset();
|
|
||||||
// 检查desp是否有“故障”
|
|
||||||
if (desp.find("故障") != string::npos) {
|
|
||||||
cout << MOOS::ConsoleColours::Red() << desp << MOOS::ConsoleColours::reset() << endl;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
cout << MOOS::ConsoleColours::Green() << desp << MOOS::ConsoleColours::reset() << endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
int PowerManger::handleInite_s1(FSM_State &fsm, void* pData)
|
|
||||||
{
|
|
||||||
cout << fsm.name << endl;
|
|
||||||
PowerManger* pm = (PowerManger*)pData;
|
|
||||||
//1. 检查复合管控器连接 如果10S则进入故障状态
|
|
||||||
double StartTime = pm->GetAppStartTime();
|
|
||||||
while (!pm->m_connected)
|
|
||||||
{
|
|
||||||
MOOSPause(1000);
|
|
||||||
pm->updateTime();
|
|
||||||
double dft = abs(pm->m_current_time - StartTime);
|
|
||||||
if(dft > 10)
|
|
||||||
{
|
|
||||||
pm->m_pmState = pm->m_Fault_s99;
|
|
||||||
pm->m_faultNum = 1; // 通信超时
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
string desp = "等待复合管控消息 : " + to_string(10-dft);
|
|
||||||
pm->printState(fsm,desp);
|
|
||||||
usleep(1000000);
|
|
||||||
}
|
|
||||||
//2. 检查复合管控器是否上报故障 如果故障则进入故障状态
|
|
||||||
bool ok = true;
|
|
||||||
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)
|
|
||||||
{
|
|
||||||
ok = false;
|
|
||||||
}
|
|
||||||
if(!ok)
|
|
||||||
{
|
|
||||||
pm->m_pmState = pm->m_Fault_s99;
|
|
||||||
}
|
|
||||||
//3. 检查当前配电装置状态
|
|
||||||
//a. 断开高压母线的主要断路器
|
|
||||||
//TODO 配置当前配电装置状态
|
|
||||||
disHighVolBusCmd a;
|
|
||||||
a.fuelCellCircuitBreaker = DIS_BREAKER_OFF;
|
|
||||||
a.propulsionMotorCircuitBreaker = DIS_BREAKER_OFF;
|
|
||||||
a.bowHighVoltageDistributionBoxCircuitBreaker = DIS_BREAKER_OFF;
|
|
||||||
a.tyzReservedCircuitBreaker = DIS_BREAKER_OFF;
|
|
||||||
a.sternFTDevice45CircuitBreaker = DIS_BREAKER_OFF;
|
|
||||||
a.sternRudderSwitch1CircuitBreaker = DIS_BREAKER_OFF;
|
|
||||||
a.sternRudderSwitch2CircuitBreaker = DIS_BREAKER_OFF;
|
|
||||||
a.reservedCircuitBreaker = DIS_BREAKER_OFF;
|
|
||||||
a.fbReservedCircuitBreaker = DIS_BREAKER_OFF;
|
|
||||||
pm->m_udpComm.sendDisSysCmd(a);
|
|
||||||
//b. 断开艏部高压设备的主要断路器
|
|
||||||
disHighAVolBusCmd b;
|
|
||||||
b.bowFTDevice123CircuitBreaker = DIS_BREAKER_OFF;
|
|
||||||
b.actuatorCircuitBreaker = DIS_BREAKER_OFF;
|
|
||||||
b.mastSteeringGearControlBoxCircuitBreaker = DIS_BREAKER_OFF;
|
|
||||||
b.xczCircuitBreaker = DIS_BREAKER_OFF;
|
|
||||||
b.bowRudderControlBoxCircuitBreaker = DIS_BREAKER_OFF;
|
|
||||||
b.openWaterCoverStartCylinderCircuitBreaker = DIS_BREAKER_OFF;
|
|
||||||
pm->m_udpComm.sendDisSysCmd(b);
|
|
||||||
//c. 闭合低压母线的断路器
|
|
||||||
disHighBVolBusCmd c;
|
|
||||||
c.lithiumBatteryGroupInstrumentCircuitBreaker = DIS_BREAKER_ON;
|
|
||||||
c.bowLowVoltageDistributionBoxCircuitBreaker = DIS_BREAKER_ON;
|
|
||||||
c.unit4InstrumentDC48VCircuitBreaker = DIS_BREAKER_ON;
|
|
||||||
c.dcC1DCDistributionPanelCircuitBreaker = DIS_BREAKER_ON;
|
|
||||||
c.reservedCircuitBreaker1 = DIS_BREAKER_ON;
|
|
||||||
c.reservedCircuitBreaker2 = DIS_BREAKER_ON;
|
|
||||||
c.emergencyLithiumBatteryGroup2CircuitBreaker = DIS_BREAKER_ON;
|
|
||||||
pm->m_udpComm.sendDisSysCmd(c);
|
|
||||||
//d. 闭合低压汇流排断路器
|
|
||||||
disLowBusCmd d;
|
|
||||||
d.unit1CircuitBreaker = DIS_BREAKER_ON;
|
|
||||||
d.unit2CircuitBreaker = DIS_BREAKER_ON;
|
|
||||||
d.unit3CircuitBreaker = DIS_BREAKER_ON;
|
|
||||||
d.unit5CircuitBreaker = DIS_BREAKER_ON;
|
|
||||||
d.bowPZDeviceCircuitBreaker = DIS_BREAKER_ON;
|
|
||||||
d.reservedCircuitBreaker1 = DIS_BREAKER_ON;
|
|
||||||
d.reservedCircuitBreaker2 = DIS_BREAKER_ON;
|
|
||||||
d.emergencyLithiumBatteryGroup1CircuitBreaker = DIS_BREAKER_ON;
|
|
||||||
pm->m_udpComm.sendDisSysCmd(d);
|
|
||||||
MOOSPause(1000);
|
|
||||||
// pm->workCondition = "";
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int PowerManger::handleFault_s99(FSM_State &fsm, void* pData)
|
|
||||||
{
|
|
||||||
// cout << fsm.name << endl;
|
|
||||||
PowerManger* pm = (PowerManger*)pData;
|
|
||||||
switch (pm->m_faultNum)
|
|
||||||
{
|
|
||||||
case 1:
|
|
||||||
pm->printState(fsm,"通信故障");
|
|
||||||
pm->m_pmEvent = "复合管控连接超时";
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
pm->printState(fsm,"故障");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// 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)
|
|
||||||
// {
|
|
||||||
// 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)
|
|
||||||
// {
|
|
||||||
// cout << fsm.name << endl;
|
|
||||||
// PowerManger* pm = (PowerManger*)pData;
|
|
||||||
// fsm = pm->m_fsm.getState("PM_STATE");
|
|
||||||
// // pm->m_pmEvent = "c";
|
|
||||||
// return 0;
|
|
||||||
// }
|
|
||||||
@@ -74,11 +74,10 @@ class PowerManger : public AppCastingMOOSApp
|
|||||||
|
|
||||||
//通信相关
|
//通信相关
|
||||||
XPCUdpSocket* setUdpScoket(long lPort);
|
XPCUdpSocket* setUdpScoket(long lPort);
|
||||||
bool disSystemOperation(disBreaker optBreaker, disBreakerOpt);
|
|
||||||
bool buildPowerSysReport();
|
bool buildPowerSysReport();
|
||||||
|
|
||||||
protected: // app variables
|
protected: // app variables
|
||||||
//系统状态
|
//系统运行状态
|
||||||
unsigned char workCondition;
|
unsigned char workCondition;
|
||||||
unsigned char currentMod;
|
unsigned char currentMod;
|
||||||
unsigned char powerState;
|
unsigned char powerState;
|
||||||
@@ -86,16 +85,25 @@ class PowerManger : public AppCastingMOOSApp
|
|||||||
vector<unsigned int> faultCode;
|
vector<unsigned int> faultCode;
|
||||||
unsigned int soc;
|
unsigned int soc;
|
||||||
unsigned int sustainableTime;
|
unsigned int sustainableTime;
|
||||||
pmState m_pmCurrentState;
|
|
||||||
bool m_connected;
|
bool m_connected;
|
||||||
// 当前传输状态
|
pmState m_pmCurrentState; //能源系统的当前状态
|
||||||
|
//配电系统状态
|
||||||
|
disSysBreakerList m_currentDisBreakerState;
|
||||||
|
disSysBreakerList m_targetDisBreakerState;
|
||||||
|
|
||||||
|
// 配电和CCU的反馈状态
|
||||||
msg_CcuStateFbMsg m_CcuCurrentState;
|
msg_CcuStateFbMsg m_CcuCurrentState;
|
||||||
msg_disHighVolBusFbMsg m_disHighVolBusCurrentState;
|
msg_disHighVolBusFbMsg m_disHighVolBusCurrentState;
|
||||||
msg_disHighAVolBusFbMsg m_disHighAVolBusCurrentState;
|
msg_disHighAVolBusFbMsg m_disHighAVolBusCurrentState;
|
||||||
msg_disHighBVolBusFbMsg m_disHighBVolBusCurrentState;
|
msg_disHighBVolBusFbMsg m_disHighBVolBusCurrentState;
|
||||||
msg_disLowBusFbMsg m_disLowBusState;
|
msg_disLowBusFbMsg m_disLowBusState;
|
||||||
|
|
||||||
private: // Configuration variables
|
//操作函数
|
||||||
|
void disSysOption();
|
||||||
|
char getBreakerOption(char cmd);
|
||||||
|
void initTargetDisBreakerState();
|
||||||
|
|
||||||
|
private:
|
||||||
udpComm m_udpComm;
|
udpComm m_udpComm;
|
||||||
XPCUdpSocket *m_pCcuUdpComm;
|
XPCUdpSocket *m_pCcuUdpComm;
|
||||||
CMOOSThread m_ListenThread;
|
CMOOSThread m_ListenThread;
|
||||||
@@ -114,7 +122,6 @@ class PowerManger : public AppCastingMOOSApp
|
|||||||
private: //
|
private: //
|
||||||
bool inline saveStringToJsonFile(const string &strJson, const string &strFileName);
|
bool inline saveStringToJsonFile(const string &strJson, const string &strFileName);
|
||||||
|
|
||||||
|
|
||||||
public: //状态实现
|
public: //状态实现
|
||||||
void printState(FSM_State st, string desp);
|
void printState(FSM_State st, string desp);
|
||||||
bool FSM_RUN_IS_OK = true;
|
bool FSM_RUN_IS_OK = true;
|
||||||
@@ -133,6 +140,10 @@ class PowerManger : public AppCastingMOOSApp
|
|||||||
FSM_State m_Inite_s1;
|
FSM_State m_Inite_s1;
|
||||||
static int handleInite_s1(FSM_State &fsm, void* pData);
|
static int handleInite_s1(FSM_State &fsm, void* pData);
|
||||||
|
|
||||||
|
//待机状态
|
||||||
|
FSM_State m_Standby_s2;
|
||||||
|
static int handleStandby_s2(FSM_State &fsm, void* pData);
|
||||||
|
|
||||||
//故障处理
|
//故障处理
|
||||||
FSM_State m_Fault_s99;
|
FSM_State m_Fault_s99;
|
||||||
static int handleFault_s99(FSM_State &fsm, void* pData);
|
static int handleFault_s99(FSM_State &fsm, void* pData);
|
||||||
|
|||||||
@@ -8,8 +8,11 @@
|
|||||||
#define DIS_MSG_HEAD1 0x40
|
#define DIS_MSG_HEAD1 0x40
|
||||||
#define DIS_MSG_HEAD2 0x40
|
#define DIS_MSG_HEAD2 0x40
|
||||||
|
|
||||||
#define CCU_STATE_FB_ID 0x0051
|
#define CCU_CMD_ID 0x0050
|
||||||
|
#define CCU_SET_PARM_ID 0x0051
|
||||||
|
#define CCU_STATE_FB_ID 0x0041
|
||||||
#define CCU_SET_PARM_FB_ID 0x0040
|
#define CCU_SET_PARM_FB_ID 0x0040
|
||||||
|
|
||||||
#define DIS_HVBUS_FB_ID 0x0005
|
#define DIS_HVBUS_FB_ID 0x0005
|
||||||
#define DIS_HVBUSA_FB_ID 0x0006
|
#define DIS_HVBUSA_FB_ID 0x0006
|
||||||
#define DIS_HVBUSB_FB_ID 0x0007
|
#define DIS_HVBUSB_FB_ID 0x0007
|
||||||
@@ -47,36 +50,18 @@ typedef struct {
|
|||||||
typedef struct {
|
typedef struct {
|
||||||
m_header header;
|
m_header header;
|
||||||
m_date date;
|
m_date date;
|
||||||
unsigned char workCondition;
|
ccuColCmd cmd;
|
||||||
unsigned char fcuCmd;
|
|
||||||
unsigned char fcuPowerEfficiency;
|
|
||||||
unsigned char fcuInsEfficiency;
|
|
||||||
unsigned char insBatCmd;
|
|
||||||
unsigned char powerBatCmd;
|
|
||||||
unsigned char powerBatEfficiency;
|
|
||||||
unsigned char heartbeat;
|
|
||||||
unsigned char masterState;
|
|
||||||
Checksum checkCode;
|
Checksum checkCode;
|
||||||
} msg_CcuColCmdMsg;
|
} msg_CcuColCmdMsg;
|
||||||
|
|
||||||
// 复合管控器参数设定指令
|
// 复合管控器参数设定指令
|
||||||
typedef struct {
|
typedef struct {
|
||||||
m_header header;
|
m_header header;
|
||||||
unsigned char insSocHold1;
|
ccuSetParmCmd cmd;
|
||||||
unsigned char insSocHold2;
|
|
||||||
unsigned char insSocHold3;
|
|
||||||
unsigned char fcuToInsLimit1;
|
|
||||||
unsigned char fcuToinsLimit2;
|
|
||||||
unsigned char powerSocHold1;
|
|
||||||
unsigned char powerSocHold2;
|
|
||||||
unsigned char powerSocHold3;
|
|
||||||
unsigned char fcuToPowerLimit1;
|
|
||||||
unsigned char fcuToPowerLimit2;
|
|
||||||
Checksum checkCode;
|
Checksum checkCode;
|
||||||
} msg_CcuSetParmMsg;
|
} msg_CcuSetParmMsg;
|
||||||
|
|
||||||
// 配电指令
|
// 配电指令
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
m_header header;
|
m_header header;
|
||||||
@@ -104,43 +89,7 @@ typedef struct
|
|||||||
disLowBusCmd data;
|
disLowBusCmd data;
|
||||||
cChecksum checkCode;
|
cChecksum checkCode;
|
||||||
}msg_disLVBCmd;
|
}msg_disLVBCmd;
|
||||||
// typedef struct {
|
|
||||||
// m_header header;
|
|
||||||
// unsigned char dcb1;
|
|
||||||
// unsigned char dcb2;
|
|
||||||
// unsigned char dcb3;
|
|
||||||
// unsigned char dcb4;
|
|
||||||
// unsigned char dcb5;
|
|
||||||
// unsigned char sw1;
|
|
||||||
// unsigned char sw2;
|
|
||||||
// unsigned char qf1;
|
|
||||||
// unsigned char qf2;
|
|
||||||
// unsigned char qf3;
|
|
||||||
// unsigned char qf4;
|
|
||||||
// unsigned char qf5;
|
|
||||||
// unsigned char qf6;
|
|
||||||
// unsigned char qf7;
|
|
||||||
// unsigned char qf8;
|
|
||||||
// unsigned char qf9;
|
|
||||||
// unsigned char qf10;
|
|
||||||
// unsigned char qf11;
|
|
||||||
// unsigned char qf12;
|
|
||||||
// unsigned char qf13;
|
|
||||||
// unsigned char qf14;
|
|
||||||
// unsigned char qf15;
|
|
||||||
// unsigned char qf16;
|
|
||||||
// unsigned char qf17;
|
|
||||||
// unsigned char qf18;
|
|
||||||
// unsigned char qf19;
|
|
||||||
// unsigned char qf20;
|
|
||||||
// unsigned char qf21;
|
|
||||||
// unsigned char qf22;
|
|
||||||
// unsigned char qf23;
|
|
||||||
// unsigned char qf24;
|
|
||||||
// unsigned char qf25;
|
|
||||||
// unsigned char qf26;
|
|
||||||
// Checksum checkCode;
|
|
||||||
// } msg_disSysCmdMsg;
|
|
||||||
|
|
||||||
// 复合管控参数设定反馈指令
|
// 复合管控参数设定反馈指令
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
|||||||
@@ -2,10 +2,720 @@
|
|||||||
|
|
||||||
Driver::Driver()
|
Driver::Driver()
|
||||||
{
|
{
|
||||||
|
currentDriverTable = new DriverTable();
|
||||||
|
nextDriverTable = new DriverTable();
|
||||||
|
debug = false;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Driver::~Driver()
|
Driver::~Driver()
|
||||||
{
|
{
|
||||||
|
delete currentDriverTable;
|
||||||
|
delete nextDriverTable;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Driver::setDebug(bool debug)
|
||||||
|
{
|
||||||
|
this->debug = debug;
|
||||||
|
}
|
||||||
|
int Driver::getDriverTable(workCondition condition, DriverTable* driverTable)
|
||||||
|
{
|
||||||
|
switch (condition)
|
||||||
|
{
|
||||||
|
case STANDBY:
|
||||||
|
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SHORE_BASED_READY:
|
||||||
|
/* code */
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WATER_BASED_READY:
|
||||||
|
/* code */
|
||||||
|
break;
|
||||||
|
|
||||||
|
case CRUISE_MODE:
|
||||||
|
/* code */
|
||||||
|
break;
|
||||||
|
|
||||||
|
case HIGH_SPEED_MODE:
|
||||||
|
/* code */
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ASCEND_DESCEND:
|
||||||
|
/* code */
|
||||||
|
break;
|
||||||
|
|
||||||
|
case BUOYANCY_ADJUST:
|
||||||
|
/* code */
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Driver::getSTANDBYTable(DriverTable* driverTable)
|
||||||
|
{
|
||||||
|
//打开所有传感器
|
||||||
|
driverTable->depth1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->depth2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->depth3 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->overDeep1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->overDeep2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->CTD1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->CTD2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->soundVeloc = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->commMast = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->ins = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->ntp = DRIVER_FULL_POWER_ON;
|
||||||
|
//关闭所有负载
|
||||||
|
driverTable->photoSensor = DRIVER_STANDBY;
|
||||||
|
driverTable->electSensor = DRIVER_STANDBY;
|
||||||
|
driverTable->zhfk = DRIVER_STANDBY;
|
||||||
|
driverTable->sideSonar = DRIVER_POWER_OFF;
|
||||||
|
driverTable->buoyage = DRIVER_POWER_OFF;
|
||||||
|
//关闭所有水声设备
|
||||||
|
driverTable->singleBeamSonar1 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->singleBeamSonar2 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->singleBeamSonar3 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->singleBeamSonar4 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->singleBeamSonar5 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->singleBeamSonar6 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->singleBeamSonar7 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->singleBeamSonar8 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->DVL = DRIVER_POWER_OFF;
|
||||||
|
driverTable->forwardSonar = DRIVER_POWER_OFF;
|
||||||
|
driverTable->zdp = DRIVER_POWER_OFF;
|
||||||
|
driverTable->usbl = DRIVER_POWER_OFF;
|
||||||
|
//关闭所有执行机构
|
||||||
|
driverTable->bowOpen1 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowOpen2 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowOpen3 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowOpen4 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowOpen5 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowOpen6 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowRudderDeploy = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowRudderServo1 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowRudderServo2 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowCover1 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowCover2 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowCover3 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowCover4 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowCover5 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowCover6 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowCover7 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowCover8 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->waterInject = DRIVER_POWER_OFF;
|
||||||
|
driverTable->wgDJ = DRIVER_POWER_OFF;
|
||||||
|
driverTable->buoyancyAdjust1 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->buoyancyAdjust2 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->buoyancyAdjust3 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->sternRudderServo1 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->sternRudderServo2 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->sternRudderServo3 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->sternRudderServo4 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->thruster = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowThrow = DRIVER_POWER_OFF;
|
||||||
|
driverTable->sternThrow = DRIVER_POWER_OFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Driver::getSHORE_BASED_READYable(DriverTable* driverTable)
|
||||||
|
{
|
||||||
|
// 打开所有传感器
|
||||||
|
driverTable->depth1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->depth2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->depth3 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->overDeep1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->overDeep2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->CTD1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->CTD2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->soundVeloc = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->commMast = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->ins = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->ntp = DRIVER_FULL_POWER_ON;
|
||||||
|
|
||||||
|
// 允许启动负载
|
||||||
|
// 关闭xcz
|
||||||
|
driverTable->photoSensor = DRIVER_STANDBY;
|
||||||
|
driverTable->electSensor = DRIVER_STANDBY;
|
||||||
|
driverTable->zhfk = DRIVER_STANDBY;
|
||||||
|
driverTable->sideSonar = DRIVER_POWER_OFF;
|
||||||
|
driverTable->buoyage = DRIVER_STANDBY;
|
||||||
|
|
||||||
|
// 关闭所有水声设备
|
||||||
|
driverTable->singleBeamSonar1 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->singleBeamSonar2 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->singleBeamSonar3 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->singleBeamSonar4 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->singleBeamSonar5 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->singleBeamSonar6 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->singleBeamSonar7 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->singleBeamSonar8 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->DVL = DRIVER_POWER_OFF;
|
||||||
|
driverTable->forwardSonar = DRIVER_POWER_OFF;
|
||||||
|
driverTable->zdp = DRIVER_POWER_OFF;
|
||||||
|
driverTable->usbl = DRIVER_POWER_OFF;
|
||||||
|
|
||||||
|
// 打开必要的执行机构
|
||||||
|
driverTable->bowOpen1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowOpen2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowOpen3 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowOpen4 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowOpen5 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowOpen6 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowRudderDeploy = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowRudderServo1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowRudderServo2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowCover1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowCover2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowCover3 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowCover4 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowCover5 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowCover6 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowCover7 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowCover8 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->waterInject = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->wgDJ = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->buoyancyAdjust1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->buoyancyAdjust2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->buoyancyAdjust3 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->sternRudderServo1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->sternRudderServo2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->sternRudderServo3 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->sternRudderServo4 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->thruster = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowThrow = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->sternThrow = DRIVER_FULL_POWER_ON;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Driver::getWATER_BASED_READYable(DriverTable* driverTable)
|
||||||
|
{
|
||||||
|
// 打开所有传感器
|
||||||
|
driverTable->depth1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->depth2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->depth3 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->overDeep1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->overDeep2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->CTD1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->CTD2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->soundVeloc = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->commMast = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->ins = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->ntp = DRIVER_FULL_POWER_ON;
|
||||||
|
|
||||||
|
// 允许启动负载
|
||||||
|
driverTable->photoSensor = DRIVER_STANDBY;
|
||||||
|
driverTable->electSensor = DRIVER_STANDBY;
|
||||||
|
driverTable->zhfk = DRIVER_STANDBY;
|
||||||
|
driverTable->sideSonar = DRIVER_STANDBY;
|
||||||
|
driverTable->buoyage = DRIVER_STANDBY;
|
||||||
|
|
||||||
|
// 所有水声设备待机
|
||||||
|
// 打开DVL
|
||||||
|
driverTable->singleBeamSonar1 = DRIVER_STANDBY;
|
||||||
|
driverTable->singleBeamSonar2 = DRIVER_STANDBY;
|
||||||
|
driverTable->singleBeamSonar3 = DRIVER_STANDBY;
|
||||||
|
driverTable->singleBeamSonar4 = DRIVER_STANDBY;
|
||||||
|
driverTable->singleBeamSonar5 = DRIVER_STANDBY;
|
||||||
|
driverTable->singleBeamSonar6 = DRIVER_STANDBY;
|
||||||
|
driverTable->singleBeamSonar7 = DRIVER_STANDBY;
|
||||||
|
driverTable->singleBeamSonar8 = DRIVER_STANDBY;
|
||||||
|
driverTable->DVL = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->forwardSonar = DRIVER_STANDBY;
|
||||||
|
driverTable->zdp = DRIVER_STANDBY;
|
||||||
|
driverTable->usbl = DRIVER_STANDBY;
|
||||||
|
|
||||||
|
// 打开必要的执行机构
|
||||||
|
driverTable->bowOpen1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowOpen2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowOpen3 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowOpen4 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowOpen5 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowOpen6 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowRudderDeploy = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowRudderServo1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowRudderServo2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowCover1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowCover2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowCover3 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowCover4 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowCover5 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowCover6 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowCover7 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowCover8 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->waterInject = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->wgDJ = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->buoyancyAdjust1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->buoyancyAdjust2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->buoyancyAdjust3 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->sternRudderServo1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->sternRudderServo2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->sternRudderServo3 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->sternRudderServo4 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->thruster = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowThrow = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->sternThrow = DRIVER_FULL_POWER_ON;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Driver::getCRUISE_MODEable(DriverTable* driverTable)
|
||||||
|
{
|
||||||
|
// 打开所有传感器
|
||||||
|
driverTable->depth1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->depth2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->depth3 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->overDeep1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->overDeep2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->CTD1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->CTD2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->soundVeloc = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->commMast = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->ins = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->ntp = DRIVER_FULL_POWER_ON;
|
||||||
|
|
||||||
|
// 所有负载设备关机
|
||||||
|
driverTable->photoSensor = DRIVER_POWER_OFF;
|
||||||
|
driverTable->electSensor = DRIVER_POWER_OFF;
|
||||||
|
driverTable->zhfk = DRIVER_POWER_OFF;
|
||||||
|
driverTable->sideSonar = DRIVER_POWER_OFF;
|
||||||
|
driverTable->buoyage = DRIVER_POWER_OFF;
|
||||||
|
|
||||||
|
// 打开必要的执行机构
|
||||||
|
// 关闭非必要的执行机构
|
||||||
|
driverTable->bowOpen1 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowOpen2 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowOpen3 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowOpen4 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowOpen5 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowOpen6 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowRudderDeploy = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowRudderServo1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowRudderServo2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowCover1 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowCover2 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowCover3 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowCover4 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowCover5 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowCover6 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowCover7 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowCover8 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->waterInject = DRIVER_POWER_OFF;
|
||||||
|
driverTable->wgDJ = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->buoyancyAdjust1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->buoyancyAdjust2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->buoyancyAdjust3 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->sternRudderServo1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->sternRudderServo2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->sternRudderServo3 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->sternRudderServo4 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->thruster = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowThrow = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->sternThrow = DRIVER_FULL_POWER_ON;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Driver::getHIGH_SPEED_MODEable(DriverTable* driverTable)
|
||||||
|
{
|
||||||
|
// 打开所有传感器
|
||||||
|
driverTable->depth1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->depth2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->depth3 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->overDeep1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->overDeep2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->CTD1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->CTD2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->soundVeloc = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->commMast = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->ins = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->ntp = DRIVER_FULL_POWER_ON;
|
||||||
|
|
||||||
|
// 所有负载设备关机
|
||||||
|
driverTable->photoSensor = DRIVER_POWER_OFF;
|
||||||
|
driverTable->electSensor = DRIVER_POWER_OFF;
|
||||||
|
driverTable->zhfk = DRIVER_POWER_OFF;
|
||||||
|
driverTable->sideSonar = DRIVER_POWER_OFF;
|
||||||
|
driverTable->buoyage = DRIVER_POWER_OFF;
|
||||||
|
|
||||||
|
// 打开必要的执行机构,只打开操纵机构
|
||||||
|
// 关闭非必要的执行机构
|
||||||
|
driverTable->bowOpen1 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowOpen2 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowOpen3 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowOpen4 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowOpen5 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowOpen6 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowRudderDeploy = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowRudderServo1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowRudderServo2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowCover1 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowCover2 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowCover3 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowCover4 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowCover5 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowCover6 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowCover7 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowCover8 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->waterInject = DRIVER_POWER_OFF;
|
||||||
|
driverTable->wgDJ = DRIVER_POWER_OFF;
|
||||||
|
driverTable->buoyancyAdjust1 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->buoyancyAdjust2 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->buoyancyAdjust3 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->sternRudderServo1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->sternRudderServo2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->sternRudderServo3 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->sternRudderServo4 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->thruster = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowThrow = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->sternThrow = DRIVER_FULL_POWER_ON;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 上浮下潜与巡航模式一致
|
||||||
|
void Driver::getASCEND_DESCENDable(DriverTable* driverTable)
|
||||||
|
{
|
||||||
|
// 打开所有传感器
|
||||||
|
driverTable->depth1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->depth2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->depth3 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->overDeep1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->overDeep2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->CTD1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->CTD2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->soundVeloc = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->commMast = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->ins = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->ntp = DRIVER_FULL_POWER_ON;
|
||||||
|
|
||||||
|
// 所有负载设备关机
|
||||||
|
driverTable->photoSensor = DRIVER_POWER_OFF;
|
||||||
|
driverTable->electSensor = DRIVER_POWER_OFF;
|
||||||
|
driverTable->zhfk = DRIVER_POWER_OFF;
|
||||||
|
driverTable->sideSonar = DRIVER_POWER_OFF;
|
||||||
|
driverTable->buoyage = DRIVER_POWER_OFF;
|
||||||
|
|
||||||
|
// 打开必要的执行机构
|
||||||
|
// 关闭非必要的执行机构
|
||||||
|
driverTable->bowOpen1 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowOpen2 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowOpen3 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowOpen4 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowOpen5 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowOpen6 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowRudderDeploy = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowRudderServo1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowRudderServo2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowCover1 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowCover2 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowCover3 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowCover4 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowCover5 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowCover6 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowCover7 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowCover8 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->waterInject = DRIVER_POWER_OFF;
|
||||||
|
driverTable->wgDJ = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->buoyancyAdjust1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->buoyancyAdjust2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->buoyancyAdjust3 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->sternRudderServo1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->sternRudderServo2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->sternRudderServo3 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->sternRudderServo4 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->thruster = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowThrow = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->sternThrow = DRIVER_FULL_POWER_ON;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 浮标调整与巡航模式一致
|
||||||
|
void Driver::getBUOYANCY_ADJUSTable(DriverTable* driverTable)
|
||||||
|
{
|
||||||
|
// 打开所有传感器
|
||||||
|
driverTable->depth1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->depth2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->depth3 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->overDeep1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->overDeep2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->CTD1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->CTD2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->soundVeloc = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->commMast = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->ins = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->ntp = DRIVER_FULL_POWER_ON;
|
||||||
|
|
||||||
|
// 所有负载设备关机
|
||||||
|
driverTable->photoSensor = DRIVER_POWER_OFF;
|
||||||
|
driverTable->electSensor = DRIVER_POWER_OFF;
|
||||||
|
driverTable->zhfk = DRIVER_POWER_OFF;
|
||||||
|
driverTable->sideSonar = DRIVER_POWER_OFF;
|
||||||
|
driverTable->buoyage = DRIVER_POWER_OFF;
|
||||||
|
|
||||||
|
// 打开必要的执行机构
|
||||||
|
// 关闭非必要的执行机构
|
||||||
|
driverTable->bowOpen1 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowOpen2 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowOpen3 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowOpen4 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowOpen5 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowOpen6 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowRudderDeploy = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowRudderServo1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowRudderServo2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowCover1 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowCover2 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowCover3 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowCover4 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowCover5 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowCover6 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowCover7 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowCover8 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->waterInject = DRIVER_POWER_OFF;
|
||||||
|
driverTable->wgDJ = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->buoyancyAdjust1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->buoyancyAdjust2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->buoyancyAdjust3 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->sternRudderServo1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->sternRudderServo2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->sternRudderServo3 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->sternRudderServo4 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->thruster = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowThrow = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->sternThrow = DRIVER_FULL_POWER_ON;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 水下侦查
|
||||||
|
void Driver::getUNDERWATER_RECONable(DriverTable* driverTable)
|
||||||
|
{
|
||||||
|
// 打开所有传感器
|
||||||
|
driverTable->depth1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->depth2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->depth3 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->overDeep1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->overDeep2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->CTD1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->CTD2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->soundVeloc = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->commMast = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->ins = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->ntp = DRIVER_FULL_POWER_ON;
|
||||||
|
|
||||||
|
// 所有负载设备关机
|
||||||
|
driverTable->photoSensor = DRIVER_POWER_OFF;
|
||||||
|
driverTable->electSensor = DRIVER_POWER_OFF;
|
||||||
|
driverTable->zhfk = DRIVER_POWER_OFF;
|
||||||
|
driverTable->sideSonar = DRIVER_STANDBY;
|
||||||
|
driverTable->buoyage = DRIVER_POWER_OFF;
|
||||||
|
|
||||||
|
// 打开必要的执行机构
|
||||||
|
// 关闭非必要的执行机构
|
||||||
|
driverTable->bowOpen1 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowOpen2 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowOpen3 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowOpen4 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowOpen5 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowOpen6 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowRudderDeploy = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowRudderServo1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowRudderServo2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowCover1 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowCover2 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowCover3 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowCover4 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowCover5 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowCover6 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowCover7 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowCover8 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->waterInject = DRIVER_POWER_OFF;
|
||||||
|
driverTable->wgDJ = DRIVER_POWER_OFF;
|
||||||
|
driverTable->buoyancyAdjust1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->buoyancyAdjust2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->buoyancyAdjust3 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->sternRudderServo1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->sternRudderServo2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->sternRudderServo3 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->sternRudderServo4 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->thruster = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowThrow = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->sternThrow = DRIVER_FULL_POWER_ON;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 水面探测
|
||||||
|
void Driver::getSURFACE_RECONable(DriverTable* driverTable)
|
||||||
|
{
|
||||||
|
// 打开所有传感器
|
||||||
|
driverTable->depth1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->depth2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->depth3 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->overDeep1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->overDeep2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->CTD1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->CTD2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->soundVeloc = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->commMast = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->ins = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->ntp = DRIVER_FULL_POWER_ON;
|
||||||
|
|
||||||
|
// 所有负载设备关机
|
||||||
|
driverTable->photoSensor = DRIVER_STANDBY;
|
||||||
|
driverTable->electSensor = DRIVER_STANDBY;
|
||||||
|
driverTable->zhfk = DRIVER_POWER_OFF;
|
||||||
|
driverTable->sideSonar = DRIVER_POWER_OFF;
|
||||||
|
driverTable->buoyage = DRIVER_POWER_OFF;
|
||||||
|
|
||||||
|
// 打开必要的执行机构
|
||||||
|
// 关闭非必要的执行机构
|
||||||
|
driverTable->bowOpen1 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowOpen2 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowOpen3 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowOpen4 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowOpen5 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowOpen6 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowRudderDeploy = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowRudderServo1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowRudderServo2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowCover1 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowCover2 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowCover3 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowCover4 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowCover5 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowCover6 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowCover7 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->bowCover8 = DRIVER_POWER_OFF;
|
||||||
|
driverTable->waterInject = DRIVER_POWER_OFF;
|
||||||
|
driverTable->wgDJ = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->buoyancyAdjust1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->buoyancyAdjust2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->buoyancyAdjust3 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->sternRudderServo1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->sternRudderServo2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->sternRudderServo3 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->sternRudderServo4 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->thruster = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowThrow = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->sternThrow = DRIVER_FULL_POWER_ON;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Driver::getDJ_MODEable(DriverTable* driverTable)
|
||||||
|
{
|
||||||
|
// 打开所有传感器
|
||||||
|
driverTable->depth1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->depth2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->depth3 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->overDeep1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->overDeep2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->CTD1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->CTD2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->soundVeloc = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->commMast = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->ins = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->ntp = DRIVER_FULL_POWER_ON;
|
||||||
|
|
||||||
|
// 所有负载设备关机
|
||||||
|
driverTable->photoSensor = DRIVER_POWER_OFF;
|
||||||
|
driverTable->electSensor = DRIVER_POWER_OFF;
|
||||||
|
driverTable->zhfk = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->sideSonar = DRIVER_POWER_OFF;
|
||||||
|
driverTable->buoyage = DRIVER_STANDBY;
|
||||||
|
|
||||||
|
// 打开必要的执行机构
|
||||||
|
// 关闭非必要的执行机构
|
||||||
|
driverTable->bowOpen1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowOpen2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowOpen3 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowOpen4 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowOpen5 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowOpen6 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowRudderDeploy = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowRudderServo1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowRudderServo2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowCover1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowCover2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowCover3 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowCover4 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowCover5 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowCover6 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowCover7 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowCover8 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->waterInject = DRIVER_POWER_OFF;
|
||||||
|
driverTable->wgDJ = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->buoyancyAdjust1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->buoyancyAdjust2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->buoyancyAdjust3 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->sternRudderServo1 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->sternRudderServo2 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->sternRudderServo3 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->sternRudderServo4 = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->thruster = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->bowThrow = DRIVER_FULL_POWER_ON;
|
||||||
|
driverTable->sternThrow = DRIVER_FULL_POWER_ON;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string Driver::saveDriverTableToJson(const DriverTable* driverTable)
|
||||||
|
{
|
||||||
|
Json::Value root;
|
||||||
|
|
||||||
|
// 添加所有成员到json
|
||||||
|
root["depth1"] = driverTable->depth1;
|
||||||
|
root["depth2"] = driverTable->depth2;
|
||||||
|
root["depth3"] = driverTable->depth3;
|
||||||
|
root["overDeep1"] = driverTable->overDeep1;
|
||||||
|
root["overDeep2"] = driverTable->overDeep2;
|
||||||
|
root["CTD1"] = driverTable->CTD1;
|
||||||
|
root["CTD2"] = driverTable->CTD2;
|
||||||
|
root["soundVeloc"] = driverTable->soundVeloc;
|
||||||
|
root["commMast"] = driverTable->commMast;
|
||||||
|
root["ins"] = driverTable->ins;
|
||||||
|
root["ntp"] = driverTable->ntp;
|
||||||
|
root["singleBeamSonar1"] = driverTable->singleBeamSonar1;
|
||||||
|
root["singleBeamSonar2"] = driverTable->singleBeamSonar2;
|
||||||
|
root["singleBeamSonar3"] = driverTable->singleBeamSonar3;
|
||||||
|
root["singleBeamSonar4"] = driverTable->singleBeamSonar4;
|
||||||
|
root["singleBeamSonar5"] = driverTable->singleBeamSonar5;
|
||||||
|
root["singleBeamSonar6"] = driverTable->singleBeamSonar6;
|
||||||
|
root["singleBeamSonar7"] = driverTable->singleBeamSonar7;
|
||||||
|
root["singleBeamSonar8"] = driverTable->singleBeamSonar8;
|
||||||
|
root["forwardSonar"] = driverTable->forwardSonar;
|
||||||
|
root["DVL"] = driverTable->DVL;
|
||||||
|
root["zdp"] = driverTable->zdp;
|
||||||
|
root["usbl"] = driverTable->usbl;
|
||||||
|
root["bowOpen1"] = driverTable->bowOpen1;
|
||||||
|
root["bowOpen2"] = driverTable->bowOpen2;
|
||||||
|
root["bowOpen3"] = driverTable->bowOpen3;
|
||||||
|
root["bowOpen4"] = driverTable->bowOpen4;
|
||||||
|
root["bowOpen5"] = driverTable->bowOpen5;
|
||||||
|
root["bowOpen6"] = driverTable->bowOpen6;
|
||||||
|
root["bowRudderDeploy"] = driverTable->bowRudderDeploy;
|
||||||
|
root["bowRudderServo1"] = driverTable->bowRudderServo1;
|
||||||
|
root["bowRudderServo2"] = driverTable->bowRudderServo2;
|
||||||
|
root["bowCover1"] = driverTable->bowCover1;
|
||||||
|
root["bowCover2"] = driverTable->bowCover2;
|
||||||
|
root["bowCover3"] = driverTable->bowCover3;
|
||||||
|
root["bowCover4"] = driverTable->bowCover4;
|
||||||
|
root["bowCover5"] = driverTable->bowCover5;
|
||||||
|
root["bowCover6"] = driverTable->bowCover6;
|
||||||
|
root["bowCover7"] = driverTable->bowCover7;
|
||||||
|
root["bowCover8"] = driverTable->bowCover8;
|
||||||
|
root["waterInject"] = driverTable->waterInject;
|
||||||
|
root["wgDJ"] = driverTable->wgDJ;
|
||||||
|
root["buoyancyAdjust1"] = driverTable->buoyancyAdjust1;
|
||||||
|
root["buoyancyAdjust2"] = driverTable->buoyancyAdjust2;
|
||||||
|
root["buoyancyAdjust3"] = driverTable->buoyancyAdjust3;
|
||||||
|
root["sternRudderServo1"] = driverTable->sternRudderServo1;
|
||||||
|
root["sternRudderServo2"] = driverTable->sternRudderServo2;
|
||||||
|
root["sternRudderServo3"] = driverTable->sternRudderServo3;
|
||||||
|
root["sternRudderServo4"] = driverTable->sternRudderServo4;
|
||||||
|
root["thruster"] = driverTable->thruster;
|
||||||
|
root["bowThrow"] = driverTable->bowThrow;
|
||||||
|
root["sternThrow"] = driverTable->sternThrow;
|
||||||
|
root["photoSensor"] = driverTable->photoSensor;
|
||||||
|
root["electSensor"] = driverTable->electSensor;
|
||||||
|
root["zhfk"] = driverTable->zhfk;
|
||||||
|
root["sideSonar"] = driverTable->sideSonar;
|
||||||
|
root["buoyage"] = driverTable->buoyage;
|
||||||
|
|
||||||
|
return root.toStyledString();
|
||||||
|
}
|
||||||
|
std::string Driver::getDriverTableJson()
|
||||||
|
{
|
||||||
|
return saveDriverTableToJson(currentDriverTable);
|
||||||
}
|
}
|
||||||
+119
-1
@@ -1,14 +1,132 @@
|
|||||||
#ifndef DRIVER_H
|
#ifndef DRIVER_H
|
||||||
#define DRIVER_H
|
#define DRIVER_H
|
||||||
|
#include "json/json.h"
|
||||||
|
#include "iostream"
|
||||||
|
|
||||||
|
#define DRIVER_POWER_OFF 0x00
|
||||||
|
#define DRIVER_FULL_POWER_ON 0x01
|
||||||
|
#define DRIVER_INSTRUMENT_POWER_ON 0x02
|
||||||
|
#define DRIVER_MOTIVE_POWER_ON 0x03
|
||||||
|
#define DRIVER_STANDBY 0x04
|
||||||
|
|
||||||
|
struct DriverTable
|
||||||
|
{
|
||||||
|
unsigned char depth1;
|
||||||
|
unsigned char depth2;
|
||||||
|
unsigned char depth3;
|
||||||
|
unsigned char overDeep1;
|
||||||
|
unsigned char overDeep2;
|
||||||
|
unsigned char CTD1;
|
||||||
|
unsigned char CTD2;
|
||||||
|
unsigned char soundVeloc;
|
||||||
|
unsigned char commMast;
|
||||||
|
unsigned char ins;
|
||||||
|
unsigned char ntp;
|
||||||
|
//水声设备
|
||||||
|
unsigned char singleBeamSonar1;
|
||||||
|
unsigned char singleBeamSonar2;
|
||||||
|
unsigned char singleBeamSonar3;
|
||||||
|
unsigned char singleBeamSonar4;
|
||||||
|
unsigned char singleBeamSonar5;
|
||||||
|
unsigned char singleBeamSonar6;
|
||||||
|
unsigned char singleBeamSonar7;
|
||||||
|
unsigned char singleBeamSonar8;
|
||||||
|
unsigned char forwardSonar;
|
||||||
|
unsigned char DVL;
|
||||||
|
unsigned char zdp;
|
||||||
|
unsigned char usbl;
|
||||||
|
//执行机构
|
||||||
|
unsigned char bowOpen1;
|
||||||
|
unsigned char bowOpen2;
|
||||||
|
unsigned char bowOpen3;
|
||||||
|
unsigned char bowOpen4;
|
||||||
|
unsigned char bowOpen5;
|
||||||
|
unsigned char bowOpen6;
|
||||||
|
unsigned char bowRudderDeploy;
|
||||||
|
unsigned char bowRudderServo1;
|
||||||
|
unsigned char bowRudderServo2;
|
||||||
|
unsigned char bowCover1;
|
||||||
|
unsigned char bowCover2;
|
||||||
|
unsigned char bowCover3;
|
||||||
|
unsigned char bowCover4;
|
||||||
|
unsigned char bowCover5;
|
||||||
|
unsigned char bowCover6;
|
||||||
|
unsigned char bowCover7;
|
||||||
|
unsigned char bowCover8;
|
||||||
|
unsigned char waterInject;
|
||||||
|
unsigned char wgDJ;
|
||||||
|
unsigned char buoyancyAdjust1;
|
||||||
|
unsigned char buoyancyAdjust2;
|
||||||
|
unsigned char buoyancyAdjust3;
|
||||||
|
unsigned char sternRudderServo1;
|
||||||
|
unsigned char sternRudderServo2;
|
||||||
|
unsigned char sternRudderServo3;
|
||||||
|
unsigned char sternRudderServo4;
|
||||||
|
unsigned char thruster;
|
||||||
|
unsigned char bowThrow;
|
||||||
|
unsigned char sternThrow;
|
||||||
|
//负载
|
||||||
|
unsigned char photoSensor;
|
||||||
|
unsigned char electSensor;
|
||||||
|
unsigned char zhfk;
|
||||||
|
unsigned char sideSonar;
|
||||||
|
unsigned char buoyage;
|
||||||
|
};
|
||||||
|
|
||||||
|
enum DriverState
|
||||||
|
{
|
||||||
|
POWER_OFF, // 断电
|
||||||
|
FULL_POWER_ON, // 全电
|
||||||
|
INSTRUMENT_POWER_ON, // 仪表电上电
|
||||||
|
MOTIVE_POWER_ON, // 动力电上电
|
||||||
|
};
|
||||||
|
|
||||||
|
enum workCondition
|
||||||
|
{
|
||||||
|
STANDBY, // 待机工况
|
||||||
|
SHORE_BASED_READY, // 岸基备航
|
||||||
|
WATER_BASED_READY, // 水中备航
|
||||||
|
CRUISE_MODE, // 巡航模式
|
||||||
|
HIGH_SPEED_MODE, // 高速模式
|
||||||
|
ASCEND_DESCEND, // 上浮下潜
|
||||||
|
BUOYANCY_ADJUST, // 浮调模式
|
||||||
|
UNDERWATER_RECON, // 水下侦查
|
||||||
|
SURFACE_RECON, // 水面侦查
|
||||||
|
DJ_MODE, // DJ模式
|
||||||
|
DEBUG_MODE // 调试模式
|
||||||
|
};
|
||||||
|
|
||||||
class Driver
|
class Driver
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Driver();
|
Driver();
|
||||||
~Driver();
|
~Driver();
|
||||||
|
void setDebug(bool debug);
|
||||||
|
|
||||||
|
public:
|
||||||
|
DriverTable* currentDriverTable;
|
||||||
|
DriverTable* nextDriverTable;
|
||||||
|
|
||||||
|
int getDriverTable(workCondition condition, DriverTable* driverTable);
|
||||||
|
|
||||||
|
void getSTANDBYTable(DriverTable* driverTable);
|
||||||
|
void getSHORE_BASED_READYable(DriverTable* driverTable);
|
||||||
|
void getWATER_BASED_READYable(DriverTable* driverTable);
|
||||||
|
void getCRUISE_MODEable(DriverTable* driverTable);
|
||||||
|
void getHIGH_SPEED_MODEable(DriverTable* driverTable);
|
||||||
|
void getASCEND_DESCENDable(DriverTable* driverTable);
|
||||||
|
void getBUOYANCY_ADJUSTable(DriverTable* driverTable);
|
||||||
|
void getUNDERWATER_RECONable(DriverTable* driverTable);
|
||||||
|
void getSURFACE_RECONable(DriverTable* driverTable);
|
||||||
|
void getDJ_MODEable(DriverTable* driverTable);
|
||||||
|
|
||||||
|
std::string saveDriverTableToJson(const DriverTable* driverTable);
|
||||||
|
std::string getDriverTableJson();
|
||||||
|
|
||||||
|
private:
|
||||||
|
bool debug;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif // DRIVER_H
|
#endif // DRIVER_H
|
||||||
|
|||||||
@@ -91,19 +91,30 @@ typedef struct ccuState
|
|||||||
float placeholder5;
|
float placeholder5;
|
||||||
} ccuState;
|
} ccuState;
|
||||||
|
|
||||||
//TODO:增加复合管控的控制指令
|
typedef struct {
|
||||||
// typedef struct ccuCmd
|
unsigned char insSocHold1;
|
||||||
// {
|
unsigned char insSocHold2;
|
||||||
// unsigned char currentWorkCondition;
|
unsigned char insSocHold3;
|
||||||
// unsigned char fcuState;
|
unsigned char fcuToInsLimit1;
|
||||||
// unsigned char fcuFaultLeve;
|
unsigned char fcuToinsLimit2;
|
||||||
// } ccuCmd;
|
unsigned char powerSocHold1;
|
||||||
typedef struct ccuParamCmd
|
unsigned char powerSocHold2;
|
||||||
{
|
unsigned char powerSocHold3;
|
||||||
unsigned char insBat1Hold;
|
unsigned char fcuToPowerLimit1;
|
||||||
unsigned char insBat2Hold;
|
unsigned char fcuToPowerLimit2;
|
||||||
unsigned char insBat3Hold;
|
}ccuSetParmCmd;
|
||||||
}ccuParamCmd;
|
|
||||||
|
typedef struct {
|
||||||
|
unsigned char workCondition;
|
||||||
|
unsigned char fcuCmd;
|
||||||
|
unsigned char fcuPowerEfficiency;
|
||||||
|
unsigned char fcuInsEfficiency;
|
||||||
|
unsigned char insBatCmd;
|
||||||
|
unsigned char powerBatCmd;
|
||||||
|
unsigned char powerBatEfficiency;
|
||||||
|
unsigned char heartbeat;
|
||||||
|
unsigned char masterState;
|
||||||
|
}ccuColCmd;
|
||||||
|
|
||||||
typedef struct disHighVolBusState
|
typedef struct disHighVolBusState
|
||||||
{
|
{
|
||||||
@@ -263,13 +274,9 @@ typedef struct disLowBusCmd
|
|||||||
unsigned char emergencyLithiumBatteryGroup1CircuitBreaker;
|
unsigned char emergencyLithiumBatteryGroup1CircuitBreaker;
|
||||||
}disLowBusCmd;
|
}disLowBusCmd;
|
||||||
|
|
||||||
|
|
||||||
#pragma pack (0)
|
#pragma pack (0)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//状态结构体定义
|
//状态结构体定义
|
||||||
|
|
||||||
typedef struct pmState
|
typedef struct pmState
|
||||||
{
|
{
|
||||||
ccuState ccustate;
|
ccuState ccustate;
|
||||||
@@ -338,52 +345,13 @@ typedef struct pmState
|
|||||||
/* data */
|
/* data */
|
||||||
} disBus4Breaker;
|
} disBus4Breaker;
|
||||||
|
|
||||||
|
typedef struct disSysBreakerList
|
||||||
enum disBreaker{
|
{
|
||||||
bus1_fuelCellCircuitBreaker,
|
disBus1Breaker bus1Breaker;
|
||||||
bus1_powerLithiumBatteryCircuitBreaker,
|
disBus2Breaker bus2Breaker;
|
||||||
bus1_propulsionMotorCircuitBreaker,
|
disBus3Breaker bus3Breaker;
|
||||||
bus1_lithiumBatteryGroupInstrumentCircuitBreaker,
|
disBus4Breaker bus4Breaker;
|
||||||
bus1_dcDc5ModuleCircuitBreaker,
|
} disSysBreaker;
|
||||||
bus1_bowHighVoltageDistributionBoxCircuitBreaker,
|
|
||||||
bus1_sternFTDevice45CircuitBreaker,
|
|
||||||
bus1_sternRudderSwitch1CircuitBreaker,
|
|
||||||
bus1_sternRudderSwitch2CircuitBreaker,
|
|
||||||
bus1_fbReservedCircuitBreaker,
|
|
||||||
bus1_tyzReservedCircuitBreaker,
|
|
||||||
bus1_reservedCircuitBreaker,
|
|
||||||
|
|
||||||
bus2_bowFTDevice123CircuitBreaker,
|
|
||||||
bus2_actuatorCircuitBreaker,
|
|
||||||
bus2_mastSteeringGearControlBoxCircuitBreaker,
|
|
||||||
bus2_xczCircuitBreaker,
|
|
||||||
bus2_bowRudderControlBoxCircuitBreaker,
|
|
||||||
bus2_openWaterCoverStartCylinderCircuitBreaker,
|
|
||||||
|
|
||||||
bus3_lithiumBatteryGroupInstrumentCircuitBreaker,
|
|
||||||
bus3_bowLowVoltageDistributionBoxCircuitBreaker,
|
|
||||||
bus3_unit4InstrumentDC48VCircuitBreaker,
|
|
||||||
bus3_dcC1DCDistributionPanelCircuitBreaker,
|
|
||||||
bus3_reservedCircuitBreaker1,
|
|
||||||
bus3_reservedCircuitBreaker2,
|
|
||||||
bus3_emergencyLithiumBatteryGroup2CircuitBreaker,
|
|
||||||
|
|
||||||
bus4_unit1CircuitBreaker,
|
|
||||||
bus4_unit2CircuitBreaker,
|
|
||||||
bus4_unit3CircuitBreaker,
|
|
||||||
bus4_unit5CircuitBreaker,
|
|
||||||
bus4_bowPZDeviceCircuitBreaker,
|
|
||||||
bus4_reservedCircuitBreaker1,
|
|
||||||
bus4_reservedCircuitBreaker2
|
|
||||||
};
|
|
||||||
|
|
||||||
enum disBreakerOpt{
|
|
||||||
hold,
|
|
||||||
turn_off,
|
|
||||||
turn_on
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@@ -469,4 +469,53 @@ bool udpComm::sendDisSysCmd(const disLowBusCmd cmd)
|
|||||||
}
|
}
|
||||||
delete msg;
|
delete msg;
|
||||||
return true;
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool udpComm::sendCcuColCmd(const ccuColCmd cmd)
|
||||||
|
{
|
||||||
|
unsigned char* msgBuf;
|
||||||
|
Checksum cc;
|
||||||
|
msg_CcuColCmdMsg* msg = new msg_CcuColCmdMsg;
|
||||||
|
msg->header.id = CCU_CMD_ID;
|
||||||
|
msg->header.start1 = CCU_UDPMSG_START1;
|
||||||
|
msg->header.start2 = CCU_UDPMSG_START2;
|
||||||
|
msg->header.length = sizeof(ccuColCmd);
|
||||||
|
msg->cmd = cmd;
|
||||||
|
msgBuf = reinterpret_cast<unsigned char *>(msg);
|
||||||
|
cc = calculateChecksum(msgBuf,sizeof(msg_CcuColCmdMsg));
|
||||||
|
msg->checkCode = static_cast<cChecksum>(cc & 0xFF);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
sendMsg(msgBuf,sizeof(msg_CcuColCmdMsg));
|
||||||
|
}
|
||||||
|
catch(const std::exception& e)
|
||||||
|
{
|
||||||
|
std::cerr << e.what() << '\n';
|
||||||
|
}
|
||||||
|
delete msg;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
bool udpComm::sendCcuSetParmCmd(const ccuSetParmCmd cmd)
|
||||||
|
{
|
||||||
|
unsigned char* msgBuf;
|
||||||
|
Checksum cc;
|
||||||
|
msg_CcuSetParmMsg* msg = new msg_CcuSetParmMsg;
|
||||||
|
msg->header.id = CCU_SET_PARM_ID;
|
||||||
|
msg->header.start1 = CCU_UDPMSG_START1;
|
||||||
|
msg->header.start2 = CCU_UDPMSG_START2;
|
||||||
|
msg->header.length = sizeof(ccuSetParmCmd);
|
||||||
|
msg->cmd = cmd;
|
||||||
|
msgBuf = reinterpret_cast<unsigned char *>(msg);
|
||||||
|
cc = calculateChecksum(msgBuf,sizeof(msg_CcuSetParmMsg));
|
||||||
|
msg->checkCode = static_cast<cChecksum>(cc & 0xFF);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
sendMsg(msgBuf,sizeof(msg_CcuSetParmMsg));
|
||||||
|
}
|
||||||
|
catch(const std::exception& e)
|
||||||
|
{
|
||||||
|
std::cerr << e.what() << '\n';
|
||||||
|
}
|
||||||
|
delete msg;
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
@@ -44,8 +44,8 @@ public:
|
|||||||
bool popMsgFormQueue(double &time,msg_disHighBVolBusFbMsg &m);
|
bool popMsgFormQueue(double &time,msg_disHighBVolBusFbMsg &m);
|
||||||
bool popMsgFormQueue(double &time,msg_disLowBusFbMsg &m);
|
bool popMsgFormQueue(double &time,msg_disLowBusFbMsg &m);
|
||||||
|
|
||||||
bool sendCcuColCmd(const msg_CcuColCmdMsg m);
|
bool sendCcuColCmd(const ccuColCmd cmd);
|
||||||
bool sendCcuSetParmCmd(const msg_CcuSetParmMsg m);
|
bool sendCcuSetParmCmd(const ccuSetParmCmd cmd);
|
||||||
|
|
||||||
bool sendDisSysCmd(const disHighVolBusCmd cmd);
|
bool sendDisSysCmd(const disHighVolBusCmd cmd);
|
||||||
bool sendDisSysCmd(const disHighAVolBusCmd cmd);
|
bool sendDisSysCmd(const disHighAVolBusCmd cmd);
|
||||||
|
|||||||
@@ -33,10 +33,9 @@ TEST_CASE("SQLiteDB Test", "[SQLiteDB]") {
|
|||||||
REQUIRE(stateDataForGet.event_id == 1);
|
REQUIRE(stateDataForGet.event_id == 1);
|
||||||
REQUIRE(stateDataForGet.fault_code == 1);
|
REQUIRE(stateDataForGet.fault_code == 1);
|
||||||
REQUIRE(stateDataForGet.note == "test");
|
REQUIRE(stateDataForGet.note == "test");
|
||||||
|
|
||||||
//REQUIRE(db.clearPowerData(stateDataForGet) == true);
|
//REQUIRE(db.clearPowerData(stateDataForGet) == true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user