Browse Source

1:city版骑行体验,增加根据上位机配置助力比增益来调节助力比的代码。
2:修改各系列电机的助力比配置参数,以适配城市版的助力比。
3:此版本暂时屏蔽了TE故障检测,兼容旧版TE V0.1.0_20190709.

damon 5 years ago
parent
commit
f52aae3747

BIN
MDK-ARM/bin/QD007A_CTL_APP.bin


BIN
MDK-ARM/bin/QD007A_CTL_APP_CRC.bin


+ 5 - 5
MDK-ARM/startup_stm32f103xb.lst

@@ -524,11 +524,11 @@ ork --depend=.\qd007a_ctl_app\startup_stm32f103xb.d -o.\qd007a_ctl_app\startup_
 ARM Macro Assembler    Page 9 
 
 
-stm32f103xb.o -ID:\A_motinova\QD007E_CTRL_APP_master\MDK-ARM\RTE\_QD007A_CTL_AP
-P -IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.0.0\CMSIS\Include -IC:\Keil_v5\ARM\PACK\Kei
-l\STM32F1xx_DFP\2.1.0\Device\Include --predefine="__MICROLIB SETA 1" --predefin
-e="__UVISION_VERSION SETA 522" --predefine="_RTE_ SETA 1" --predefine="STM32F10
-X_MD SETA 1" --list=startup_stm32f103xb.lst startup_stm32f103xb.s
+stm32f103xb.o -ID:\A_motinova\QD007E_CTRL_APP_city_riding\MDK-ARM\RTE\_QD007A_C
+TL_APP -IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.0.0\CMSIS\Include -IC:\Keil_v5\ARM\PAC
+K\Keil\STM32F1xx_DFP\2.1.0\Device\Include --predefine="__MICROLIB SETA 1" --pre
+define="__UVISION_VERSION SETA 522" --predefine="_RTE_ SETA 1" --predefine="STM
+32F10X_MD SETA 1" --list=startup_stm32f103xb.lst startup_stm32f103xb.s
 
 
 

+ 6 - 6
MDK-ARM/stm32f1xx_stucpuregsaddressing.lst

@@ -123,18 +123,18 @@ ARM Macro Assembler    Page 2
    99 00000096                 END
 Command Line: --debug --xref --diag_suppress=9931 --cpu=Cortex-M3 --apcs=interw
 ork --depend=.\qd007a_ctl_app\stm32f1xx_stucpuregsaddressing.d -o.\qd007a_ctl_a
-pp\stm32f1xx_stucpuregsaddressing.o -ID:\A_motinova\QD007E_CTRL_APP_master\MDK-
-ARM\RTE\_QD007A_CTL_APP -IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.0.0\CMSIS\Include -IC
-:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.1.0\Device\Include --predefine="__MICRO
-LIB SETA 1" --predefine="__UVISION_VERSION SETA 522" --predefine="_RTE_ SETA 1"
- --predefine="STM32F10X_MD SETA 1" --list=stm32f1xx_stucpuregsaddressing.lst ..
+pp\stm32f1xx_stucpuregsaddressing.o -ID:\A_motinova\QD007E_CTRL_APP_city_riding
+\MDK-ARM\RTE\_QD007A_CTL_APP -IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.0.0\CMSIS\Includ
+e -IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.1.0\Device\Include --predefine="__
+MICROLIB SETA 1" --predefine="__UVISION_VERSION SETA 522" --predefine="_RTE_ SE
+TA 1" --predefine="STM32F10X_MD SETA 1" --list=stm32f1xx_stucpuregsaddressing.l
 
 
 
 ARM Macro Assembler    Page 3 
 
 
-\SelfTestUser\src_specific\stm32f1xx_STUCpuRegsAddressing.s
+st ..\SelfTestUser\src_specific\stm32f1xx_STUCpuRegsAddressing.s
 
 
 

+ 6 - 6
MDK-ARM/stm32f1xx_stucpuwalkpatkeil.lst

@@ -1593,12 +1593,12 @@ ARM Macro Assembler    Page 25
  1172 000006D0                 END
 Command Line: --debug --xref --diag_suppress=9931 --cpu=Cortex-M3 --apcs=interw
 ork --depend=.\qd007a_ctl_app\stm32f1xx_stucpuwalkpatkeil.d -o.\qd007a_ctl_app\
