瀏覽代碼

针对Bike2go反馈Pegasi上匀速低速骑车时,助力会消失的问题进行调整;
1、修改停机条件,停机值为启动值的1/4;
2、踏频停止时间根据踏频线性变化;
3、修改力矩给定减速曲线。

hero 3 年之前
父節點
當前提交
1e1703bfe1

+ 42 - 9
MDK-ARM/QD007A_CTL_APP.uvprojx

@@ -10,12 +10,11 @@
       <TargetName>QD007A_CTL_APP</TargetName>
       <ToolsetNumber>0x4</ToolsetNumber>
       <ToolsetName>ARM-ADS</ToolsetName>
-      <pCCUsed>5060422::V5.06 update 4 (build 422)::ARMCC</pCCUsed>
       <TargetOption>
         <TargetCommonOption>
           <Device>STM32F103RB</Device>
           <Vendor>STMicroelectronics</Vendor>
-          <PackID>Keil.STM32F1xx_DFP.2.3.0</PackID>
+          <PackID>Keil.STM32F1xx_DFP.1.1.0</PackID>
           <PackURL>http://www.keil.com/pack/</PackURL>
           <Cpu>IROM(0x08000000,0x20000) IRAM(0x20000000,0x5000) CPUTYPE("Cortex-M3") CLOCK(12000000) ELITTLE</Cpu>
           <FlashUtilSpec></FlashUtilSpec>
@@ -125,6 +124,47 @@
             <HexOffset>0</HexOffset>
             <Oh166RecLen>16</Oh166RecLen>
           </OPTHX>
+          <Simulator>
+            <UseSimulator>0</UseSimulator>
+            <LoadApplicationAtStartup>1</LoadApplicationAtStartup>
+            <RunToMain>1</RunToMain>
+            <RestoreBreakpoints>1</RestoreBreakpoints>
+            <RestoreWatchpoints>1</RestoreWatchpoints>
+            <RestoreMemoryDisplay>1</RestoreMemoryDisplay>
+            <RestoreFunctions>1</RestoreFunctions>
+            <RestoreToolbox>1</RestoreToolbox>
+            <LimitSpeedToRealTime>0</LimitSpeedToRealTime>
+            <RestoreSysVw>1</RestoreSysVw>
+          </Simulator>
+          <Target>
+            <UseTarget>1</UseTarget>
+            <LoadApplicationAtStartup>1</LoadApplicationAtStartup>
+            <RunToMain>1</RunToMain>
+            <RestoreBreakpoints>1</RestoreBreakpoints>
+            <RestoreWatchpoints>1</RestoreWatchpoints>
+            <RestoreMemoryDisplay>1</RestoreMemoryDisplay>
+            <RestoreFunctions>0</RestoreFunctions>
+            <RestoreToolbox>1</RestoreToolbox>
+            <RestoreTracepoints>1</RestoreTracepoints>
+            <RestoreSysVw>1</RestoreSysVw>
+          </Target>
+          <RunDebugAfterBuild>0</RunDebugAfterBuild>
+          <TargetSelection>6</TargetSelection>
+          <SimDlls>
+            <CpuDll></CpuDll>
+            <CpuDllArguments></CpuDllArguments>
+            <PeripheralDll></PeripheralDll>
+            <PeripheralDllArguments></PeripheralDllArguments>
+            <InitializationFile></InitializationFile>
+          </SimDlls>
+          <TargetDlls>
+            <CpuDll></CpuDll>
+            <CpuDllArguments></CpuDllArguments>
+            <PeripheralDll></PeripheralDll>
+            <PeripheralDllArguments></PeripheralDllArguments>
+            <InitializationFile></InitializationFile>
+            <Driver>Segger\JL2CM3.dll</Driver>
+          </TargetDlls>
         </DebugOption>
         <Utilities>
           <Flash1>
@@ -189,7 +229,6 @@
             <useUlib>1</useUlib>
             <EndSel>0</EndSel>
             <uLtcg>0</uLtcg>
-            <nSecure>0</nSecure>
             <RoSelD>3</RoSelD>
             <RwSelD>3</RwSelD>
             <CodeSel>0</CodeSel>
@@ -326,11 +365,6 @@
             <useXO>0</useXO>
             <v6Lang>0</v6Lang>
             <v6LangP>0</v6LangP>
-            <vShortEn>1</vShortEn>
-            <vShortWch>1</vShortWch>
-            <v6Lto>0</v6Lto>
-            <v6WtE>0</v6WtE>
-            <v6Rtti>0</v6Rtti>
             <VariousControls>
               <MiscControls></MiscControls>
               <Define>USE_HAL_DRIVER,STM32F103xB</Define>
@@ -348,7 +382,6 @@
             <NoWarn>0</NoWarn>
             <uSurpInc>0</uSurpInc>
             <useXO>0</useXO>
-            <uClangAs>0</uClangAs>
             <VariousControls>
               <MiscControls></MiscControls>
               <Define></Define>

File diff suppressed because it is too large
+ 2400 - 2400
MDK-ARM/QD007A_CTL_APP/QD007A_CTL_APP_CRC.hex


二進制
MDK-ARM/bin/MC_PSX014EU-TC013039-MB2106-V7.0.3.1.1_20220728.bin


二進制
MDK-ARM/bin/MC_PSX014EU-TC013039-MB2106-V7.0.3.1.1_20220729.bin


二進制
MDK-ARM/bin/QD007A_CTL_APP.bin


+ 5 - 6
MDK-ARM/startup_stm32f103xb.lst

@@ -524,12 +524,11 @@ ork --depend=.\qd007a_ctl_app\startup_stm32f103xb.d -o.\qd007a_ctl_app\startup_
 ARM Macro Assembler    Page 9 
 
 
-stm32f103xb.o -ID:\MOTINOVAϵͳ\Motor\Pegasi\TC013039-MB2106±¼¼¯¶¨ÖƳÌÐò\TT-KZ-
-010A_CTRL_APP\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.3.0\Device\Include --
-predefine="__MICROLIB SETA 1" --predefine="__UVISION_VERSION SETA 522" --predef
-ine="_RTE_ SETA 1" --predefine="STM32F10X_MD SETA 1" --list=startup_stm32f103xb
-.lst startup_stm32f103xb.s
+stm32f103xb.o -IC:\Users\13628\Desktop\TT-KZ-010A_CTRL_APP\TT-KZ-010A_CTRL_APP\
+MDK-ARM\RTE -IC:\Keil_v5\ARM\PACK\ARM\CMSIS\4.4.0\CMSIS\Include -IC:\Keil_v5\AR
+M\PACK\Keil\STM32F1xx_DFP\1.1.0\Device\Include --predefine="__MICROLIB SETA 1" 
+--predefine="__UVISION_VERSION SETA 515" --predefine="_RTE_ SETA 1" --predefine
+="STM32F10X_MD SETA 1" --list=startup_stm32f103xb.lst startup_stm32f103xb.s
 
 
 

+ 6 - 7
MDK-ARM/stm32f1xx_stucpuregsaddressing.lst

@@ -123,19 +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:\MOTINOVAϵͳ\Motor\Pegasi\TC013039-MB2
-106±¼¼¯¶¨ÖƳÌÐò\TT-KZ-010A_CTRL_APP\MDK-ARM\RTE\_QD007A_CTL_APP -IC:\Keil_v5\AR
-M\PACK\ARM\CMSIS\5.0.0\CMSIS\Include -IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2
-.3.0\Device\Include --predefine="__MICROLIB SETA 1" --predefine="__UVISION_VERS
-ION SETA 522" --predefine="_RTE_ SETA 1" --predefine="STM32F10X_MD SETA 1" --li
+pp\stm32f1xx_stucpuregsaddressing.o -IC:\Users\13628\Desktop\TT-KZ-010A_CTRL_AP
+P\TT-KZ-010A_CTRL_APP\MDK-ARM\RTE -IC:\Keil_v5\ARM\PACK\ARM\CMSIS\4.4.0\CMSIS\I
+nclude -IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\1.1.0\Device\Include --predefin
+e="__MICROLIB SETA 1" --predefine="__UVISION_VERSION SETA 515" --predefine="_RT
+E_ SETA 1" --predefine="STM32F10X_MD SETA 1" --list=stm32f1xx_stucpuregsaddress
 
 
 
 ARM Macro Assembler    Page 3 
 
 
-st=stm32f1xx_stucpuregsaddressing.lst ..\SelfTestUser\src_specific\stm32f1xx_ST
-UCpuRegsAddressing.s
+ing.lst ..\SelfTestUser\src_specific\stm32f1xx_STUCpuRegsAddressing.s
 
 
 

+ 6 - 7
MDK-ARM/stm32f1xx_stucpuwalkpatkeil.lst

@@ -1593,13 +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:\MOTINOVAϵͳ\Motor\Pegasi\TC013039-MB2106±¼¼
-¯¶¨ÖƳÌÐò\TT-KZ-010A_CTRL_APP\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.3.0\D
-evice\Include --predefine="__MICROLIB SETA 1" --predefine="__UVISION_VERSION SE
-TA 522" --predefine="_RTE_ SETA 1" --predefine="STM32F10X_MD SETA 1" --list=stm
-32f1xx_stucpuwalkpatkeil.lst ..\SelfTestUser\src_specific\stm32f1xx_STUCpuWalkp
-atKEIL.s
+stm32f1xx_stucpuwalkpatkeil.o -IC:\Users\13628\Desktop\TT-KZ-010A_CTRL_APP\TT-K
+Z-010A_CTRL_APP\MDK-ARM\RTE -IC:\Keil_v5\ARM\PACK\ARM\CMSIS\4.4.0\CMSIS\Include
+ -IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\1.1.0\Device\Include --predefine="__M
+ICROLIB SETA 1" --predefine="__UVISION_VERSION SETA 515" --predefine="_RTE_ SET
+A 1" --predefine="STM32F10X_MD SETA 1" --list=stm32f1xx_stucpuwalkpatkeil.lst .
+.\SelfTestUser\src_specific\stm32f1xx_STUCpuWalkpatKEIL.s
 
 
 

+ 6 - 7
MDK-ARM/stm32f1xx_sturamwalkpatkeil.lst

@@ -430,13 +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:\MOTINOVAϵͳ\Motor\Pegasi\TC013039-MB2106±¼¼
-¯¶¨ÖƳÌÐò\TT-KZ-010A_CTRL_APP\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.3.0\D
-evice\Include --predefine="__MICROLIB SETA 1" --predefine="__UVISION_VERSION SE
-TA 522" --predefine="_RTE_ SETA 1" --predefine="STM32F10X_MD SETA 1" --list=stm
-32f1xx_sturamwalkpatkeil.lst ..\SelfTestUser\src_specific\stm32f1xx_STURamWalkp
-atKEIL.s
+stm32f1xx_sturamwalkpatkeil.o -IC:\Users\13628\Desktop\TT-KZ-010A_CTRL_APP\TT-K
+Z-010A_CTRL_APP\MDK-ARM\RTE -IC:\Keil_v5\ARM\PACK\ARM\CMSIS\4.4.0\CMSIS\Include
+ -IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\1.1.0\Device\Include --predefine="__M
+ICROLIB SETA 1" --predefine="__UVISION_VERSION SETA 515" --predefine="_RTE_ SET
+A 1" --predefine="STM32F10X_MD SETA 1" --list=stm32f1xx_sturamwalkpatkeil.lst .
+.\SelfTestUser\src_specific\stm32f1xx_STURamWalkpatKEIL.s
 
 
 

+ 16 - 4
User/Src/cadence_sensor.c

@@ -147,10 +147,22 @@ void CadenceSensor_Process(MC_CadenceResult_Struct_t* p_MC_CadenceResult, uint16
 	}
 	
 	//停机判断
