添加开路电压采集

This commit is contained in:
起床就犯困 2024-12-11 22:11:05 +08:00
parent 26c786e3f6
commit 0929ac0d96
3 changed files with 80 additions and 29 deletions

View File

@ -5,11 +5,12 @@
#include "FM_TIM.h" #include "FM_TIM.h"
#include "comm_types.h" #include "comm_types.h"
BOOL getChargControlFlag(void);
void setChargControlFlag(BOOL state); void setChargControlFlag(BOOL state);
void bl_chargControl(void); void bl_chargControl(void);
void endChargWork(void); void endChargWork(void);
void stopChargWork(void); void stopChargWork(void);
void beginChargWork(void);
void startChargWork(void); void startChargWork(void);
extern void chargControl(void); extern void chargControl(void);

View File

@ -23,7 +23,7 @@ static void BatteryChargControl(void);
static void noBatteryChargControl(void); static void noBatteryChargControl(void);
static BOOL chargControlFlag = FALSE; static BOOL chargControlFlag = FALSE;
static BOOL getChargControlFlag(void); // static BOOL getChargControlFlag(void);
void setChargControlFlag(BOOL state); void setChargControlFlag(BOOL state);
/** /**
@ -400,8 +400,8 @@ void mppt_readJust(void)
*/ */
void endChargWork(void) void endChargWork(void)
{ {
EN_PWMOUT_Diseable(); setChargControlFlag(FALSE);
pwm_Stop(); setDutyRatioToZero();
setMPPT_Mode(noWork); setMPPT_Mode(noWork);
beginStartControlTask(); beginStartControlTask();
} }
@ -414,11 +414,22 @@ void endChargWork(void)
*/ */
void stopChargWork(void) void stopChargWork(void)
{ {
EN_PWMOUT_Diseable(); setChargControlFlag(FALSE);
pwm_Stop(); setDutyRatioToZero();
setMPPT_Mode(noWork); setMPPT_Mode(noWork);
} }
/**
* @brief
* @param
* @retval
*
*/
void beginChargWork(void)
{
beginStartControlTask();
}
/** /**
* @brief * @brief
* @param * @param
@ -432,8 +443,6 @@ void startChargWork(void)
/** /**
* @brief * @brief
* @param * @param
@ -534,14 +543,14 @@ void chargControlMode(void)
*/ */
void judgeYNBattery(void) void judgeYNBattery(void)
{ {
// if (getBatteryVoltage() > 16 || getBatteryVoltage() < 10) { if (getBatteryVoltage() > 16 || getBatteryVoltage() < 10) {
// setBatteryState(FALSE);
// return;
// }
if (getOutputVoltage() > 16 || getOutputVoltage() < 10) {
setBatteryState(FALSE); setBatteryState(FALSE);
return; return;
} }
// if (getOutputVoltage() > 16 || getOutputVoltage() < 10) {
// setBatteryState(FALSE);
// return;
// }
} }
/** /**
@ -623,7 +632,13 @@ BOOL getChargControlFlag(void)
return chargControlFlag; return chargControlFlag;
} }
/**
* @brief
* @param TRUE
* FALSE
* @retval
*
*/
void setChargControlFlag(BOOL state) void setChargControlFlag(BOOL state)
{ {
if (state == TRUE || state == FALSE) { if (state == TRUE || state == FALSE) {
@ -644,6 +659,7 @@ void bl_chargControl(void)
} }
// getCVData(); // getCVData();
setBatteryVoltage();
judgeYNBattery(); judgeYNBattery();
chargControlMode(); chargControlMode();

View File

@ -43,8 +43,11 @@ static void Task_softStart(void);
static STR_TimeSliceOffset m_impedanceCalculation; static STR_TimeSliceOffset m_impedanceCalculation;
static void Task_impedanceCalculation(void); static void Task_impedanceCalculation(void);
/* 开路电压采集 */
#define collectOpenCircuitVoltage_reloadVal 1000 /* 任务执行间隔 */
#define collectOpenCircuitVoltage_offset 0 /* 任务执行偏移量 */
STR_TimeSliceOffset g_collectOpenCircuitVoltage;
void Task_collectOpenCircuitVoltage(void);
/** /**
* @brief * @brief
@ -56,7 +59,7 @@ void task_Init(void)
{ {
TimeSliceOffset_Register(&m_runled, Task_Runled, runled_reloadVal, runled_offset); TimeSliceOffset_Register(&m_runled, Task_Runled, runled_reloadVal, runled_offset);
TimeSliceOffset_Register(&m_wdi, Task_wdi, wdi_reloadVal, wdi_offset); TimeSliceOffset_Register(&m_wdi, Task_wdi, wdi_reloadVal, wdi_offset);
beginStartControlTask(); TimeSliceOffset_Register(&m_startControl, Task_startControl, startControl_reloadVal, startControl_offset);
TimeSliceOffset_Register(&m_refreshJudgeData, Task_refreshJudgeData, refreshJudgeData_reloadVal, refreshJudgeData_offset); TimeSliceOffset_Register(&m_refreshJudgeData, Task_refreshJudgeData, refreshJudgeData_reloadVal, refreshJudgeData_offset);
} }
@ -135,7 +138,7 @@ void Task_refreshJudgeData(void)
&& (getHighSideMosTemperature() < g_cfgParameter.HighSideMosTemperature_start)) { && (getHighSideMosTemperature() < g_cfgParameter.HighSideMosTemperature_start)) {
/* 状态处于停止运行则打开充电开关 */ /* 状态处于停止运行则打开充电开关 */
if (getMosTemperState() == mosTemperStop) { if (getMosTemperState() == mosTemperStop) {
beginChargWork();
} }
setMosTemperState(mosTemperStart); setMosTemperState(mosTemperStart);
} }
@ -147,13 +150,8 @@ void Task_refreshJudgeData(void)
&& getHighSideMosTemperature() > g_cfgParameter.HighSideMosTemperature_stop) { && getHighSideMosTemperature() > g_cfgParameter.HighSideMosTemperature_stop) {
setMosTemperState(mosTemperStop); setMosTemperState(mosTemperStop);
/* 停止充电 */ /* 停止充电 */
EN_PWMOUT_Diseable(); stopChargWork();
pwm_Stop(); }
setMPPT_Mode(noWork);
}
} }
/** /**
@ -191,7 +189,8 @@ void Task_startControl(void)
*/ */
void beginStartControlTask(void) void beginStartControlTask(void)
{ {
TimeSliceOffset_Register(&m_startControl, Task_startControl, startControl_reloadVal, startControl_offset); TimeSliceOffset_Register(&m_startControl, Task_startControl, startControl_reloadVal, startControl_offset);
m_startControl.runFlag = 1;
} }
/** /**
@ -218,7 +217,6 @@ void Task_softStart(void)
dutyRatio = 0; dutyRatio = 0;
num = 0; num = 0;
setDutyRatio(0.75f); setDutyRatio(0.75f);
set_pwmDutyRatio(getDutyRatio());
if (getBatteryState() == TRUE) { if (getBatteryState() == TRUE) {
setMPPT_Mode(MPPT); setMPPT_Mode(MPPT);
@ -230,7 +228,6 @@ void Task_softStart(void)
else { else {
setDutyRatio(getDutyRatio() + 0.01f); setDutyRatio(getDutyRatio() + 0.01f);
set_pwmDutyRatio(getDutyRatio());
} }
} }
/** /**
@ -296,7 +293,44 @@ void Task_impedanceCalculation(void)
} }
} }
/**
* @brief
* @retval
*/
void Task_collectOpenCircuitVoltage(void)
{
/* 用于无充电控制时获取开路电压 */
static uint32_t collectOpenCircuitVoltageNoNUM = 0;
/* 用于有充电控制时获取开路电压 */
static uint8_t collectOpenCircuitVoltageYesNUM = 0;
if (FALSE == getChargControlFlag()) {
if (1 <= collectOpenCircuitVoltageNoNUM++) {
setSolarOpenCircuitVoltage();
collectOpenCircuitVoltageNoNUM = 0;
}
collectOpenCircuitVoltageYesNUM = 0;
}
collectOpenCircuitVoltageYesNUM++;
/* 到达开路电压检测时间 */
if (collectOpenCircuitVoltageYesNUM == g_cfgParameter.collectOpenCircuitVoltageTime) {
/* 有电池才进行开路电压检测 */
if (getBatteryState()) {
stopChargWork();
/* 设置延时为1000-500ms */
g_collectOpenCircuitVoltage.count = 500;
}
collectOpenCircuitVoltageYesNUM = 0;
}
/* 检测开路电压 */
if (collectOpenCircuitVoltageYesNUM == g_cfgParameter.collectOpenCircuitVoltageTime + 1) {
setSolarOpenCircuitVoltage();
beginChargWork();
}
}