Browse Source

V2.1.8_20210629 TC011000-MS0000HK-V0r0
1、清除TRIP里程时,前100km内可清除总里程一次;
2、调整过流保护的判断条件,增加软件过流保护检测。

dail 4 năm trước cách đây
mục cha
commit
bc2d1824ba

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 2472 - 2472
MDK-ARM/QD007A_CTL_APP/QD007A_CTL_APP_CRC.hex


BIN
MDK-ARM/bin/MC_VL65XX&VS75XX(125K)-TC011000-MS0000HK-V2.1.8.0.0_20210629.bin


BIN
MDK-ARM/bin/QD007A_CTL_APP.bin


+ 20 - 0
User/Src/can_process.c

@@ -215,6 +215,16 @@ void DataProcess(uint16_t ID, uint8_t Mode, uint16_t Cmd, uint8_t* Data)
 					{
 					  MC_RideLog.TRIP_Km = 0;
 						MC_RideLog.TRIP_Time = 0;
+						if(strncmp("CLEAR_ODO", (char*)UserString1, 9) != 0)//利用UserString1作为是否允许清除ODO的标志
+						{
+						  if(MC_RideLog.ODO_Km < 1000) //前100km允许清除
+							{
+						  	MC_RideLog.ODO_Km = 0;
+					  		MC_RideLog.ODO_Time = 0;
+							}
+							strncpy((char*)UserString1, (char*)"CLEAR_ODO", 9);
+							IsFlashSaveDataUpdate = TRUE;
+						}	
 						SaveParamToEEprom_24C02(&I2C_Handle_EEPROM, EEPROM_24C02_ADDR_RIDE_LOG, sizeof(MC_RideLog_Struct_t), (uint8_t*)&MC_RideLog.ODO_Km);
 						SendData(ID_MC_TO_PBU, MODE_REPORT, 0x5303, (uint8_t*)"ACK");
 						MC_RunInfo.Ride_Km = 0;
@@ -372,6 +382,16 @@ void DataProcess(uint16_t ID, uint8_t Mode, uint16_t Cmd, uint8_t* Data)
 					{
 					  MC_RideLog.TRIP_Km = 0;
 						MC_RideLog.TRIP_Time = 0;
+						if(strncmp("CLEAR_ODO", (char*)UserString1, 9) != 0)//利用UserString1作为是否允许清除ODO的标志
+						{
+						  if(MC_RideLog.ODO_Km < 1000) //前100km允许清除
+							{
+						  	MC_RideLog.ODO_Km = 0;
+					  		MC_RideLog.ODO_Time = 0;
+							}
+							strncpy((char*)UserString1, (char*)"CLEAR_ODO", 9);
+							IsFlashSaveDataUpdate = TRUE;
+						}	
 						SaveParamToEEprom_24C02(&I2C_Handle_EEPROM, EEPROM_24C02_ADDR_RIDE_LOG, sizeof(MC_RideLog_Struct_t), (uint8_t*)&MC_RideLog.ODO_Km);
 						SendData(ID_MC_TO_HMI, MODE_REPORT, 0x7403, (uint8_t*)"ACK");
 						MC_RunInfo.Ride_Km = 0;

+ 43 - 1
User/Src/protect_check.c

@@ -304,9 +304,48 @@ void MC_Protect_VoltageChange_Process(uint16_t Voltage, uint16_t Current, MC_Err
 	}
 }
 
+//软件过流保护检测
+void MC_OverCurrent_SoftProtect_Process(uint16_t BusCurrent, uint16_t MaxCurrent, MC_ErrorCode_Struct_t* p_MC_ErrorCode)
+{
+  static uint32_t Protect_TimeCnt = 0;
+	static uint32_t Fault_TimeCnt = 0;
+	uint16_t Current_Th;
+	
+	Current_Th = (MaxCurrent * 3) >> 1;//1.5倍
+	
+	if(p_MC_ErrorCode->ERROR_Bit.Protect_OverCurrent == 0)
+	{
+		if(BusCurrent < Current_Th)
+		{
+			Protect_TimeCnt = HAL_GetTick();
+		}
+		if((HAL_GetTick() - Protect_TimeCnt) > 5000)
+		{
+			p_MC_ErrorCode->ERROR_Bit.Protect_OverCurrent = 1;
+			//记录故障日志
+			MC_ErrorLogSaveInfo.NotesInfo1 = 2;
+			MC_ErrorLogSaveInfo.NotesInfo2 = Current_Th;
+			ErrorLogSave_Update(&MC_ErrorLogSaveInfo);
+		  IsErrorLogSaveInfoUpdateFlag = TRUE;
+			//存储故障次数
+			MC_RunLog1.OC_ProtectCnt++;
+			RunLogSaveIndex = 1;	
+			Fault_TimeCnt = HAL_GetTick();
+		}
+	}
+	else
+	{
+		//过流保护恢复
+		if((HAL_GetTick() - Fault_TimeCnt) > 5000)
+		{
+			MC_ErrorCode.ERROR_Bit.Protect_OverCurrent = 0;
+		}
+	}
+}
+
 /******************************全局函数定义******************************/
 #define OC_CLEARFLAG_DELAYTIME 15 //过流标志间隔清零延时,单位ms
-#define OC_COUNTER_TH 100         //过流保护计数判断阈值
+#define OC_COUNTER_TH 1000        //过流保护计数判断阈值
 //过流保护检测
 /*
 检测原理:
@@ -368,6 +407,7 @@ void MC_Protect_OverCurrent_Process(FlagStatus* OverCurrentTrigFlag, MC_ErrorCod
 				p_MC_ErrorCode->ERROR_Bit.Protect_OverCurrent = 1;
 				ocFaultTimeCnt = HAL_GetTick();
 				//记录故障日志
+				MC_ErrorLogSaveInfo.NotesInfo1 = 1;
 			  ErrorLogSave_Update(&MC_ErrorLogSaveInfo);
 		  	IsErrorLogSaveInfoUpdateFlag = TRUE;
 				//存储故障次数
@@ -411,4 +451,6 @@ void MC_Protect_Check_Process(void)
 	//电压波动异常保护检测
 	MC_Protect_VoltageChange_Process(MC_RunInfo.BusVoltage, MC_RunInfo.BusCurrent, &MC_ErrorCode);
 	
+	//软件过流保护检测
+	MC_OverCurrent_SoftProtect_Process(MC_RunInfo.BusCurrent, MC_ConfigParam1.CurrentLimit * 1000, &MC_ErrorCode);
 }

+ 2 - 0
User/Src/tasks.c

@@ -17,6 +17,7 @@
 #include "key_driver.h"
 #include "encrypt.h"
 #include "ICM20600.h"
+#include "light_driver.h"
 
 /************************全局变量************************/
 TrueOrFalse_Flag_Struct_t IsInitFinish_Flag = FALSE;
@@ -540,6 +541,7 @@ void PowerOff_Process(TrueOrFalse_Flag_Struct_t ReturnEnable)
 	//关闭助力档位,关闭车灯
 	MC_ControlCode.GearSt = MC_GearSt_OFF;
 	MC_ControlCode.LightSwitch = MC_LightSwitch_OFF;
+	LightDriver_Process(MC_ConfigParam2.MC_TailLight_Mode, IsBreakTrig_Flag, MC_ControlCode.LightSwitch);
 	Update_MC_ControlCode_Back();
 	
 	#if 1 //存储到Flash,下次开机时从Flash取出转移到EEPROM

+ 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_HK.      ", 16);
-	strncpy(MC_VerInfo.FW_Version, (char*)"V2r1r8_20210624.", 16);
+	strncpy(MC_VerInfo.FW_Version, (char*)"V2r1r8_20210629.", 16);
 	strncpy(Firmware_Special, (char*)"TC011000-MS0000HK-V0r0.         ", 32);
 		
 	//电机型号

+ 4 - 0
修改说明.txt

@@ -413,5 +413,9 @@ V2.1.8_20210624 TC011000-MS0000HK-V0r0
 1、针对HK单片机串口通讯不稳定问题,屏蔽与TE通讯相关的检测;
 2、硬件版本号和客户标识符增加“HK”。
 
+V2.1.8_20210629 TC011000-MS0000HK-V0r0
+1、清除TRIP里程时,前100km内可清除总里程一次;
+2、调整过流保护的判断条件,增加软件过流保护检测。
+
 
 

Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác