Преглед изворни кода

1.加热常闭故障诊断策略修改:增加模组温度最高的判断

LAPTOP-EG88H5BE\86151 пре 3 година
родитељ
комит
54f42df924
1 измењених фајлова са 32 додато и 3 уклоњено
  1. 32 3
      src/EmbeddedCoder_src/SFM.c

+ 32 - 3
src/EmbeddedCoder_src/SFM.c

@@ -17,6 +17,9 @@ void SFM(void)
     boolean_T sfmd_flg_chrgMosClosFlt;
     boolean_T sfmd_flg_disChrgMosClosFlt;
 
+	static uint16_T Time0Cntl;
+    static uint16_T modTMaxArr[10];
+    static uint16_T SumT0;
     static uint16_T Time1Cntl;
     static uint16_T heatT1Arr[10];
     static uint16_T SumT1;
@@ -176,6 +179,7 @@ void SFM(void)
         memset(RecNr, 0, sizeof(RecNr));
         memset(modTOpenNr, 0, sizeof(modTOpenNr));
         memset(modTRationNr, 0, sizeof(modTRationNr));
+		memset(deltRFltNr, 0, sizeof(deltRFltNr));
         sfmd_flg_cellUOverFlt2 = false;
         sfmd_flg_cellUOverFlt1 = false;
         sfmd_flg_cellULowFlt2 = false;
@@ -846,6 +850,31 @@ void SFM(void)
 
 	
     ////32 加热回路常闭故障
+    if(!sfmd_flg_modTAllFlt)
+    {
+	    if (FirstRun_SFM)
+	   {
+		   for (i = 0; i < 10; i++)
+		  {
+			modTMaxArr[i] = sfmd_T_modTMax;
+		  }
+		  Time0Cntl = 0;
+		  SumT0 = 0;
+	   }
+	   Time0Cntl++;
+	   SumT0 = SumT0 + sfmd_T_modTMax;
+	   if (Time0Cntl >= 60)
+	   {
+		  for (i = 0; i < 9; i++)
+		  {
+			 modTMaxArr[i] = modTMaxArr[i + 1];
+		  }
+		  modTMaxArr[9] = SumT0 / Time0Cntl;
+		  Time0Cntl = 0;
+		  SumT0 = 0;
+	    }
+    }	
+    
     if (!sfmd_flg_heatPanT1OpenFlt && !sfmd_flg_heatPanT1RationFlt && (int16_T)(ihd_T_heatPanT1 - ihd_T_heatPanT1_Delay1) > -10 && (int16_T)(ihd_T_heatPanT1 - ihd_T_heatPanT1_Delay1) < 20 )
     {
         if (FirstRun_SFM)
@@ -901,7 +930,7 @@ void SFM(void)
     deltaTEn1  = !sfmd_flg_heatPanT1OpenFlt && !sfmd_flg_heatPanT1RationFlt && !sfmd_flg_ACPlugTOpenFlt &&!sfmd_flg_ACPlugTRationFlt && !sfmd_flg_DCPlugTOpenFlt &&!sfmd_flg_DCPlugTRationFlt && ((ihd_T_heatPanT1 > ihd_T_ACPlugT + 5) && (ihd_T_heatPanT1 > ihd_T_DCPlugT + 5));
     deltaTEn2  = !sfmd_flg_heatPanT2OpenFlt && !sfmd_flg_heatPanT2RationFlt && !sfmd_flg_ACPlugTOpenFlt &&!sfmd_flg_ACPlugTRationFlt && !sfmd_flg_DCPlugTOpenFlt &&!sfmd_flg_DCPlugTRationFlt && ((ihd_T_heatPanT2 > ihd_T_ACPlugT + 5) && (ihd_T_heatPanT2 > ihd_T_DCPlugT + 5));
 	Enable1 = JudgeTimeSystem(1, tmsd_st_heatAct == 0, &DiagTime.N32, 600);
-    sfmd_flg_heatCirClosFltEo = (((int16_T)(heatT2Arr[9] - heatT2Arr[0]) > 5 || (int16_T)(heatT1Arr[9] - heatT1Arr[0]) > 5) && Enable1 && (deltaTEn1 || deltaTEn2)) || sfmd_flg_heatCirClosFltEo || sfmd_flg_heatCirClosFltEi;
+    sfmd_flg_heatCirClosFltEo = (((int16_T)(heatT2Arr[9] - heatT2Arr[0]) > 5 || (int16_T)(heatT1Arr[9] - heatT1Arr[0]) > 5) && (modTMaxArr[9] > modTMaxArr[0] + 3) && Enable1 && (deltaTEn1 || deltaTEn2)) || sfmd_flg_heatCirClosFltEo || sfmd_flg_heatCirClosFltEi;
 
     //33 加热回路常开故障
     Enable2 = JudgeTimeSystem(1, tmsd_st_heatAct == 1, &DiagTime.N33, 600);
@@ -1043,7 +1072,7 @@ void SFM(void)
     FltAct[30] = 0;
 	
     FltFlg[31] = sfmd_flg_heatCirClosFltEo;
-    FltLevel[31] = 5;
+    FltLevel[31] = 4;
     FltAct[31] = 250; //32 加热回路常闭故障
     
     FltFlg[32] = sfmd_flg_heatCirOpenFltEo;
@@ -1051,7 +1080,7 @@ void SFM(void)
     FltAct[32] = 0; //33 加热回路常开故障
     
     FltFlg[33] = sfmd_flg_mainCirClosFltEo;
-    FltLevel[33] = 5;
+    FltLevel[33] = 4;
     FltAct[33] = 250; //34 主回路常闭故障
     
     FltFlg[34] = 0;