Przeglądaj źródła

V3.2.3_20210125 TC013003-MW2002-V0r4
1、根据SN号,针对样机在程序中赋值出厂参数;
2、修改低压保护判断条件,加入根据BMS信息;
3、NTC测温上限为160度,屏蔽NTC故障检测;
4、版本号:V3.2.3_20210125 TC013003-MW2002-V0r4

dail.zhou 4 lat temu
rodzic
commit
6bc8c5d79d

+ 15 - 0
Core/Src/main.c

@@ -206,6 +206,21 @@ int main(void)
 	//初始化完成标志
 	IsInitFinish_Flag = TRUE;
 	
+	//样车上电机参数丢失,调用出厂数据
+  MC_ConfigParam1.GasCtrlMode_Flag = MC_SUPPORT_ENABLE;
+	MC_ConfigParam1.SpeedLimit = 32;
+	MC_ConfigParam1.CurrentLimit = 17;
+	MC_ConfigParam1.WheelSize = 232;
+	MC_ConfigParam1.SerialNum = 4;
+	MC_ConfigParam1.UV_Protect_TH = 3000;
+	MC_MotorParam.Rate_Power = 500;
+	MC_MotorParam.Rate_Speed = 2000;
+	MC_MotorParam.Rate_Voltage = 48;
+	TorqueSensorStartData = 532;
+	TorqueSensor_1_Param.Torque_Cal_K = 39;
+	TorqueSensor_2_Param.Torque_Cal_K = 61;
+	TorqueSensor_3_Param.Torque_Cal_K = 41;
+
   /* USER CODE END 2 */
 
   /* Infinite loop */

BIN
MDK-ARM/bin/MC_PSX000-TC013003-MW2002-V3.2.3.0.4_20210125.bin


BIN
MDK-ARM/bin/QD007A_CTL_APP.bin


+ 2 - 2
User/Src/fault_check.c

@@ -105,7 +105,7 @@ void MC_Fault_TorqueSensor_Process_Single(uint16_t ADC_Data, uint8_t Num, Toruqe
 
 	p_SensorCheck->DiffStdResult = GetStandardDeviation(p_SensorCheck->TorqueArray, sizeof(p_SensorCheck->TorqueArray) / 2);
 	//标准差较小
-	if(p_SensorCheck->DiffStdResult < 12)
+	if(p_SensorCheck->DiffStdResult < 10)
 	{
 		DelayTime = 30000 / Cadence;  //根据踏频计算踩踏1/2圈的时间,要考虑空踩情况
 		DelayTime = (DelayTime < 250) ? 250 : DelayTime;
@@ -1048,7 +1048,7 @@ void MC_Fault_Check_Process(void)
 	MC_Fault_PhaseLine_Process(MC_CalParam.Foc_Flag, MC_RunInfo.BusCurrent, MC_RunInfo.MotorSpeed, ADC_3ShuntCurrent_RMSValue, &MC_ErrorCode);
 
 	//温度传感器故障检测
-	MC_Fault_NTCSensor_Process(MC_RunInfo.T_PCB, MC_RunInfo.T_Coil, &MC_ErrorCode);
+	//MC_Fault_NTCSensor_Process(MC_RunInfo.T_PCB, MC_RunInfo.T_Coil, &MC_ErrorCode);
 
 	//指拨故障检测
 	MC_Fault_GasSensor_Process(ADC1_Result[ADC1_RANK_GAS], &MC_ErrorCode);

+ 49 - 2
User/Src/protect_check.c

@@ -11,12 +11,54 @@ FlagStatus MC_Protect_OverCurrentTrig_Flag = RESET;
 
 /******************************局部函数定义******************************/
 //低压保护检测
-void MC_Protect_UnderVoltage_Process(uint16_t BusVoltage, uint8_t DesignVoltage, uint16_t UV_TH, MC_ErrorCode_Struct_t* p_MC_ErrorCode)
+void MC_Protect_UnderVoltage_Process(uint16_t BusVoltage, uint8_t DesignVoltage, uint16_t UV_TH, TrueOrFalse_Flag_Struct_t BMS_Com_OK_Flag, MC_ErrorCode_Struct_t* p_MC_ErrorCode)
 {
   static uint32_t uvTimeCnt = 0;
 	static uint32_t uvFaultTimeCnt = 0;
 	uint16_t UV_Voltage = 0;
 	
+	//电池通讯正常时,根据剩余容量提示低电量警告,警告延时3s
+	if(BMS_Com_OK_Flag == TRUE)
+	{
+		static uint32_t uvAlarmTimeCnt = 0;
+		static FlagStatus AlarmFlag = RESET;
+		
+		if(BMS_RunInfo.Status.Status_Bit.Charge == 1)//充电状态,清除标志
+		{
+	  	p_MC_ErrorCode->ERROR_Bit.Protect_UnderVoltage = 0;
+			return;
+		}
+		
+		if(p_MC_ErrorCode->ERROR_Bit.Protect_UnderVoltage == 0)
+		{
+			if(AlarmFlag == RESET) // 只出现一次警告,3s后自动消失
+			{
+				if(BMS_RunInfo.SOC < 5)
+				{
+					p_MC_ErrorCode->ERROR_Bit.Protect_UnderVoltage = 1;
+					//记录故障日志
+					MC_ErrorLogSaveInfo.NotesInfo1 = 1;
+					MC_ErrorLogSaveInfo.NotesInfo2 = BMS_RunInfo.SOC;
+					MC_ErrorLogSaveInfo.NotesInfo3 = BMS_RunInfo.Voltage;
+					ErrorLogSave_Update(&MC_ErrorLogSaveInfo);
+					IsErrorLogSaveInfoUpdateFlag = TRUE;
+					//存储故障次数
+					MC_RunLog1.UV_ProtectCnt++;
+					RunLogSaveIndex = 1;
+					uvAlarmTimeCnt = HAL_GetTick();
+					AlarmFlag = SET;
+				}			
+			}
+		}
+		else
+		{
+			if((HAL_GetTick() - uvAlarmTimeCnt) > 3000)
+			{
+				p_MC_ErrorCode->ERROR_Bit.Protect_UnderVoltage = 0;
+			}
+		}		
+	}
+	
 	//根据额定电压更新保护阈值
 	switch(DesignVoltage)
 	{
@@ -52,6 +94,7 @@ void MC_Protect_UnderVoltage_Process(uint16_t BusVoltage, uint8_t DesignVoltage,
 		{
 			p_MC_ErrorCode->ERROR_Bit.Protect_UnderVoltage = 1;
 			//记录故障日志
+			MC_ErrorLogSaveInfo.NotesInfo1 = 2;
 			ErrorLogSave_Update(&MC_ErrorLogSaveInfo);
 			IsErrorLogSaveInfoUpdateFlag = TRUE;
 			//存储故障次数
@@ -382,7 +425,11 @@ void MC_Protect_OverCurrent_Process(FlagStatus* OverCurrentTrigFlag, MC_ErrorCod
 void MC_Protect_Check_Process(void)
 {
 	//低压保护检测
-	MC_Protect_UnderVoltage_Process(MC_RunInfo.BusVoltage, MC_MotorParam.Rate_Voltage, ((MC_ConfigParam1.UV_Protect_TH == 0) ? 3100 : MC_ConfigParam1.UV_Protect_TH), &MC_ErrorCode);
+	MC_Protect_UnderVoltage_Process(((IsComOK_BMS.IsOK_Flag == TRUE) ? BMS_RunInfo.Voltage : MC_RunInfo.BusVoltage), 
+	                                MC_MotorParam.Rate_Voltage, 
+	                                ((MC_ConfigParam1.UV_Protect_TH == 0) ? 3100 : MC_ConfigParam1.UV_Protect_TH), 
+	                                IsComOK_BMS.IsOK_Flag, 
+	                                &MC_ErrorCode);
 	
 	//过压保护检测
 	MC_Protect_OverVoltage_Process(MC_RunInfo.BusVoltage, MC_MotorParam.Rate_Voltage, &MC_ErrorCode);

+ 2 - 2
User/Src/var.c

@@ -490,8 +490,8 @@ void Var_Init(void)
 		
 	//MC版本信息初始化,Mode和SN从EEPROM读取
   strncpy(MC_VerInfo.HW_Version, (char*)"TT_KZ_010D.     ", 16);
-	strncpy(MC_VerInfo.FW_Version, (char*)"V3r2r3_20210108.", 16);
-	strncpy(Firmware_Special, (char*)"TC013003-MW2002-V0r3.           ", 32);
+	strncpy(MC_VerInfo.FW_Version, (char*)"V3r2r3_20210125.", 16);
+	strncpy(Firmware_Special, (char*)"TC013003-MW2002-V0r4.           ", 32);
 	
 	//电机型号
 	strncpy(MC_VerInfo.Mode, (char*)"PG8000 & PSX000.", 16);

+ 5 - 0
修改说明.txt

@@ -356,6 +356,11 @@ V3.2.3_20210108 TC013003-MW2002-V0r3
 3、灯的控制放到tim.c中运行;
 4、V3.2.3_20210108 TC013003-MW2002-V0r3
 
+V3.2.3_20210125 TC013003-MW2002-V0r4
+1、根据SN号,针对样机在程序中赋值出厂参数;
+2、修改低压保护判断条件,加入根据BMS信息;
+3、NTC测温上限为160度,屏蔽NTC故障检测;
+4、版本号:V3.2.3_20210125 TC013003-MW2002-V0r4