添加开路电压采集
This commit is contained in:
parent
26c786e3f6
commit
0929ac0d96
|
@ -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);
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue