Kaynağa Gözat

2.1.5_20200904
1、优化开机时刻初始续航里程的计算,根据电池通讯状态计算,解决轮子转5圈后续航跳变的问题;
2、软件版本:V2r1r5_20200904

dail.zhou 5 yıl önce
ebeveyn
işleme
4f00df3751

+ 3 - 3
Core/Src/adc.c

@@ -436,7 +436,7 @@ void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)
 	
 	//更新母线电压 
 	BusVoltageFltSum += ((ADC1_Result[ADC1_RANK_VIN] << 10) - BusVoltageFltSum) >> 9;
-	MC_RunInfo.BusVoltage = (uint32_t)((BusVoltageFltSum >> 10) * 18382) >> 10;//3300 * 1047 / (4095 * 47)
+	MC_RunInfo.BusVoltage = (uint32_t)((BusVoltageFltSum >> 10) * 18382) >> 10; //3300 * 1047 / (4095 * 47)
 	MC_RunInfo.BusVoltage += (MC_RunInfo.BusCurrent >> 7) * 26; //根据母线电流和估算的线阻进行补偿, 补偿电阻 0.2 * 128 = 25.6
 	
 	//更新绕组温度
@@ -459,9 +459,9 @@ void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)
 	Temp_32 = (ADC1_Result[ADC1_RANK_TORQUE_SENSOR] - TorqueOffSetData.PresentData) * 100 / MC_TorqueCorrectParam.K;
 	Temp_32 = ((Temp_32 <= 0) ? 0 : Temp_32);
 	#if 1 //采用原始采集值
-		#if 1 
+		#if 1 //正常运行
 		ADC_SensorData.TorqueSensor = Temp_32;
-		#else
+		#else //用于寿命测试,模拟输入力矩
 		if(HAL_GetTick() < 5000)
 		{
 			Temp_32 = 0;

+ 4 - 3
Core/Src/main.c

@@ -198,7 +198,7 @@ int main(void)
 		MC_DeviceCheck(&PBU_CheckInfo, &MC_ErrorCode);
 		#endif
 		
-		#if 1 //校验仪表
+		#if 1 //校验仪表
 		MC_DeviceCheck(&HMI_CheckInfo, &MC_ErrorCode);
 		#endif
 	#endif
@@ -262,18 +262,19 @@ int main(void)
 			LightDriver_Process(MC_ControlCode.LightSwitch);
 			
 			//续航里程计算
-			if(HAL_GetTick()>2000)
+			if(HAL_GetTick() > 2000)
 			{
 				static uint8_t RD_RemainDis_InitFinished = 0x00;
 				if(RD_RemainDis_InitFinished == 0x00)
 				{
 					RD_RemainDis_InitFinished = 0x01;
 					//续航里程计算变量初始化
-					RD_RemainDis_Init(MC_ConfigParam1.WheelSize + MC_ConfigParam1.WheelSizeAdj, MC_RunInfo.BusVoltage / 10, MC_MotorParam.Rate_Voltage);	
+					RD_RemainDis_Init(MC_ConfigParam1.WheelSize + MC_ConfigParam1.WheelSizeAdj, IsComOK_BMS.IsOK_Flag, MC_RunInfo.BusVoltage / 10, MC_MotorParam.Rate_Voltage, BMS_RunInfo.RC);	
 				}
 				RD_CalculateRemainDis(MC_SpeedSensorData.WheelTurnCount, BMS_RunInfo.RC, BMS_RunInfo.SOC, MC_RunInfo.BusCurrent);
 				RD_SaveAndUpdateInfo(MC_ControlCode.GearSt, MC_CalParam.AssistRunMode);
 			}
+			
 			//更新电机运行信息
 			MC_RunInfo_Update();
 			

+ 41 - 8
MDK-ARM/QD007A_CTL_APP.uvprojx

@@ -10,7 +10,6 @@
       <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>
@@ -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>1</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>

BIN
MDK-ARM/bin/MC_VOLANS_V2r1r5_20200904.bin


BIN
MDK-ARM/bin/QD007A_CTL_APP.bin


+ 0 - 3
User/Inc/battery_info.h

@@ -3,11 +3,8 @@
 
 #include "stm32f1xx_hal.h"
 
-#define RD_BATTERY_INFO_TABLE 1  // 0:不使用电池放电数据得到电量;1:使用电池放电数据查表获得电池电量;
 #define BATTERY_TATAL_Q_MAH 13000  //mAh
 
-//extern const uint16_t battery_VoltageQuantity[1054][2] ;
-
 extern const uint16_t battery_VoltageQuantity[1022][2] ;
 
 #endif

+ 1 - 1
User/Inc/remain_distance.h

@@ -49,7 +49,7 @@ typedef struct
 
 extern Remain_Dis_t RemainDis;
 
-extern void RD_RemainDis_Init(uint16_t uwWheelLength, uint16_t BusVoltage, uint8_t DesignVol);
+extern void RD_RemainDis_Init(uint16_t uwWheelLength, TrueOrFalse_Flag_Struct_t BMS_COM_OK, uint16_t BusVoltage, uint8_t DesignVol, uint16_t BMS_RC);
 extern void RD_CalculateRemainDis(uint32_t WheelTurnCnt, uint16_t RemainCap, uint8_t SOC, uint16_t BusCurrent) ;
 extern void RD_SaveAndUpdateInfo(MC_GearSt_Struct_t GearSt, MC_AssistRunMode_Struct_t MC_AssistRunMode);
 extern uint8_t Battery_SocCal(uint16_t Voltage, uint16_t Current);

+ 18 - 14
User/Src/remain_distance.c

@@ -25,7 +25,8 @@
 extern const MC_AvgPower_Struct_t MC_AvgPower_Default;
 
 //续航计算相关参数
-Remain_Dis_t RemainDis;
+
+Remain_Dis_t RemainDis = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0xFFFF, 0, 0, FALSE, 0};
 //电池信息
 Battery_Info_t Battery_Info;
 
@@ -52,10 +53,10 @@ static void RD_getQRemainRecord(uint16_t Volgate)
 	BusVoltage = Volgate;
 	
 	//查表读取电池电量
-	num = sizeof(battery_VoltageQuantity)/4;
+	num = sizeof(battery_VoltageQuantity) / 4;
 	batteryTotalQ = battery_VoltageQuantity[num-1][1];
 	batteryRemainQ = batteryTotalQ;
-	for(i=0;i<num;i++)
+	for(i=0; i<num; i++)
 	{
 		if(battery_VoltageQuantity[i][0] <=  BusVoltage)
 		{
@@ -86,30 +87,33 @@ static void RD_getQRemainRecord(uint16_t Volgate)
 *          20181221      V1.2          Damon             modify
 * 
 *******************************************************************************/
-void RD_RemainDis_Init(uint16_t uwWheelLength, uint16_t BusVoltage, uint8_t DesignVol)
+void RD_RemainDis_Init(uint16_t uwWheelLength, TrueOrFalse_Flag_Struct_t BMS_COM_OK, uint16_t BusVoltage, uint8_t DesignVol, uint16_t BMS_RC)
 {
 	Battery_Info.Q_discharged = 0;
 	Battery_Info.Q_remain_real = 0;
 	Battery_Info.Q_remain_record = BATTERY_TATAL_Q_MAH;
 	Battery_Info.Q_remain_real_last = 0;
 	
-#if RD_BATTERY_INFO_TABLE
-	/*配置不带CAN通讯的电池时调用,上电读取电池电压,查表获得剩余电量,放电曲线是按照36V,针对48V或24V做等效转换*/
-       RD_getQRemainRecord(BusVoltage * 36 / DesignVol);
-	RemainDis.IsBMS_ComOK_Flag = FALSE;
-#endif
+	if(BMS_COM_OK == TRUE) //电池通讯正常时,直接获取电池容量
+	{
+	  Battery_Info.Q_remain_real = BMS_RC;
+	}
+	else //电池不含通讯时,根据母线电压估算剩余容量
+	{
+	  RD_getQRemainRecord(BusVoltage * 36 / DesignVol); //放电曲线是按照36V,针对48V或24V做等效转换
+	}
 	
-	RemainDis.acc_period = Q_ADD_TIME_MS;
-	RemainDis.wheel_Count = 0;
+	RemainDis.start = 0;
 	RemainDis.I_motor = 0;
+	RemainDis.acc_period = Q_ADD_TIME_MS;
 	RemainDis.Q_add = 0;
 	RemainDis.wheelLength = uwWheelLength;
-	RemainDis.flag_saveInfo = 0;
-	RemainDis.flag_helpModeChange = 0;
+	RemainDis.wheel_Count = 0;
 	RemainDis.Power_per_km = 0;
 	RemainDis.Power_per_km_average = 0;
 	RemainDis.remainDistance = 0xFFFF;//码表显示---km
-	RemainDis.start = 0;
+	RemainDis.flag_saveInfo = 0;
+	RemainDis.flag_helpModeChange = 0;
 	RemainDis.IsBMS_ComOK_Flag = FALSE;
 	RemainDis.BMS_Com_DelayTimeCnt = HAL_GetTick();	
 	

+ 1 - 1
User/Src/speed_sensor.c

@@ -17,7 +17,7 @@ void SpeedSensor_GPIO_Init(void)
 {
    GPIO_InitTypeDef GPIO_InitStruct;
 
-	__HAL_RCC_GPIOB_CLK_ENABLE();
+	__HAL_RCC_GPIOD_CLK_ENABLE();
 	
   GPIO_InitStruct.Pin = SPEED_SENSOR_Pin;
   GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;

+ 3 - 3
User/Src/var.c

@@ -487,8 +487,8 @@ void Var_Init(void)
 	memcpy((uint8_t*)&PBU_ConfigParam.GearsNum, (uint8_t*)&PBU_ConfigParam_Default.GearsNum, sizeof(PBU_ConfigParam_Struct_t));
 		
 	//MC版本信息初始化,Mode和SN从EEPROM读取
-  strncpy(MC_VerInfo.HW_Version, (char*)"QD007E.         ", 16);
-	strncpy(MC_VerInfo.FW_Version, (char*)"V2r1r5_20200903.", 16);
+  strncpy(MC_VerInfo.HW_Version, (char*)"QD007G.         ", 16);
+	strncpy(MC_VerInfo.FW_Version, (char*)"V2r1r5_20200904.", 16);
 		
 	//电机型号
 	strncpy(MC_VerInfo.Mode, (char*)"VL6500 & VS7500.", 16);
@@ -499,7 +499,7 @@ void Var_Init(void)
 	//生产信息
 	strncpy(MC_MacInfo.Manufacturer, (char*)"TTIUM.  ", 8);  //生产信息
 	strncpy(MC_MacInfo.MacAddr, (char*)"WUHAN.  ", 8);
-	strncpy(MC_MacInfo.MacDate, (char*)"20200101", 8);
+	strncpy(MC_MacInfo.MacDate, (char*)"20200901", 8);
 		
 	//MCU ID读取
 	memcpy((uint8_t*)MC_CheckInfo.MAC_ID, (uint8_t*)(0x1FFFF7E8), 12);

+ 3 - 1
修改说明.txt

@@ -325,7 +325,9 @@ V2.1.5_20200903
 2、程序开始运行前两秒不执行续航里程初始化和计算程序,等母线电压采集稳定后再计算续航里程;
 3、修改电池版本号为V2.1.5_20200903;
 
-
+2.1.5_20200904
+1、优化开机时刻初始续航里程的计算,根据电池通讯状态计算,解决轮子转5圈后续航跳变的问题;
+2、软件版本:V2r1r5_20200904