增加了新的调试界面,优化了一些功能

This commit is contained in:
zjk
2025-02-06 12:01:18 +08:00
parent c824caa27e
commit 6f5de4b614
14 changed files with 718 additions and 157 deletions
+52 -11
View File
@@ -32,6 +32,7 @@ PowerManger::PowerManger()
soc = 0;
sustainableTime = 0;
m_connected = false;
m_faultNum = 0;
faultCode.push_back(0);
//注册状态机
@@ -783,15 +784,8 @@ bool PowerManger::saveStringToJsonFile(const string &strJson, const string &file
//TODO:配电系统操作函数
bool PowerManger::disSystemOperation(disBreaker optBreaker, disBreakerOpt)
{
// switch (disBreaker)
// {
// case bus1_fuelCellCircuitBreaker :
// // send()
// break;
// default:
// break;
// }
return true;
}
int PowerManger::handleInite_s1(FSM_State &fsm, void* pData)
@@ -814,9 +808,10 @@ int PowerManger::handleInite_s1(FSM_State &fsm, void* pData)
if(dft > 10)
{
pm->m_pmState = pm->m_Fault_s99;
pm->m_faultNum = 1; // 通信超时
break;
}
string desp = "等待复合管控消息 : 超时 : " + to_string(10-dft);
string desp = "等待复合管控消息 : " + to_string(10-dft);
pm->printState(fsm,desp);
usleep(1000000);
}
@@ -837,12 +832,49 @@ int PowerManger::handleInite_s1(FSM_State &fsm, void* pData)
pm->m_pmState = pm->m_Fault_s99;
}
//3. 检查当前配电装置状态
// 首先闭合应急电源开关
//a. 断开高压母线的主要断路器
//TODO 检查并配置当前配电装置状态
disHighVolBusCmd a;
a.fuelCellCircuitBreaker = DIS_BREAKER_OFF;
a.propulsionMotorCircuitBreaker = DIS_BREAKER_OFF;
a.bowHighVoltageDistributionBoxCircuitBreaker = DIS_BREAKER_OFF;
a.tyzReservedCircuitBreaker = DIS_BREAKER_OFF;
a.sternFTDevice45CircuitBreaker = DIS_BREAKER_OFF;
a.sternRudderSwitch1CircuitBreaker = DIS_BREAKER_OFF;
a.sternRudderSwitch2CircuitBreaker = DIS_BREAKER_OFF;
a.reservedCircuitBreaker = DIS_BREAKER_OFF;
a.fbReservedCircuitBreaker = DIS_BREAKER_OFF;
pm->m_udpComm.sendDisSysCmd(a);
//b. 断开艏部高压设备的主要断路器
disHighAVolBusCmd b;
b.bowFTDevice123CircuitBreaker = DIS_BREAKER_OFF;
b.actuatorCircuitBreaker = DIS_BREAKER_OFF;
b.mastSteeringGearControlBoxCircuitBreaker = DIS_BREAKER_OFF;
b.xczCircuitBreaker = DIS_BREAKER_OFF;
b.bowRudderControlBoxCircuitBreaker = DIS_BREAKER_OFF;
b.openWaterCoverStartCylinderCircuitBreaker = DIS_BREAKER_OFF;
pm->m_udpComm.sendDisSysCmd(b);
//c. 闭合低压母线的断路器
disHighBVolBusCmd c;
c.lithiumBatteryGroupInstrumentCircuitBreaker = DIS_BREAKER_ON;
c.bowLowVoltageDistributionBoxCircuitBreaker = DIS_BREAKER_ON;
c.unit4InstrumentDC48VCircuitBreaker = DIS_BREAKER_ON;
c.dcC1DCDistributionPanelCircuitBreaker = DIS_BREAKER_ON;
c.reservedCircuitBreaker1 = DIS_BREAKER_ON;
c.reservedCircuitBreaker2 = DIS_BREAKER_ON;
c.emergencyLithiumBatteryGroup2CircuitBreaker = DIS_BREAKER_ON;
pm->m_udpComm.sendDisSysCmd(c);
//d. 闭合低压汇流排断路器
disLowBusCmd d;
d.unit1CircuitBreaker = DIS_BREAKER_ON;
d.unit2CircuitBreaker = DIS_BREAKER_ON;
d.unit3CircuitBreaker = DIS_BREAKER_ON;
d.unit5CircuitBreaker = DIS_BREAKER_ON;
d.bowPZDeviceCircuitBreaker = DIS_BREAKER_ON;
d.reservedCircuitBreaker1 = DIS_BREAKER_ON;
d.reservedCircuitBreaker2 = DIS_BREAKER_ON;
d.emergencyLithiumBatteryGroup1CircuitBreaker = DIS_BREAKER_ON;
pm->m_udpComm.sendDisSysCmd(d);
MOOSPause(1000);
// pm->workCondition = "";
return 0;
@@ -852,6 +884,15 @@ int PowerManger::handleFault_s99(FSM_State &fsm, void* pData)
{
// cout << fsm.name << endl;
PowerManger* pm = (PowerManger*)pData;
switch (pm->m_faultNum)
{
case 1:
pm->printState(fsm,"通信故障");
break;
default:
break;
}
pm->printState(fsm,"故障");
return 0;
}
+6
View File
@@ -102,6 +102,7 @@ class PowerManger : public AppCastingMOOSApp
unsigned int m_nReceiveBufferSizeKB;
unsigned int m_nSendBufferSizeKB;
double m_current_time;
unsigned int m_faultNum;
// CMOOSThread m_SendThread;
private: //
@@ -113,6 +114,11 @@ class PowerManger : public AppCastingMOOSApp
void printState(FSM_State st, string desp){
cout << MOOS::ConsoleColours::Yellow() << "STATE " << st.id << " [" << st.name << "] " << MOOS::ConsoleColours::reset();
cout << MOOS::ConsoleColours::Blue() << " -> " << MOOS::ConsoleColours::reset();
// 检查desp是否有“故障”
if (desp.find("故障") != string::npos) {
cout << MOOS::ConsoleColours::Red() << desp << MOOS::ConsoleColours::reset() << endl;
return;
}
cout << MOOS::ConsoleColours::Green() << desp << MOOS::ConsoleColours::reset() << endl;
}
+3
View File
@@ -211,6 +211,9 @@ typedef struct disHighVolBusCmd
unsigned char fbReservedCircuitBreaker;
unsigned char tyzReservedCircuitBreaker;
unsigned char reservedCircuitBreaker;
unsigned char dcdc5Module;
unsigned char inputWater;
unsigned char outputWater;
}disHighVolBusCmd;
typedef struct disHighAVolBusCmd
+6 -5
View File
@@ -395,12 +395,12 @@ bool udpComm::sendDisSysCmd(const disHighVolBusCmd cmd)
return true;
}
bool udpComm::snedDisSysCmd(const disHighAVolBusCmd cmd)
bool udpComm::sendDisSysCmd(const disHighAVolBusCmd cmd)
{
unsigned char* msgBuf;
Checksum cc;
msg_disHVBACmd* msg = new msg_disHVBACmd;
msg->header.id = DIS_HVBUS_CMD_ID;
msg->header.id = DIS_HVBUSA_CMD_ID;
msg->header.start1 = DIS_MSG_HEAD1;
msg->header.start2 = DIS_MSG_HEAD2;
msg->header.length = sizeof(disHighAVolBusCmd);
@@ -420,12 +420,12 @@ bool udpComm::snedDisSysCmd(const disHighAVolBusCmd cmd)
return true;
}
bool udpComm::snedDisSysCmd(const disHighBVolBusCmd cmd)
bool udpComm::sendDisSysCmd(const disHighBVolBusCmd cmd)
{
unsigned char* msgBuf;
Checksum cc;
msg_disHVBBCmd* msg = new msg_disHVBBCmd;
msg->header.id = DIS_HVBUS_CMD_ID;
msg->header.id = DIS_HVBUSB_CMD_ID;
msg->header.start1 = DIS_MSG_HEAD1;
msg->header.start2 = DIS_MSG_HEAD2;
msg->header.length = sizeof(disHighBVolBusCmd);
@@ -435,6 +435,7 @@ bool udpComm::snedDisSysCmd(const disHighBVolBusCmd cmd)
msg->checkCode = static_cast<cChecksum>(cc & 0xFF);
try
{
// cout << "=========" <<(int)sizeof(msg_disHVBBCmd) << endl;
sendMsg(msgBuf,sizeof(msg_disHVBBCmd));
}
catch(const std::exception& e)
@@ -450,7 +451,7 @@ bool udpComm::sendDisSysCmd(const disLowBusCmd cmd)
unsigned char* msgBuf;
Checksum cc;
msg_disLVBCmd* msg = new msg_disLVBCmd;
msg->header.id = DIS_HVBUS_CMD_ID;
msg->header.id = DIS_LVBUS_CMD_ID;
msg->header.start1 = DIS_MSG_HEAD1;
msg->header.start2 = DIS_MSG_HEAD2;
msg->header.length = sizeof(disLowBusCmd);
+4 -2
View File
@@ -46,12 +46,14 @@ public:
bool sendCcuColCmd(const msg_CcuColCmdMsg m);
bool sendCcuSetParmCmd(const msg_CcuSetParmMsg m);
bool sendDisSysCmd(const disHighVolBusCmd cmd);
bool snedDisSysCmd(const disHighAVolBusCmd cmd);
bool snedDisSysCmd(const disHighBVolBusCmd cmd);
bool sendDisSysCmd(const disHighAVolBusCmd cmd);
bool sendDisSysCmd(const disHighBVolBusCmd cmd);
bool sendDisSysCmd(const disLowBusCmd cmd);
bool sendMsg(const unsigned char* msg,unsigned int size){
udpScoket->iSendMessageTo((void*) msg, size, ccuPort, ccuHost);
return true;
}
bool getMsgId(char *m,unsigned short &id);