From 0a1ae495306d973b92ff99dbe00c5001d6c434b5 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: Tue, 10 Dec 2024 22:25:55 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BB=BB=E5=8A=A1=E5=8F=98?= =?UTF-8?q?=E9=87=8F=E7=9A=84=E4=BD=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- APP/businessLogic/Inc/task.h | 35 +---------- APP/businessLogic/Src/bl_chargControl.c | 20 +++++-- APP/businessLogic/Src/task.c | 77 +++++++++++++++++++------ 3 files changed, 75 insertions(+), 57 deletions(-) diff --git a/APP/businessLogic/Inc/task.h b/APP/businessLogic/Inc/task.h index 207cb78..bc31773 100644 --- a/APP/businessLogic/Inc/task.h +++ b/APP/businessLogic/Inc/task.h @@ -6,42 +6,9 @@ void task_Init(void); -/* 控制运行指示灯和喂狗 */ -#define runled_reloadVal 1000 /* 任务执行间隔 */ -#define runled_offset 0 /* 任务执行偏移量 */ -extern STR_TimeSliceOffset m_runled; -void Task_Runled(void); -/* 喂狗 */ -#define wdi_reloadVal 1000 /* 任务执行间隔 */ -#define wdi_offset 100 /* 任务执行偏移量 */ -extern STR_TimeSliceOffset m_wdi; -void Task_wdi(void); - -/* 刷新寄存器中的数据 */ -#define refreshJudgeData_reloadVal 1000 /* 任务执行间隔 */ -#define refreshJudgeData_offset 0 /* 任务执行偏移量 */ -extern STR_TimeSliceOffset m_refreshJudgeData; -void Task_refreshJudgeData(void); - -/* 启动任务 */ -#define startControl_reloadVal 5000 /* 任务执行间隔 */ -#define startControl_offset 100 /* 任务执行偏移量 */ -extern STR_TimeSliceOffset g_startControl; -void Task_startControl(void); - -/* 软启动 */ -#define softStart_reloadVal 10 /* 任务执行间隔 */ -#define softStart_offset 0 /* 任务执行偏移量 */ -extern STR_TimeSliceOffset m_softStart; -void Task_softStart(void); - -/* 回路阻抗检测 */ -#define impedanceCalculation_reloadVal 100 /* 任务执行间隔 */ -#define impedanceCalculation_offset 0 /* 任务执行偏移量 */ -extern STR_TimeSliceOffset m_impedanceCalculation; -void Task_impedanceCalculation(void); +void beginStartControlTask(void); diff --git a/APP/businessLogic/Src/bl_chargControl.c b/APP/businessLogic/Src/bl_chargControl.c index f0678bc..ce583c0 100644 --- a/APP/businessLogic/Src/bl_chargControl.c +++ b/APP/businessLogic/Src/bl_chargControl.c @@ -3,6 +3,7 @@ #include "parameter.h" #include "comm_types.h" #include "FM_GPIO.h" +#include "task.h" static void stopChargWork(void); @@ -405,6 +406,8 @@ void stopChargWork(void) { EN_PWMOUT_Diseable(); pwm_Stop(); + setMPPT_Mode(noWork); + beginStartControlTask(); } /** @@ -433,11 +436,9 @@ BOOL stopChargConditions(void) */ BOOL floatChargConditions(void) { - if (g_cfgParameter.constantVoltageChargeV < getBatteryVoltage() - && g_cfgParameter.floatI > getChargCurrent()) { + if ((g_cfgParameter.constantVoltageChargeV < getBatteryVoltage() && g_cfgParameter.floatI > getChargCurrent())) { return TRUE; - } - + } return FALSE; } @@ -451,6 +452,10 @@ BOOL floatChargConditions(void) */ BOOL mpptChargConditions(void) { + if (((g_cfgParameter.constantVoltageChargeV - 0.2f) > getBatteryVoltage()) + && (getChargCurrent() > 0.1f)) { + return TRUE; + } return FALSE; } @@ -464,7 +469,11 @@ BOOL mpptChargConditions(void) */ BOOL constantVChargConditions(void) { - + if ((g_cfgParameter.constantVoltageChargeV < getBatteryVoltage()) + && ((g_cfgParameter.floatI + 0.1) <= getChargBatteryCurrent())) { + return TRUE; + } + return FALSE; } @@ -478,7 +487,6 @@ void chargControlMode(void) { if (stopChargConditions()) { stopChargWork(); - setMPPT_Mode(noWork); } if (floatChargConditions()) { diff --git a/APP/businessLogic/Src/task.c b/APP/businessLogic/Src/task.c index ed50fc9..ecbfc6b 100644 --- a/APP/businessLogic/Src/task.c +++ b/APP/businessLogic/Src/task.c @@ -6,6 +6,46 @@ #include "chargControlEnum.h" #include "bl_chargControl.h" +/* 控制运行指示灯和喂狗 */ +// #define runled_reloadVal 1000 /* 任务执行间隔 */ +static uint16_t runled_reloadVal = 1000; /* 任务执行间隔 */ +#define runled_offset 0 /* 任务执行偏移量 */ +static STR_TimeSliceOffset m_runled; +static void Task_Runled(void); + +/* 喂狗 */ +#define wdi_reloadVal 1000 /* 任务执行间隔 */ +#define wdi_offset 100 /* 任务执行偏移量 */ +static STR_TimeSliceOffset m_wdi; +static void Task_wdi(void); + +/* 刷新寄存器中的数据 */ +#define refreshJudgeData_reloadVal 1000 /* 任务执行间隔 */ +#define refreshJudgeData_offset 0 /* 任务执行偏移量 */ +static STR_TimeSliceOffset m_refreshJudgeData; +static void Task_refreshJudgeData(void); + +/* 启动任务 */ +#define startControl_reloadVal 5000 /* 任务执行间隔 */ +#define startControl_offset 100 /* 任务执行偏移量 */ +static STR_TimeSliceOffset m_startControl; +static void Task_startControl(void); + +/* 软启动 */ +#define softStart_reloadVal 1 /* 任务执行间隔 */ +#define softStart_offset 0 /* 任务执行偏移量 */ +static STR_TimeSliceOffset m_softStart; +static void Task_softStart(void); + +/* 回路阻抗检测 */ +#define impedanceCalculation_reloadVal 100 /* 任务执行间隔 */ +#define impedanceCalculation_offset 0 /* 任务执行偏移量 */ +static STR_TimeSliceOffset m_impedanceCalculation; +static void Task_impedanceCalculation(void); + + + + /** * @brief 启动时初始化各任务 * @param None @@ -17,10 +57,6 @@ void task_Init(void) TimeSliceOffset_Register(&m_runled, Task_Runled, runled_reloadVal, runled_offset); TimeSliceOffset_Register(&m_wdi, Task_wdi, wdi_reloadVal, wdi_offset); - - - - } /** @@ -29,7 +65,6 @@ void task_Init(void) * @retval None * */ -STR_TimeSliceOffset m_runled; void Task_Runled(void) { RUN_LED(); @@ -40,7 +75,6 @@ void Task_Runled(void) * @param None * @retval None */ -STR_TimeSliceOffset m_wdi; void Task_wdi(void) { /* 每天复位一次,复位前将电量信息写入flash中 */ @@ -64,14 +98,11 @@ void Task_wdi(void) * @retval None * */ -STR_TimeSliceOffset m_refreshJudgeData; void Task_refreshJudgeData(void) { /* 获取数据 */ setInputVoltage(); - setHighSideMosTemperature(); - - + setHighSideMosTemperature(); /* 判断有无电池 */ if (getBatteryState() == FALSE && (getChargBatteryCurrent() > 1 || getChargBatteryCurrent() < -1) @@ -80,7 +111,7 @@ void Task_refreshJudgeData(void) } /* 温度检测 */ - if () { + if (1) { } @@ -97,20 +128,34 @@ void Task_refreshJudgeData(void) * @retval None * */ -STR_TimeSliceOffset g_startControl; void Task_startControl(void) { + /* 是否达到启动条件 */ if (getSolarInCircuitVoltage() > g_cfgParameter.startSolarOpenCircuitV) { - TimeSliceOffset_Unregister(&g_startControl); - g_startControl.runFlag = 0; + TimeSliceOffset_Unregister(&m_startControl); + m_startControl.runFlag = 0; + + + /* 判断有无电池 */ if (getOutputVoltage() > 10) { setBatteryState(TRUE); } else { setBatteryState(FALSE); } + + /* 启动软起动任务 */ TimeSliceOffset_Register(&m_softStart, Task_softStart, softStart_reloadVal, softStart_offset); } } +/** + * @brief 打开启动任务 + * @param + * @retval + */ +void beginStartControlTask(void) +{ + TimeSliceOffset_Register(&m_wdi, Task_startControl, startControl_reloadVal, startControl_offset); +} /** * @brief 软启动 @@ -118,7 +163,6 @@ void Task_startControl(void) * @retval * */ -STR_TimeSliceOffset m_softStart; void Task_softStart(void) { static uint16_t num = 0; @@ -147,7 +191,7 @@ void Task_softStart(void) } else { - setDutyRatio(getDutyRatio() + 0.05f); + setDutyRatio(getDutyRatio() + 0.01f); set_pwmDutyRatio(getDutyRatio()); } } @@ -157,7 +201,6 @@ void Task_softStart(void) * @param * @retval */ -STR_TimeSliceOffset m_impedanceCalculation; void Task_impedanceCalculation(void) { static uint8_t num = 0;