This commit is contained in:
zjk
2025-06-06 13:28:05 +08:00
parent 8fab3bdf06
commit 035205101b
17 changed files with 429 additions and 96 deletions
+198 -11
View File
@@ -38,12 +38,48 @@ bool PowerManagerFsm::handPowerProtection(DevCmdExt const &e){
e.id == DeviceId::forwardSonar ||
e.id == DeviceId::lowFreqSonar ||
e.id == DeviceId::DVL ||
e.id == DeviceId::USBL){
if(e.cmd == 1){
LOG_F(INFO, "水声设备操作上电保护 %d 已关闭", e.id);
return false;
e.id == DeviceId::USBL)
{
if(e.cmd == 1)
{
if(pm->m_depth < 10)
{
LOG_F(INFO, "水下设备操作上电保护 %d ", e.id);
return false;
}
else
return true;
}
}
}
void PowerManagerFsm::handleNoPowerDeviceCmd(int id , int cmd){
if(id == DeviceId::depth1 ||
id == DeviceId::depth2 ||
id == DeviceId::depth3 ||
id == DeviceId::overDeep1 ||
id == DeviceId::overDeep2 ||
id == DeviceId::ctd1 ||
id == DeviceId::ctd2 ||
id == DeviceId::soundVeloc ||
id == DeviceId::waterInject ||
id == DeviceId::launchControler ||
id == DeviceId::photoSensor ||
id == DeviceId::electSensor ||
id == DeviceId::commMast ||
id == DeviceId::ntp ||
id == DeviceId::bowThrow ||
id == DeviceId::sternThrow ||
id == DeviceId::ins ||
id == DeviceId::ntp ||
id == DeviceId::inputWaterSensor1 ||
id == DeviceId::inputWaterSensor2 ||
id == DeviceId::inputWaterSensor3
)
{
LOG_F(INFO, "无动力电设备操作");
}
}
void PowerManagerFsm::react(DeviceCmd const &){
@@ -237,13 +273,17 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
#endif
if (e.cmd == 0)
{
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_OFF);
MOOSPause(10);
pm->m_subDisSysCmd.bowCover1 = 0;
//TODO :动力电断电
}
else if (e.cmd == 1)
{
pm->m_subDisSysCmd.bowCover1 = 1;
//TODO :动力电上电
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_ON);
MOOSPause(1);
pm->m_subDisSysCmd.bowCover1 = 1;
}
else if (e.cmd == 2)
{
@@ -252,6 +292,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
else if (e.cmd == 3)
{
//TODO :动力电上电
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_ON);
}
else if (e.cmd == 4)
{
@@ -260,6 +301,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
else if (e.cmd == 5)
{
//TODO :动力电断电
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_OFF);
}
else
{
@@ -276,13 +318,17 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
#endif
if (e.cmd == 0)
{
pm->m_subDisSysCmd.bowCover2 = 0;
//TODO :动力电断电
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_OFF);
MOOSPause(1);
pm->m_subDisSysCmd.bowCover2 = 0;
}
else if (e.cmd == 1)
{
pm->m_subDisSysCmd.bowCover2 = 1;
//TODO :动力电上电
MOOSPause(1);
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_ON);
}
else if (e.cmd == 2)
{
@@ -299,6 +345,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
else if (e.cmd == 5)
{
//TODO :动力电断电
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_OFF);
}
else
{
@@ -316,11 +363,15 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
{
pm->m_subDisSysCmd.bowCover3 = 0;
//TODO :动力电断电
MOOSPause(1);
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_OFF);
}
else if (e.cmd == 1)
{
pm->m_subDisSysCmd.bowCover3 = 1;
//TODO :动力电上电
MOOSPause(1);
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_ON);
}
else if (e.cmd == 2)
{
@@ -329,6 +380,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
else if (e.cmd == 3)
{
//TODO :动力电上电
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_ON);
}
else if (e.cmd == 4)
{
@@ -337,6 +389,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
else if (e.cmd == 5)
{
//TODO :动力电断电
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_OFF);
}
else
{
@@ -354,11 +407,15 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
{
pm->m_subDisSysCmd.bowCover4 = 0;
//TODO :动力电断电
MOOSPause(1);
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_OFF);
}
else if (e.cmd == 1)
{
pm->m_subDisSysCmd.bowCover4 = 1;
//TODO :动力电上电
MOOSPause(1);
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_ON);
}
else if (e.cmd == 2)
{
@@ -367,6 +424,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
else if (e.cmd == 3)
{
//TODO :动力电上电
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_ON);
}
else if (e.cmd == 4)
{
@@ -375,6 +433,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
else if (e.cmd == 5)
{
//TODO :动力电断电
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_OFF);
}
else
{
@@ -392,11 +451,15 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
{
pm->m_subDisSysCmd.bowCover5 = 0;
//TODO :动力电断电
MOOSPause(1);
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_OFF);
}
else if (e.cmd == 1)
{
pm->m_subDisSysCmd.bowCover5 = 1;
//TODO :动力电上电
MOOSPause(1);
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_ON);
}
else if (e.cmd == 2)
{
@@ -405,6 +468,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
else if (e.cmd == 3)
{
//TODO :动力电上电
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_ON);
}
else if (e.cmd == 4)
{
@@ -413,6 +477,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
else if (e.cmd == 5)
{
//TODO :动力电断电
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_OFF);
}
else
{
@@ -430,11 +495,15 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
{
pm->m_subDisSysCmd.bowCover6 = 0;
//TODO :动力电断电
MOOSPause(1);
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_OFF);
}
else if (e.cmd == 1)
{
pm->m_subDisSysCmd.bowCover6 = 1;
//TODO :动力电上电
MOOSPause(1);
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_ON);
}
else if (e.cmd == 2)
{
@@ -443,6 +512,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
else if (e.cmd == 3)
{
//TODO :动力电上电
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_ON);
}
else if (e.cmd == 4)
{
@@ -451,6 +521,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
else if (e.cmd == 5)
{
//TODO :动力电断电
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_OFF);
}
else
{
@@ -468,11 +539,15 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
{
pm->m_subDisSysCmd.bowRudderDeploy = 0;
//TODO :动力电断电
MOOSPause(1);
pm->m_lowerCommManager->operate_HVA_bowRudderControlBoxCircuit_Breaker(BREAK_OFF);
}
else if (e.cmd == 1)
{
pm->m_subDisSysCmd.bowRudderDeploy = 1;
//TODO :动力电上电
MOOSPause(1);
pm->m_lowerCommManager->operate_HVA_bowRudderControlBoxCircuit_Breaker(BREAK_ON);
}
else if (e.cmd == 2)
{
@@ -481,6 +556,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
else if (e.cmd == 3)
{
//TODO :动力电上电
pm->m_lowerCommManager->operate_HVA_bowRudderControlBoxCircuit_Breaker(BREAK_ON);
}
else if (e.cmd == 4)
{
@@ -489,6 +565,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
else if (e.cmd == 5)
{
//TODO :动力电断电
pm->m_lowerCommManager->operate_HVA_bowRudderControlBoxCircuit_Breaker(BREAK_OFF);
}
else
{
@@ -506,11 +583,16 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
{
pm->m_subDisSysCmd.bowRudderServo1 = 0;
//TODO :动力电断电
MOOSPause(1);
pm->m_lowerCommManager->operate_HVA_bowRudderControlBoxCircuit_Breaker(BREAK_OFF);
}
else if (e.cmd == 1)
{
pm->m_subDisSysCmd.bowRudderServo1 = 1;
//TODO :动力电上电
MOOSPause(1);
pm->m_lowerCommManager->operate_HVA_bowRudderControlBoxCircuit_Breaker(BREAK_ON);
}
else if (e.cmd == 2)
{
@@ -519,6 +601,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
else if (e.cmd == 3)
{
//TODO :动力电上电
pm->m_lowerCommManager->operate_HVA_bowRudderControlBoxCircuit_Breaker(BREAK_ON);
}
else if (e.cmd == 4)
{
@@ -527,6 +610,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
else if (e.cmd == 5)
{
//TODO :动力电断电
pm->m_lowerCommManager->operate_HVA_bowRudderControlBoxCircuit_Breaker(BREAK_OFF);
}
else
{
@@ -544,11 +628,15 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
{
pm->m_subDisSysCmd.bowRudderServo2 = 0;
//TODO :动力电断电
MOOSPause(1);
pm->m_lowerCommManager->operate_HVA_bowRudderControlBoxCircuit_Breaker(BREAK_OFF);
}
else if (e.cmd == 1)
{
pm->m_subDisSysCmd.bowRudderServo2 = 1;
//TODO :动力电上电
MOOSPause(1);
pm->m_lowerCommManager->operate_HVA_bowRudderControlBoxCircuit_Breaker(BREAK_ON);
}
else if (e.cmd == 2)
{
@@ -557,6 +645,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
else if (e.cmd == 3)
{
//TODO :动力电上电
pm->m_lowerCommManager->operate_HVA_bowRudderControlBoxCircuit_Breaker(BREAK_ON);
}
else if (e.cmd == 4)
{
@@ -565,6 +654,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
else if (e.cmd == 5)
{
//TODO :动力电断电
pm->m_lowerCommManager->operate_HVA_bowRudderControlBoxCircuit_Breaker(BREAK_OFF);
}
else
{
@@ -745,11 +835,15 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
{
pm->m_subDisSysCmd.bowWaterInet1 = 0;
//TODO :动力电断电
MOOSPause(1);
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(BREAK_OFF);
}
else if (e.cmd == 1)
{
pm->m_subDisSysCmd.bowWaterInet1 = 1;
//TODO :动力电上电
MOOSPause(1);
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(BREAK_ON);
}
else if (e.cmd == 2)
{
@@ -758,6 +852,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
else if (e.cmd == 3)
{
//TODO :动力电上电
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(BREAK_ON);
}
else if (e.cmd == 4)
{
@@ -766,6 +861,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
else if (e.cmd == 5)
{
//TODO :动力电断电
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(BREAK_OFF);
}
else
{
@@ -781,12 +877,17 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
#endif
if (e.cmd == 0)
{
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(BREAK_OFF);
MOOSPause(1);
pm->m_subDisSysCmd.bowWaterInet2 = 0;
//TODO :动力电断电
}
else if (e.cmd == 1)
{
pm->m_subDisSysCmd.bowWaterInet2 = 1;
MOOSPause(1);
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(BREAK_ON);
//TODO :动力电上电
}
else if (e.cmd == 2)
@@ -796,6 +897,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
else if (e.cmd == 3)
{
//TODO :动力电上电
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(BREAK_ON);
}
else if (e.cmd == 4)
{
@@ -804,6 +906,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
else if (e.cmd == 5)
{
//TODO :动力电断电
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(BREAK_OFF);
}
else
{
@@ -819,6 +922,8 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
#endif
if (e.cmd == 0)
{
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(BREAK_OFF);
MOOSPause(1);
pm->m_subDisSysCmd.bowWaterInet3 = 0;
//TODO :动力电断电
}
@@ -826,6 +931,8 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
{
pm->m_subDisSysCmd.bowWaterInet3 = 1;
//TODO :动力电上电
MOOSPause(1);
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(BREAK_ON);
}
else if (e.cmd == 2)
{
@@ -834,6 +941,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
else if (e.cmd == 3)
{
//TODO :动力电上电
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(BREAK_ON);
}
else if (e.cmd == 4)
{
@@ -842,6 +950,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
else if (e.cmd == 5)
{
//TODO :动力电断电
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(BREAK_OFF);
}
else
{
@@ -857,6 +966,8 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
#endif
if (e.cmd == 0)
{
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(BREAK_OFF);
MOOSPause(1);
pm->m_subDisSysCmd.bowWaterInet4 = 0;
//TODO :动力电断电
}
@@ -864,6 +975,8 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
{
pm->m_subDisSysCmd.bowWaterInet4 = 1;
//TODO :动力电上电
MOOSPause(1);
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(BREAK_ON);
}
else if (e.cmd == 2)
{
@@ -872,6 +985,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
else if (e.cmd == 3)
{
//TODO :动力电上电
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(BREAK_ON);
}
else if (e.cmd == 4)
{
@@ -880,6 +994,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
else if (e.cmd == 5)
{
//TODO :动力电断电
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(BREAK_OFF);
}
else
{
@@ -2030,40 +2145,112 @@ void PowerManagerFsm::handelPowerCmd(){
switch (pm->m_msCmd.powerCMD)
{
case 0:
LOG_F(INFO, "收到上位机控制指令:关机");
LOG_F(INFO, "收到上位机控制指令:关机");
//1. 关闭动力电池
pm->m_CcuColCmd.powerBatCmd = BatteryCommand::Stop;
MOOSPause(3);
while (!(pm->m_systemData->dyn_pos_relay_status == 0x02 && pm->m_systemData->dyn_neg_relay_status == 0x02))
{
LOG_F(INFO,"动力锂电池下电中...");
MOOSPause(3);
}
LOG_F(INFO, "动力锂电池已下电");
//2. 断掉所有动力电断路器
//2.1 断开所有艏部高压断路器
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_OFF);
pm->m_lowerCommManager->operate_HVA_bowFTDevice123Circuit_Breaker(BREAK_OFF);
pm->m_lowerCommManager->operate_HVA_bowRudderControlBoxCircuit_Breaker(BREAK_OFF);
pm->m_lowerCommManager->operate_HVA_mastSteeringGearControlBoxCircuit_Breaker(BREAK_OFF);
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(BREAK_OFF);
pm->m_lowerCommManager->operate_HVA_xczCircuit_Breaker(BREAK_OFF);
//2.2 断开所有艉部高压设备断路器
pm->m_lowerCommManager->operate_HV_propulsionMotor_Breaker(BREAK_OFF);
pm->m_lowerCommManager->operate_HV_sternFt45_Breaker(BREAK_OFF);
pm->m_lowerCommManager->operate_HV_sternRudder1_Breaker(BREAK_OFF);
pm->m_lowerCommManager->operate_HV_sternRudder2_Breaker(BREAK_OFF);
pm->m_lowerCommManager->operate_HV_fbReserved_Breaker(BREAK_OFF);
pm->m_lowerCommManager->operate_HV_tyzReserved_Breaker(BREAK_OFF);
pm->m_lowerCommManager->operate_HV_reserved_Breaker(BREAK_OFF);
pm->m_lowerCommManager->operate_HV_dcDc5_Breaker(BREAK_OFF);
pm->m_lowerCommManager->operate_HV_coolingSystem_Breaker(BREAK_OFF);
//2.3 断开仪表预留断路器
pm->m_lowerCommManager->operate_LV_reservedCircuit1_Breaker(BREAK_OFF);
pm->m_lowerCommManager->operate_LV_reservedCircuit2_Breaker(BREAK_OFF);
pm->m_lowerCommManager->operate_LVA_reservedCircuit1_Breaker(BREAK_OFF);
pm->m_lowerCommManager->operate_LVA_reservedCircuit2_Breaker(BREAK_OFF);
pm->m_lowerCommManager->operate_LVA_bowPZDeviceCircuit_Breaker(BREAK_OFF);
//2.4 断开应急电池断路器
pm->m_lowerCommManager->operate_LV_mergencyLithiumBatteryGroup2Circuit_Breaker(BREAK_OFF);
pm->m_lowerCommManager->operate_LVA_mergencyLithiumBatteryGroup1Circuit_Breaker(BREAK_OFF);
//3. 次级配电系统恢复待机
pm->m_driver.getSTANDBYTable(&pm->m_subDisSysCmd);
MOOSPause(30);
//4. 执行锂电池关机指令
pm->m_CcuColCmd.insBatCmd = BatteryCommand::Stop;
break;
case 1:
LOG_F(INFO, "收到上位机控制指令:动力电上电");
//闭合动力电断路器
if(pm->m_lowerCommManager->operate_HV_powerLithiumBattery_Breaker(BREAK_ON))
LOG_F(INFO,"动力锂电池断路器闭合成功");
else
LOG_F(INFO,"动力锂电池断路器闭合操作失败");
//1. 动力锂电池上电
pm->m_CcuColCmd.powerBatCmd = BatteryCommand::Start;
//2. 燃料电池上电
break;
case 2:
LOG_F(INFO, "收到上位机控制指令:锂电池启动");
LOG_F(INFO, "收到上位机控制指令:锂动力电上电");
//1. 闭合动力电断路器
pm->m_lowerCommManager->operate_HV_powerLithiumBattery_Breaker(BREAK_ON);
//2. 动力锂电池上电
pm->m_CcuColCmd.powerBatCmd = BatteryCommand::Start;
break;
case 3:
LOG_F(INFO, "收到上位机控制指令:燃料电池");
LOG_F(INFO, "收到上位机控制指令:燃料电池上电");
//备用
break;
case 4:
LOG_F(INFO, "收到上位机控制指令:锂动力电关闭");
LOG_F(INFO, "收到上位机控制指令:锂动力电下电");
//1. 动力锂电池下电
MOOSPause(3);
while (!(pm->m_systemData->dyn_pos_relay_status == 0x02 && pm->m_systemData->dyn_neg_relay_status == 0x02))
{
LOG_F(INFO,"动力锂电池下电中...");
MOOSPause(3);
}
LOG_F(INFO, "动力锂电池已下电");
break;
case 5:
LOG_F(INFO, "收到上位机控制指令:燃料电池停机");
LOG_F(INFO, "收到上位机控制指令:燃料电池下电");
break;
case 6:
LOG_F(INFO, "收到上位机控制指令:燃料电池预热指令");
//备用
break;
case 7:
LOG_F(INFO, "收到上位机控制指令:燃料电池自检指令");
//备用
break;
case 8:
LOG_F(INFO, "收到上位机控制指令:燃料电池紧急停机");
//备用
break;
case 9:
LOG_F(INFO, "收到上位机控制指令:燃料电池复位指令");
//备用
break;
case 10:
LOG_F(INFO, "收到上位机控制指令:燃料电池补给指令");
//备用
break;
case 11:
LOG_F(INFO, "收到上位机控制指令:燃料电池停机维护");
//备用
break;
default:
break;