增加了交互变量的状态,增加了设备状态和设备表的json解析和生成函数,修复了设备表类和通信协议中不同的地方

This commit is contained in:
zjk
2025-02-19 17:18:39 +08:00
parent 5b9934c6f2
commit 75575f935c
10 changed files with 724 additions and 346 deletions
+2 -1
View File
@@ -73,7 +73,8 @@
"stop_token": "cpp",
"thread": "cpp",
"typeindex": "cpp",
"variant": "cpp"
"variant": "cpp",
"*.ipp": "cpp"
},
"C_Cpp.errorSquiggles": "disabled",
"marscode.chatLanguage": "cn",
+26 -26
View File
@@ -1,43 +1,43 @@
{
"HVABFTDev123Cur_uint16": 0,
"HVABactCur_uint16": 0,
"HVABbowRudCur_uint16": 0,
"HVABbowRudCur_uint16": 58353,
"HVABbusBCur_uint16": 0,
"HVABbusBVol_uint16": 0,
"HVABmastSteGeaCur_uint16": 0,
"HVABopenWaterCur_uint16": 0,
"HVABxczCur_uint16": 1,
"HVBBCCUCur_uint16": 0,
"HVABopenWaterCur_uint16": 52412,
"HVABxczCur_uint16": 18176,
"HVBBCCUCur_uint16": 193,
"HVBBFCSSecurSysCur_uint16": 0,
"HVBBbatInsCur_uint16": 0,
"HVBBbowLowVolDisBoxCur_uint16": 0,
"HVBBdcC1InsCur_uint16": 0,
"HVBBemer2BusVol_uint16": 0,
"HVBBemerBatCur_uint16": 0,
"HVBBinsBusVol_uint16": 0,
"HVBBbatInsCur_uint16": 22321,
"HVBBbowLowVolDisBoxCur_uint16": 22321,
"HVBBdcC1InsCur_uint16": 64995,
"HVBBemer2BusVol_uint16": 22272,
"HVBBemerBatCur_uint16": 47104,
"HVBBinsBusVol_uint16": 49152,
"HVBBplcCur_uint16": 0,
"HVBBreservedCur1_uint16": 0,
"HVBBreservedCur2_uint16": 0,
"HVBBunit4Cur_uint16": 0,
"HVBFTDev45Cur_uint16": 0,
"HVBbatGroupCur_uint16": 0,
"HVBbowHVolDisBoxCur_uint16": 0,
"HVBBreservedCur1_uint16": 127,
"HVBBreservedCur2_uint16": 127,
"HVBBunit4Cur_uint16": 64995,
"HVBFTDev45Cur_uint16": 32716,
"HVBbatGroupCur_uint16": 64208,
"HVBbowHVolDisBoxCur_uint16": 48482,
"HVBbusACur_uint16": 0,
"HVBbusAVol_uint16": 0,
"HVBbusAVol_uint16": 48479,
"HVBdcDc5Cur_uint16": 0,
"HVBfbCur_uint16": 0,
"HVBmotorCur_uint16": 0,
"HVBpowerBusCur_uint16": 0,
"HVBfbCur_uint16": 12532,
"HVBmotorCur_uint16": 32716,
"HVBpowerBusCur_uint16": 55488,
"HVBpowerBusVol_uint16": 0,
"HVBreservedCur1_uint16": 0,
"HVBreservedCur1_uint16": 58199,
"HVBreservedCur2_uint16": 0,
"HVBreservedCur3_uint16": 0,
"HVBsternRud1Cur_uint16": 0,
"HVBsternRud2Cur_uint16": 0,
"HVBreservedCur3_uint16": 58199,
"HVBsternRud1Cur_uint16": 12536,
"HVBsternRud2Cur_uint16": 32765,
"HVBtyzCur_uint16": 0,
"LVBBbowPZDevCur_uint16": 0,
"LVBBemerBatCur_uint16": 0,
"LVBBemerBusVol_uint16": 0,
"LVBBemerBatCur_uint16": 64768,
"LVBBemerBusVol_uint16": 44966,
"LVBBinsBusCur_uint16": 0,
"LVBBunit1Cur_uint16": 0,
"LVBBunit2Cur_uint16": 0,
+3 -3
View File
@@ -1,8 +1,8 @@
{
"HVolABusBreaker_unit16": 0,
"HVolBBusBreaker_unit16": 79,
"HVolBusBreaker_uint16": 58,
"LVolBusBreaker_uint16": 159,
"HVolBBusBreaker_unit16": 1640,
"HVolBusBreaker_uint16": 21943,
"LVolBusBreaker_uint16": 48483,
"faultCode_array":
[
0
+27 -27
View File
@@ -1,30 +1,30 @@
{
"backpressure1_fp32": 8.0,
"backpressure2_fp32": 9.0,
"ch4oConcent1_fp32": 53.0,
"ch4oConcent2_fp32": 81.0,
"ch4o_fp32": 0.0,
"excTemp_fp32": 84.0,
"faultCode1_uint16": 0,
"faultCode2_uint16": 0,
"faultCode3_uint16": 0,
"fcuCurIns_fp32": 0.0,
"backpressure1_fp32": 1.129433109780545e-38,
"backpressure2_fp32": 1.1736554268475541e-38,
"ch4oConcent1_fp32": -1.6155215737897056e+25,
"ch4oConcent2_fp32": 1.9618178500547439e-44,
"ch4o_fp32": 1.1736554268475541e-38,
"excTemp_fp32": 1.1736552867177076e-38,
"faultCode1_uint16": 36880,
"faultCode2_uint16": 48384,
"faultCode3_uint16": 32716,
"fcuCurIns_fp32": 8.602403116674333e-40,
"fcuCurPower_fp32": 0.0,
"fcuCur_fp32": 14.0,
"fcuFaultLeve_uint8": 0,
"fcuOutIns_fp32": 56.0,
"fcuOutPower_fp32": 386.0,
"fcuState_uint8": 0,
"fcuVolIns_fp32": 0.0,
"fcuVolPower_fp32": 0.0,
"fcuVol_fp32": 382.0,
"flameDet_uint8": 1,
"h2Concent1_fp32": 5.0,
"h2Concent2_fp32": 3.0,
"o2Concent1_fp32": 80.0,
"o2Concent2_fp32": 82.0,
"o2Level_fp32": 0.0,
"o2_fp32": 0.0,
"powLimit_fp32": 10.0,
"powerGen_fp32": 390.0
"fcuCur_fp32": -1.1078134507391041e+21,
"fcuFaultLeve_uint8": 96,
"fcuOutIns_fp32": 1.1754185405753675e-38,
"fcuOutPower_fp32": 194012262694912.0,
"fcuState_uint8": 92,
"fcuVolIns_fp32": 6.4791036039165641e+19,
"fcuVolPower_fp32": 1.1736554268475541e-38,
"fcuVol_fp32": 3.4331812375958018e-43,
"flameDet_uint8": 0,
"h2Concent1_fp32": 6.3595330338098774e+19,
"h2Concent2_fp32": 1.1736554268475541e-38,
"o2Concent1_fp32": 2.7580044118016918e+19,
"o2Concent2_fp32": 1.1736554268475541e-38,
"o2Level_fp32": 1.1736552867177076e-38,
"o2_fp32": -1.7820938281008955e+23,
"powLimit_fp32": 1.1736554268475541e-38,
"powerGen_fp32": 2.9084246393558663e+19
}
+26 -26
View File
@@ -1,38 +1,38 @@
{
"fcuCurToInsLimit1_uint8": 0,
"fcuCurToinsLimit2_uint8": 0,
"insBatCurElect_uint16": 0,
"insBatLimit_uint16": 89,
"insBatSoc_uint8": 57,
"insBatTotalElect_uint16": 829,
"insChargeState_uint8": 0,
"insCurSocHold1_uint8": 0,
"insBatCurElect_uint16": 32716,
"insBatLimit_uint16": 58199,
"insBatSoc_uint8": 0,
"insBatTotalElect_uint16": 24778,
"insChargeState_uint8": 209,
"insCurSocHold1_uint8": 48,
"insCurSocHold2_uint8": 0,
"insCurSocHold3_uint8": 0,
"insCurrent_uint16": 77,
"insCurrent_uint16": 0,
"insLinkVol_uint16": 0,
"insNegRelayState_uint8": 1,
"insNegRes_uint16": 0,
"insNegRelayState_uint8": 0,
"insNegRes_uint16": 48480,
"insPackVol_uint16": 0,
"insPosRelayState_uint8": 0,
"insPosRes_uint16": 0,
"insfaultCode_uint8": 0,
"insPosRes_uint16": 23716,
"insfaultCode_uint8": 228,
"powBatCurElect_uint16": 0,
"powBatSoc_uint8": 55,
"powBatTotalElect_uint16": 924,
"powChargeState_uint8": 0,
"powBatSoc_uint8": 0,
"powBatTotalElect_uint16": 48480,
"powChargeState_uint8": 18,
"powCurSocHold1_uint8": 0,
"powCurSocHold2_uint8": 0,
"powCurSocHold3_uint8": 0,
"powCurToInsLimit1_uint8": 0,
"powCurToinsLimit2_uint8": 0,
"powCur_uint16": 74,
"powLinkVol_uint16": 0,
"powNegRelayState_uint8": 0,
"powNegRes_uint16": 0,
"powPosRelayState_uint8": 0,
"powPosRes_uint16": 0,
"powerBatLimit_uint16": 53,
"powCurSocHold2_uint8": 244,
"powCurSocHold3_uint8": 212,
"powCurToInsLimit1_uint8": 95,
"powCurToinsLimit2_uint8": 189,
"powCur_uint16": 64208,
"powLinkVol_uint16": 32716,
"powNegRelayState_uint8": 48,
"powNegRes_uint16": 32716,
"powPosRelayState_uint8": 180,
"powPosRes_uint16": 48482,
"powerBatLimit_uint16": 32765,
"powerPackVol_uint16": 0,
"powfaultCode_uint8": 0
"powfaultCode_uint8": 85
}
+64
View File
@@ -0,0 +1,64 @@
{
"CTD1" : 0,
"CTD2" : 0,
"DVL" : 0,
"USBL" : 0,
"bowCover1" : 0,
"bowCover2" : 0,
"bowCover3" : 0,
"bowCover4" : 0,
"bowCover5" : 0,
"bowCover6" : 0,
"bowRudderDeploy" : 0,
"bowRudderServo1" : 0,
"bowRudderServo2" : 0,
"bowThrow" : 0,
"bowWaterlnet1" : 0,
"bowWaterlnet2" : 0,
"bowWaterlnet3" : 0,
"bowWaterlnet4" : 0,
"bowWaterlnet5" : 0,
"bowWaterlnet6" : 0,
"bowWaterlnet7" : 0,
"bowWaterlnet8" : 0,
"buoyage" : 0,
"buoyancyAdjust1" : 0,
"buoyancyAdjust2" : 0,
"buoyancyAdjust3" : 0,
"buoyancyAdjust4" : 0,
"buoyancyAdjust5" : 0,
"commMast" : 0,
"depth1" : 0,
"depth2" : 0,
"depth3" : 0,
"electSensor" : 0,
"forwardSonar" : 0,
"inputWaterSensor1" : 0,
"inputWaterSensor2" : 0,
"inputWaterSensor3" : 0,
"ins" : 0,
"launchControler" : 0,
"lowFreqSonar" : 0,
"mastLiftingServo" : 0,
"ntp" : 0,
"overDeep1" : 0,
"overDeep2" : 0,
"photoSensor" : 0,
"sideSonar" : 0,
"singleBeamSonar1" : 0,
"singleBeamSonar2" : 0,
"singleBeamSonar3" : 0,
"singleBeamSonar4" : 0,
"singleBeamSonar5" : 0,
"singleBeamSonar6" : 0,
"singleBeamSonar7" : 0,
"singleBeamSonar8" : 0,
"soundVeloc" : 0,
"sternRudderServo1" : 0,
"sternRudderServo2" : 0,
"sternRudderServo3" : 0,
"sternRudderServo4" : 0,
"sternThrow" : 0,
"thruster" : 0,
"waterInject" : 0
}
+58 -57
View File
@@ -161,6 +161,10 @@ bool PowerManger::Iterate()
//c. 上位机反馈
buildPowerSysReport();
}
///////////////////////
string a = m_driver.getSubDisCmdJson(&m_subDisSysCmd);
saveStringToJsonFile(a,"/home/zjk/project/H100/H100PowerManger/data/subDisSysCmd.json");
///////////////////////
//4. 打印错误信息
if(!m_udpComm.sError.empty())
{
@@ -353,6 +357,23 @@ bool PowerManger::updatePmState()
m_pmCurrentState.bus1State = m_disHighVolBusCurrentState.data;
m_db->insertDisHighVolBusData(m_disHighVolBusCurrentState.data); //写入数据库
msg_disHighVolBusFbMsg_Update_time = time;
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;
m_currentDisBreakerState.bus1Breaker = *pdis1;
delete pdis1;
}
if(!m_udpComm.m_qReceiveDisHighAVolBusBuffer.empty())
{
@@ -361,6 +382,17 @@ bool PowerManger::updatePmState()
m_pmCurrentState.bus2State = m_disHighAVolBusCurrentState.data;
m_db->insertDisHighAVolBusData(m_disHighAVolBusCurrentState.data); //写入数据库
msg_disHighAVolBusFbMsg_Update_time = time;
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;
m_currentDisBreakerState.bus2Breaker = *pdis2;
delete pdis2;
}
if(!m_udpComm.m_qReceiveDisHighBVolBusBuffer.empty())
{
@@ -369,6 +401,18 @@ bool PowerManger::updatePmState()
m_pmCurrentState.bus3State = m_disHighBVolBusCurrentState.data;
m_db->insertDisHighBVolBusData(m_disHighBVolBusCurrentState.data); //写入数据库
msg_disHighBVolBusFbMsg_Update_time = time;
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;
m_currentDisBreakerState.bus3Breaker = *pdis3;
delete pdis3;
}
if(!m_udpComm.m_qReceiveDisLowBusBuffer.empty())
{
@@ -377,6 +421,19 @@ bool PowerManger::updatePmState()
m_pmCurrentState.bus4State = m_disLowBusState.data;
m_db->insertDisLowBusData(m_disLowBusState.data); //写入数据库
msg_disLowBusFbMsg_Update_time = time;
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.bus4Breaker = *pdis4;
delete pdis4;
}
return true;
}
@@ -400,63 +457,8 @@ void PowerManger::ccuOption()
}
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);
@@ -502,7 +504,6 @@ void PowerManger::disSysOption()
d.reservedCircuitBreaker2 = getBreakerOption(m_targetDisBreakerState.bus4Breaker.reservedCircuitBreaker2);
d.emergencyLithiumBatteryGroup1CircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus4Breaker.emergencyLithiumBatteryGroup1CircuitBreaker);
m_udpComm.sendDisSysCmd(d);
//将指令写入数据库
m_db->insertDisSysCmd(a);
m_db->insertDisSysCmd(b);
+11 -5
View File
@@ -101,6 +101,16 @@ class PowerManger : public AppCastingMOOSApp
protected:
//===========================交互状态变量==================================
Driver m_driver;
pmState m_pmCurrentState; //能源系统的当前状态
disSysBreakerList m_currentDisBreakerState; //配电断路器状态
disSysBreakerList m_targetDisBreakerState;
DriverTable m_currentDriverState;
DriverTable m_MSDriverCmd;
DriverTable m_subDisSysCmd;
DriverTable m_subDisSysState;
//===========================================================================
//系统运行状态
unsigned char workCondition;
unsigned char currentMod;
@@ -109,7 +119,7 @@ class PowerManger : public AppCastingMOOSApp
vector<unsigned int> faultCode;
unsigned int soc;
unsigned int sustainableTime;
pmState m_pmCurrentState; //能源系统的当前状态
// 配电和CCU的反馈状态
msg_CcuStateFbMsg m_CcuCurrentState;
@@ -120,8 +130,6 @@ class PowerManger : public AppCastingMOOSApp
//下位机操作函数
//断路器状态
disSysBreakerList m_currentDisBreakerState;
disSysBreakerList m_targetDisBreakerState;
ccuColCmd m_CcuColCmd;
void disSysOption();
void ccuOption();
@@ -146,8 +154,6 @@ class PowerManger : public AppCastingMOOSApp
unsigned int m_faultNum;
unsigned int m_ticker;
public:
//===========================状态机实现==============================================
void printState(FSM_State st, string desp);
+474 -181
View File
@@ -65,16 +65,20 @@ void Driver::getSTANDBYTable(DriverTable* driverTable)
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->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->inputWaterSensor1 = DRIVER_FULL_POWER_ON;
driverTable->inputWaterSensor2 = DRIVER_FULL_POWER_ON;
driverTable->inputWaterSensor3 = DRIVER_FULL_POWER_ON;
//关闭所有负载
driverTable->photoSensor = DRIVER_STANDBY;
driverTable->electSensor = DRIVER_STANDBY;
driverTable->zhfk = DRIVER_STANDBY;
driverTable->launchControler = DRIVER_STANDBY;
driverTable->sideSonar = DRIVER_POWER_OFF;
driverTable->buoyage = DRIVER_POWER_OFF;
//关闭所有水声设备
@@ -88,31 +92,33 @@ void Driver::getSTANDBYTable(DriverTable* driverTable)
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->lowFreqSonar = 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->bowRudderDeploy = DRIVER_POWER_OFF;
driverTable->bowRudderServo1 = DRIVER_POWER_OFF;
driverTable->bowRudderServo2 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet1 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet2 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet3 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet4 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet5 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet6 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet7 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet8 = DRIVER_POWER_OFF;
driverTable->waterInject = DRIVER_POWER_OFF;
driverTable->wgDJ = DRIVER_POWER_OFF;
driverTable->mastLiftingServo = DRIVER_POWER_OFF;
driverTable->buoyancyAdjust1 = DRIVER_POWER_OFF;
driverTable->buoyancyAdjust2 = DRIVER_POWER_OFF;
driverTable->buoyancyAdjust3 = DRIVER_POWER_OFF;
driverTable->buoyancyAdjust4 = DRIVER_POWER_OFF;
driverTable->buoyancyAdjust5 = DRIVER_POWER_OFF;
driverTable->sternRudderServo1 = DRIVER_POWER_OFF;
driverTable->sternRudderServo2 = DRIVER_POWER_OFF;
driverTable->sternRudderServo3 = DRIVER_POWER_OFF;
@@ -130,18 +136,21 @@ void Driver::getSHORE_BASED_READYable(DriverTable* driverTable)
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->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->inputWaterSensor1 = DRIVER_FULL_POWER_ON;
driverTable->inputWaterSensor2 = DRIVER_FULL_POWER_ON;
driverTable->inputWaterSensor3 = DRIVER_FULL_POWER_ON;
// 允许启动负载
// 关闭xcz
driverTable->photoSensor = DRIVER_STANDBY;
driverTable->electSensor = DRIVER_STANDBY;
driverTable->zhfk = DRIVER_STANDBY;
driverTable->launchControler = DRIVER_STANDBY;
driverTable->sideSonar = DRIVER_POWER_OFF;
driverTable->buoyage = DRIVER_STANDBY;
@@ -156,32 +165,34 @@ void Driver::getSHORE_BASED_READYable(DriverTable* driverTable)
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->lowFreqSonar = 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->bowRudderDeploy = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo1 = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo2 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet1 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet2 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet3 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet4 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet5 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet6 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet7 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet8 = DRIVER_FULL_POWER_ON;
driverTable->waterInject = DRIVER_FULL_POWER_ON;
driverTable->wgDJ = DRIVER_FULL_POWER_ON;
driverTable->mastLiftingServo = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust1 = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust2 = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust3 = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust4 = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust5 = DRIVER_FULL_POWER_ON;
driverTable->sternRudderServo1 = DRIVER_FULL_POWER_ON;
driverTable->sternRudderServo2 = DRIVER_FULL_POWER_ON;
driverTable->sternRudderServo3 = DRIVER_FULL_POWER_ON;
@@ -199,17 +210,20 @@ void Driver::getWATER_BASED_READYable(DriverTable* driverTable)
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->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->inputWaterSensor1 = DRIVER_FULL_POWER_ON;
driverTable->inputWaterSensor2 = DRIVER_FULL_POWER_ON;
driverTable->inputWaterSensor3 = DRIVER_FULL_POWER_ON;
// 允许启动负载
driverTable->photoSensor = DRIVER_STANDBY;
driverTable->electSensor = DRIVER_STANDBY;
driverTable->zhfk = DRIVER_STANDBY;
driverTable->launchControler = DRIVER_STANDBY;
driverTable->sideSonar = DRIVER_STANDBY;
driverTable->buoyage = DRIVER_STANDBY;
@@ -225,32 +239,34 @@ void Driver::getWATER_BASED_READYable(DriverTable* driverTable)
driverTable->singleBeamSonar8 = DRIVER_STANDBY;
driverTable->DVL = DRIVER_FULL_POWER_ON;
driverTable->forwardSonar = DRIVER_STANDBY;
driverTable->zdp = DRIVER_STANDBY;
driverTable->usbl = DRIVER_STANDBY;
driverTable->lowFreqSonar = 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->bowRudderDeploy = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo1 = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo2 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet1 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet2 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet3 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet4 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet5 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet6 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet7 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet8 = DRIVER_FULL_POWER_ON;
driverTable->waterInject = DRIVER_FULL_POWER_ON;
driverTable->wgDJ = DRIVER_FULL_POWER_ON;
driverTable->mastLiftingServo = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust1 = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust2 = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust3 = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust4 = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust5 = DRIVER_FULL_POWER_ON;
driverTable->sternRudderServo1 = DRIVER_FULL_POWER_ON;
driverTable->sternRudderServo2 = DRIVER_FULL_POWER_ON;
driverTable->sternRudderServo3 = DRIVER_FULL_POWER_ON;
@@ -268,44 +284,49 @@ void Driver::getCRUISE_MODEable(DriverTable* driverTable)
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->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->inputWaterSensor1 = DRIVER_FULL_POWER_ON;
driverTable->inputWaterSensor2 = DRIVER_FULL_POWER_ON;
driverTable->inputWaterSensor3 = DRIVER_FULL_POWER_ON;
// 所有负载设备关机
driverTable->photoSensor = DRIVER_POWER_OFF;
driverTable->electSensor = DRIVER_POWER_OFF;
driverTable->zhfk = DRIVER_POWER_OFF;
driverTable->launchControler = 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->bowRudderDeploy = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo1 = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo2 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet1 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet2 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet3 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet4 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet5 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet6 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet7 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet8 = DRIVER_POWER_OFF;
driverTable->waterInject = DRIVER_POWER_OFF;
driverTable->wgDJ = DRIVER_FULL_POWER_ON;
driverTable->mastLiftingServo = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust1 = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust2 = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust3 = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust4 = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust5 = DRIVER_FULL_POWER_ON;
driverTable->sternRudderServo1 = DRIVER_FULL_POWER_ON;
driverTable->sternRudderServo2 = DRIVER_FULL_POWER_ON;
driverTable->sternRudderServo3 = DRIVER_FULL_POWER_ON;
@@ -324,44 +345,49 @@ void Driver::getHIGH_SPEED_MODEable(DriverTable* driverTable)
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->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->inputWaterSensor1 = DRIVER_FULL_POWER_ON;
driverTable->inputWaterSensor2 = DRIVER_FULL_POWER_ON;
driverTable->inputWaterSensor3 = DRIVER_FULL_POWER_ON;
// 所有负载设备关机
driverTable->photoSensor = DRIVER_POWER_OFF;
driverTable->electSensor = DRIVER_POWER_OFF;
driverTable->zhfk = DRIVER_POWER_OFF;
driverTable->launchControler = 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->bowRudderDeploy = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo1 = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo2 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet1 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet2 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet3 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet4 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet5 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet6 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet7 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet8 = DRIVER_POWER_OFF;
driverTable->waterInject = DRIVER_POWER_OFF;
driverTable->wgDJ = DRIVER_POWER_OFF;
driverTable->mastLiftingServo = DRIVER_POWER_OFF;
driverTable->buoyancyAdjust1 = DRIVER_POWER_OFF;
driverTable->buoyancyAdjust2 = DRIVER_POWER_OFF;
driverTable->buoyancyAdjust3 = DRIVER_POWER_OFF;
driverTable->buoyancyAdjust4 = DRIVER_POWER_OFF;
driverTable->buoyancyAdjust5 = DRIVER_POWER_OFF;
driverTable->sternRudderServo1 = DRIVER_FULL_POWER_ON;
driverTable->sternRudderServo2 = DRIVER_FULL_POWER_ON;
driverTable->sternRudderServo3 = DRIVER_FULL_POWER_ON;
@@ -380,44 +406,49 @@ void Driver::getASCEND_DESCENDable(DriverTable* driverTable)
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->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->inputWaterSensor1 = DRIVER_FULL_POWER_ON;
driverTable->inputWaterSensor2 = DRIVER_FULL_POWER_ON;
driverTable->inputWaterSensor3 = DRIVER_FULL_POWER_ON;
// 所有负载设备关机
driverTable->photoSensor = DRIVER_POWER_OFF;
driverTable->electSensor = DRIVER_POWER_OFF;
driverTable->zhfk = DRIVER_POWER_OFF;
driverTable->launchControler = 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->bowRudderDeploy = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo1 = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo2 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet1 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet2 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet3 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet4 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet5 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet6 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet7 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet8 = DRIVER_POWER_OFF;
driverTable->waterInject = DRIVER_POWER_OFF;
driverTable->wgDJ = DRIVER_FULL_POWER_ON;
driverTable->mastLiftingServo = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust1 = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust2 = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust3 = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust4 = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust5 = DRIVER_FULL_POWER_ON;
driverTable->sternRudderServo1 = DRIVER_FULL_POWER_ON;
driverTable->sternRudderServo2 = DRIVER_FULL_POWER_ON;
driverTable->sternRudderServo3 = DRIVER_FULL_POWER_ON;
@@ -436,44 +467,49 @@ void Driver::getBUOYANCY_ADJUSTable(DriverTable* driverTable)
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->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->inputWaterSensor1 = DRIVER_FULL_POWER_ON;
driverTable->inputWaterSensor2 = DRIVER_FULL_POWER_ON;
driverTable->inputWaterSensor3 = DRIVER_FULL_POWER_ON;
// 所有负载设备关机
driverTable->photoSensor = DRIVER_POWER_OFF;
driverTable->electSensor = DRIVER_POWER_OFF;
driverTable->zhfk = DRIVER_POWER_OFF;
driverTable->launchControler = 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->bowRudderDeploy = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo1 = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo2 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet1 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet2 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet3 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet4 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet5 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet6 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet7 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet8 = DRIVER_POWER_OFF;
driverTable->waterInject = DRIVER_POWER_OFF;
driverTable->wgDJ = DRIVER_FULL_POWER_ON;
driverTable->mastLiftingServo = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust1 = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust2 = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust3 = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust4 = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust5 = DRIVER_FULL_POWER_ON;
driverTable->sternRudderServo1 = DRIVER_FULL_POWER_ON;
driverTable->sternRudderServo2 = DRIVER_FULL_POWER_ON;
driverTable->sternRudderServo3 = DRIVER_FULL_POWER_ON;
@@ -492,44 +528,49 @@ void Driver::getUNDERWATER_RECONable(DriverTable* driverTable)
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->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->inputWaterSensor1 = DRIVER_FULL_POWER_ON;
driverTable->inputWaterSensor2 = DRIVER_FULL_POWER_ON;
driverTable->inputWaterSensor3 = DRIVER_FULL_POWER_ON;
// 所有负载设备关机
driverTable->photoSensor = DRIVER_POWER_OFF;
driverTable->electSensor = DRIVER_POWER_OFF;
driverTable->zhfk = DRIVER_POWER_OFF;
driverTable->launchControler = 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->bowRudderDeploy = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo1 = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo2 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet1 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet2 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet3 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet4 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet5 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet6 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet7 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet8 = DRIVER_POWER_OFF;
driverTable->waterInject = DRIVER_POWER_OFF;
driverTable->wgDJ = DRIVER_POWER_OFF;
driverTable->mastLiftingServo = DRIVER_POWER_OFF;
driverTable->buoyancyAdjust1 = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust2 = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust3 = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust4 = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust5 = DRIVER_FULL_POWER_ON;
driverTable->sternRudderServo1 = DRIVER_FULL_POWER_ON;
driverTable->sternRudderServo2 = DRIVER_FULL_POWER_ON;
driverTable->sternRudderServo3 = DRIVER_FULL_POWER_ON;
@@ -548,44 +589,49 @@ void Driver::getSURFACE_RECONable(DriverTable* driverTable)
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->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->inputWaterSensor1 = DRIVER_FULL_POWER_ON;
driverTable->inputWaterSensor2 = DRIVER_FULL_POWER_ON;
driverTable->inputWaterSensor3 = DRIVER_FULL_POWER_ON;
// 所有负载设备关机
driverTable->photoSensor = DRIVER_STANDBY;
driverTable->electSensor = DRIVER_STANDBY;
driverTable->zhfk = DRIVER_POWER_OFF;
driverTable->launchControler = 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->bowRudderDeploy = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo1 = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo2 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet1 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet2 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet3 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet4 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet5 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet6 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet7 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet8 = DRIVER_POWER_OFF;
driverTable->waterInject = DRIVER_POWER_OFF;
driverTable->wgDJ = DRIVER_FULL_POWER_ON;
driverTable->mastLiftingServo = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust1 = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust2 = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust3 = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust4 = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust5 = DRIVER_FULL_POWER_ON;
driverTable->sternRudderServo1 = DRIVER_FULL_POWER_ON;
driverTable->sternRudderServo2 = DRIVER_FULL_POWER_ON;
driverTable->sternRudderServo3 = DRIVER_FULL_POWER_ON;
@@ -603,44 +649,49 @@ void Driver::getDJ_MODEable(DriverTable* driverTable)
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->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->inputWaterSensor1 = DRIVER_FULL_POWER_ON;
driverTable->inputWaterSensor2 = DRIVER_FULL_POWER_ON;
driverTable->inputWaterSensor3 = DRIVER_FULL_POWER_ON;
// 所有负载设备关机
driverTable->photoSensor = DRIVER_POWER_OFF;
driverTable->electSensor = DRIVER_POWER_OFF;
driverTable->zhfk = DRIVER_FULL_POWER_ON;
driverTable->launchControler = 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->bowRudderDeploy = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo1 = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo2 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet1 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet2 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet3 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet4 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet5 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet6 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet7 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet8 = DRIVER_FULL_POWER_ON;
driverTable->waterInject = DRIVER_POWER_OFF;
driverTable->wgDJ = DRIVER_FULL_POWER_ON;
driverTable->mastLiftingServo = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust1 = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust2 = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust3 = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust4 = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust5 = DRIVER_FULL_POWER_ON;
driverTable->sternRudderServo1 = DRIVER_FULL_POWER_ON;
driverTable->sternRudderServo2 = DRIVER_FULL_POWER_ON;
driverTable->sternRudderServo3 = DRIVER_FULL_POWER_ON;
@@ -660,12 +711,16 @@ std::string Driver::saveDriverTableToJson(const DriverTable* driverTable)
root["depth3"] = driverTable->depth3;
root["overDeep1"] = driverTable->overDeep1;
root["overDeep2"] = driverTable->overDeep2;
root["CTD1"] = driverTable->CTD1;
root["CTD2"] = driverTable->CTD2;
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["inputWaterSensor1"] = driverTable->inputWaterSensor1;
root["inputWaterSensor2"] = driverTable->inputWaterSensor2;
root["inputWaterSensor3"] = driverTable->inputWaterSensor3;
root["singleBeamSonar1"] = driverTable->singleBeamSonar1;
root["singleBeamSonar2"] = driverTable->singleBeamSonar2;
root["singleBeamSonar3"] = driverTable->singleBeamSonar3;
@@ -676,30 +731,32 @@ std::string Driver::saveDriverTableToJson(const DriverTable* driverTable)
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["lowFreqSonar"] = driverTable->lowFreqSonar;
root["USBL"] = driverTable->USBL;
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["bowRudderDeploy"] = driverTable->bowRudderDeploy;
root["bowRudderServo1"] = driverTable->bowRudderServo1;
root["bowRudderServo2"] = driverTable->bowRudderServo2;
root["bowWaterlnet1"] = driverTable->bowWaterlnet1;
root["bowWaterlnet2"] = driverTable->bowWaterlnet2;
root["bowWaterlnet3"] = driverTable->bowWaterlnet3;
root["bowWaterlnet4"] = driverTable->bowWaterlnet4;
root["bowWaterlnet5"] = driverTable->bowWaterlnet5;
root["bowWaterlnet6"] = driverTable->bowWaterlnet6;
root["bowWaterlnet7"] = driverTable->bowWaterlnet7;
root["bowWaterlnet8"] = driverTable->bowWaterlnet8;
root["waterInject"] = driverTable->waterInject;
root["wgDJ"] = driverTable->wgDJ;
root["mastLiftingServo"] = driverTable->mastLiftingServo;
root["buoyancyAdjust1"] = driverTable->buoyancyAdjust1;
root["buoyancyAdjust2"] = driverTable->buoyancyAdjust2;
root["buoyancyAdjust3"] = driverTable->buoyancyAdjust3;
root["buoyancyAdjust4"] = driverTable->buoyancyAdjust4;
root["buoyancyAdjust5"] = driverTable->buoyancyAdjust5;
root["sternRudderServo1"] = driverTable->sternRudderServo1;
root["sternRudderServo2"] = driverTable->sternRudderServo2;
root["sternRudderServo3"] = driverTable->sternRudderServo3;
@@ -709,13 +766,249 @@ std::string Driver::saveDriverTableToJson(const DriverTable* driverTable)
root["sternThrow"] = driverTable->sternThrow;
root["photoSensor"] = driverTable->photoSensor;
root["electSensor"] = driverTable->electSensor;
root["zhfk"] = driverTable->zhfk;
root["launchControler"] = driverTable->launchControler;
root["sideSonar"] = driverTable->sideSonar;
root["buoyage"] = driverTable->buoyage;
return root.toStyledString();
}
std::string Driver::getDriverTableJson()
{
return saveDriverTableToJson(currentDriverTable);
}
std::string Driver::getSubDisCmdJson(const DriverTable* driverTable)
{
return saveDriverTableToJson(currentDriverTable);
}
std::string Driver::getDriveStateJson(const DriverTable* driverTable)
{
return saveDriverTableToJson(currentDriverTable);
}
int Driver::SafeReadUInt(const Json::Value& root, const std::string& key, unsigned char& value) {
if (!root.isMember(key)) {
std::cerr << "错误: 缺少字段 " << key << std::endl;
return -1; // 返回-1表示缺少字段
}
if (!root[key].isUInt()) {
std::cerr << "错误: 字段 " << key << " 数据类型不正确,应为无符号整数" << std::endl;
return -2; // 返回-2表示数据类型错误
}
value = root[key].asUInt();
return 0; // 成功读取
}
int Driver::loadDriverTableFromJson(const std::string &strJson, DriverTable& table)
{
Json::CharReaderBuilder builder;
Json::Value root;
std::string errs;
// 解析JSON字符串
std::istringstream s(strJson);
if (!Json::parseFromStream(builder, s, &root, &errs))
{
std::cerr << "JSON解析失败: " << errs << std::endl;
return -3; // 解析失败
}
// 读取 JSON 数据并填充结构体,逐个字段检查
int error_code = 0;
error_code = SafeReadUInt(root, "depth1", table.depth1);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "depth2", table.depth2);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "depth3", table.depth3);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "overDeep1", table.overDeep1);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "overDeep2", table.overDeep2);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "ctd1", table.ctd1);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "ctd2", table.ctd2);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "soundVeloc", table.soundVeloc);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "commMast", table.commMast);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "ins", table.ins);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "ntp", table.ntp);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "inputWaterSensor1", table.inputWaterSensor1);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "inputWaterSensor2", table.inputWaterSensor2);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "inputWaterSensor3", table.inputWaterSensor3);
if (error_code != 0) return error_code;
// 水声设备
error_code = SafeReadUInt(root, "singleBeamSonar1", table.singleBeamSonar1);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "singleBeamSonar2", table.singleBeamSonar2);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "singleBeamSonar3", table.singleBeamSonar3);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "singleBeamSonar4", table.singleBeamSonar4);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "singleBeamSonar5", table.singleBeamSonar5);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "singleBeamSonar6", table.singleBeamSonar6);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "singleBeamSonar7", table.singleBeamSonar7);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "singleBeamSonar8", table.singleBeamSonar8);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "forwardSonar", table.forwardSonar);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "DVL", table.DVL);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "lowFreqSonar", table.lowFreqSonar);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "USBL", table.USBL);
if (error_code != 0) return error_code;
// 执行机构
error_code = SafeReadUInt(root, "bowWaterlnet1", table.bowWaterlnet1);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "bowWaterlnet2", table.bowWaterlnet2);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "bowWaterlnet3", table.bowWaterlnet3);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "bowWaterlnet4", table.bowWaterlnet4);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "bowWaterlnet5", table.bowWaterlnet5);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "bowWaterlnet6", table.bowWaterlnet6);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "bowWaterlnet7", table.bowWaterlnet7);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "bowWaterlnet8", table.bowWaterlnet8);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "bowRudderDeploy", table.bowRudderDeploy);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "bowRudderServo1", table.bowRudderServo1);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "bowRudderServo2", table.bowRudderServo2);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "bowCover1", table.bowCover1);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "bowCover2", table.bowCover2);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "bowCover3", table.bowCover3);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "bowCover4", table.bowCover4);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "bowCover5", table.bowCover5);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "bowCover6", table.bowCover6);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "waterInject", table.waterInject);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "mastLiftingServo", table.mastLiftingServo);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "buoyancyAdjust1", table.buoyancyAdjust1);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "buoyancyAdjust2", table.buoyancyAdjust2);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "buoyancyAdjust3", table.buoyancyAdjust3);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "buoyancyAdjust4", table.buoyancyAdjust4);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "buoyancyAdjust5", table.buoyancyAdjust5);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "sternRudderServo1", table.sternRudderServo1);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "sternRudderServo2", table.sternRudderServo2);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "sternRudderServo3", table.sternRudderServo3);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "sternRudderServo4", table.sternRudderServo4);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "thruster", table.thruster);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "bowThrow", table.bowThrow);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "sternThrow", table.sternThrow);
if (error_code != 0) return error_code;
// 负载
error_code = SafeReadUInt(root, "photoSensor", table.photoSensor);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "electSensor", table.electSensor);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "launchControler", table.launchControler);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "sideSonar", table.sideSonar);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "buoyage", table.buoyage);
if (error_code != 0) return error_code;
return 0; // 返回0表示所有数据成功读取
}
+33 -20
View File
@@ -2,6 +2,8 @@
#define DRIVER_H
#include "json/json.h"
#include "iostream"
#include <sstream>
#define DRIVER_POWER_OFF 0x00
#define DRIVER_FULL_POWER_ON 0x01
@@ -16,12 +18,15 @@ struct DriverTable
unsigned char depth3;
unsigned char overDeep1;
unsigned char overDeep2;
unsigned char CTD1;
unsigned char CTD2;
unsigned char ctd1;
unsigned char ctd2;
unsigned char soundVeloc;
unsigned char commMast;
unsigned char ins;
unsigned char ntp;
unsigned char inputWaterSensor1;
unsigned char inputWaterSensor2;
unsigned char inputWaterSensor3;
//水声设备
unsigned char singleBeamSonar1;
unsigned char singleBeamSonar2;
@@ -33,15 +38,17 @@ struct DriverTable
unsigned char singleBeamSonar8;
unsigned char forwardSonar;
unsigned char DVL;
unsigned char zdp;
unsigned char usbl;
unsigned char lowFreqSonar;
unsigned char USBL;
//执行机构
unsigned char bowOpen1;
unsigned char bowOpen2;
unsigned char bowOpen3;
unsigned char bowOpen4;
unsigned char bowOpen5;
unsigned char bowOpen6;
unsigned char bowWaterlnet1;
unsigned char bowWaterlnet2;
unsigned char bowWaterlnet3;
unsigned char bowWaterlnet4;
unsigned char bowWaterlnet5;
unsigned char bowWaterlnet6;
unsigned char bowWaterlnet7;
unsigned char bowWaterlnet8;
unsigned char bowRudderDeploy;
unsigned char bowRudderServo1;
unsigned char bowRudderServo2;
@@ -51,13 +58,13 @@ struct DriverTable
unsigned char bowCover4;
unsigned char bowCover5;
unsigned char bowCover6;
unsigned char bowCover7;
unsigned char bowCover8;
unsigned char waterInject;
unsigned char wgDJ;
unsigned char mastLiftingServo;
unsigned char buoyancyAdjust1;
unsigned char buoyancyAdjust2;
unsigned char buoyancyAdjust3;
unsigned char buoyancyAdjust4;
unsigned char buoyancyAdjust5;
unsigned char sternRudderServo1;
unsigned char sternRudderServo2;
unsigned char sternRudderServo3;
@@ -68,17 +75,17 @@ struct DriverTable
//负载
unsigned char photoSensor;
unsigned char electSensor;
unsigned char zhfk;
unsigned char launchControler;
unsigned char sideSonar;
unsigned char buoyage;
};
enum DriverState
{
POWER_OFF, // 断电
POWER_OFF, // 断电
FULL_POWER_ON, // 全电
INSTRUMENT_POWER_ON, // 仪表电上电
MOTIVE_POWER_ON, // 动力电上电
INSTRUMENT_POWER_ON, // 仪表电上电
MOTIVE_POWER_ON, // 动力电上电
};
enum workCondition
@@ -119,12 +126,18 @@ public:
void getUNDERWATER_RECONable(DriverTable* driverTable);
void getSURFACE_RECONable(DriverTable* driverTable);
void getDJ_MODEable(DriverTable* driverTable);
std::string saveDriverTableToJson(const DriverTable* driverTable);
std::string getDriverTableJson();
std::string getSubDisCmdJson(const DriverTable* driverTable);
std::string getDriveStateJson(const DriverTable* driverTable);
std::string saveDriverTableToJson(const DriverTable* driverTable);
int loadDriverTableFromJson(const std::string &strJson, DriverTable& table);
int SafeReadUInt(const Json::Value& root, const std::string& key, unsigned char& value);
private:
bool debug;
};