ソースを参照

1、运行历史预留部分分别用于ODO里程和时间;
2、增加上位机写入骑行历史的指令;
3、单向器打滑记录与电压异常波动计数复用。

Dail 1 年間 前
コミット
5d71d42c3a

ファイルの差分が大きいため隠しています
+ 2442 - 2442
MDK-ARM/QD007A_CTL_APP/QD007A_CTL_APP_CRC.hex


BIN
MDK-ARM/bin/QD007A_CTL_APP.bin


+ 3 - 4
User/Inc/var.h

@@ -300,13 +300,12 @@ typedef struct
 	uint16_t PBU_Check_FaultCnt;     //PBU校验错误次数 ,地址偏移32
 	uint8_t T_PCB_Max;               //PCB历史最高温,地址偏移34
 	uint8_t T_PCB_Min;               //PCB历史最低温,地址偏移35
-	uint8_t MachineFaultCnt;         //单向器打滑故障次数,地址偏移36
-    uint8_t RS1[3];
+	uint32_t ODO_Km;                 //出厂后ODO里程,地址偏移36
 	uint8_t T_Coil_Max;              //绕组历史最高温,地址偏移40
 	uint8_t T_Coil_Min;	             //绕组历史最低温,地址偏移41
 	uint8_t T_MCU_Max;               //MCU历史最高温,地址偏移42
 	uint8_t T_MCU_Min;               //MCU历史最低温,地址偏移43
-	uint8_t RS2[4];
+	uint32_t ODO_Time;               //出厂后ODO时间,地址偏移44
 }MC_RunLog1_Struct_t;
 
 //MC运行历史,占用空间24bytes
@@ -316,7 +315,7 @@ typedef struct
 	uint16_t CadenceSensor_FaultCnt;
 	uint16_t GasSensor_FaultCnt;
 	uint16_t MOS_ShortCircuit_FaultCnt;
-	uint16_t VoltageChange_FaultCnt;
+	uint16_t VoltageChangeOrOverSpeed_FaultCnt;
 	uint16_t Circuit_FaultCnt;
 	uint16_t TE_MCU_FaultCnt;
 	uint16_t TE_Circuit_FaultCnt;

+ 7 - 0
User/Src/can_process.c

@@ -798,6 +798,13 @@ void DataProcess(uint16_t ID, uint8_t Mode, uint16_t Cmd, uint8_t* Data)
 					SendData(ID_MC_TO_CDL, MODE_REPORT, 0xA903, (uint8_t*)"ACK");
 					break;
 				}
+				case 0x3B10://дÈëODOºÍTRIPÐÅÏ¢
+				{
+				  memcpy((uint8_t*)&MC_RideLog.ODO_Km, Data, DataLength);
+					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_CDL, MODE_REPORT, 0xA903, (uint8_t*)"ACK");
+					break;
+				}
 				default:break;
 			}
 			break;

+ 3 - 6
User/Src/fault_check.c

@@ -830,14 +830,14 @@ void MC_Fault_Machine_Process(uint16_t MotorSpeed, uint16_t CadenceSpeed, ADC_Se
 						ClutchFaultCount=0;
 						p_MC_ErrorCode->ERROR_Bit.Fault_Machine = 1;
 						//记录故障日志
-						MC_ErrorLogSaveInfo.NotesInfo1 = 1;       //单向器打滑故障
+						MC_ErrorLogSaveInfo.NotesInfo1 = 0;       //单向器打滑故障
 						MC_ErrorLogSaveInfo.NotesInfo2 = SensorData.TorqueSensor;
 						MC_ErrorLogSaveInfo.NotesInfo3 = SensorData.GasSensor;
 						ErrorLogSave_Update(&MC_ErrorLogSaveInfo);
 						IsErrorLogSaveInfoUpdateFlag = TRUE;
 						//存储故障次数
-						MC_RunLog1.MachineFaultCnt++;
-						RunLogSaveIndex = 1;
+						MC_RunLog2.VoltageChangeOrOverSpeed_FaultCnt++; //和电压异常波动记录复用
+						RunLogSaveIndex = 2;
 					}
 				}
 				else 
@@ -853,9 +853,6 @@ void MC_Fault_Machine_Process(uint16_t MotorSpeed, uint16_t CadenceSpeed, ADC_Se
 	}
 }
 
