Explorar el Código

V2.1.0_20200624
1、增加力矩根据踏频滤波的处理,根据信号变化,取180度的均值;
2、采用运动版程序,根据踏频滤波的数值作为助力处理函数的输入;
3、版本号:V2.1.0_20200624

dail.zhou hace 5 años
padre
commit
3bfc35de8e

BIN
MDK-ARM/bin/QD007A_CTL_APP.bin


+ 2 - 0
User/Inc/cadence_sensor.h

@@ -39,6 +39,8 @@ extern const uint8_t BackwardDir_EncoderData[4];
 extern MC_CadenceResult_Struct_t MC_CadenceResult;
 extern uint16_t MC_Cadence_Array[10];
 
+extern uint16_t torqueByCadence_180;
+
 extern uint8_t Cadence_ReadHallState(void);
 extern void CadenceSensor_GPIO_Init(void);
 extern void CadenceSensor_Process(MC_CadenceResult_Struct_t* p_MC_CadenceResult, uint16_t StopDelayTime, uint8_t StarCount, TrueOrFalse_Flag_Struct_t UpSlopeFlag);

+ 0 - 8
User/Inc/motor_control.h

@@ -80,14 +80,6 @@ extern FlagStatus MC_StarFlag;
 extern MC_TorqueProcess_Param_Struct_t MC_TorqueProcess_Param;
 extern MC_WalkProcess_Param_Struct_t MC_WalkProcess_Param;
 
-extern uint8_t flagCandence;
-extern uint16_t candenceCount; 
-extern int16_t torqueDataFromCadence;
-extern uint16_t torque_NM;
-
-extern int32_t Taping_activeFlt;    //踏频实时值滤波中间量
-extern int32_t Taping_activeFlted;  //踏频实时值滤波值
-
 #define Update_MC_ControlCode_Back()    { MC_ControlCode_Back.GearSt = (MC_GearSt_Struct_t)~MC_ControlCode.GearSt;\
 		                                      MC_ControlCode_Back.LightSwitch = (MC_LightSwitch_Struct_t)~MC_ControlCode.LightSwitch; }
 

+ 70 - 8
User/Src/cadence_sensor.c

@@ -1,5 +1,5 @@
 #include "cadence_sensor.h"
-#include "motor_control.h"
+#include "adc.h"
 
 //局部变量定义
 const uint8_t ForwardDir_EncoderData[4] = {2,0,3,1};//判断正转用的编码顺序表,正转时信号为:2,0,1,3
@@ -44,6 +44,15 @@ void CadenceSensor_GPIO_Init(void)
 	
 }
 
+#define T_FIFO_LENGTH 30
+uint16_t T_FIFO[T_FIFO_LENGTH]={0};
+uint8_t T_Index=0;
+uint32_t T_sum=0;
+uint8_t T_fifo_full_falg=0;
+uint16_t torque_temp=0;
+uint16_t torqueByCadence_180=0;
+uint8_t cadence_start_flag=0;
+
 //踏频传感器检测处理
 void CadenceSensor_Process(MC_CadenceResult_Struct_t* p_MC_CadenceResult, uint16_t StopDelayTime, uint8_t StarCount, TrueOrFalse_Flag_Struct_t UpSlopeFlag)
 {
@@ -114,12 +123,53 @@ void CadenceSensor_Process(MC_CadenceResult_Struct_t* p_MC_CadenceResult, uint16
 		Cadence_ActiveFlt += (((int32_t)CadenceTemp << 8) - Cadence_ActiveFlt) >> 4;
 		p_MC_CadenceResult->Cadence_Data = (uint8_t)(Cadence_ActiveFlt >> 8);
 		
+		/*根据踏频信号,采样最近180度内力矩平均值*/
+		torque_temp = ADC_SensorData.TorqueSensor;
+		
+		if(T_fifo_full_falg != 0)
+		{
+			T_sum -= T_FIFO[T_Index];
+			T_sum += torque_temp;
+			T_FIFO[T_Index] = torque_temp;
+		}
+		
+		T_Index++;
+		
+		if(T_Index >= T_FIFO_LENGTH)
+		{
+			T_Index = 0;	
+			if(T_fifo_full_falg == 0)
+			{
+				T_fifo_full_falg = 1;
+			}
+			else if(T_fifo_full_falg == 1)
+			{
+				T_fifo_full_falg = 2;
+			}
+		}
+		
+		if(T_fifo_full_falg == 1)
+		{
+			if(T_Index == 0)
+			{
+				torqueByCadence_180 = torque_temp;
+			}
+			else
+			{
+				torqueByCadence_180 = T_sum / T_Index;
+			}
+		}
+		else if(T_fifo_full_falg == 2)
+		{
+			torqueByCadence_180 = T_sum / T_FIFO_LENGTH;
+		}
+		else
+		{
+			torqueByCadence_180 = torque_temp;
+		}
+		/*踏频信号采样*/
+		/*踏频信号采样*/
 		
-		/*带补偿力矩模式使用*/
-		Taping_activeFlted = p_MC_CadenceResult->Cadence_Data;
-		candenceCount++;
-		flagCandence = 1;	
-		torqueDataFromCadence = torque_NM;
 		
 		/*上坡时,启动阈值为1*/
 		if(UpSlopeFlag == TRUE)
@@ -138,11 +188,15 @@ void CadenceSensor_Process(MC_CadenceResult_Struct_t* p_MC_CadenceResult, uint16
 			if(CadenceStarFlagCnt >= CadenceStartThresholdValue)
 			{
 			  p_MC_CadenceResult->IsStopFlag = FALSE;
+				
+				cadence_start_flag = 1;
 			}
 		}
 		else
 		{
 		  p_MC_CadenceResult->IsStopFlag = TRUE;
+			
+			cadence_start_flag = 0;
 		}
 		
 		//更新停机计时数值
@@ -163,8 +217,16 @@ void CadenceSensor_Process(MC_CadenceResult_Struct_t* p_MC_CadenceResult, uint16
 		Cadence_ActiveFlt = 0;
 		CadenceStarFlagCnt =0;
 		
-		Taping_activeFlt = 0;
-		Taping_activeFlted = 0;
+		for(uint8_t i=0;i<T_FIFO_LENGTH;i++)
+		{
+				T_FIFO[i] = 0;
+		}
+		T_Index = 0;
+		T_sum = 0;
+		T_fifo_full_falg=0;
+		torqueByCadence_180 = 0;
+		
+		cadence_start_flag = 0;
 	}
 	
 	MC_CadenceSensorStatus.HallGropuStatus_Old = MC_CadenceSensorStatus.HallGropuStatus;

+ 22 - 549
User/Src/motor_control.c

@@ -628,8 +628,8 @@ MC_CalParam_Struct_t MC_AssistRunMode_Cadence_Process(MC_GearSt_Struct_t GearSt)
 	return (p_MC_CalParam);
 }
 
-//力矩模式处理 运动版
-MC_CalParam_Struct_t MC_AssistRunMode_Torque_Process(uint16_t SenorData, MC_GearSt_Struct_t GearSt)
+//力矩模式处理
+MC_CalParam_Struct_t MC_AssistRunMode_Torque_Process(uint16_t SenorData, MC_GearSt_Struct_t GearSt, uint16_t SenorDataByCadence)
 {
   MC_CalParam_Struct_t p_MC_CalParam = {MC_AssistRunMode_INVALID, 0,	0, RESET};
   uint8_t TorqueAccStep = 0;//力矩上升斜率
@@ -783,6 +783,8 @@ MC_CalParam_Struct_t MC_AssistRunMode_Torque_Process(uint16_t SenorData, MC_Gear
 	//力矩给定升降速处理
 	else
 	{
+		MC_TorqueProcess_Param.TorqueApp = SenorDataByCadence;
+		
 		//按照助力档位调节力矩输入值
 		switch(GearSt)
 		{
@@ -805,7 +807,10 @@ MC_CalParam_Struct_t MC_AssistRunMode_Torque_Process(uint16_t SenorData, MC_Gear
 				//控制输入给定减速斜率
 				TorqueDecStep = MC_AssisParam.Gear_ECO.DecCnt;
 				//随力矩输入调节助力比
-				Torque_Temp = (uint16_t)((uint32_t)(MC_TorqueProcess_Param.TorqueApp * Coefficient_GainCal(100, MC_AssisParam.Gear_ECO.Gain_K, MC_AssisParam.Gear_ECO.Upper_Iq, MC_TorqueProcess_Param.TorqueApp)) >> 10);
+				//Torque_Temp = (uint16_t)((uint32_t)(MC_TorqueProcess_Param.TorqueApp * Coefficient_GainCal(100, MC_AssisParam.Gear_ECO.Gain_K, MC_AssisParam.Gear_ECO.Upper_Iq, MC_TorqueProcess_Param.TorqueApp)) >> 10);
+		
+				Torque_Temp = (uint16_t)((uint32_t)MC_TorqueProcess_Param.TorqueApp * MC_AssisParam.Gear_ECO.Gain_K >> 10);
+
 				//根据助力增益调节助力比
 				Torque_Temp = Torque_Temp * MC_ConfigParam1.UserAdjParam_ECO.Assist_K_GAIN / 100;
 				//给定下限
@@ -840,7 +845,10 @@ MC_CalParam_Struct_t MC_AssistRunMode_Torque_Process(uint16_t SenorData, MC_Gear
 				//控制输入给定减速斜率
 				TorqueDecStep = MC_AssisParam.Gear_NORM.DecCnt;
 				//随力矩输入调节助力比
-				Torque_Temp = (uint16_t)((uint32_t)(MC_TorqueProcess_Param.TorqueApp * Coefficient_GainCal(100, MC_AssisParam.Gear_NORM.Gain_K, MC_AssisParam.Gear_NORM.Upper_Iq, MC_TorqueProcess_Param.TorqueApp)) >> 10);
+			//	Torque_Temp = (uint16_t)((uint32_t)(MC_TorqueProcess_Param.TorqueApp * Coefficient_GainCal(100, MC_AssisParam.Gear_NORM.Gain_K, MC_AssisParam.Gear_NORM.Upper_Iq, MC_TorqueProcess_Param.TorqueApp)) >> 10);
+			
+				Torque_Temp = (uint16_t)((uint32_t)MC_TorqueProcess_Param.TorqueApp * MC_AssisParam.Gear_NORM.Gain_K >> 10);
+
 				//根据助力增益调节助力比
 				Torque_Temp = Torque_Temp * MC_ConfigParam1.UserAdjParam_NORM.Assist_K_GAIN / 100;
 				//给定下限
@@ -875,7 +883,10 @@ MC_CalParam_Struct_t MC_AssistRunMode_Torque_Process(uint16_t SenorData, MC_Gear
 				//控制输入给定减速斜率
 				TorqueDecStep = MC_AssisParam.Gear_SPORT.DecCnt;
 				//随力矩输入调节助力比
-				Torque_Temp = (uint16_t)((uint32_t)(MC_TorqueProcess_Param.TorqueApp * Coefficient_GainCal(100, MC_AssisParam.Gear_SPORT.Gain_K, MC_AssisParam.Gear_SPORT.Upper_Iq, MC_TorqueProcess_Param.TorqueApp)) >> 10);
+				//Torque_Temp = (uint16_t)((uint32_t)(MC_TorqueProcess_Param.TorqueApp * Coefficient_GainCal(100, MC_AssisParam.Gear_SPORT.Gain_K, MC_AssisParam.Gear_SPORT.Upper_Iq, MC_TorqueProcess_Param.TorqueApp)) >> 10);
+				
+				Torque_Temp = (uint16_t)((uint32_t)MC_TorqueProcess_Param.TorqueApp * MC_AssisParam.Gear_SPORT.Gain_K >> 10);
+				
 				//根据助力增益调节助力比
 				Torque_Temp = Torque_Temp * MC_ConfigParam1.UserAdjParam_SPORT.Assist_K_GAIN / 100;
 				//给定下限
@@ -910,7 +921,11 @@ MC_CalParam_Struct_t MC_AssistRunMode_Torque_Process(uint16_t SenorData, MC_Gear
 				//控制输入给定减速斜率
 				TorqueDecStep = MC_AssisParam.Gear_TURBO.DecCnt;
 				//随力矩输入调节助力比
-				Torque_Temp = (uint16_t)((uint32_t)(MC_TorqueProcess_Param.TorqueApp * Coefficient_GainCal(100, MC_AssisParam.Gear_TURBO.Gain_K, MC_AssisParam.Gear_TURBO.Upper_Iq, MC_TorqueProcess_Param.TorqueApp)) >> 10);
+			 //	Torque_Temp = (uint16_t)((uint32_t)(MC_TorqueProcess_Param.TorqueApp * Coefficient_GainCal(100, MC_AssisParam.Gear_TURBO.Gain_K, MC_AssisParam.Gear_TURBO.Upper_Iq, MC_TorqueProcess_Param.TorqueApp)) >> 10);
+				
+				Torque_Temp = (uint16_t)((uint32_t)MC_TorqueProcess_Param.TorqueApp * MC_AssisParam.Gear_TURBO.Gain_K >> 10);
+				
+				
 				//根据助力增益调节助力比
 				Torque_Temp = Torque_Temp * MC_ConfigParam1.UserAdjParam_TURBO.Assist_K_GAIN / 100;
 				//给定下限
@@ -1116,545 +1131,6 @@ MC_CalParam_Struct_t MC_AssistRunMode_Torque_Process(uint16_t SenorData, MC_Gear
 	return (p_MC_CalParam);
 }
 
-//力矩模式处理 城市版
-uint16_t candenceCount;      //踏频磁环信号计数变量,全局变量
-
-uint16_t torqueApp;
-uint16_t torque_NM;                       //力矩值,单位NM
-uint16_t torqueRank=0;                    //由踏频采样后的力矩值,得出的力矩给定
-static uint16_t torqueRankLast=0;        //力矩给定历史值
-static uint16_t torqueRankBak=0;           //力矩给定历史值备份
-static uint8_t flagUpDown=0;      //输入力矩上升、下降的标志位  
-
-static int32_t tmpFltSum=0;     //输入力矩滤波的静态变量
-int16_t  tmpFlted=0;            //输入力矩滤波的临时变量
-
-int16_t torqueApp2;             //力矩计算的临时变量
-
-uint8_t flagCandence=0;           //踏频信号更新标志
-int16_t torqueAppLag=0;           //力局地经过加减速处理后的临时变量
-int16_t torqueAppRatio=0;         //力矩值计算助力比后的临时变量
-
-int16_t torqueAppAccStep = 4; 		//力矩给定升速斜率
-int16_t torqueAppDecStep = 1;		 //力矩给定减速斜率
-
-uint16_t candenceBakAtTop=0;       //踏频最大值备份
-uint16_t torqueByCandenceDec=0;     //由踏频变化计算的力矩减弱量
-int16_t torqueDataFromCadence=0;		//经过踏频信号采样的力矩值
-int32_t Taping_activeFlt=0;   	 //踏频实时值滤波中间量
-int32_t Taping_activeFlted = 0;  	//踏频实时值滤波值
-
-#define TORQUE_TMP  28            //力矩AD值与1NM的换算系数
-
-MC_CalParam_Struct_t MC_AssistRunMode_Torque_compensation(uint16_t SenorData, MC_GearSt_Struct_t GearSt)
-{
-	MC_CalParam_Struct_t p_MC_CalParam = {MC_AssistRunMode_INVALID, 0,	0, RESET};
-	uint16_t TorqueStartData, TorqueStopData;//力矩启动值,力矩停机值
-	int32_t Torque_Ref_Temp;
-	static uint32_t TorqueStopDelayTimeCnt = 0;//低力矩停机计时
-	uint16_t TorqueStopDelayTime;
-	static int16_t IqRefByInPower;//限流计算结果
-	
-	static uint16_t CurrentLimitPresent;     //限流实际值,做升降速处理
-	uint16_t CurrentLimitSet; 
-	
-	static FlagStatus SoftStartFlag = SET;
-	static uint16_t SoftStartDelayTimeCount = 0;
-	uint16_t SoftStartDelayTime = 0;
-	uint16_t SoftStartAcc = 0;
-			
-	#if 0
-	//输入三角波,用于测试
-	static uint32_t WaveTime_Zero = 0;
-	static uint32_t Time_Enter = 0;
-	static uint16_t SensorDataDebug = 0;
-	if((HAL_GetTick() - Time_Enter) > 10) // 超时10ms未进入,波形发生初始时刻清零
-	{
-	  WaveTime_Zero = HAL_GetTick();
-	}
-	Time_Enter = HAL_GetTick();
-	SensorDataDebug  = TriangleWaveGenerate(WaveTime_Zero, 125, 250 ,1500);
-	SenorData = SensorDataDebug;
-  #endif
-	
-	MC_TorqueProcess_Param.TorqueApp = SenorData;
-	
-	/*为下一步抓取最大值,力矩需要滤波*/
-	tmpFltSum += (((int32_t )SenorData << 10) - tmpFltSum) >> 7;
-	tmpFlted = (int16_t)(tmpFltSum >> 10);
-	
-	torque_NM = tmpFlted / TORQUE_TMP ;  //转换为单位NM 的变量
-	
-	//低力矩停机
-	TorqueStopData = (MC_TorqueCorrectParam.StarData < 200) ? 100 : (MC_TorqueCorrectParam.StarData >> 1);
-  if(MC_TorqueProcess_Param.TorqueApp >= (TorqueStopData))
-  {
-    TorqueStopDelayTimeCnt = HAL_GetTick();
-  }
-  else
-  {
-		if(MC_RunInfo.MotorSpeed > 200)
-		{
-		  TorqueStopDelayTime = 218400 / MC_RunInfo.MotorSpeed; //60s / (电机转速 / 4.55 / 2.4) / 3,曲柄1/3圈
-		}
-		else
-		{
-		  TorqueStopDelayTime = 1200;
-		}
-		TorqueStopDelayTime= (TorqueStopDelayTime < 500) ? 500 : TorqueStopDelayTime;
-		
-    if((HAL_GetTick() - TorqueStopDelayTimeCnt) > TorqueStopDelayTime)//超时1200ms
-    {
-      MC_TorqueProcess_Param.MotorStopLock_Flag = SET;
-    }
-  }
-	
-	//启动值判断
-	if(MC_RunInfo.BikeSpeed > 60)
-	{
-		TorqueStartData =  (MC_TorqueCorrectParam.StarData < 200 ? 150 \
-																														 : (MC_TorqueCorrectParam.StarData > 700 ? 525 \
-																																																		 : (MC_TorqueCorrectParam.StarData * 3 / 4)));
-	}
-	else
-	{
-		TorqueStartData =  (MC_TorqueCorrectParam.StarData < 200 ? 150 \
-																														 : (MC_TorqueCorrectParam.StarData > 700 ? 525 \
-																																																		 : MC_TorqueCorrectParam.StarData));
-	}
-	if(MC_TorqueProcess_Param.TorqueApp >= TorqueStartData)
-	{
-		 MC_TorqueProcess_Param.MotorStopLock_Flag = RESET;
-	}
-	
-	//踏频反向或踏频停止停机
-	if((MC_CadenceResult.Cadence_Dir == MC_Cadence_Backward) ||
-		 (MC_CadenceResult.IsStopFlag == TRUE)		
-		)
-	{
-		MC_TorqueProcess_Param.MotorStopLock_Flag = SET;
-	}
-	
-	//停机状态,延时处理
-	if(MC_TorqueProcess_Param.MotorStopLock_Flag == SET) 
-	{
-		torqueRankBak = 0;
-		torqueAppDecStep = 6;//84;
-		
-	  if(MC_TorqueProcess_Param.TorqueRefEnd < 10)
-		{
-		  MC_TorqueProcess_Param.TorqueRefEnd = 0;
-			//停机处理
-			MC_MotorStop(&MC_StarFlag);
-			p_MC_CalParam.Foc_Flag = RESET;
-			//缓启动标志置位
-			SoftStartFlag = SET;
-			SoftStartDelayTimeCount = 0;
-		}
-		else
-		{
-		  MC_TorqueProcess_Param.TorqueRefEnd -= 7;
-			MC_MotorStar(&MC_StarFlag);
-		}
-		torqueAppLag = MC_TorqueProcess_Param.TorqueRefEnd;
-	}
-	else
-	{
-			if(flagCandence==1)
-			{
-				flagCandence = 0;
-				
-				torqueRank = torqueDataFromCadence;     //根据踏频磁环信号采样力矩值
-				
-				if(torqueRank > torqueRankLast)     //比较本次与上次的值
-				{
-					
-					if(flagUpDown==0)
-					{
-						//最低点
-					}
-					 
-					if(torqueRank > torqueRankBak)    //与当前使用的值比较
-					{
-						torqueRankBak = torqueRank;
-						candenceCount = 0;
-						torqueAppDecStep = 1;
-						torqueByCandenceDec = 0;
-					}
-					
-					flagUpDown=1;// 力矩上升标志
-				}
-				else if(torqueRank < torqueRankLast)
-				{
-					if(flagUpDown==1)
-					{	
-						//最高点
-						torqueRankBak = torqueRankLast;
-						candenceCount = 0;
-						torqueAppDecStep = 1;//14;
-						
-						/*备份力矩最高点的踏频*/
-						candenceBakAtTop = Taping_activeFlted;
-						torqueByCandenceDec = 0;
-					}
-					flagUpDown=0;  //降	
-				}
-				
-				torqueRankLast = torqueRank;     //记录上一次的值
-				
-				if(candenceCount > 60)          //没有力矩信号, 踏频信号超过360度,加大降速值,清零给定
-				{
-					torqueRankBak  = 0;
-					torqueAppDecStep = 6;//84;
-				}
-				else if(candenceCount > 35)  //超过210度,没有力矩信号
-				{
-					torqueRankBak  = 0;
-					torqueAppDecStep = 2;
-					
-					if((Taping_activeFlted < (candenceBakAtTop - 3)) && (tmpFlted<100))
-					{		
-						torqueAppDecStep = 6;
-					}
-				}
-				else // (candenceCount < 35)  
-				{
-					/*踏频降低,且力矩低*/
-					if((Taping_activeFlted < (candenceBakAtTop - 3)) && (tmpFlted<100))
-					{
-						torqueByCandenceDec +=3;			
-						torqueAppDecStep = 6;
-					}
-				}
-
-				torqueApp2  = torqueRankBak - torqueByCandenceDec;
-				//torqueApp2  = torqueRankBak;
-				torqueApp2 = torqueApp2 > 0 ? torqueApp2 : 0;
-				
-				//转换力矩值为力矩控制量
-				torqueApp = torqueApp2  * TORQUE_TMP ;
-				
-			}/*if(flagCandence==1)*/
-			
-			if(GearSt == 0x33)
-			{
-				torqueAppRatio = ((int32_t)torqueApp * torqueApp / (MC_AssisParam.Gear_SMART.i_Sport_TH));
-				
-				torqueAppRatio = (int16_t)((int32_t)torqueAppRatio *  MC_ConfigParam1.UserAdjParam_SMART.Assist_K_GAIN / 100);   //上位机助力比增益调节
-				
-				//加速增益调节
-				if(MC_ConfigParam1.UserAdjParam_SMART.StarModel_GAIN <= 80)
-				{
-					torqueAppAccStep = MC_AssisParam.Gear_SMART.AccCnt - 1;
-				}
-				else if(MC_ConfigParam1.UserAdjParam_SMART.StarModel_GAIN >= 120)
-				{
-					torqueAppAccStep = MC_AssisParam.Gear_SMART.AccCnt + 1;
-				}
-				else
-				{
-				  torqueAppAccStep = MC_AssisParam.Gear_SMART.AccCnt;
-				}
-				
-				//给定上限
-				torqueAppRatio = (torqueAppRatio > MC_AssisParam.Gear_SMART.Upper_Iq) ? MC_AssisParam.Gear_SMART.Upper_Iq : torqueAppRatio;
-			
-				//限流参数设置
-				CurrentLimitSet = (uint32_t)(MC_AssisParam.Gear_SMART.CurrentMax_K * MC_ConfigParam1.CurrentLimit * 1000 >> 17) * MC_CadenceLimit_K;
-				CurrentLimitPresent = MC_DataSet_Linear_Process(CurrentLimitSet, CurrentLimitPresent, 5 ,1);
-				PID_IMax.hLower_Limit_Output = -(MC_AssisParam.Gear_SMART.Upper_Iq);   //Lower Limit for Output limitation
-				PID_IMax.hUpper_Limit_Output = 0; //Upper Limit for Output limitation
-				PID_IMax.wLower_Limit_Integral = -(MC_AssisParam.Gear_SMART.Upper_Iq << 10); // 放大1024
-				PID_IMax.wUpper_Limit_Integral = 0; // 放大1024
-				
-			}
-			else
-			{
-				switch( GearSt & 0x0F )
-				{
-					case 1:
-						//torqueAppRatio = torqueApp * 0.5;								
-						//torqueAppRatio = (int16_t)((uint32_t)(torqueApp * Coefficient_GainCal( 51 ,410, 1300, torqueApp)) >> 10 ); //0.4
-						torqueAppRatio = (int16_t)((uint32_t)(torqueApp * Coefficient_GainCal( 51 ,MC_AssisParam.Gear_ECO.Gain_K, 1300, torqueApp)) >> 10 ); //0.4
-						torqueAppRatio = (int16_t)((int32_t)torqueAppRatio *  MC_ConfigParam1.UserAdjParam_ECO.Assist_K_GAIN / 100);   //上位机助力比增益调节
-				
-						//加速增益调节
-						if(MC_ConfigParam1.UserAdjParam_ECO.StarModel_GAIN <= 80)
-						{
-							torqueAppAccStep = MC_AssisParam.Gear_ECO.AccCnt - 1;
-						}
-						else if(MC_ConfigParam1.UserAdjParam_ECO.StarModel_GAIN >= 120)
-						{
-							torqueAppAccStep = MC_AssisParam.Gear_ECO.AccCnt + 1;
-						}
-						else
-						{
-						  torqueAppAccStep = MC_AssisParam.Gear_ECO.AccCnt;
-						}
-					
-						//给定上限
-						torqueAppRatio = (torqueAppRatio > MC_AssisParam.Gear_ECO.Upper_Iq) ? MC_AssisParam.Gear_ECO.Upper_Iq : torqueAppRatio;
-						//限流参数设置			
-						CurrentLimitSet = (uint32_t)(MC_AssisParam.Gear_ECO.CurrentMax_K * MC_ConfigParam1.CurrentLimit * 1000 >> 17) * 100;
-						CurrentLimitPresent = MC_DataSet_Linear_Process(CurrentLimitSet, CurrentLimitPresent, 5 ,1);
-					
-						PID_IMax.hLower_Limit_Output = -(MC_AssisParam.Gear_ECO.Upper_Iq);   //Lower Limit for Output limitation
-						PID_IMax.hUpper_Limit_Output = 0; //Upper Limit for Output limitation
-						PID_IMax.wLower_Limit_Integral = -(MC_AssisParam.Gear_ECO.Upper_Iq << 10); // 放大1024
-						PID_IMax.wUpper_Limit_Integral = 0; // 放大1024
-						
-						break;
-					case 2:
-						//torqueAppRatio = torqueApp * 0.8;						
-						//torqueAppRatio = (int16_t)((uint32_t)(torqueApp * Coefficient_GainCal( 102 ,717, 1300, torqueApp)) >> 10 );  //0.7
-						torqueAppRatio = (int16_t)((uint32_t)(torqueApp * Coefficient_GainCal( 102 ,MC_AssisParam.Gear_NORM.Gain_K, 1300, torqueApp)) >> 10 );  //0.7
-						torqueAppRatio = (int16_t)((int32_t)torqueAppRatio *  MC_ConfigParam1.UserAdjParam_NORM.Assist_K_GAIN / 100);   //上位机助力比增益调节
-						
-						//加速增益调节
-						if(MC_ConfigParam1.UserAdjParam_NORM.StarModel_GAIN <= 80)
-						{
-							torqueAppAccStep = MC_AssisParam.Gear_NORM.AccCnt - 1;
-						}
-						else if(MC_ConfigParam1.UserAdjParam_NORM.StarModel_GAIN >= 120)
-						{
-							torqueAppAccStep = MC_AssisParam.Gear_NORM.AccCnt + 1;
-						}
-						else
-						{
-						  torqueAppAccStep = MC_AssisParam.Gear_NORM.AccCnt;
-						}
-					
-						//给定上限
-						torqueAppRatio = (torqueAppRatio > MC_AssisParam.Gear_NORM.Upper_Iq) ? MC_AssisParam.Gear_NORM.Upper_Iq : torqueAppRatio;
-					
-						//限流参数设置
-						CurrentLimitSet = (uint32_t)(MC_AssisParam.Gear_NORM.CurrentMax_K * MC_ConfigParam1.CurrentLimit * 1000 >> 17) * 100;
-						CurrentLimitPresent = MC_DataSet_Linear_Process(CurrentLimitSet, CurrentLimitPresent, 5 ,1);
-						
-						PID_IMax.hLower_Limit_Output = -(MC_AssisParam.Gear_NORM.Upper_Iq);   //Lower Limit for Output limitation
-						PID_IMax.hUpper_Limit_Output = 0; //Upper Limit for Output limitation
-						PID_IMax.wLower_Limit_Integral = -(MC_AssisParam.Gear_NORM.Upper_Iq << 10); // 放大1024
-						PID_IMax.wUpper_Limit_Integral = 0; // 放大1024
-					  
-						break;
-					
-					case 3:
-						//torqueAppRatio = torqueApp * 1.0;					
-						//torqueAppRatio = (int16_t)((uint32_t)(torqueApp * Coefficient_GainCal( 204 ,1024, 1300, torqueApp)) >> 10 ); //1.0
-						torqueAppRatio = (int16_t)((uint32_t)(torqueApp * Coefficient_GainCal( 204 , MC_AssisParam.Gear_SPORT.Gain_K, 1300, torqueApp)) >> 10 ); //1.0
-						torqueAppRatio = (int16_t)((int32_t)torqueAppRatio *  MC_ConfigParam1.UserAdjParam_SPORT.Assist_K_GAIN / 100);   //上位机助力比增益调节
-						
-						//加速增益调节
-						if(MC_ConfigParam1.UserAdjParam_SPORT.StarModel_GAIN <= 80)
-						{
-							torqueAppAccStep = MC_AssisParam.Gear_SPORT.AccCnt - 1;
-						}
-						else if(MC_ConfigParam1.UserAdjParam_SPORT.StarModel_GAIN >= 120)
-						{
-							torqueAppAccStep = MC_AssisParam.Gear_SPORT.AccCnt + 1;
-						}
-						else
-						{
-						  torqueAppAccStep = MC_AssisParam.Gear_SPORT.AccCnt;
-						}
-					
-						//给定上限
-						torqueAppRatio = (torqueAppRatio > MC_AssisParam.Gear_SPORT.Upper_Iq) ? MC_AssisParam.Gear_SPORT.Upper_Iq : torqueAppRatio;;
-					
-						//限流参数设置
-						CurrentLimitSet = (uint32_t)(MC_AssisParam.Gear_SPORT.CurrentMax_K * MC_ConfigParam1.CurrentLimit * 1000 >> 17) * MC_CadenceLimit_K;
-						CurrentLimitPresent = MC_DataSet_Linear_Process(CurrentLimitSet, CurrentLimitPresent, 5 ,1);
-						PID_IMax.hLower_Limit_Output = -(MC_AssisParam.Gear_SPORT.Upper_Iq);   //Lower Limit for Output limitation
-						PID_IMax.hUpper_Limit_Output = 0; //Upper Limit for Output limitation
-						PID_IMax.wLower_Limit_Integral = -(MC_AssisParam.Gear_SPORT.Upper_Iq << 10); // 放大1024
-						PID_IMax.wUpper_Limit_Integral = 0; // 放大1024
-					
-					  break;
-					
-					case 4:
-						//torqueAppRatio = torqueApp * 1.5;
-						//torqueAppRatio = (int16_t)((uint32_t)(torqueApp * Coefficient_GainCal( 307 ,1536, 1300, torqueApp)) >> 10 );  // 1.5
-						torqueAppRatio = (int16_t)((uint32_t)(torqueApp * Coefficient_GainCal( 307 ,MC_AssisParam.Gear_TURBO.Gain_K, 1300, torqueApp)) >> 10 );  // 1.5
-						torqueAppRatio = (int16_t)((int32_t)torqueAppRatio *  MC_ConfigParam1.UserAdjParam_TURBO.Assist_K_GAIN / 100);   //上位机助力比增益调节
-					
-						//加速增益调节
-						if(MC_ConfigParam1.UserAdjParam_TURBO.StarModel_GAIN <= 80)
-						{
-							torqueAppAccStep = MC_AssisParam.Gear_TURBO.AccCnt - 1;
-						}
-						else if(MC_ConfigParam1.UserAdjParam_TURBO.StarModel_GAIN >= 120)
-						{
-							torqueAppAccStep = MC_AssisParam.Gear_TURBO.AccCnt + 1;
-						}
-						else
-						{
-						  torqueAppAccStep = MC_AssisParam.Gear_TURBO.AccCnt;
-						}
-					
-						//给定上限
-						torqueAppRatio = (torqueAppRatio > MC_AssisParam.Gear_TURBO.Upper_Iq) ? MC_AssisParam.Gear_TURBO.Upper_Iq : torqueAppRatio;
-					
-						//限流参数设置
-						CurrentLimitSet = (uint32_t)(MC_AssisParam.Gear_TURBO.CurrentMax_K * MC_ConfigParam1.CurrentLimit * 1000 >> 17) * MC_CadenceLimit_K;
-						CurrentLimitPresent = MC_DataSet_Linear_Process(CurrentLimitSet, CurrentLimitPresent, 5 ,1);
-						PID_IMax.hLower_Limit_Output = -(MC_AssisParam.Gear_TURBO.Upper_Iq);   //Lower Limit for Output limitation
-						PID_IMax.hUpper_Limit_Output = 0; //Upper Limit for Output limitation
-						PID_IMax.wLower_Limit_Integral = -(MC_AssisParam.Gear_TURBO.Upper_Iq << 10); // 放大1024
-						PID_IMax.wUpper_Limit_Integral = 0; // 放大1024
-					
-					  break;
-					
-					default:break;
-				}
-			}
-	
-			//给定上限
-			torqueAppRatio = (torqueAppRatio > MC_AssisParam.Gear_TURBO.Upper_Iq) ? MC_AssisParam.Gear_TURBO.Upper_Iq : torqueAppRatio;
-							
-			//随车速调节助力比
-			#if 0
-			if(MC_ConfigParam1.StarModel == MC_StarMode_DYNAMIC)
-			{
-				torqueAppRatio = (uint16_t)((uint32_t)(torqueAppRatio * Function_Linear_3Stage(90, -2, MC_ConfigParam1.SpeedLimit * 10, 160, MC_RunInfo.BikeSpeed)) >> 10);
-			}
-			else if(MC_ConfigParam1.StarModel == MC_StarMode_SOFT)
-			{
-				torqueAppRatio = (uint16_t)((uint32_t)(torqueAppRatio * Function_Linear_3Stage(120, -3, MC_ConfigParam1.SpeedLimit * 10, 160, MC_RunInfo.BikeSpeed)) >> 10);
-			}
-			else
-			{
-				torqueAppRatio = (uint16_t)((uint32_t)(torqueAppRatio * Function_Linear_3Stage(MC_ConfigParam1.SpeedLimit * 10, 0, MC_ConfigParam1.SpeedLimit * 10, 160, MC_RunInfo.BikeSpeed)) >> 10);
-			}
-			#elif 1
-			torqueAppRatio = (uint16_t)((uint32_t)(torqueAppRatio * Function_Linear_3Stage(MC_ConfigParam1.SpeedLimit * 10, 0, MC_ConfigParam1.SpeedLimit * 10, 160, MC_RunInfo.BikeSpeed)) >> 10);
-			#endif
-				
-			//力矩给定处理
-			if(SoftStartFlag == SET)  //启动处理
-			{
-				if(MC_ConfigParam1.StarModel == MC_StarMode_DYNAMIC)
-				{
-					SoftStartDelayTime = 100;      //启动处理延时100ms
-					SoftStartAcc = 10;             //10ms递增0.1倍
-				}
-				else if(MC_ConfigParam1.StarModel == MC_StarMode_SOFT)
-				{
-					SoftStartDelayTime = 900;      //启动处理延时900ms
-					SoftStartAcc = 90;             //90ms递增0.1倍
-				}
-				else
-				{
-					SoftStartDelayTime = 300;      //启动处理延时300ms
-					SoftStartAcc = 30;             //30ms递增0.1倍
-				}
-				SoftStartDelayTimeCount++;
-				if(SoftStartDelayTimeCount <= SoftStartDelayTime) // 缓启动过程,按照0.1倍率逐步增加加减速斜率
-				{  
-					if(torqueAppRatio > torqueAppLag)
-					{
-						if((SoftStartDelayTimeCount % (10 - SoftStartDelayTimeCount / SoftStartAcc)) == 0)
-						{
-							torqueAppLag += torqueAppAccStep;
-							if(torqueAppLag > torqueAppRatio)
-							{
-								torqueAppLag = torqueAppRatio;
-							}
-						}
-					}
-					else if(torqueAppRatio < torqueAppLag)
-					{
-						torqueAppLag -= torqueAppDecStep;
-						if(torqueAppLag < torqueAppRatio)
-						{
-							torqueAppLag = torqueAppRatio;
-						}
-					}
-				}
-				else
-				{
-					SoftStartDelayTimeCount = 0;
-					SoftStartFlag = RESET;
-				}
-			}
-			else //正常骑行
-			{
-				if(torqueAppRatio > torqueAppLag)
-				{
-					torqueAppLag += torqueAppAccStep;
-					if(torqueAppLag > torqueAppRatio)
-					{
-						torqueAppLag = torqueAppRatio;
-					}
-				}
-				else if(torqueAppRatio < torqueAppLag)
-				{
-					torqueAppLag -= torqueAppDecStep;
-					if(torqueAppLag < torqueAppRatio)
-					{
-						torqueAppLag = torqueAppRatio;
-					}
-				}	
-			}
-					
-			MC_TorqueProcess_Param.TorqueRefEnd = torqueAppLag;		
-			MC_TorqueProcess_Param.TorqueRefEnd = (MC_TorqueProcess_Param.TorqueRefEnd < 6) ? 6 : MC_TorqueProcess_Param.TorqueRefEnd;
-			
-			//限速点处理
-			if( MC_SpeedSensorData.Speed_Data > (MC_ConfigParam1.SpeedLimit * 10 + 20) ) //限速值+2
-			{
-				MC_TorqueProcess_Param.MotorStopLock_Flag = SET;
-				MC_TorqueProcess_Param.TorqueRefEnd = 0;
-				//停机处理
-				MC_MotorStop(&MC_StarFlag);
-			}
-			#if 0  //低于限速点启动电机
-			else if(MC_RunInfo.BikeSpeed < ((MC_ConfigParam.SpeedLimit) * 10))
-			{
-				MC_MotorStar(&MC_StarFlag);
-			}
-			#elif 1  //低于断电点即启动电机
-			else
-			{
-				MC_MotorStar(&MC_StarFlag);
-			}
-			#endif
-	}
-	
-	#if 1
-	static uint16_t K_ByVoltage_Set_Old = 1024;
-	uint16_t K_ByVoltage_Set;
-	static uint16_t K_ByVoltage_Result;
-	uint16_t K_ByTemperature_Set;
-	static uint16_t K_ByTemperature_Result;
-
-	//根据电压调节输出
-  K_ByVoltage_Set = MC_Cal_K_ByVoltage(MC_RunInfo.BusVoltage, MC_MotorParam.Rate_Voltage, K_ByVoltage_Set_Old);//根据母线电压计算衰减比例,递减
-	K_ByVoltage_Set_Old = K_ByVoltage_Set;
-  K_ByVoltage_Result = MC_DataSet_Linear_Process(K_ByVoltage_Set, K_ByVoltage_Result, 1, 1); //设定值与给定值线性处理
-	
-	//根据温度调节输出
-	K_ByTemperature_Set = MC_Cal_K_ByTemperature(MC_RunInfo.T_Coil, MC_ConfigParam1.TempTH_Alarm); //根据温度计算衰减比例
-	K_ByTemperature_Result = MC_DataSet_Linear_Process(K_ByTemperature_Set, K_ByTemperature_Result, 1, 1); //设定值与给定值线性处理
-	
-	#else
-	
-	uint16_t K_ByVoltage_Result = 1024;
-	uint16_t K_ByTemperature_Result = 1024;
-	#endif
-	
-  //限流计算
-  IqRefByInPower =  PID_Regulator(CurrentLimitPresent / 100, (MC_RunInfo.BusCurrent >> 7), &PID_IMax);
-	
-	Torque_Ref_Temp = ((int32_t)MC_TorqueProcess_Param.TorqueRefEnd * K_ByVoltage_Result) >> 10;
-	Torque_Ref_Temp = (Torque_Ref_Temp * K_ByTemperature_Result) >> 10;
-	Torque_Ref_Temp = (Torque_Ref_Temp + IqRefByInPower) >> 1;
-	
-	p_MC_CalParam.Ref_Torque = (int16_t)Torque_Ref_Temp;
-	p_MC_CalParam.Foc_Flag = SET;
-	p_MC_CalParam.AssistRunMode = MC_AssistRunMode_TORQUE;
-	 
-	return (p_MC_CalParam);
-}
 
 /******************************全局函数定义*****************************/
 //传感器初始化
@@ -1815,10 +1291,7 @@ void MC_CalParam_Cal(MC_WorkMode_Struct_t p_MC_WorkMode, \
 		case MC_AssistRunMode_TORQUE:
 		{
 			//计算FOC控制输入
-			//*p_MC_CalParam = MC_AssistRunMode_Torque_Process(p_ADC_SensorData.TorqueSensor, GearSt);
-			
-			*p_MC_CalParam = MC_AssistRunMode_Torque_compensation(p_ADC_SensorData.TorqueSensor, GearSt);
-			
+			*p_MC_CalParam = MC_AssistRunMode_Torque_Process(p_ADC_SensorData.TorqueSensor, GearSt, torqueByCadence_180);
 			//助力模式切换标志复位
 			MC_AssistRunMode_ShiftFlag = RESET;
 			break;

+ 36 - 36
User/Src/var.c

@@ -176,11 +176,11 @@ const uint8_t Secret_Key_Default[8] = "AVONITOM";
 //ECO도貫燎제꽝鑒
 const nGearParam_Struct_t GearParam_Default_ECO_Volans =
 {
-  (uint16_t)410, //327,
+  (uint16_t)327,
 	(uint16_t)0,
 	(uint16_t)100,
 	(uint16_t)800,
-	(uint8_t)4,
+	(uint8_t)1,
 	(uint8_t)1,
 	(uint16_t)250
 };
@@ -188,11 +188,11 @@ const nGearParam_Struct_t GearParam_Default_ECO_Volans =
 //NORM도貫燎제꽝鑒
 const nGearParam_Struct_t GearParam_Default_NORM_Volans =
 {
-  (uint16_t)717, //655,
+  (uint16_t)655,
 	(uint16_t)0,
 	(uint16_t)100,
 	(uint16_t)1000,
-	(uint8_t)4,
+	(uint8_t)2,
 	(uint8_t)1,
 	(uint16_t)500
 };
@@ -203,8 +203,8 @@ const nGearParam_Struct_t GearParam_Default_SPORT_Volans =
   (uint16_t)1024,
 	(uint16_t)0,
 	(uint16_t)100,
-	(uint16_t)1200, //1300,
-	(uint8_t)4,
+	(uint16_t)1300,
+	(uint8_t)3,
 	(uint8_t)1,
 	(uint16_t)750
 };
@@ -212,11 +212,11 @@ const nGearParam_Struct_t GearParam_Default_SPORT_Volans =
 //TURBO도貫燎제꽝鑒
 const nGearParam_Struct_t GearParam_Default_TURBO_Volans =
 {
-  (uint16_t)1536, //1310,
+  (uint16_t)1310,
 	(uint16_t)0,
 	(uint16_t)100,
-	(uint16_t)1400, //1800,
-	(uint8_t)4,
+	(uint16_t)1800,
+	(uint8_t)5,
 	(uint8_t)1,
 	(uint16_t)1024
 };
@@ -227,7 +227,7 @@ const nGearParam_Struct_t GearParam_Default_SMART_Volans =
   (uint16_t)1000,
 	(uint16_t)2000,
 	(uint16_t)100,
-	(uint16_t)1400, //1600,
+	(uint16_t)1600,
 	(uint8_t)4,
 	(uint8_t)1,
 	(uint16_t)1024
@@ -237,11 +237,11 @@ const nGearParam_Struct_t GearParam_Default_SMART_Volans =
 //ECO도貫燎제꽝鑒
 const nGearParam_Struct_t GearParam_Default_ECO_Volans_Plus =
 {
-  (uint16_t)410,   //377,
+  (uint16_t)377,
 	(uint16_t)0,
 	(uint16_t)100,
 	(uint16_t)840,
-	(uint8_t)4,
+	(uint8_t)1,
 	(uint8_t)1,
 	(uint16_t)338
 };
@@ -249,11 +249,11 @@ const nGearParam_Struct_t GearParam_Default_ECO_Volans_Plus =
 //NORM도貫燎제꽝鑒
 const nGearParam_Struct_t GearParam_Default_NORM_Volans_Plus =
 {
-  (uint16_t)717,  //795,
+  (uint16_t)795,
 	(uint16_t)0,
 	(uint16_t)100,
 	(uint16_t)1200,
-	(uint8_t)4,
+	(uint8_t)2,
 	(uint8_t)1,
 	(uint16_t)605
 };
@@ -261,11 +261,11 @@ const nGearParam_Struct_t GearParam_Default_NORM_Volans_Plus =
 //SPORT도貫燎제꽝鑒
 const nGearParam_Struct_t GearParam_Default_SPORT_Volans_Plus =
 {
-  (uint16_t)1024,  //1504,
+  (uint16_t)1504,
 	(uint16_t)0,
 	(uint16_t)100,
 	(uint16_t)1590,
-	(uint8_t)4,
+	(uint8_t)3,
 	(uint8_t)1,
 	(uint16_t)850
 };
@@ -273,11 +273,11 @@ const nGearParam_Struct_t GearParam_Default_SPORT_Volans_Plus =
 //TURBO도貫燎제꽝鑒
 const nGearParam_Struct_t GearParam_Default_TURBO_Volans_Plus =
 {
-  (uint16_t)1536,   //2354,
+  (uint16_t)2354,
 	(uint16_t)0,
 	(uint16_t)100,
 	(uint16_t)2100,
-	(uint8_t)4,
+	(uint8_t)5,
 	(uint8_t)1,
 	(uint16_t)1024
 };
@@ -298,11 +298,11 @@ const nGearParam_Struct_t GearParam_Default_SMART_Volans_Plus =
 //ECO도貫燎제꽝鑒
 const nGearParam_Struct_t GearParam_Default_ECO_Pegasi =
 {
-  (uint16_t)410,  //381,
+  (uint16_t)381,
 	(uint16_t)0,
 	(uint16_t)100,
 	(uint16_t)937,
-	(uint8_t)4,
+	(uint8_t)1,
 	(uint8_t)1,
 	(uint16_t)338
 };
@@ -310,11 +310,11 @@ const nGearParam_Struct_t GearParam_Default_ECO_Pegasi =
 //NORM도貫燎제꽝鑒
 const nGearParam_Struct_t GearParam_Default_NORM_Pegasi =
 {
-  (uint16_t)717,  //914,
+  (uint16_t)914,
 	(uint16_t)0,
 	(uint16_t)100,
 	(uint16_t)1250,
-	(uint8_t)4,
+	(uint8_t)2,
 	(uint8_t)1,
 	(uint16_t)489
 };
@@ -322,11 +322,11 @@ const nGearParam_Struct_t GearParam_Default_NORM_Pegasi =
 //SPORT도貫燎제꽝鑒
 const nGearParam_Struct_t GearParam_Default_SPORT_Pegasi =
 {
-  (uint16_t)1024,  //1523,
+  (uint16_t)1523,
 	(uint16_t)0,
 	(uint16_t)100,
 	(uint16_t)1459,
-	(uint8_t)4,
+	(uint8_t)3,
 	(uint8_t)1,
 	(uint16_t)686
 };
@@ -334,11 +334,11 @@ const nGearParam_Struct_t GearParam_Default_SPORT_Pegasi =
 //TURBO도貫燎제꽝鑒
 const nGearParam_Struct_t GearParam_Default_TURBO_Pegasi =
 {
-  (uint16_t)1536,  //2286,
+  (uint16_t)2286,
 	(uint16_t)0,
 	(uint16_t)100,
 	(uint16_t)2100,
-	(uint8_t)4,
+	(uint8_t)3,
 	(uint8_t)1,
 	(uint16_t)1024
 };
@@ -350,7 +350,7 @@ const nGearParam_Struct_t GearParam_Default_SMART_Pegasi =
 	(uint16_t)2000,
 	(uint16_t)100,
 	(uint16_t)2100,
-	(uint8_t)4,
+	(uint8_t)3,
 	(uint8_t)1,
 	(uint16_t)1024
 };
@@ -363,7 +363,7 @@ const nGearParam_Struct_t GearParam_Default_ECO_Pegasi_Plus =
 	(uint16_t)0,
 	(uint16_t)100,
 	(uint16_t)871,
-	(uint8_t)4,
+	(uint8_t)1,
 	(uint8_t)1,
 	(uint16_t)235
 };
@@ -371,11 +371,11 @@ const nGearParam_Struct_t GearParam_Default_ECO_Pegasi_Plus =
 //NORM도貫燎제꽝鑒
 const nGearParam_Struct_t GearParam_Default_NORM_Pegasi_Plus =
 {
-  (uint16_t)717,  //959,
+  (uint16_t)959,
 	(uint16_t)0,
 	(uint16_t)100,
 	(uint16_t)1055,
-	(uint8_t)4,
+	(uint8_t)2,
 	(uint8_t)1,
 	(uint16_t)331
 };
@@ -383,11 +383,11 @@ const nGearParam_Struct_t GearParam_Default_NORM_Pegasi_Plus =
 //SPORT도貫燎제꽝鑒
 const nGearParam_Struct_t GearParam_Default_SPORT_Pegasi_Plus =
 {
-  (uint16_t)1024,  //1370,
+  (uint16_t)1370,
 	(uint16_t)0,
 	(uint16_t)100,
 	(uint16_t)1464,
-	(uint8_t)4,
+	(uint8_t)3,
 	(uint8_t)1,
 	(uint16_t)512
 };
@@ -395,12 +395,12 @@ const nGearParam_Struct_t GearParam_Default_SPORT_Pegasi_Plus =
 //TURBO도貫燎제꽝鑒
 const nGearParam_Struct_t GearParam_Default_TURBO_Pegasi_Plus =
 {
-  (uint16_t)1536,  //2289,
+  (uint16_t)2289,
 	(uint16_t)0,
 	(uint16_t)100,
 	(uint16_t)2100,
 	(uint8_t)4,
-	(uint8_t)1,
+	(uint8_t)2,
 	(uint16_t)1024
 };
 
@@ -411,7 +411,7 @@ const nGearParam_Struct_t GearParam_Default_SMART_Pegasi_Plus =
 	(uint16_t)2000,
 	(uint16_t)100,
 	(uint16_t)2100,
-	(uint8_t)4,
+	(uint8_t)3,
 	(uint8_t)1,
 	(uint16_t)1024
 };
@@ -485,7 +485,7 @@ void Var_Init(void)
 		
 	//MC경굶斤口놓迦뺏,Mode뵨SN닒EEPROM뗍혤
   strncpy(MC_VerInfo.HW_Version, (char*)"QD007E.         ", 16);
-	strncpy(MC_VerInfo.FW_Version, (char*)"V2r0r4_20200615.", 16);
+	strncpy(MC_VerInfo.FW_Version, (char*)"V2r1r0_20200624.", 16);
 		
 	//든샙謹뵀
 	strncpy(MC_VerInfo.Mode, (char*)"VL6500 & VS7500.", 16);

+ 27 - 0
修改说明.txt

@@ -274,6 +274,33 @@ V2.0.4_20200603
 V2.0.4_20200615
 1、采集母线电压时,根据母线电流乘一个线阻(200mOhm);
 2、版本:V2.0.4_20200615
+
+V2.1.0_20200624
+1、增加力矩根据踏频滤波的处理,根据信号变化,取180度的均值;
+2、采用运动版程序,根据踏频滤波的数值作为助力处理函数的输入;
+3、版本号:V2.1.0_20200624
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+