0702调试

This commit is contained in:
zjk
2025-07-02 16:20:36 +08:00
parent 16d4c25c77
commit ba8cd0383a
13 changed files with 1761 additions and 156 deletions
+55 -54
View File
@@ -6,7 +6,7 @@
#include "../faultCode.h"
// #define DEBUG
#define DEBUG_1
// #define DEBUG_1
// 定义静态成员
PowerManger* PowerManagerFsm::pm = nullptr;
void PowerManagerFsm::react(TaskStopEvent const &e) {
@@ -15,7 +15,7 @@ void PowerManagerFsm::react(TaskStopEvent const &e) {
};
void PowerManagerFsm::react(CycleTriggeredEvent const &){
// 更新当前设备状态
// 检测和更新状态
#ifdef DEBUG_1
pm->m_currentDriverState = pm->m_subDisSysState;
#else
@@ -33,10 +33,11 @@ void PowerManagerFsm::react(CycleTriggeredEvent const &){
//非调试模式下,对水声设备进行保护
if(pm->currentMod != PMMode::Debug)
{
if(pm->m_depth < 10)
if(pm->m_depth > 10)
{
if(pm->m_systemData->power_a_bus_status.xczCircuitBreaker == 1)
pm->m_lowerCommManager->operate_HVA_xczCircuit_Breaker(0);
//舷侧阵自动下电
pm->m_lowerCommManager->operate_HVA_xczCircuit_Breaker(BREAK_OFF);
MOOSPause(3);
pm->m_driver.setDeviceState(pm->m_subDisSysCmd, DeviceId::sideSonar, 0);
//所有水声设备下电
@@ -82,7 +83,7 @@ void PowerManagerFsm::handleBowRudderSystemCmd(int id, int cmd){
{
if(cmd == EquipmentCommand::OFF)
{
pm->m_lowerCommManager->operate_HVA_bowRudderControlBoxCircuit_Breaker(BREAK_OFF);
pm->m_lowerCommManager->operate_HVA_bowRudderControlBoxCircuit_Breaker(0);
MOOSPause(10);
pm->m_driver.setDeviceState(pm->m_subDisSysCmd, DeviceId::bowRudderDeploy, (unsigned char)cmd);
pm->m_driver.setDeviceState(pm->m_subDisSysCmd, DeviceId::bowRudderServo1, (unsigned char)cmd);
@@ -95,7 +96,7 @@ void PowerManagerFsm::handleBowRudderSystemCmd(int id, int cmd){
pm->m_driver.setDeviceState(pm->m_subDisSysCmd, DeviceId::bowRudderServo2, (unsigned char)cmd);
pm->m_upperCommManager->processPeriodicTasks();
MOOSPause(10);
pm->m_lowerCommManager->operate_HVA_bowRudderControlBoxCircuit_Breaker(BREAK_ON);
pm->m_lowerCommManager->operate_HVA_bowRudderControlBoxCircuit_Breaker(1);
}
}
}
@@ -112,7 +113,7 @@ void PowerManagerFsm::handleActuatorCmd(int id, int cmd){
{
if(cmd == EquipmentCommand::OFF)
{
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_OFF);
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(0);
MOOSPause(10);
pm->m_driver.setDeviceState(pm->m_subDisSysCmd, DeviceId::bowCover1, (unsigned char)cmd);
pm->m_driver.setDeviceState(pm->m_subDisSysCmd, DeviceId::bowCover2, (unsigned char)cmd);
@@ -129,7 +130,7 @@ void PowerManagerFsm::handleActuatorCmd(int id, int cmd){
pm->m_driver.setDeviceState(pm->m_subDisSysCmd, DeviceId::bowCover4, (unsigned char)cmd);
pm->m_driver.setDeviceState(pm->m_subDisSysCmd, DeviceId::bowCover5, (unsigned char)cmd);
pm->m_driver.setDeviceState(pm->m_subDisSysCmd, DeviceId::bowCover6, (unsigned char)cmd);
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_ON);
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(1);
}
}
}
@@ -149,7 +150,7 @@ void PowerManagerFsm::handleOpenWaterCmd(int id, int cmd)
{
if(cmd == EquipmentCommand::OFF)
{
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(BREAK_OFF);
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(0);
MOOSPause(10);
pm->m_driver.setDeviceState(pm->m_subDisSysCmd, DeviceId::bowWaterInet1, (unsigned char)cmd);
pm->m_driver.setDeviceState(pm->m_subDisSysCmd, DeviceId::bowWaterInet2, (unsigned char)cmd);
@@ -170,7 +171,7 @@ void PowerManagerFsm::handleOpenWaterCmd(int id, int cmd)
pm->m_driver.setDeviceState(pm->m_subDisSysCmd, DeviceId::bowWaterInet7, (unsigned char)cmd);
pm->m_driver.setDeviceState(pm->m_subDisSysCmd, DeviceId::bowWaterInet8, (unsigned char)cmd);
MOOSPause(10);
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(BREAK_ON);
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(1);
}
}
}
@@ -186,8 +187,8 @@ void PowerManagerFsm::handleSternRudderCmd(int id, int cmd)
{
if(cmd == EquipmentCommand::OFF)
{
pm->m_lowerCommManager->operate_HV_sternRudder1_Breaker(BREAK_OFF);
pm->m_lowerCommManager->operate_HV_sternRudder2_Breaker(BREAK_OFF);
pm->m_lowerCommManager->operate_HV_sternRudder1_Breaker(0);
pm->m_lowerCommManager->operate_HV_sternRudder2_Breaker(0);
MOOSPause(10);
pm->m_driver.setDeviceState(pm->m_subDisSysCmd, DeviceId::sternRudderServo1, (unsigned char)cmd);
pm->m_driver.setDeviceState(pm->m_subDisSysCmd, DeviceId::sternRudderServo2, (unsigned char)cmd);
@@ -201,8 +202,8 @@ void PowerManagerFsm::handleSternRudderCmd(int id, int cmd)
pm->m_driver.setDeviceState(pm->m_subDisSysCmd, DeviceId::sternRudderServo3, (unsigned char)cmd);
pm->m_driver.setDeviceState(pm->m_subDisSysCmd, DeviceId::sternRudderServo4, (unsigned char)cmd);
MOOSPause(10);
pm->m_lowerCommManager->operate_HV_sternRudder1_Breaker(BREAK_ON);
pm->m_lowerCommManager->operate_HV_sternRudder2_Breaker(BREAK_ON);
pm->m_lowerCommManager->operate_HV_sternRudder1_Breaker(1);
pm->m_lowerCommManager->operate_HV_sternRudder2_Breaker(1);
}
}
}
@@ -216,14 +217,14 @@ void PowerManagerFsm::handlePropulsionMotorCmd(int id, int cmd)
{
if(cmd == EquipmentCommand::OFF)
{
pm->m_lowerCommManager->operate_HV_propulsionMotor_Breaker(BREAK_OFF);
pm->m_lowerCommManager->operate_HV_propulsionMotor_Breaker(0);
MOOSPause(10);
pm->m_driver.setDeviceState(pm->m_subDisSysCmd, DeviceId::thruster, (unsigned char)cmd);
} else if(cmd == EquipmentCommand::ON)
{
pm->m_driver.setDeviceState(pm->m_subDisSysCmd, DeviceId::thruster, (unsigned char)cmd);
MOOSPause(10);
pm->m_lowerCommManager->operate_HV_propulsionMotor_Breaker(BREAK_ON);
pm->m_lowerCommManager->operate_HV_propulsionMotor_Breaker(1);
}
}
}
@@ -239,7 +240,7 @@ void PowerManagerFsm::handleBuoyancyAdjustmentCmd(int id, int cmd)
{
if(cmd == EquipmentCommand::OFF)
{
pm->m_lowerCommManager->operate_HVA_bowFTDevice123Circuit_Breaker(BREAK_OFF);
pm->m_lowerCommManager->operate_HVA_bowFTDevice123Circuit_Breaker(0);
MOOSPause(10);
pm->m_driver.setDeviceState(pm->m_subDisSysCmd, DeviceId::buoyancyAdjust1, (unsigned char)cmd);
pm->m_driver.setDeviceState(pm->m_subDisSysCmd, DeviceId::buoyancyAdjust2, (unsigned char)cmd);
@@ -250,7 +251,7 @@ void PowerManagerFsm::handleBuoyancyAdjustmentCmd(int id, int cmd)
pm->m_driver.setDeviceState(pm->m_subDisSysCmd, DeviceId::buoyancyAdjust2, (unsigned char)cmd);
pm->m_driver.setDeviceState(pm->m_subDisSysCmd, DeviceId::buoyancyAdjust3, (unsigned char)cmd);
MOOSPause(10);
pm->m_lowerCommManager->operate_HVA_bowFTDevice123Circuit_Breaker(BREAK_ON);
pm->m_lowerCommManager->operate_HVA_bowFTDevice123Circuit_Breaker(1);
}
}
}
@@ -262,7 +263,7 @@ void PowerManagerFsm::handleBuoyancyAdjustmentCmd(int id, int cmd)
{
if(cmd == EquipmentCommand::OFF)
{
pm->m_lowerCommManager->operate_HV_sternFt45_Breaker(BREAK_OFF);
pm->m_lowerCommManager->operate_HV_sternFt45_Breaker(0);
MOOSPause(10);
pm->m_driver.setDeviceState(pm->m_subDisSysCmd, DeviceId::buoyancyAdjust4, (unsigned char)cmd);
pm->m_driver.setDeviceState(pm->m_subDisSysCmd, DeviceId::buoyancyAdjust5, (unsigned char)cmd);
@@ -271,7 +272,7 @@ void PowerManagerFsm::handleBuoyancyAdjustmentCmd(int id, int cmd)
pm->m_driver.setDeviceState(pm->m_subDisSysCmd, DeviceId::buoyancyAdjust4, (unsigned char)cmd);
pm->m_driver.setDeviceState(pm->m_subDisSysCmd, DeviceId::buoyancyAdjust5, (unsigned char)cmd);
MOOSPause(10);
pm->m_lowerCommManager->operate_HV_sternFt45_Breaker(BREAK_ON);
pm->m_lowerCommManager->operate_HV_sternFt45_Breaker(1);
}
}
}
@@ -285,14 +286,14 @@ void PowerManagerFsm::handleFBSystemCmd(int id, int cmd)
{
if(cmd == EquipmentCommand::OFF)
{
pm->m_lowerCommManager->operate_HV_fbReserved_Breaker(BREAK_OFF);
pm->m_lowerCommManager->operate_HV_fbReserved_Breaker(0);
MOOSPause(10);
pm->m_driver.setDeviceState(pm->m_subDisSysCmd, DeviceId::buoyage, (unsigned char)cmd);
} else if(cmd == EquipmentCommand::ON)
{
pm->m_driver.setDeviceState(pm->m_subDisSysCmd, DeviceId::buoyage, (unsigned char)cmd);
MOOSPause(10);
pm->m_lowerCommManager->operate_HV_fbReserved_Breaker(BREAK_ON);
pm->m_lowerCommManager->operate_HV_fbReserved_Breaker(1);
}
}
}
@@ -314,14 +315,14 @@ void PowerManagerFsm::handleSideSonarCmd(int id, int cmd)
{
if(cmd == EquipmentCommand::OFF)
{
pm->m_lowerCommManager->operate_HVA_xczCircuit_Breaker(BREAK_OFF);
pm->m_lowerCommManager->operate_HVA_xczCircuit_Breaker(0);
MOOSPause(10);
pm->m_driver.setDeviceState(pm->m_subDisSysCmd, DeviceId::sideSonar, (unsigned char)cmd);
} else if(cmd == EquipmentCommand::ON)
{
pm->m_driver.setDeviceState(pm->m_subDisSysCmd, DeviceId::sideSonar, (unsigned char)cmd);
MOOSPause(10);
pm->m_lowerCommManager->operate_HVA_xczCircuit_Breaker(BREAK_ON);
pm->m_lowerCommManager->operate_HVA_xczCircuit_Breaker(1);
}
}
}
@@ -336,14 +337,14 @@ void PowerManagerFsm::handleMastFoldingSystemCmd(int id, int cmd)
{
if(cmd == EquipmentCommand::OFF)
{
pm->m_lowerCommManager->operate_HVA_mastSteeringGearControlBoxCircuit_Breaker(BREAK_OFF);
pm->m_lowerCommManager->operate_HVA_mastSteeringGearControlBoxCircuit_Breaker(0);
MOOSPause(10);
pm->m_driver.setDeviceState(pm->m_subDisSysCmd, DeviceId::mastLiftingServo, (unsigned char)cmd);
} else if(cmd == EquipmentCommand::ON)
{
pm->m_driver.setDeviceState(pm->m_subDisSysCmd, DeviceId::mastLiftingServo, (unsigned char)cmd);
MOOSPause(10);
pm->m_lowerCommManager->operate_HVA_mastSteeringGearControlBoxCircuit_Breaker(BREAK_ON);
pm->m_lowerCommManager->operate_HVA_mastSteeringGearControlBoxCircuit_Breaker(1);
}
}
}
@@ -3100,34 +3101,34 @@ void PowerManagerFsm::handelPowerCmd(){
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);
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(0);
pm->m_lowerCommManager->operate_HVA_bowFTDevice123Circuit_Breaker(0);
pm->m_lowerCommManager->operate_HVA_bowRudderControlBoxCircuit_Breaker(0);
pm->m_lowerCommManager->operate_HVA_mastSteeringGearControlBoxCircuit_Breaker(0);
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(0);
pm->m_lowerCommManager->operate_HVA_xczCircuit_Breaker(0);
//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);
pm->m_lowerCommManager->operate_HV_propulsionMotor_Breaker(0);
pm->m_lowerCommManager->operate_HV_sternFt45_Breaker(0);
pm->m_lowerCommManager->operate_HV_sternRudder1_Breaker(0);
pm->m_lowerCommManager->operate_HV_sternRudder2_Breaker(0);
pm->m_lowerCommManager->operate_HV_fbReserved_Breaker(0);
pm->m_lowerCommManager->operate_HV_tyzReserved_Breaker(0);
pm->m_lowerCommManager->operate_HV_reserved_Breaker(0);
pm->m_lowerCommManager->operate_HV_dcDc5_Breaker(0);
pm->m_lowerCommManager->operate_HV_coolingSystem_Breaker(0);
//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);
pm->m_lowerCommManager->operate_LV_reservedCircuit1_Breaker(0);
pm->m_lowerCommManager->operate_LV_reservedCircuit2_Breaker(0);
pm->m_lowerCommManager->operate_LVA_reservedCircuit1_Breaker(0);
pm->m_lowerCommManager->operate_LVA_reservedCircuit2_Breaker(0);
pm->m_lowerCommManager->operate_LVA_bowPZDeviceCircuit_Breaker(0);
//2.4 断开应急电池断路器
pm->m_lowerCommManager->operate_LV_mergencyLithiumBatteryGroup2Circuit_Breaker(BREAK_OFF);
pm->m_lowerCommManager->operate_LVA_mergencyLithiumBatteryGroup1Circuit_Breaker(BREAK_OFF);
pm->m_lowerCommManager->operate_LV_mergencyLithiumBatteryGroup2Circuit_Breaker(0);
pm->m_lowerCommManager->operate_LVA_mergencyLithiumBatteryGroup1Circuit_Breaker(0);
//3. 次级配电系统恢复待机
pm->m_driver.getSTANDBYTable(&pm->m_subDisSysCmd);
@@ -3140,7 +3141,7 @@ void PowerManagerFsm::handelPowerCmd(){
{
LOG_F(INFO, "收到上位机控制指令:动力电上电");
//闭合动力电断路器
if(pm->m_lowerCommManager->operate_HV_powerLithiumBattery_Breaker(BREAK_ON))
if(pm->m_lowerCommManager->operate_HV_powerLithiumBattery_Breaker(1))
LOG_F(INFO,"动力锂电池断路器闭合成功");
else
LOG_F(INFO,"动力锂电池断路器闭合操作失败");
@@ -3153,7 +3154,7 @@ void PowerManagerFsm::handelPowerCmd(){
{
LOG_F(INFO, "收到上位机控制指令:锂动力电上电");
//1. 闭合动力电断路器
pm->m_lowerCommManager->operate_HV_powerLithiumBattery_Breaker(BREAK_ON);
pm->m_lowerCommManager->operate_HV_powerLithiumBattery_Breaker(1);
//2. 动力锂电池上电
pm->m_CcuColCmd.powerBatCmd = BatteryCommand::Start;
break;
@@ -3299,7 +3300,7 @@ void PowerManagerFsm::react(TestEvent const &e)
pm->m_systemData->fc_fault_level_3 = 0;
pm->m_systemData->fc_fault_level_2 = 0;
pm->m_systemData->fc_fault_level_1 = 0;
pm->m_systemData->distributeFaultCode.clear();
pm->m_systemData->disSysFaultCode.clear();
cout << "清空故障代码" << endl;
};
// if(e.eventId == 0) return ;
@@ -3346,10 +3347,10 @@ void PowerManagerFsm::react(TestEvent const &e)
pm->m_leakage = 0x20; //艉应急
break;
case 3:
pm->m_leakage = 0x40;
pm->m_leakage = 0x40; //燃料电池舱漏水
break;
case 4:
pm->m_leakage = 0x80;
pm->m_leakage = 0x80; //艏部应急漏水
break;
case 5:
pm->m_leakage = 0x01; //艏部应急漏水
@@ -3406,7 +3407,7 @@ void PowerManagerFsm::react(TestEvent const &e)
{
LOG_F(INFO,"配电系统故障测试");
// pm->m_systemData->distributeFaultCode.push_back(disfaultMap[e.eventId].code);
pm->m_systemData->distributeFaultCode.insert(disfaultMap[e.eventId].code);
pm->m_systemData->disSysFaultCode.insert(disfaultMap[e.eventId].code);
}
default:
LOG_F(INFO, "测试消息类型错误");