优化结构
This commit is contained in:
+205
-216
@@ -14,11 +14,11 @@
|
||||
using namespace std;
|
||||
|
||||
|
||||
bool _ListenCB(void * pParam)
|
||||
{
|
||||
PowerManger* pMe = (PowerManger* )pParam;
|
||||
return pMe->ListenLoopUDP();
|
||||
}
|
||||
// bool _ListenCB(void * pParam)
|
||||
// {
|
||||
// // PowerManger* pMe = (PowerManger* )pParam;
|
||||
// // return pMe->ListenLoopUDP();
|
||||
// }
|
||||
|
||||
bool _FsmCB(void * pParam)
|
||||
{
|
||||
@@ -57,7 +57,7 @@ PowerManger::PowerManger()
|
||||
m_MSDriverCmd = {};
|
||||
m_subDisSysCmd = {};
|
||||
m_subDisSysState = {};
|
||||
//初始化断路器状态
|
||||
//初始化控制指令
|
||||
initControlCmd();
|
||||
|
||||
//初始化数据库
|
||||
@@ -70,6 +70,10 @@ PowerManger::PowerManger()
|
||||
m_db->createDriversTables(VAR_TO_STR(m_subDisSysState));
|
||||
m_db->createDriversTables(VAR_TO_STR(m_subDisSysCmd));
|
||||
m_db->createDriversTables(VAR_TO_STR(m_MSDriverCmd));
|
||||
|
||||
//初始化UDP通信
|
||||
m_lowerCommManager = new LowerCommManager(this,IPORT,CCUPORT,CCUHOST);
|
||||
m_lowerCommManager->initUdpComm();
|
||||
|
||||
// 初始化状态机
|
||||
cout << "init fsm" << endl;
|
||||
@@ -84,6 +88,8 @@ PowerManger::PowerManger()
|
||||
|
||||
PowerManger::~PowerManger()
|
||||
{
|
||||
delete m_db;
|
||||
delete m_lowerCommManager;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------
|
||||
@@ -165,20 +171,20 @@ bool PowerManger::Iterate()
|
||||
{
|
||||
AppCastingMOOSApp::Iterate();
|
||||
//1. 更新当前状态
|
||||
updatePmState();
|
||||
// updatePmState();
|
||||
updateConnectState();
|
||||
//2. 运行状态机
|
||||
if (FSM_RUN_IS_OK)
|
||||
m_FsmThread.Start();
|
||||
else
|
||||
m_FsmThread.Stop();
|
||||
// if (FSM_RUN_IS_OK)
|
||||
// m_FsmThread.Start();
|
||||
// else
|
||||
// m_FsmThread.Stop();
|
||||
//3. 进行操作 每秒执行一次
|
||||
if (m_ticker++ % 5 == 0)
|
||||
{
|
||||
//a. 配电系统操作
|
||||
disSysOption();
|
||||
// disSysOption();
|
||||
//b. ccu操作
|
||||
ccuOption();
|
||||
// ccuOption();
|
||||
//c. 上位机反馈
|
||||
buildPowerSysReport();
|
||||
Notify(PM_TO_DB_SUBDISCMD,m_driver.saveDriverTableToJson(&m_subDisSysCmd));
|
||||
@@ -186,6 +192,7 @@ bool PowerManger::Iterate()
|
||||
//d.保存到数据库
|
||||
writeDataToDB();
|
||||
}
|
||||
m_lowerCommManager->processPeriodicTasks();
|
||||
///////////////////////
|
||||
// string a = m_driver.getSubDisCmdJson(&m_subDisSysCmd);
|
||||
// saveStringToJsonFile(a,"/home/zjk/project/H100/H100PowerManger/data/subDisSysCmd.json");
|
||||
@@ -199,7 +206,7 @@ bool PowerManger::Iterate()
|
||||
// return false;
|
||||
//AppCastingMOOSApp::PostReport();
|
||||
//5. 清空UDP消息队列
|
||||
m_udpComm.clearMsgQueue();
|
||||
// m_udpComm.clearMsgQueue();
|
||||
return(true);
|
||||
}
|
||||
|
||||
@@ -237,23 +244,7 @@ bool PowerManger::OnStartUp()
|
||||
}
|
||||
|
||||
registerVariables();
|
||||
//启动UDP监听线程
|
||||
if(m_pCcuUdpComm = setUdpScoket(IPORT))
|
||||
{
|
||||
cout<<MOOS::ConsoleColours::green()<< "UDP set succeed!"<< MOOS::ConsoleColours::reset() << endl;
|
||||
m_udpComm.ccuHost = CCUHOST;
|
||||
m_udpComm.ccuPort = CCUPORT;
|
||||
m_udpComm.udpScoket = m_pCcuUdpComm;
|
||||
MOOSTrace("UDP set succeed");
|
||||
}
|
||||
else
|
||||
{
|
||||
cout<<MOOS::ConsoleColours::red()<< "UDP set Fild!"<< MOOS::ConsoleColours::reset() << endl;
|
||||
MOOSTrace("UDP set faile");
|
||||
}
|
||||
m_ListenThread.Initialise(_ListenCB,this);
|
||||
m_ListenThread.Start();
|
||||
m_FsmThread.Initialise(_FsmCB,this);
|
||||
m_lowerCommManager->startListenThread();
|
||||
return(true);
|
||||
}
|
||||
|
||||
@@ -304,35 +295,35 @@ XPCUdpSocket* PowerManger::setUdpScoket(long lPort)
|
||||
return pUdpSocket;
|
||||
}
|
||||
|
||||
bool PowerManger::ListenLoopUDP()
|
||||
{
|
||||
unsigned char Buff[MAX_UDP_PKT_SIZE];
|
||||
while(!m_ListenThread.IsQuitRequested())
|
||||
{
|
||||
int nRead = m_pCcuUdpComm->iRecieveMessage(Buff,sizeof(Buff));
|
||||
cout<<MOOS::ConsoleColours::yellow()<< "RECEVE DATA COUNT:" << nRead << MOOS::ConsoleColours::reset() << endl;
|
||||
if(nRead > 0)
|
||||
{
|
||||
if(!m_udpComm.pushMsgToQueue(Buff))
|
||||
{
|
||||
for(int i=0;i<m_udpComm.sError.size();i++)
|
||||
{
|
||||
cout<<MOOS::ConsoleColours::red()<< m_udpComm.sError[i] << MOOS::ConsoleColours::reset() << endl;
|
||||
}
|
||||
}
|
||||
}
|
||||
// 打印通信错误信息
|
||||
if(!m_udpComm.sError.empty())
|
||||
{
|
||||
for(int i=0;i<m_udpComm.sError.size();i++)
|
||||
{
|
||||
cout<<MOOS::ConsoleColours::red() << m_udpComm.sError[i] << MOOS::ConsoleColours::reset() << endl;
|
||||
}
|
||||
m_udpComm.sError.clear();
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
// bool PowerManger::ListenLoopUDP()
|
||||
// {
|
||||
// unsigned char Buff[MAX_UDP_PKT_SIZE];
|
||||
// while(!m_ListenThread.IsQuitRequested())
|
||||
// {
|
||||
// int nRead = m_pCcuUdpComm->iRecieveMessage(Buff,sizeof(Buff));
|
||||
// cout<<MOOS::ConsoleColours::yellow()<< "RECEVE DATA COUNT:" << nRead << MOOS::ConsoleColours::reset() << endl;
|
||||
// if(nRead > 0)
|
||||
// {
|
||||
// if(!m_udpComm.pushMsgToQueue(Buff))
|
||||
// {
|
||||
// for(int i=0;i<m_udpComm.sError.size();i++)
|
||||
// {
|
||||
// cout<<MOOS::ConsoleColours::red()<< m_udpComm.sError[i] << MOOS::ConsoleColours::reset() << endl;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// // 打印通信错误信息
|
||||
// if(!m_udpComm.sError.empty())
|
||||
// {
|
||||
// for(int i=0;i<m_udpComm.sError.size();i++)
|
||||
// {
|
||||
// cout<<MOOS::ConsoleColours::red() << m_udpComm.sError[i] << MOOS::ConsoleColours::reset() << endl;
|
||||
// }
|
||||
// m_udpComm.sError.clear();
|
||||
// }
|
||||
// }
|
||||
// return true;
|
||||
// }
|
||||
|
||||
bool PowerManger::FsmLoop()
|
||||
{
|
||||
@@ -374,108 +365,107 @@ bool PowerManger::updateConnectState()
|
||||
connectState++;
|
||||
// cout << "seck:" << seck << endl;
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
|
||||
bool PowerManger::updatePmState()
|
||||
{
|
||||
//1. 更新下位机状态
|
||||
if(!m_udpComm.m_qReceiveCcuStateBuffer.empty())
|
||||
{
|
||||
double time;
|
||||
m_udpComm.popMsgFormQueue(time,m_CcuCurrentState);
|
||||
m_pmCurrentState.ccustate = m_CcuCurrentState.data;
|
||||
m_db->insertCcuData(m_CcuCurrentState.data); //写入数据库
|
||||
msg_CcuStateFbMsg_Update_time = time;
|
||||
}
|
||||
if(!m_udpComm.m_qReceiveDisHighVolBusBuffer.empty())
|
||||
{
|
||||
double time;
|
||||
m_udpComm.popMsgFormQueue(time,m_disHighVolBusCurrentState);
|
||||
m_pmCurrentState.bus1State = m_disHighVolBusCurrentState.data;
|
||||
m_db->insertDisHighVolBusData(m_disHighVolBusCurrentState.data); //写入数据库
|
||||
msg_disHighVolBusFbMsg_Update_time = time;
|
||||
// bool PowerManger::updatePmState()
|
||||
// {
|
||||
// //1. 更新下位机状态
|
||||
// if(!m_udpComm.m_qReceiveCcuStateBuffer.empty())
|
||||
// {
|
||||
// double time;
|
||||
// m_udpComm.popMsgFormQueue(time,m_CcuCurrentState);
|
||||
// m_pmCurrentState.ccustate = m_CcuCurrentState.data;
|
||||
// m_db->insertCcuData(m_CcuCurrentState.data); //写入数据库
|
||||
// msg_CcuStateFbMsg_Update_time = time;
|
||||
// }
|
||||
// if(!m_udpComm.m_qReceiveDisHighVolBusBuffer.empty())
|
||||
// {
|
||||
// double time;
|
||||
// m_udpComm.popMsgFormQueue(time,m_disHighVolBusCurrentState);
|
||||
// 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())
|
||||
{
|
||||
double time;
|
||||
m_udpComm.popMsgFormQueue(time,m_disHighAVolBusCurrentState);
|
||||
m_pmCurrentState.bus2State = m_disHighAVolBusCurrentState.data;
|
||||
m_db->insertDisHighAVolBusData(m_disHighAVolBusCurrentState.data); //写入数据库
|
||||
msg_disHighAVolBusFbMsg_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())
|
||||
// {
|
||||
// double time;
|
||||
// m_udpComm.popMsgFormQueue(time,m_disHighAVolBusCurrentState);
|
||||
// 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())
|
||||
{
|
||||
double time;
|
||||
m_udpComm.popMsgFormQueue(time,m_disHighBVolBusCurrentState);
|
||||
m_pmCurrentState.bus3State = m_disHighBVolBusCurrentState.data;
|
||||
m_db->insertDisHighBVolBusData(m_disHighBVolBusCurrentState.data); //写入数据库
|
||||
msg_disHighBVolBusFbMsg_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())
|
||||
// {
|
||||
// double time;
|
||||
// m_udpComm.popMsgFormQueue(time,m_disHighBVolBusCurrentState);
|
||||
// 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())
|
||||
{
|
||||
double time;
|
||||
m_udpComm.popMsgFormQueue(time,m_disLowBusState);
|
||||
m_pmCurrentState.bus4State = m_disLowBusState.data;
|
||||
m_db->insertDisLowBusData(m_disLowBusState.data); //写入数据库
|
||||
msg_disLowBusFbMsg_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())
|
||||
// {
|
||||
// double time;
|
||||
// m_udpComm.popMsgFormQueue(time,m_disLowBusState);
|
||||
// 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;
|
||||
}
|
||||
// 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;
|
||||
// }
|
||||
|
||||
|
||||
bool PowerManger::IsSkewed(double dfTimeNow, double * pdfSkew)
|
||||
@@ -488,68 +478,68 @@ bool PowerManger::IsSkewed(double dfTimeNow, double * pdfSkew)
|
||||
return (dfSkew > SKEW_TOLERANCE) ? true : false;
|
||||
}
|
||||
|
||||
void PowerManger::ccuOption()
|
||||
{
|
||||
m_db->insertCcuSysCmd(m_CcuColCmd);
|
||||
if(!m_udpComm.sendCcuColCmd(m_CcuColCmd))
|
||||
cout << "send ccu col cmd failed!" << endl;
|
||||
}
|
||||
void PowerManger::disSysOption()
|
||||
{
|
||||
// void PowerManger::ccuOption()
|
||||
// {
|
||||
// m_db->insertCcuSysCmd(m_CcuColCmd);
|
||||
// if(!m_udpComm.sendCcuColCmd(m_CcuColCmd))
|
||||
// cout << "send ccu col cmd failed!" << endl;
|
||||
// }
|
||||
// void PowerManger::disSysOption()
|
||||
// {
|
||||
|
||||
//根据目标状态进行断路器操作
|
||||
//a. 高压母线的断路器
|
||||
disHighVolBusCmd a;
|
||||
a.fuelCellCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus1Breaker.fuelCellCircuitBreaker);
|
||||
a.lithiumBatteryGroupInstrumentCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus1Breaker.lithiumBatteryGroupInstrumentCircuitBreaker);
|
||||
a.dcDc5ModuleCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus1Breaker.dcDc5ModuleCircuitBreaker);
|
||||
a.powerLithiumBatteryCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus1Breaker.powerLithiumBatteryCircuitBreaker);
|
||||
a.propulsionMotorCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus1Breaker.propulsionMotorCircuitBreaker);
|
||||
a.bowHighVoltageDistributionBoxCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus1Breaker.bowHighVoltageDistributionBoxCircuitBreaker);
|
||||
a.tyzReservedCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus1Breaker.tyzReservedCircuitBreaker);
|
||||
a.sternFTDevice45CircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus1Breaker.sternFTDevice45CircuitBreaker);
|
||||
a.sternRudderSwitch1CircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus1Breaker.sternRudderSwitch1CircuitBreaker);
|
||||
a.sternRudderSwitch2CircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus1Breaker.sternRudderSwitch2CircuitBreaker);
|
||||
a.reservedCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus1Breaker.reservedCircuitBreaker);
|
||||
a.fbReservedCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus1Breaker.fbReservedCircuitBreaker);
|
||||
m_udpComm.sendDisSysCmd(a);
|
||||
//b. 高压汇流排A断路器
|
||||
disHighAVolBusCmd b;
|
||||
b.bowFTDevice123CircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus2Breaker.bowFTDevice123CircuitBreaker);
|
||||
b.actuatorCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus2Breaker.actuatorCircuitBreaker);
|
||||
b.mastSteeringGearControlBoxCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus2Breaker.mastSteeringGearControlBoxCircuitBreaker);
|
||||
b.xczCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus2Breaker.xczCircuitBreaker);
|
||||
b.bowRudderControlBoxCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus2Breaker.bowRudderControlBoxCircuitBreaker);
|
||||
b.openWaterCoverStartCylinderCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus2Breaker.openWaterCoverStartCylinderCircuitBreaker);
|
||||
m_udpComm.sendDisSysCmd(b);
|
||||
//c. 高压汇流排B断路器
|
||||
disHighBVolBusCmd c;
|
||||
c.lithiumBatteryGroupInstrumentCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus3Breaker.lithiumBatteryGroupInstrumentCircuitBreaker);
|
||||
c.bowLowVoltageDistributionBoxCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus3Breaker.bowLowVoltageDistributionBoxCircuitBreaker);
|
||||
c.unit4InstrumentDC48VCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus3Breaker.unit4InstrumentDC48VCircuitBreaker);
|
||||
c.dcC1DCDistributionPanelCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus3Breaker.dcC1DCDistributionPanelCircuitBreaker);
|
||||
c.reservedCircuitBreaker1 = getBreakerOption(m_targetDisBreakerState.bus3Breaker.reservedCircuitBreaker1);
|
||||
c.reservedCircuitBreaker2 = getBreakerOption(m_targetDisBreakerState.bus3Breaker.reservedCircuitBreaker2);
|
||||
c.emergencyLithiumBatteryGroup2CircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus3Breaker.emergencyLithiumBatteryGroup2CircuitBreaker);
|
||||
m_udpComm.sendDisSysCmd(c);
|
||||
//d. 闭合低压汇流排断路器
|
||||
disLowBusCmd d;
|
||||
d.unit1CircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus4Breaker.unit1CircuitBreaker);
|
||||
d.unit2CircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus4Breaker.unit2CircuitBreaker);
|
||||
d.unit3CircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus4Breaker.unit3CircuitBreaker);
|
||||
d.unit5CircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus4Breaker.unit5CircuitBreaker);
|
||||
d.bowPZDeviceCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus4Breaker.bowPZDeviceCircuitBreaker);
|
||||
d.reservedCircuitBreaker1 = getBreakerOption(m_targetDisBreakerState.bus4Breaker.reservedCircuitBreaker1);
|
||||
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);
|
||||
m_db->insertDisSysCmd(c);
|
||||
m_db->insertDisSysCmd(d);
|
||||
// //根据目标状态进行断路器操作
|
||||
// //a. 高压母线的断路器
|
||||
// disHighVolBusCmd a;
|
||||
// a.fuelCellCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus1Breaker.fuelCellCircuitBreaker);
|
||||
// a.lithiumBatteryGroupInstrumentCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus1Breaker.lithiumBatteryGroupInstrumentCircuitBreaker);
|
||||
// a.dcDc5ModuleCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus1Breaker.dcDc5ModuleCircuitBreaker);
|
||||
// a.powerLithiumBatteryCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus1Breaker.powerLithiumBatteryCircuitBreaker);
|
||||
// a.propulsionMotorCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus1Breaker.propulsionMotorCircuitBreaker);
|
||||
// a.bowHighVoltageDistributionBoxCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus1Breaker.bowHighVoltageDistributionBoxCircuitBreaker);
|
||||
// a.tyzReservedCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus1Breaker.tyzReservedCircuitBreaker);
|
||||
// a.sternFTDevice45CircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus1Breaker.sternFTDevice45CircuitBreaker);
|
||||
// a.sternRudderSwitch1CircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus1Breaker.sternRudderSwitch1CircuitBreaker);
|
||||
// a.sternRudderSwitch2CircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus1Breaker.sternRudderSwitch2CircuitBreaker);
|
||||
// a.reservedCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus1Breaker.reservedCircuitBreaker);
|
||||
// a.fbReservedCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus1Breaker.fbReservedCircuitBreaker);
|
||||
// m_udpComm.sendDisSysCmd(a);
|
||||
// //b. 高压汇流排A断路器
|
||||
// disHighAVolBusCmd b;
|
||||
// b.bowFTDevice123CircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus2Breaker.bowFTDevice123CircuitBreaker);
|
||||
// b.actuatorCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus2Breaker.actuatorCircuitBreaker);
|
||||
// b.mastSteeringGearControlBoxCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus2Breaker.mastSteeringGearControlBoxCircuitBreaker);
|
||||
// b.xczCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus2Breaker.xczCircuitBreaker);
|
||||
// b.bowRudderControlBoxCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus2Breaker.bowRudderControlBoxCircuitBreaker);
|
||||
// b.openWaterCoverStartCylinderCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus2Breaker.openWaterCoverStartCylinderCircuitBreaker);
|
||||
// m_udpComm.sendDisSysCmd(b);
|
||||
// //c. 高压汇流排B断路器
|
||||
// disHighBVolBusCmd c;
|
||||
// c.lithiumBatteryGroupInstrumentCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus3Breaker.lithiumBatteryGroupInstrumentCircuitBreaker);
|
||||
// c.bowLowVoltageDistributionBoxCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus3Breaker.bowLowVoltageDistributionBoxCircuitBreaker);
|
||||
// c.unit4InstrumentDC48VCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus3Breaker.unit4InstrumentDC48VCircuitBreaker);
|
||||
// c.dcC1DCDistributionPanelCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus3Breaker.dcC1DCDistributionPanelCircuitBreaker);
|
||||
// c.reservedCircuitBreaker1 = getBreakerOption(m_targetDisBreakerState.bus3Breaker.reservedCircuitBreaker1);
|
||||
// c.reservedCircuitBreaker2 = getBreakerOption(m_targetDisBreakerState.bus3Breaker.reservedCircuitBreaker2);
|
||||
// c.emergencyLithiumBatteryGroup2CircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus3Breaker.emergencyLithiumBatteryGroup2CircuitBreaker);
|
||||
// m_udpComm.sendDisSysCmd(c);
|
||||
// //d. 闭合低压汇流排断路器
|
||||
// disLowBusCmd d;
|
||||
// d.unit1CircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus4Breaker.unit1CircuitBreaker);
|
||||
// d.unit2CircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus4Breaker.unit2CircuitBreaker);
|
||||
// d.unit3CircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus4Breaker.unit3CircuitBreaker);
|
||||
// d.unit5CircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus4Breaker.unit5CircuitBreaker);
|
||||
// d.bowPZDeviceCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus4Breaker.bowPZDeviceCircuitBreaker);
|
||||
// d.reservedCircuitBreaker1 = getBreakerOption(m_targetDisBreakerState.bus4Breaker.reservedCircuitBreaker1);
|
||||
// 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);
|
||||
// m_db->insertDisSysCmd(c);
|
||||
// m_db->insertDisSysCmd(d);
|
||||
|
||||
}
|
||||
// }
|
||||
|
||||
|
||||
bool PowerManger::saveStringToJsonFile(const string &strJson, const string &filePath)
|
||||
@@ -568,7 +558,6 @@ bool PowerManger::saveStringToJsonFile(const string &strJson, const string &file
|
||||
|
||||
bool PowerManger::writeDataToDB()
|
||||
{
|
||||
|
||||
// //写入配电系统状态
|
||||
// if(!m_db->insertDisCcuData(m_pmCurrentState))
|
||||
// return false;
|
||||
|
||||
Reference in New Issue
Block a user