为操作指令增加了数据库写入代码

This commit is contained in:
zjk
2025-02-18 18:46:17 +08:00
parent a179789b3f
commit 7dac85505b
8 changed files with 324 additions and 44 deletions
+29 -6
View File
@@ -51,7 +51,7 @@ PowerManger::PowerManger()
connectState = 0;
//初始化断路器状态
initTargetDisBreakerState();
initControlCmd();
//初始化数据库
string dbPath = "/home/zjk/project/H100/H100PowerManger/data/power_data.db";
@@ -142,6 +142,7 @@ bool PowerManger::Iterate()
//a. 配电系统操作
disSysOption();
//b. ccu操作
ccuOption();
//c. 输出报告
buildPowerSysReport();
}
@@ -376,7 +377,12 @@ 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()
{
//1.更新断路器的状态
@@ -481,6 +487,13 @@ void PowerManger::disSysOption()
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);
}
@@ -563,8 +576,8 @@ int PowerManger::handleInite_s1(FSM_State &fsm, void* pData)
{
pm->m_pmState = pm->m_Fault_s99;
}
//3. 初始化配电系统为待机状态
pm->initTargetDisBreakerState();
//3. 初始化系统为待机状态
pm->initControlCmd();
pm->m_pmState = pm->m_Standby_s2;
return 0;
}
@@ -601,8 +614,9 @@ int PowerManger::handleFault_s99(FSM_State &fsm, void* pData)
}
void PowerManger::initTargetDisBreakerState()
void PowerManger::initControlCmd()
{
//================初始化配电指令=============================
m_targetDisBreakerState.bus1Breaker.fuelCellCircuitBreaker = 0;
m_targetDisBreakerState.bus1Breaker.powerLithiumBatteryCircuitBreaker = 1; //动力锂电池默认接入
m_targetDisBreakerState.bus1Breaker.propulsionMotorCircuitBreaker = 0;
@@ -639,7 +653,16 @@ void PowerManger::initTargetDisBreakerState()
m_targetDisBreakerState.bus4Breaker.reservedCircuitBreaker1 = 0;
m_targetDisBreakerState.bus4Breaker.reservedCircuitBreaker2 = 0;
m_targetDisBreakerState.bus4Breaker.emergencyLithiumBatteryGroup1CircuitBreaker = 1; //紧急锂电池默认接入
//================初始化复合管控=============================
m_CcuColCmd.workCondition = 0x00; //默认无效
m_CcuColCmd.fcuCmd = 0x00; //无效指令
m_CcuColCmd.fcuPowerEfficiency = 15; //默认为15kw
m_CcuColCmd.fcuInsEfficiency = 00; //预留指令,无效
m_CcuColCmd.insBatCmd = 0x00; //无效指令
m_CcuColCmd.powerBatCmd = 0x00; //无效指令
m_CcuColCmd.powerBatEfficiency = 230; //默认为最大
m_CcuColCmd.heartbeat = 0;
m_CcuColCmd.masterState = 0xAA;//主站状态,运行中
}
char PowerManger::getBreakerOption(char cmd)