-stm32f1xx_stucpuwalkpatkeil.o -ID:\A_motinova\QD007E_CTRL_APP_master\MDK-ARM\RT
-E\_QD007A_CTL_APP -IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.0.0\CMSIS\Include -IC:\Keil
-_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.1.0\Device\Include --predefine="__MICROLIB SE
-TA 1" --predefine="__UVISION_VERSION SETA 522" --predefine="_RTE_ SETA 1" --pre
-define="STM32F10X_MD SETA 1" --list=stm32f1xx_stucpuwalkpatkeil.lst ..\SelfTest
-User\src_specific\stm32f1xx_STUCpuWalkpatKEIL.s
+stm32f1xx_stucpuwalkpatkeil.o -ID:\A_motinova\QD007E_CTRL_APP_city_riding\MDK-A
+RM\RTE\_QD007A_CTL_APP -IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.0.0\CMSIS\Include -IC:
+\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.1.0\Device\Include --predefine="__MICROL
+IB SETA 1" --predefine="__UVISION_VERSION SETA 522" --predefine="_RTE_ SETA 1" 
+--predefine="STM32F10X_MD SETA 1" --list=stm32f1xx_stucpuwalkpatkeil.lst ..\Sel
+fTestUser\src_specific\stm32f1xx_STUCpuWalkpatKEIL.s
 
 
 

+ 6 - 6
MDK-ARM/stm32f1xx_sturamwalkpatkeil.lst

@@ -430,12 +430,12 @@ ARM Macro Assembler    Page 7
   331 000001F2                 END
 Command Line: --debug --xref --diag_suppress=9931 --cpu=Cortex-M3 --apcs=interw
 ork --depend=.\qd007a_ctl_app\stm32f1xx_sturamwalkpatkeil.d -o.\qd007a_ctl_app\
-stm32f1xx_sturamwalkpatkeil.o -ID:\A_motinova\QD007E_CTRL_APP_master\MDK-ARM\RT
-E\_QD007A_CTL_APP -IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.0.0\CMSIS\Include -IC:\Keil
-_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.1.0\Device\Include --predefine="__MICROLIB SE
-TA 1" --predefine="__UVISION_VERSION SETA 522" --predefine="_RTE_ SETA 1" --pre
-define="STM32F10X_MD SETA 1" --list=stm32f1xx_sturamwalkpatkeil.lst ..\SelfTest
-User\src_specific\stm32f1xx_STURamWalkpatKEIL.s
+stm32f1xx_sturamwalkpatkeil.o -ID:\A_motinova\QD007E_CTRL_APP_city_riding\MDK-A
+RM\RTE\_QD007A_CTL_APP -IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.0.0\CMSIS\Include -IC:
+\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.1.0\Device\Include --predefine="__MICROL
+IB SETA 1" --predefine="__UVISION_VERSION SETA 522" --predefine="_RTE_ SETA 1" 
+--predefine="STM32F10X_MD SETA 1" --list=stm32f1xx_sturamwalkpatkeil.lst ..\Sel
+fTestUser\src_specific\stm32f1xx_STURamWalkpatKEIL.s
 
 
 

+ 29 - 26
User/Src/motor_control.c

@@ -998,38 +998,34 @@ MC_CalParam_Struct_t MC_AssistRunMode_Torque_Process(uint16_t SenorData, MC_Gear
 }
 
 
-uint16_t torqueApp;
-uint16_t torque_NM;
-uint16_t torqueRank=0;
-uint16_t torqueRankLast=0;
-static uint16_t torqueRankBak=0;
-uint16_t candenceCount; 
-uint8_t flagUpDown=0;
-
-static int32_t tmpFltSum=0;
-int16_t  tmpFlted=0;
+uint16_t candenceCount;      //踏频磁环信号计数变量,全局变量
 
-int16_t torqueApp2;
-
-int16_t torqueAppRef=0;
+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;      //输入力矩上升、下降的标志位  
 
-uint8_t flagCandence=0;
-int16_t torqueAppLag=0;
-int16_t torqueAppRatio=0;
-int16_t torqueAppResult=0;
+static int32_t tmpFltSum=0;     //输入力矩滤波的静态变量
+int16_t  tmpFlted=0;            //输入力矩滤波的临时变量
 
-int16_t torqueAppAccStep= 5; //84;
-int16_t torqueAppDecStep=1; //14
+int16_t torqueApp2;             //力矩计算的临时变量
 
-uint16_t candenceBakAtTop=0;
-uint16_t torqueByCandenceDec=0;
+uint8_t flagCandence=0;           //踏频信号更新标志
+int16_t torqueAppLag=0;           //力局地经过加减速处理后的临时变量
+int16_t torqueAppRatio=0;         //力矩值计算助力比后的临时变量
 
-int16_t torqueDataFromCadence=0;
+int16_t torqueAppAccStep= 5; 		//力矩给定升速斜率
+int16_t torqueAppDecStep=1;		 //力矩给定减速斜率
 
-int32_t Taping_activeFlt=0;    //踏频实时值滤波中间量
-int32_t Taping_activeFlted = 0;  //踏频实时值滤波值
+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
+#define TORQUE_TMP  28            //力矩AD值与1NM的换算系数
 
 MC_CalParam_Struct_t MC_AssistRunMode_Torque_compensation(uint16_t SenorData, MC_GearSt_Struct_t GearSt)
 {
@@ -1213,6 +1209,9 @@ MC_CalParam_Struct_t MC_AssistRunMode_Torque_compensation(uint16_t SenorData, MC
 				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);   //上位机助力比增益调节
+					
 					//给定上限
 					torqueAppRatio = (torqueAppRatio > MC_AssisParam.Gear_SMART.Upper_Iq) ? MC_AssisParam.Gear_SMART.Upper_Iq : torqueAppRatio;
 				
@@ -1233,6 +1232,7 @@ MC_CalParam_Struct_t MC_AssistRunMode_Torque_compensation(uint16_t SenorData, MC
 							//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);   //上位机助力比增益调节
 					
 							//给定上限
 							torqueAppRatio = (torqueAppRatio > MC_AssisParam.Gear_ECO.Upper_Iq) ? MC_AssisParam.Gear_ECO.Upper_Iq : torqueAppRatio;
@@ -1249,6 +1249,7 @@ MC_CalParam_Struct_t MC_AssistRunMode_Torque_compensation(uint16_t SenorData, MC
 							//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);   //上位机助力比增益调节
 							
 							//给定上限
 							torqueAppRatio = (torqueAppRatio > MC_AssisParam.Gear_NORM.Upper_Iq) ? MC_AssisParam.Gear_NORM.Upper_Iq : torqueAppRatio;
@@ -1267,6 +1268,7 @@ MC_CalParam_Struct_t MC_AssistRunMode_Torque_compensation(uint16_t SenorData, MC
 							//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);   //上位机助力比增益调节
 							
 							//给定上限
 							torqueAppRatio = (torqueAppRatio > MC_AssisParam.Gear_SPORT.Upper_Iq) ? MC_AssisParam.Gear_SPORT.Upper_Iq : torqueAppRatio;;
@@ -1285,7 +1287,8 @@ MC_CalParam_Struct_t MC_AssistRunMode_Torque_compensation(uint16_t SenorData, MC
 							//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);   //上位机助力比增益调节
+						
 						  //给定上限
 							torqueAppRatio = (torqueAppRatio > MC_AssisParam.Gear_TURBO.Upper_Iq) ? MC_AssisParam.Gear_TURBO.Upper_Iq : torqueAppRatio;
 						

+ 11 - 11
User/Src/var.c

@@ -224,7 +224,7 @@ const nGearParam_Struct_t GearParam_Default_SMART_Volans =
 //ECO도貫燎제꽝鑒
 const nGearParam_Struct_t GearParam_Default_ECO_Volans_Plus =
 {
-  (uint16_t)377,
+  (uint16_t)410,   //377,
 	(uint16_t)0,
 	(uint16_t)100,
 	(uint16_t)840,
@@ -236,7 +236,7 @@ const nGearParam_Struct_t GearParam_Default_ECO_Volans_Plus =
 //NORM도貫燎제꽝鑒
 const nGearParam_Struct_t GearParam_Default_NORM_Volans_Plus =
 {
-  (uint16_t)795,
+  (uint16_t)717,  //795,
 	(uint16_t)0,
 	(uint16_t)100,
 	(uint16_t)1200,
@@ -248,7 +248,7 @@ const nGearParam_Struct_t GearParam_Default_NORM_Volans_Plus =
 //SPORT도貫燎제꽝鑒
 const nGearParam_Struct_t GearParam_Default_SPORT_Volans_Plus =
 {
-  (uint16_t)1504,
+  (uint16_t)1024,  //1504,
 	(uint16_t)0,
 	(uint16_t)100,
 	(uint16_t)1590,
@@ -260,7 +260,7 @@ const nGearParam_Struct_t GearParam_Default_SPORT_Volans_Plus =
 //TURBO도貫燎제꽝鑒
 const nGearParam_Struct_t GearParam_Default_TURBO_Volans_Plus =
 {
-  (uint16_t)2354,
+  (uint16_t)1536,   //2354,
 	(uint16_t)0,
 	(uint16_t)100,
 	(uint16_t)2100,
@@ -285,7 +285,7 @@ const nGearParam_Struct_t GearParam_Default_SMART_Volans_Plus =
 //ECO도貫燎제꽝鑒
 const nGearParam_Struct_t GearParam_Default_ECO_Pegasi =
 {
-  (uint16_t)381,
+  (uint16_t)410,  //381,
 	(uint16_t)0,
 	(uint16_t)100,
 	(uint16_t)937,
@@ -297,7 +297,7 @@ const nGearParam_Struct_t GearParam_Default_ECO_Pegasi =
 //NORM도貫燎제꽝鑒
 const nGearParam_Struct_t GearParam_Default_NORM_Pegasi =
 {
-  (uint16_t)914,
+  (uint16_t)717,  //914,
 	(uint16_t)0,
 	(uint16_t)100,
 	(uint16_t)1250,
@@ -309,7 +309,7 @@ const nGearParam_Struct_t GearParam_Default_NORM_Pegasi =
 //SPORT도貫燎제꽝鑒
 const nGearParam_Struct_t GearParam_Default_SPORT_Pegasi =
 {
-  (uint16_t)1523,
+  (uint16_t)1024,  //1523,
 	(uint16_t)0,
 	(uint16_t)100,
 	(uint16_t)1459,
@@ -321,7 +321,7 @@ const nGearParam_Struct_t GearParam_Default_SPORT_Pegasi =
 //TURBO도貫燎제꽝鑒
 const nGearParam_Struct_t GearParam_Default_TURBO_Pegasi =
 {
-  (uint16_t)2286,
+  (uint16_t)1536,  //2286,
 	(uint16_t)0,
 	(uint16_t)100,
 	(uint16_t)2100,
@@ -358,7 +358,7 @@ const nGearParam_Struct_t GearParam_Default_ECO_Pegasi_Plus =
 //NORM도貫燎제꽝鑒
 const nGearParam_Struct_t GearParam_Default_NORM_Pegasi_Plus =
 {
-  (uint16_t)959,
+  (uint16_t)717,  //959,
 	(uint16_t)0,
 	(uint16_t)100,
 	(uint16_t)1055,
@@ -370,7 +370,7 @@ const nGearParam_Struct_t GearParam_Default_NORM_Pegasi_Plus =
 //SPORT도貫燎제꽝鑒
 const nGearParam_Struct_t GearParam_Default_SPORT_Pegasi_Plus =
 {
-  (uint16_t)1370,
+  (uint16_t)1024,  //1370,
 	(uint16_t)0,
 	(uint16_t)100,
 	(uint16_t)1464,
@@ -382,7 +382,7 @@ const nGearParam_Struct_t GearParam_Default_SPORT_Pegasi_Plus =
 //TURBO도貫燎제꽝鑒
 const nGearParam_Struct_t GearParam_Default_TURBO_Pegasi_Plus =
 {
-  (uint16_t)2289,
+  (uint16_t)1536,  //2289,
 	(uint16_t)0,
 	(uint16_t)100,
 	(uint16_t)2100,