-
-
-
 //硬件识别故障
 void MC_Fault_Hardware_Identify(TrueOrFalse_Flag_Struct_t TEComOKFlag, uint16_t SyncClockFreqScan, uint16_t Hardware_AD, TrueOrFalse_Flag_Struct_t *inverterExistFlag, MC_ErrorCode_Struct_t* p_MC_ErrorCode)
 {

+ 1 - 1
User/Src/protect_check.c

@@ -339,7 +339,7 @@ void MC_Protect_VoltageChange_Process(uint16_t Voltage, uint16_t Current, MC_Err
 		    	ErrorLogSave_Update(&MC_ErrorLogSaveInfo);
 			    IsErrorLogSaveInfoUpdateFlag = TRUE;
 					//´æ´¢¹ÊÕÏ´ÎÊý
-					MC_RunLog2.VoltageChange_FaultCnt++;
+					MC_RunLog2.VoltageChangeOrOverSpeed_FaultCnt++;
 					RunLogSaveIndex = 2;
 				}
 			}

+ 4 - 2
User/Src/tasks.c

@@ -221,6 +221,7 @@ void MC_RunInfo_Update(void)
 			
 			//更新骑行历史信息中ODO和TRIP里程
 			MC_RideLog.ODO_Km++;
+		  MC_RunLog1.ODO_Km++;
 		  #if 0 //总里程是否自动归零
 		  if(MC_RideLog.ODO_Km > 999999)
 			{
@@ -243,7 +244,7 @@ void MC_RunInfo_Update(void)
 			SavePeriodCount++;
 			if(SavePeriodCount >= 30)//存储周期为3km
 			{
-				SaveParamToEEprom_24C02(&I2C_Handle_EEPROM, EEPROM_24C02_ADDR_RUN_LOG1, sizeof(MC_RunLog1_Struct_t), (uint8_t*)&MC_RunLog1.PowerOnCnt);
+				SaveParamToEEprom_24C02(&I2C_Handle_EEPROM, EEPROM_24C02_ADDR_RUN_LOG1, sizeof(MC_RunLog1_Struct_t), (uint8_t*)&MC_RunLog1.PowerOnCnt);				
 				SaveParamToEEprom_24C02(&I2C_Handle_EEPROM, EEPROM_24C02_ADDR_RIDE_LOG, sizeof(MC_RideLog_Struct_t), (uint8_t*)&MC_RideLog.ODO_Km);
 				SavePeriodCount = 0;
 			}
@@ -274,6 +275,7 @@ void MC_RunInfo_Update(void)
 	  	Period_1minCnt = 0;
 			//更新骑行历史信息中骑行时间
 	  	MC_RideLog.ODO_Time++;
+			MC_RunLog1.ODO_Time++;
 			#if 0 //时间是否自动归零
 			MC_RideLog.ODO_Time = (MC_RideLog.ODO_Time > 599999) ? 0 : MC_RideLog.ODO_Time;   //超过9999h59min,清零
 			MC_RideLog.TRIP_Time = (MC_RideLog.TRIP_Time > 599999) ? 0 : MC_RideLog.TRIP_Time;//超过9999h59min,清零
@@ -284,7 +286,7 @@ void MC_RunInfo_Update(void)
 		if(SavePeriod_Cnt >= 600)  //累计骑行600s进行存储
 		{
 		  SavePeriod_Cnt = 0;
-			SaveParamToEEprom_24C02(&I2C_Handle_EEPROM, EEPROM_24C02_ADDR_RUN_LOG1, sizeof(MC_RunLog1_Struct_t), (uint8_t*)&MC_RunLog1.PowerOnCnt);
+			SaveParamToEEprom_24C02(&I2C_Handle_EEPROM, EEPROM_24C02_ADDR_RUN_LOG1, sizeof(MC_RunLog1_Struct_t), (uint8_t*)&MC_RunLog1.PowerOnCnt);			
       SaveParamToEEprom_24C02(&I2C_Handle_EEPROM, EEPROM_24C02_ADDR_RIDE_LOG, sizeof(MC_RideLog_Struct_t), (uint8_t*)&MC_RideLog.ODO_Km);
 		}
 		

+ 3 - 5
User/Src/var.c

@@ -280,14 +280,12 @@ const MC_RunLog1_Struct_t MC_RunLog1_Default =
 	(uint16_t)0,    //PBU校验错误次数 
 	(uint8_t)65,    //PCB历史最高温
 	(uint8_t)65,    //PCB历史最低温	
-	(uint8_t)0,     //空出预留
-	(uint8_t)0,     //空出预留
-	(uint8_t)0,     //空出预留
-	(uint8_t)0,     //空出预留
+	(uint32_t)0,    //ODO里程
 	(uint8_t)65,    //绕组历史最高温
 	(uint8_t)65,	  //绕组历史最低温
 	(uint8_t)65,    //MCU历史最高温
-	(uint8_t)65     //MCU历史最低温
+	(uint8_t)65,    //MCU历史最低温
+	(uint32_t)0     //ODO时间
 };
 
 //MC默认历史信息,占用24bytes

この差分においてかなりの量のファイルが変更されているため、一部のファイルを表示していません