|
@@ -4,7 +4,8 @@
|
|
#include "MC_PID_regulators.h"
|
|
#include "MC_PID_regulators.h"
|
|
#include "MC_Clarke_park.h"
|
|
#include "MC_Clarke_park.h"
|
|
#include "stm32f10x_svpwm_3shunt.h"
|
|
#include "stm32f10x_svpwm_3shunt.h"
|
|
-
|
|
|
|
|
|
+#include "hall_sensor.h"
|
|
|
|
+#include "motor_control.h"
|
|
#define FluxWeak_Control 0
|
|
#define FluxWeak_Control 0
|
|
|
|
|
|
//È«¾Ö±äÁ¿¶¨Òå
|
|
//È«¾Ö±äÁ¿¶¨Òå
|
|
@@ -43,28 +44,55 @@ void FOC_Model(int16_t Ref, int16_t MotorSpeed, uint16_t SVM_Angle) //
|
|
|
|
|
|
IdFdbFlt += (((int32_t)(Stat_Curr_q_d.qI_Component2 << 10)) - IdFdbFlt)>>10; // KFlt = 2ms
|
|
IdFdbFlt += (((int32_t)(Stat_Curr_q_d.qI_Component2 << 10)) - IdFdbFlt)>>10; // KFlt = 2ms
|
|
IdFdb = IdFdbFlt >> 10;
|
|
IdFdb = IdFdbFlt >> 10;
|
|
-
|
|
|
|
- if( ADC1_Result[ADC1_RANK_VIN] < 3100) //55648mV 17.951 3100
|
|
|
|
|
|
+
|
|
|
|
+ if((MC_HallSensorData.BackwardFlag==TRUE)&&(MC_CalParam.AssistRunMode == MC_AssistRunMode_GAS))
|
|
{
|
|
{
|
|
- IqFluxLessRef = Ref;
|
|
|
|
- if(IdFluxLessRef<(-4))
|
|
|
|
|
|
+ if( ADC1_Result[ADC1_RANK_VIN] < 3000) //53853mV 17.951 3000
|
|
{
|
|
{
|
|
- IdFluxLessRef += 4;
|
|
|
|
|
|
+ IqFluxLessRef = Ref;
|
|
|
|
+ if(IdFluxLessRef<(-4))
|
|
|
|
+ {
|
|
|
|
+ IdFluxLessRef += 4;
|
|
|
|
+ }
|
|
|
|
+ else IdFluxLessRef = 0;
|
|
}
|
|
}
|
|
- else IdFluxLessRef = 0;
|
|
|
|
- }
|
|
|
|
- else if( ADC1_Result[ADC1_RANK_VIN] < 3310 ) //59417mV 3310
|
|
|
|
- {
|
|
|
|
- FOC_IqLim = 1050 - (ADC1_Result[ADC1_RANK_VIN] - 3100)*5;
|
|
|
|
- IqFluxLessRef = Ref<FOC_IqLim ? Ref : FOC_IqLim;
|
|
|
|
- IdFluxLessRef -= 2;
|
|
|
|
- if(IdFluxLessRef<-420) IdFluxLessRef = -420;
|
|
|
|
|
|
+ else if( ADC1_Result[ADC1_RANK_VIN] < 3210 ) //57622mV 3210
|
|
|
|
+ {
|
|
|
|
+ FOC_IqLim = 1050 - (ADC1_Result[ADC1_RANK_VIN] - 3000)*5;
|
|
|
|
+ IqFluxLessRef = Ref<FOC_IqLim ? Ref : FOC_IqLim;
|
|
|
|
+ IdFluxLessRef -= 2;
|
|
|
|
+ if(IdFluxLessRef<-420) IdFluxLessRef = -420;
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ IqFluxLessRef=0;
|
|
|
|
+ IdFluxLessRef = -420;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
- IqFluxLessRef=0;
|
|
|
|
- IdFluxLessRef = -420;
|
|
|
|
- }
|
|
|
|
|
|
+ if( ADC1_Result[ADC1_RANK_VIN] < 3100) //55648mV 17.951 3100
|
|
|
|
+ {
|
|
|
|
+ IqFluxLessRef = Ref;
|
|
|
|
+ if(IdFluxLessRef<(-4))
|
|
|
|
+ {
|
|
|
|
+ IdFluxLessRef += 4;
|
|
|
|
+ }
|
|
|
|
+ else IdFluxLessRef = 0;
|
|
|
|
+ }
|
|
|
|
+ else if( ADC1_Result[ADC1_RANK_VIN] < 3310 ) //59417mV 3310
|
|
|
|
+ {
|
|
|
|
+ FOC_IqLim = 1050 - (ADC1_Result[ADC1_RANK_VIN] - 3100)*5;
|
|
|
|
+ IqFluxLessRef = Ref<FOC_IqLim ? Ref : FOC_IqLim;
|
|
|
|
+ IdFluxLessRef -= 2;
|
|
|
|
+ if(IdFluxLessRef<-420) IdFluxLessRef = -420;
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ IqFluxLessRef=0;
|
|
|
|
+ IdFluxLessRef = -420;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
|
|
UqVoltTmp = PID_Regulator(IqFluxLessRef,\
|
|
UqVoltTmp = PID_Regulator(IqFluxLessRef,\
|
|
IqFdb,\
|
|
IqFdb,\
|