添加开路电压采集
This commit is contained in:
parent
26c786e3f6
commit
0929ac0d96
|
@ -5,11 +5,12 @@
|
|||
#include "FM_TIM.h"
|
||||
#include "comm_types.h"
|
||||
|
||||
|
||||
BOOL getChargControlFlag(void);
|
||||
void setChargControlFlag(BOOL state);
|
||||
void bl_chargControl(void);
|
||||
void endChargWork(void);
|
||||
void stopChargWork(void);
|
||||
void beginChargWork(void);
|
||||
void startChargWork(void);
|
||||
|
||||
extern void chargControl(void);
|
||||
|
|
|
@ -23,7 +23,7 @@ static void BatteryChargControl(void);
|
|||
static void noBatteryChargControl(void);
|
||||
|
||||
static BOOL chargControlFlag = FALSE;
|
||||
static BOOL getChargControlFlag(void);
|
||||
// static BOOL getChargControlFlag(void);
|
||||
void setChargControlFlag(BOOL state);
|
||||
|
||||
/**
|
||||
|
@ -400,8 +400,8 @@ void mppt_readJust(void)
|
|||
*/
|
||||
void endChargWork(void)
|
||||
{
|
||||
EN_PWMOUT_Diseable();
|
||||
pwm_Stop();
|
||||
setChargControlFlag(FALSE);
|
||||
setDutyRatioToZero();
|
||||
setMPPT_Mode(noWork);
|
||||
beginStartControlTask();
|
||||
}
|
||||
|
@ -414,11 +414,22 @@ void endChargWork(void)
|
|||
*/
|
||||
void stopChargWork(void)
|
||||
{
|
||||
EN_PWMOUT_Diseable();
|
||||
pwm_Stop();
|
||||
setChargControlFlag(FALSE);
|
||||
setDutyRatioToZero();
|
||||
setMPPT_Mode(noWork);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 启动充电,开启启动任务
|
||||
* @param
|
||||
* @retval
|
||||
*
|
||||
*/
|
||||
void beginChargWork(void)
|
||||
{
|
||||
beginStartControlTask();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 启动充电,直接软启动
|
||||
* @param
|
||||
|
@ -432,8 +443,6 @@ void startChargWork(void)
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief 判断达到停止充电的条件
|
||||
* @param
|
||||
|
@ -534,14 +543,14 @@ void chargControlMode(void)
|
|||
*/
|
||||
void judgeYNBattery(void)
|
||||
{
|
||||
// if (getBatteryVoltage() > 16 || getBatteryVoltage() < 10) {
|
||||
// setBatteryState(FALSE);
|
||||
// return;
|
||||
// }
|
||||
if (getOutputVoltage() > 16 || getOutputVoltage() < 10) {
|
||||
if (getBatteryVoltage() > 16 || getBatteryVoltage() < 10) {
|
||||
setBatteryState(FALSE);
|
||||
return;
|
||||
}
|
||||
// if (getOutputVoltage() > 16 || getOutputVoltage() < 10) {
|
||||
// setBatteryState(FALSE);
|
||||
// return;
|
||||
// }
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -623,7 +632,13 @@ BOOL getChargControlFlag(void)
|
|||
return chargControlFlag;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief 设置充电控制的标志位
|
||||
* @param TRUE 启动充电控制
|
||||
* FALSE 关闭充电控制
|
||||
* @retval
|
||||
*
|
||||
*/
|
||||
void setChargControlFlag(BOOL state)
|
||||
{
|
||||
if (state == TRUE || state == FALSE) {
|
||||
|
@ -644,6 +659,7 @@ void bl_chargControl(void)
|
|||
}
|
||||
|
||||
// getCVData();
|
||||
setBatteryVoltage();
|
||||
judgeYNBattery();
|
||||
|
||||
chargControlMode();
|
||||
|
|
|
@ -43,8 +43,11 @@ static void Task_softStart(void);
|
|||
static STR_TimeSliceOffset m_impedanceCalculation;
|
||||
static void Task_impedanceCalculation(void);
|
||||
|
||||
|
||||
|
||||
/* 开路电压采集 */
|
||||
#define collectOpenCircuitVoltage_reloadVal 1000 /* 任务执行间隔 */
|
||||
#define collectOpenCircuitVoltage_offset 0 /* 任务执行偏移量 */
|
||||
STR_TimeSliceOffset g_collectOpenCircuitVoltage;
|
||||
void Task_collectOpenCircuitVoltage(void);
|
||||
|
||||
/**
|
||||
* @brief 启动时初始化各任务
|
||||
|
@ -56,7 +59,7 @@ void task_Init(void)
|
|||
{
|
||||
TimeSliceOffset_Register(&m_runled, Task_Runled, runled_reloadVal, runled_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);
|
||||
}
|
||||
|
||||
|
@ -135,7 +138,7 @@ void Task_refreshJudgeData(void)
|
|||
&& (getHighSideMosTemperature() < g_cfgParameter.HighSideMosTemperature_start)) {
|
||||
/* 状态处于停止运行则打开充电开关 */
|
||||
if (getMosTemperState() == mosTemperStop) {
|
||||
|
||||
beginChargWork();
|
||||
}
|
||||
setMosTemperState(mosTemperStart);
|
||||
}
|
||||
|
@ -147,13 +150,8 @@ void Task_refreshJudgeData(void)
|
|||
&& getHighSideMosTemperature() > g_cfgParameter.HighSideMosTemperature_stop) {
|
||||
setMosTemperState(mosTemperStop);
|
||||
/* 停止充电 */
|
||||
EN_PWMOUT_Diseable();
|
||||
pwm_Stop();
|
||||
setMPPT_Mode(noWork);
|
||||
stopChargWork();
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -192,6 +190,7 @@ void Task_startControl(void)
|
|||
void beginStartControlTask(void)
|
||||
{
|
||||
TimeSliceOffset_Register(&m_startControl, Task_startControl, startControl_reloadVal, startControl_offset);
|
||||
m_startControl.runFlag = 1;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -218,7 +217,6 @@ void Task_softStart(void)
|
|||
dutyRatio = 0;
|
||||
num = 0;
|
||||
setDutyRatio(0.75f);
|
||||
set_pwmDutyRatio(getDutyRatio());
|
||||
|
||||
if (getBatteryState() == TRUE) {
|
||||
setMPPT_Mode(MPPT);
|
||||
|
@ -230,7 +228,6 @@ void Task_softStart(void)
|
|||
|
||||
else {
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue