Bladeren bron

V6.0.0_20210128
1、修改PowerOff_Process函数,在接收到关机指令时,延迟5s退出,按键和BMS发送关机指令后延迟1s关闭ACC和电源;
2、版本号:V6.0.0_20210128

dail.zhou 4 jaren geleden
bovenliggende
commit
170aa918f5

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


BIN
MDK-ARM/bin/MC_VOLANS_V6r0r0_20210128.bin


BIN
MDK-ARM/bin/QD007A_CTL_APP.bin


+ 1 - 1
User/Inc/tasks.h

@@ -15,7 +15,7 @@ extern void MC_SendErrorCode_Process(MC_ErrorCode_Struct_t ErrorCode);
 extern void MC_SendRunInfo_Process(MC_WorkMode_Struct_t WorkMode);
 extern void MC_TE_SensorData_Process(MC_TE_SensorData_Struct_t* p_MC_TE_SensorData);
 extern uint8_t MC_CadenceLimit_Cal(uint8_t Cadence, uint16_t Current, uint8_t T_Coil);
-extern void PowerOff_Process(void);
+extern void PowerOff_Process(TrueOrFalse_Flag_Struct_t ReturnEnable);
 extern void MC_CanRxCheck_Process(MC_SupportFlag_Struct_t NoPBU_Flag, MC_SupportFlag_Struct_t NoHMI_Flag, MC_WorkMode_Struct_t WorkMode, MC_GearSt_Struct_t* GearSt);
 extern void MC_UartRxCheck_Process(void);
 extern void MC_RunTime_Cal(uint32_t* p_Runtime);

+ 35 - 3
User/Src/can_process.c

@@ -92,7 +92,7 @@ void DataProcess(uint16_t ID, uint8_t Mode, uint16_t Cmd, uint8_t* Data)
 				}
 				case 0x1308://关机指令
 				{					
-					PowerOff_Process();
+					PowerOff_Process(FALSE);
 					break;
 				}
 				case 0x1410://电池设计信息
@@ -132,7 +132,7 @@ void DataProcess(uint16_t ID, uint8_t Mode, uint16_t Cmd, uint8_t* Data)
 				//PBU广播的指令
         case 0x1008://PBU关机指令
 				{
-					PowerOff_Process();
+					PowerOff_Process(FALSE);
 					break;
 				}
 				case 0x120C://PBU物理ID
@@ -190,6 +190,14 @@ void DataProcess(uint16_t ID, uint8_t Mode, uint16_t Cmd, uint8_t* Data)
 				case 0x3408://OBC设置用户参数
 				{
 				  MC_ConfigParam1.WheelSizeAdj = (int8_t)Data[0];
+					if(MC_ConfigParam1.WheelSizeAdj > 10)
+					{
+						MC_ConfigParam1.WheelSizeAdj = 10;
+					}
+					if(MC_ConfigParam1.WheelSizeAdj < -10)
+					{
+						MC_ConfigParam1.WheelSizeAdj = -10;
+					}
 					MC_ConfigParam1.StarModel = (MC_StarMode_Struct_t)Data[1];
 					SaveParamToEEprom_24C02(&I2C_Handle_EEPROM, EEPROM_24C02_ADDR_CONFIG_PARAM1, sizeof(MC_ConfigParam1), (uint8_t*)&MC_ConfigParam1.GasCtrlMode_Flag);
 					SendData(ID_MC_TO_PBU, MODE_REPORT, 0x5303, (uint8_t*)"ACK");
@@ -249,7 +257,23 @@ void DataProcess(uint16_t ID, uint8_t Mode, uint16_t Cmd, uint8_t* Data)
 				case 0x3810://ECU设置用户参数
 				{
 			  	MC_ConfigParam1.WheelSize = Data[0];
+					if(MC_ConfigParam1.WheelSize > 250)
+					{
+					  MC_ConfigParam1.WheelSize = 250;
+					}
+					if(MC_ConfigParam1.WheelSize < 120)
+					{
+					  MC_ConfigParam1.WheelSize = 120;
+					}
 					MC_ConfigParam1.SpeedLimit = Data[1];
+					if(MC_ConfigParam1.SpeedLimit > 99)
+					{
+					  MC_ConfigParam1.SpeedLimit = 99;
+					}
+					if(MC_ConfigParam1.SpeedLimit < 5)
+					{
+					  MC_ConfigParam1.SpeedLimit = 5;
+					}
 					//Data[2]和Data[3]低压保护值暂不处理
 					SaveParamToEEprom_24C02(&I2C_Handle_EEPROM, EEPROM_24C02_ADDR_CONFIG_PARAM1, sizeof(MC_ConfigParam1), (uint8_t*)&MC_ConfigParam1.GasCtrlMode_Flag);
 					SendData(ID_MC_TO_PBU, MODE_REPORT, 0x5303, (uint8_t*)"ACK");
@@ -315,6 +339,14 @@ void DataProcess(uint16_t ID, uint8_t Mode, uint16_t Cmd, uint8_t* Data)
 				case 0x3208://设置电机配置参数
 				{
 					MC_ConfigParam1.WheelSizeAdj = (int8_t)Data[0];
+					if(MC_ConfigParam1.WheelSizeAdj > 10)
+					{
+						MC_ConfigParam1.WheelSizeAdj = 10;
+					}
+					if(MC_ConfigParam1.WheelSizeAdj < -10)
+					{
+						MC_ConfigParam1.WheelSizeAdj = -10;
+					}
 					MC_ConfigParam1.StarModel = (MC_StarMode_Struct_t)Data[1];
 					SaveParamToEEprom_24C02(&I2C_Handle_EEPROM, EEPROM_24C02_ADDR_CONFIG_PARAM1, sizeof(MC_ConfigParam1), (uint8_t*)&MC_ConfigParam1.GasCtrlMode_Flag);
 					SendData(ID_MC_TO_HMI, MODE_REPORT, 0x7403, (uint8_t*)"ACK");
@@ -511,7 +543,7 @@ void DataProcess(uint16_t ID, uint8_t Mode, uint16_t Cmd, uint8_t* Data)
 				  if(strncmp("RESET", (char*)Data, DataLength) == 0)
 					{
 						SendData(ID_MC_TO_CDL, MODE_REPORT, 0xA903, (uint8_t*)"ACK");
-						PowerOff_Process();
+						PowerOff_Process(TRUE);
 		    	  HAL_Delay(100);
 			      __set_FAULTMASK(1);//关闭所有中断
 			      HAL_NVIC_SystemReset();

+ 25 - 1
User/Src/tasks.c

@@ -529,9 +529,11 @@ uint8_t MC_CadenceLimit_Cal(uint8_t Cadence, uint16_t Current, uint8_t T_Coil)
 }
 
 //接收到关机指令处理
-void PowerOff_Process(void)
+void PowerOff_Process(TrueOrFalse_Flag_Struct_t ReturnEnable)
 {
   static FlagStatus SaveFlag = RESET;
+	static uint32_t PeriodTimeCnt = 0;
+	static uint8_t Count = 0;
 	
 	//关闭助力档位
 	MC_ControlCode.GearSt = MC_GearSt_OFF;
@@ -553,6 +555,28 @@ void PowerOff_Process(void)
 	
 	//发送关机就绪信号
 	SendData(ID_MC_BC, MODE_REPORT, 0x1305, (uint8_t*)"READY");
+	
+	//等待关机
+	if(ReturnEnable == TRUE)
+	{
+	  return;
+	}
+	else
+	{
+		PeriodTimeCnt = HAL_GetTick();
+		Count = 0;
+	  while(Count < 50)
+		{
+		  if((HAL_GetTick() - PeriodTimeCnt) > 100)
+			{
+			  PeriodTimeCnt = HAL_GetTick();
+				Count++;
+				#if DEBUG
+			  HAL_IWDG_Refresh(&hiwdg);
+			  #endif
+			}
+		}
+	}
 }
 
 //CAN设备PBU、HMI、BMS通信状态检测处理

+ 1 - 1
User/Src/var.c

@@ -490,7 +490,7 @@ void Var_Init(void)
 		
 	//MC版本信息初始化,Mode和SN从EEPROM读取
   strncpy(MC_VerInfo.HW_Version, (char*)"QD007H.         ", 16);
-	strncpy(MC_VerInfo.FW_Version, (char*)"V6r0r0_20210126.", 16);
+	strncpy(MC_VerInfo.FW_Version, (char*)"V6r0r0_20210128.", 16);
 	strncpy(Firmware_Special, (char*)"TC011000-MS0000-V0r0.           ", 32);
 		
 	//电机型号

+ 3 - 1
修改说明.txt

@@ -380,7 +380,9 @@ V6.0.0_20210126
 1、修改临时掉电数据存储的地址,单独开一页(1024B)空间,避免初始化时MC_Init()前执行EEPROM_Flash_DataUpdate时,擦除完1KFlash后系统断电,导致Flash中数据丢失的问题;
 2、版本号:V6.0.0_20210126
 
-
+V6.0.0_20210128
+1、修改PowerOff_Process函数,在接收到关机指令时,延迟5s退出,按键和BMS发送关机指令后延迟1s关闭ACC和电源;
+2、版本号:V6.0.0_20210128
 
 
 

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