diff --git a/APP/application/Src/start.c b/APP/application/Src/start.c index b48d966..e396b4b 100644 --- a/APP/application/Src/start.c +++ b/APP/application/Src/start.c @@ -6,6 +6,7 @@ #include "pDebug.h" #include "parameter.h" #include "FM_TIM.h" +#include "inFlash.h" void startInfo(void) @@ -63,7 +64,13 @@ void start(void) startInfo(); // HAL_Delay(5000); + // while (1) { + // cfgTest(); + // HAL_Delay(1000); + // } + + TimeSliceOffset_Start(); } diff --git a/APP/businessLogic/Inc/bl_chargControl.h b/APP/businessLogic/Inc/bl_chargControl.h index d644b7a..a62869e 100644 --- a/APP/businessLogic/Inc/bl_chargControl.h +++ b/APP/businessLogic/Inc/bl_chargControl.h @@ -5,6 +5,9 @@ #include "FM_TIM.h" #include "comm_types.h" +#define PI_CONTROL_MAX 0.1f +#define PI_CONTROL_MIN -0.1f + BOOL getChargControlFlag(void); void setChargControlFlag(BOOL state); void bl_chargControl(void); diff --git a/APP/businessLogic/Inc/inFlash.h b/APP/businessLogic/Inc/inFlash.h index 818e3bf..23c1645 100644 --- a/APP/businessLogic/Inc/inFlash.h +++ b/APP/businessLogic/Inc/inFlash.h @@ -133,6 +133,7 @@ void read_config_info(config_info *output_config_info); void saveConfigInfo(config_info *config_info); void config_info_start(void); void readFlashContent(config_info *configInfo); +void cfgTest(void); void saveLoopImpedance(); BOOL readLoopImpedance(); diff --git a/APP/businessLogic/Src/bl_chargControl.c b/APP/businessLogic/Src/bl_chargControl.c index 6c178db..19f93e4 100644 --- a/APP/businessLogic/Src/bl_chargControl.c +++ b/APP/businessLogic/Src/bl_chargControl.c @@ -22,10 +22,24 @@ static void chargControlMode(void); static void BatteryChargControl(void); static void noBatteryChargControl(void); +static void setPIControlStep(float *PI_step); + + static BOOL chargControlFlag = FALSE; // static BOOL getChargControlFlag(void); void setChargControlFlag(BOOL state); +void setPIControlStep(float *PI_step) +{ + if (*PI_step > PI_CONTROL_MAX) { + *PI_step = PI_CONTROL_MAX; + } + + else if (*PI_step < PI_CONTROL_MIN) { + *PI_step = PI_CONTROL_MIN; + } +} + /** * @brief 恒定输入电压 * @param InVoltage 需要控制到的输入电压 @@ -45,6 +59,7 @@ void mppt_constantVoltage(float InVoltage) error = getSolarInCircuitVoltage() - InVoltage; stepPwm = kp * error + ki * getSolarInCircuitVoltage(); + setPIControlStep(&stepPwm); setDutyRatio((getDutyRatio() + stepPwm)); // if (getMosTemperState() == mosTemperEnd) { @@ -71,7 +86,8 @@ void mppt_constantVoltageNoBatteryO(float OutVoltage) outVolt = getOutputVoltage(); error = OutVoltage - outVolt; stepPwm = kp * error + ki * outVolt; - + setPIControlStep(&stepPwm); + setDutyRatio((getDutyRatio() + stepPwm)); } @@ -95,6 +111,7 @@ void mppt_constantVoltageO(float OutVoltage) outVolt = getOutputVoltage(); error = OutVoltage - outVolt; StepPwm = kp * error + ki * outVolt; + setPIControlStep(&StepPwm); /* 当有电池时,输出电压的曲线是先上升后下降 */ if (lastDutyRatio >= getDutyRatio()) { diff --git a/APP/businessLogic/Src/inFlash.c b/APP/businessLogic/Src/inFlash.c index 865f268..014d054 100644 --- a/APP/businessLogic/Src/inFlash.c +++ b/APP/businessLogic/Src/inFlash.c @@ -53,6 +53,57 @@ void saveConfigInfo(config_info *configInfo) // save_backups_config_info(config_info); } +void cfgTest(void) +{ + // uint16_t tempTime = HAL_GetTick(); + // config_info temp_configInfo; + // readFlashContent(&temp_configInfo); + // log_info("1 read time : %d \n", HAL_GetTick() - tempTime); + // tempTime = HAL_GetTick(); + // saveConfigInfo(&temp_configInfo); + // log_info("1 write time : %d \n", HAL_GetTick() - tempTime); + + // tempTime = HAL_GetTick(); + // for (int i = 0; i < 10; i++) { + // readFlashContent(&temp_configInfo); + // saveConfigInfo(&temp_configInfo); + // } + // log_info("10 time : %d \n", HAL_GetTick() - tempTime); + + // uint16_t tempTime = HAL_GetTick(); + // float tempF; + // readtotalElectricityConsumption(&tempF); + // log_info("1 read time : %d \n", HAL_GetTick() - tempTime); + // tempTime = HAL_GetTick(); + // savetotalElectricityConsumption(&tempF); + // log_info("1 write time : %d \n", HAL_GetTick() - tempTime); + + // tempTime = HAL_GetTick(); + // for (int i = 0; i < 10; i++) { + // readtotalElectricityConsumption(&tempF); + // savetotalElectricityConsumption(&tempF); + // } + // log_info("10 time : %d \n", HAL_GetTick() - tempTime); + + uint16_t tempTime = HAL_GetTick(); + timeInfo tempT; + readTime(&tempT); + log_info("1 read time : %d \n", HAL_GetTick() - tempTime); + tempTime = HAL_GetTick(); + saveTime(&tempT); + log_info("1 write time : %d \n", HAL_GetTick() - tempTime); + + tempTime = HAL_GetTick(); + for (int i = 0; i < 10; i++) { + readTime(&tempT); + saveTime(&tempT); + } + log_info("10 time : %d \n", HAL_GetTick() - tempTime); + +} + + + /** * @brief 检测flash中是否有配置文件或者文件是否有损坏,若两处flash中都损坏则使用默认文件 * @param config_info 读取的配置信息 diff --git a/EWARM/chargeController.ewd b/EWARM/chargeController.ewd index 2f04eb2..ae5b760 100644 --- a/EWARM/chargeController.ewd +++ b/EWARM/chargeController.ewd @@ -36,7 +36,7 @@ @@ -294,7 +294,7 @@