-	if(p_MC_CadenceResult->Cadence_Data < (1500 / StopDelayTime))
-	{
-	  StopDelayTime *= 3;
-	}
+	#if 0 //踏频低于15rpm时,停机时间为设定值3倍
+  if(p_MC_CadenceResult->Cadence_Data < (1500 / StopDelayTime))
+  {
+    StopDelayTime *= 3;
+  }
+  #elif 1 //由于踏频低于10rpm时,两个信号间隔时间大于100ms,按照下列条件设定停机时间系数:
+  /*
+  n < 20rpm, k = 3
+  n > 40rpm, k = 1
+  20rpm <= n <= 40rpm, k = -0.1 * n + 5,计算是k放大100倍
+  */  
+  uint16_t Temp = 0, k = 100;
+  Temp = 1000 / (HAL_GetTick() - CadenceCalTimeCnt);//踏频实时值,单位rpm
+  k = (Temp < 20) ? 300 : ((Temp > 40) ? 100 : (500 - Temp * 10));
+  StopDelayTime = k * StopDelayTime / 100;
+  #endif
 	if((HAL_GetTick() - CadenceStopJudgeTimeCnt) > StopDelayTime)
 	{
 		p_MC_CadenceResult->IsStopFlag = TRUE;

+ 14 - 4
User/Src/motor_control.c

@@ -652,7 +652,7 @@ MC_CalParam_Struct_t MC_AssistRunMode_Torque_Process(uint16_t SenorData, MC_Gear
   static uint16_t CurrentLimitPresent;     //限流实际值,做升降速处理
 	uint16_t CurrentLimitSet;                //限流设置值,不同助力档位更新
 	
-	static uint8_t TorqueRefEndUpdateCount = 0;
+	static uint8_t TorqueRefEndUpdateCount = 0, TorqueRefEndUpdateCount_Normal = 0;
 	
 	#define SOFT_SATRT 1
 	
@@ -728,7 +728,7 @@ MC_CalParam_Struct_t MC_AssistRunMode_Torque_Process(uint16_t SenorData, MC_Gear
 	#endif
 		
 	//低力矩停机
-	TorqueStopData = (TorqueSensorStartData < 200) ? 100 : (TorqueSensorStartData >> 1);
+	TorqueStopData = (TorqueSensorStartData < 400) ? 100 : (TorqueSensorStartData >> 2);
 	if(MC_TorqueProcess_Param.TorqueApp >= (TorqueStopData))
 	{
 	  TorqueStopDelayTimeCnt = HAL_GetTick();
@@ -1013,7 +1013,12 @@ MC_CalParam_Struct_t MC_AssistRunMode_Torque_Process(uint16_t SenorData, MC_Gear
 			}
 			else if((MC_TorqueProcess_Param.TorqueRef - MC_TorqueProcess_Param.TorqueRefEnd) < (- 1))
 			{
-				MC_TorqueProcess_Param.TorqueRefEnd -= 1; 
+				TorqueRefEndUpdateCount_Normal++;			
+				if(TorqueRefEndUpdateCount_Normal >=2)
+				{
+					TorqueRefEndUpdateCount_Normal = 0;
+					MC_TorqueProcess_Param.TorqueRefEnd -= 1;
+				} 
 			}
 		}
 		else if((0)&&(MC_SpeedSensorData.Speed_Data < 100))  //上坡处理			  
@@ -1085,7 +1090,12 @@ MC_CalParam_Struct_t MC_AssistRunMode_Torque_Process(uint16_t SenorData, MC_Gear
 			}
 			else if((MC_TorqueProcess_Param.TorqueRef - MC_TorqueProcess_Param.TorqueRefEnd) < (- 1))
 			{
-				MC_TorqueProcess_Param.TorqueRefEnd -= TorqueDecStep;
+				TorqueRefEndUpdateCount_Normal++;			
+				if(TorqueRefEndUpdateCount_Normal >=2)
+				{
+					TorqueRefEndUpdateCount_Normal = 0;
+					MC_TorqueProcess_Param.TorqueRefEnd -= 1;
+				} 
 			}
 		}
 		MC_TorqueProcess_Param.TorqueRefEnd = (MC_TorqueProcess_Param.TorqueRefEnd < 6) ? 6 : MC_TorqueProcess_Param.TorqueRefEnd;

+ 1 - 1
User/Src/var.c

@@ -497,7 +497,7 @@ void Var_Init(void)
 		
 	//MC版本信息初始化,Mode和SN从EEPROM读取
   strncpy(MC_VerInfo.HW_Version, (char*)"TTKZ010D.       ", 16);
-	strncpy(MC_VerInfo.FW_Version, (char*)"V7r0r3_20220728.", 16);
+	strncpy(MC_VerInfo.FW_Version, (char*)"V7r0r3_20220729.", 16);
 	strncpy(Firmware_Special, (char*)"TC013039-MB2106-V1r1.           ", 32);
 	if(MCUManufacturer == NoName) MC_VerInfo.HW_Version[10] = '0';
 	else if(MCUManufacturer == STM32F103RBT6) MC_VerInfo.HW_Version[10] = '1';

Some files were not shown because too many files changed in this diff