From 3a36df469e491ef482ccdee2cf0e8811862d5e17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B7=E5=BA=8A=E5=B0=B1=E7=8A=AF=E5=9B=B0?= <11730503+psx123456@user.noreply.gitee.com> Date: Thu, 23 Jan 2025 18:05:39 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=94=B9=E5=BC=80=E8=B7=AF=E7=94=B5?= =?UTF-8?q?=E5=8E=8B=E9=87=87=E9=9B=86=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- APP/businessLogic/Src/bl_chargControl.c | 2 +- APP/businessLogic/Src/bl_comm.c | 2 +- APP/businessLogic/Src/task.c | 114 ++++++++++++++++-------- 3 files changed, 80 insertions(+), 38 deletions(-) diff --git a/APP/businessLogic/Src/bl_chargControl.c b/APP/businessLogic/Src/bl_chargControl.c index d0ebaff..6d5e1dc 100644 --- a/APP/businessLogic/Src/bl_chargControl.c +++ b/APP/businessLogic/Src/bl_chargControl.c @@ -102,7 +102,7 @@ void mppt_constantVoltageO(float OutVoltage) // static float lastVolt = 0; // static float lastStepPwm = 0; static float lastDutyRatio = 0; - static float kp = 0.005; + static float kp = 0.002; static float ki = 0.00001; static float outVolt; static float error; diff --git a/APP/businessLogic/Src/bl_comm.c b/APP/businessLogic/Src/bl_comm.c index 3a0a154..9e2d6e4 100644 --- a/APP/businessLogic/Src/bl_comm.c +++ b/APP/businessLogic/Src/bl_comm.c @@ -65,7 +65,7 @@ void gw485_TxIt(void) /** * @brief bat485串口中断发送回调函数 * @param - * @retval + * @retval * */ void bat485_TxIt(void) diff --git a/APP/businessLogic/Src/task.c b/APP/businessLogic/Src/task.c index bfca5c3..37e4e0b 100644 --- a/APP/businessLogic/Src/task.c +++ b/APP/businessLogic/Src/task.c @@ -343,6 +343,8 @@ void Task_refreshJudgeData(void) if (getSolarInCircuitVoltage() >= g_cfgParameter.maxOpenSolarOutputCircuitV) { // log_info("getSolarInCircuitVoltage : %f", getSolarInCircuitVoltage()); // log_info("g_cfgParameter.maxOpenSolarOutputCircuitV : %f", g_cfgParameter.maxOpenSolarOutputCircuitV); + TimeSliceOffset_Unregister(&m_startControl); + m_startControl.runFlag = 0; stopChargWork(); insertEventsOrderRecord(overInputVolt); } @@ -364,7 +366,6 @@ void Task_startControl(void) && getSolarInCircuitVoltage() < g_cfgParameter.maxOpenSolarOutputCircuitV) { TimeSliceOffset_Unregister(&m_startControl); m_startControl.runFlag = 0; - /* 判断有无电池 */ if (getOutputVoltage() > 11.0f) { @@ -499,52 +500,93 @@ void Task_impedanceCalculation(void) */ void Task_collectOpenCircuitVoltage(void) { - /* 用于无充电控制时获取开路电压 */ - static uint32_t collectOpenCircuitVoltageNoNUM = 0; - /* 用于有充电控制时获取开路电压 */ - static uint8_t collectOpenCircuitVoltageYesNUM = 0; + // /* 用于无充电控制时获取开路电压 */ + // static uint32_t collectOpenCircuitVoltageNoNUM = 0; + // /* 用于有充电控制时获取开路电压 */ + // static uint8_t collectOpenCircuitVoltageYesNUM = 0; /* 用于有充电控制时当标志位 */ static BOOL collectOpenCircuitVoltageYesFlag = 0; - - /* 未进行充电时,3S采集一次开路电压 */ - if (FALSE == getChargControlFlag()) { - if (2 <= collectOpenCircuitVoltageNoNUM++) { - setSolarOpenCircuitVoltage(); - collectOpenCircuitVoltageNoNUM = 0; - } - collectOpenCircuitVoltageYesNUM = 0; - if (collectOpenCircuitVoltageYesFlag == TRUE) { - setSolarOpenCircuitVoltage(); - beginChargWork(); - collectOpenCircuitVoltageYesFlag = FALSE; - } - - } - - collectOpenCircuitVoltageYesNUM++; + static uint32_t collectOpenCircuitVoltageNUM = 0; + collectOpenCircuitVoltageNUM++; /* 到达开路电压检测时间 */ - if (collectOpenCircuitVoltageYesNUM == g_cfgParameter.collectOpenCircuitVoltageTime) { + if (collectOpenCircuitVoltageNUM == g_cfgParameter.collectOpenCircuitVoltageTime) { + // if (collectOpenCircuitVoltageNUM == 180) { /* 有电池才进行开路电压检测 */ - if (getBatteryState()) { - collectOpenCircuitVoltageYesFlag = TRUE; - stopChargWork(); - /* 设置延时为(1000-500)ms */ - m_collectOpenCircuitVoltage.count = 500; - } - collectOpenCircuitVoltageYesNUM = 0; + if (!getBatteryState()) { + collectOpenCircuitVoltageNUM = 0; + return; + } + collectOpenCircuitVoltageYesFlag = TRUE; + stopChargWork(); + /* 设置延时为(1000-500)ms */ + m_collectOpenCircuitVoltage.count = 500; } /* 检测开路电压 */ - if (collectOpenCircuitVoltageYesNUM == g_cfgParameter.collectOpenCircuitVoltageTime + 1) { + if (collectOpenCircuitVoltageNUM == g_cfgParameter.collectOpenCircuitVoltageTime + 1) { + // if (collectOpenCircuitVoltageNUM == 181) { /* 有电池才进行开路电压检测 */ - if (getBatteryState()) { - setSolarOpenCircuitVoltage(); - beginChargWork(); - collectOpenCircuitVoltageYesFlag = FALSE; - } + if (!getBatteryState()) { + collectOpenCircuitVoltageNUM = 0; + return; + } + setSolarOpenCircuitVoltage(); + beginChargWork(); + collectOpenCircuitVoltageYesFlag = FALSE; + // beginSoftStartTask(); + collectOpenCircuitVoltageNUM = 0; + // setChargControlFlag(TRUE); } + + /* 未进行充电时,3S采集一次开路电压 */ + if (FALSE == getChargControlFlag() && !collectOpenCircuitVoltageYesFlag) { + if (2 <= collectOpenCircuitVoltageNUM) { + setSolarOpenCircuitVoltage(); + collectOpenCircuitVoltageNUM = 0; + return; + } + } + + // /* 未进行充电时,3S采集一次开路电压 */ + // if (FALSE == getChargControlFlag()) { + // if (2 <= collectOpenCircuitVoltageNoNUM++) { + // setSolarOpenCircuitVoltage(); + // collectOpenCircuitVoltageNoNUM = 0; + // } + // collectOpenCircuitVoltageYesNUM = 0; + // if (collectOpenCircuitVoltageYesFlag == TRUE) { + // setSolarOpenCircuitVoltage(); + // beginChargWork(); + // collectOpenCircuitVoltageYesFlag = FALSE; + // } + + // } + + // collectOpenCircuitVoltageYesNUM++; + + // /* 到达开路电压检测时间 */ + // if (collectOpenCircuitVoltageYesNUM == g_cfgParameter.collectOpenCircuitVoltageTime) { + // /* 有电池才进行开路电压检测 */ + // if (getBatteryState()) { + // collectOpenCircuitVoltageYesFlag = TRUE; + // stopChargWork(); + // /* 设置延时为(1000-500)ms */ + // m_collectOpenCircuitVoltage.count = 500; + // } + // } + + // /* 检测开路电压 */ + // if (collectOpenCircuitVoltageYesNUM == g_cfgParameter.collectOpenCircuitVoltageTime + 1) { + // /* 有电池才进行开路电压检测 */ + // if (getBatteryState()) { + // setSolarOpenCircuitVoltage(); + // beginChargWork(); + // collectOpenCircuitVoltageYesFlag = FALSE; + // } + // collectOpenCircuitVoltageYesNUM = 0; + // } } // /**