完善了部分逻辑,优化网页

This commit is contained in:
zjk
2025-02-27 20:27:33 +08:00
parent 02d54a585a
commit 9cc3140651
9 changed files with 205 additions and 48 deletions
+148 -11
View File
@@ -584,6 +584,19 @@ bool PowerManger::writeDataToDB()
}
int PowerManger::checkError()
{
//1.检查复合管控器状态
if(m_pmCurrentState.ccustate.fcuGZ_1H != 0 ||
m_pmCurrentState.ccustate.fcuGZ_1L != 0 ||
m_pmCurrentState.ccustate.fcuGZ_2H != 0 ||
m_pmCurrentState.ccustate.fcuGZ_2L != 0 ||
m_pmCurrentState.ccustate.fcuGZ_3H != 0 ||
m_pmCurrentState.ccustate.fcuGZ_3L != 0 ||
m_pmCurrentState.ccustate.insEmergencyStatusWord != 0)
return 0;
//2.检查断路器状态
}
void PowerManger::printState(FSM_State st, string desp){
@@ -619,13 +632,7 @@ int PowerManger::handleInite_s1(FSM_State &fsm, void* pData)
pm->printState(fsm,desp);
}
//2. 检查复合管控器是否上报故障 如果故障则进入故障状态
if(pm->m_pmCurrentState.ccustate.fcuGZ_1H != 0 ||
pm->m_pmCurrentState.ccustate.fcuGZ_1L != 0 ||
pm->m_pmCurrentState.ccustate.fcuGZ_2H != 0 ||
pm->m_pmCurrentState.ccustate.fcuGZ_2L != 0 ||
pm->m_pmCurrentState.ccustate.fcuGZ_3H != 0 ||
pm->m_pmCurrentState.ccustate.fcuGZ_3L != 0 ||
pm->m_pmCurrentState.ccustate.insEmergencyStatusWord != 0)
if(pm->checkError() < 0)
{
ok = false;
pm->m_faultNum = 2; //能源故障
@@ -633,11 +640,30 @@ int PowerManger::handleInite_s1(FSM_State &fsm, void* pData)
//3. 初始化系统为待机状态
pm->initControlCmd();
//4.判断关键断路器是否闭合
ok = false;
while (!ok)
{
if(pm->m_currentDisBreakerState.bus3Breaker.unit4InstrumentDC48VCircuitBreaker == 1 ||
pm->m_currentDisBreakerState.bus4Breaker.unit5CircuitBreaker == 1 ||
pm->m_currentDisBreakerState.bus4Breaker.unit2CircuitBreaker == 1 ||
pm->m_currentDisBreakerState.bus4Breaker.unit3CircuitBreaker == 1 ||
pm->m_currentDisBreakerState.bus4Breaker.unit1CircuitBreaker == 1)
{
ok = true;
}
pm->m_pmEvent = "等待关键断路器闭合";
MOOSPause(1000);
pm->printState(fsm,pm->m_pmEvent);
}
//5. 进入下一状态
if(ok)
{
pm->m_pmState = pm->m_Standby_s2;
}
if(!ok)
{
pm->m_pmState = pm->m_Fault_s99;
}
pm->m_pmState = pm->m_Standby_s2;
return 0;
}
@@ -649,6 +675,109 @@ int PowerManger::handleStandby_s2(FSM_State &fsm, void* pData)
{
string desp = "待机状态";
pm->printState(fsm,desp);
//1. 检查当前是否存在故障
if(pm->checkError() < 0)
{
pm->m_pmState = pm->m_Fault_s99;
break;
}
//2. 检查上位机上电控制指令
switch (pm->m_msCmd.powerCMD)
{
case 0:
pm->m_pmEvent = "收到上位机控制指令:关机";
pm->shutdown();
break;
case 1:
pm->m_pmEvent = "动力电上电";
break;
case 2:
pm->m_pmEvent = "锂动力电启动";
break;
case 3:
pm->m_pmEvent = "燃料电池启动";
break;
case 4:
pm->m_pmEvent = "锂动力电关闭";
case 5:
pm->m_pmEvent = "燃料电池停机";
break;
case 6:
pm->m_pmEvent = "燃料电池预热指令";
break;
case 7:
pm->m_pmEvent = "燃料电池自检指令";
break;
case 8:
pm->m_pmEvent = "燃料电池紧急停机";
break;
case 9:
pm->m_pmEvent = "燃料电池复位指令";
break;
case 10:
pm->m_pmEvent = "燃料电池补给指令";
break;
case 11:
pm->m_pmEvent = "燃料电池停机维护";
break;
default:
break;
}
//2. 检查上位机模式切换指令
switch (pm->m_msCmd.modCMD)
{
case 0:
//无效
break;
case 1:
pm->m_pmEvent = "待机工况";
break;
case 2:
pm->m_pmEvent = "岸基备航";
break;
case 3:
pm->m_pmEvent = "水中备航";
break;
case 4:
pm->m_pmEvent = "遥控工况";
break;
case 5:
pm->m_pmEvent = "巡航模式";
break;
case 6:
pm->m_pmEvent = "高速模式";
break;
case 7:
pm->m_pmEvent = "上浮下潜";
break;
case 8:
pm->m_pmEvent = "浮调模式";
break;
case 9:
pm->m_pmEvent = "水下侦查";
break;
case 10:
pm->m_pmEvent = "水面侦查";
break;
case 11:
pm->m_pmEvent = "DJ模式";
break;
default:
break;
}
//3. 检查上位机工作模式切换控制指令
switch (pm->m_msCmd.workCMD)
{
case 0:
pm->m_pmEvent = "正常模式(默认)";
break;
case 1:
pm->m_pmEvent = "试验模式";
break;
case 2:
pm->m_pmEvent = "调试模式";
break;
}
MOOSPause(1000);
}
@@ -673,6 +802,14 @@ int PowerManger::handleFault_s99(FSM_State &fsm, void* pData)
}
//==============================系统操作函数====================
bool PowerManger::shutdown()
{
m_CcuColCmd.masterState = 0xFF; //关机
return true;
}
void PowerManger::initControlCmd()
{
//================初始化配电指令=============================
@@ -724,9 +861,9 @@ void PowerManger::initControlCmd()
m_CcuColCmd.masterState = 0xAA;//主站状态,运行中
//================初始化上位机指令=========================
m_msCmd.modCMD = 0;
m_msCmd.powerCMD = 0;
m_msCmd.workCMD = 0;
m_msCmd.modCMD = 99;
m_msCmd.powerCMD = 99;
m_msCmd.workCMD = 99;
//================初始化设备驱动指令========================
+12 -1
View File
@@ -129,7 +129,6 @@ class PowerManger : public AppCastingMOOSApp
msg_disLowBusFbMsg m_disLowBusState;
//下位机操作函数
//断路器状态
ccuColCmd m_CcuColCmd;
void disSysOption();
void ccuOption();
@@ -172,10 +171,22 @@ class PowerManger : public AppCastingMOOSApp
FSM_State m_Standby_s2;
static int handleStandby_s2(FSM_State &fsm, void* pData);
//岸基备航
// FSM_State m_ShoreReady_s3;
//水中备航
//自动工况
//故障处理
FSM_State m_Fault_s99;
static int handleFault_s99(FSM_State &fsm, void* pData);
//======================================================================================
int checkError();
bool shutdown();
bool powerOn();
bool powerOff();
};
#endif