Pārlūkot izejas kodu

修改SOC映射逻辑

LAPTOP-EG88H5BE\86151 3 gadi atpakaļ
vecāks
revīzija
782de22cd8

+ 1 - 0
inc/EmbeddedCoder_inc/BCUDisp.h

@@ -84,6 +84,7 @@ extern boolean_T sfmd_flg_heatRunFltEo;
 extern boolean_T sfmd_flg_iscFltEi;
 extern boolean_T sfmd_flg_iscFltEo;
 
+extern uint16_T socd_pct_vcuSoc;                          /*vcuSOC; */
 extern uint16_T socd_pct_ahSoc;                          /*安时SOC; */
 extern uint16_T socd_pct_estSoc;                         /*估算SOC;*/
 extern uint16_T socd_flg_EEsave;                         /*实时存储标志位;*/

+ 2 - 0
src/EmbeddedCoder_src/BCUDisp.c

@@ -84,6 +84,8 @@ boolean_T sfmd_flg_heatRunFltEo;
 boolean_T sfmd_flg_iscFltEi;
 boolean_T sfmd_flg_iscFltEo;
 
+
+uint16_T socd_pct_vcuSoc;                          /*vcuSOC; */
 uint16_T socd_pct_ahSoc;                          /*安时SOC; */
 uint16_T socd_pct_estSoc;                         /*估算SOC;*/
 uint16_T socd_flg_EEsave;                         /*实时存储标志位;*/

+ 9 - 11
src/EmbeddedCoder_src/SOC.c

@@ -620,8 +620,8 @@ void SOC(void)
         x[2] = socc_pct_battSocUp;
         
         y[0] = socd_pct_bcuSoc0;
-        y[1] = coinSoc > 1000 ? 1000 : (uint16_T)coinSoc;
-        y[2] = 1000;
+        y[1] = coinSoc > socc_pct_battSocUp ? socc_pct_battSocUp : (uint16_T)coinSoc;
+        y[2] = socc_pct_battSocUp;
         bcuSoc = SOC_LookUp(socd_pct_battSoc, &x[0], &y[0]);
         
         //
@@ -636,13 +636,13 @@ void SOC(void)
         //
         if (fulFlg)
         {
-            socd_pct_bcuSoc = 1000;
+            socd_pct_bcuSoc = socc_pct_battSocUp;
         }
         else
         {
             socd_pct_bcuSoc = socd_pct_bcuSoc > (socc_pct_battSocUp - 1) ? (socc_pct_battSocUp - 1) : socd_pct_bcuSoc;
         }
-       // printf("10-----x:[%d-%d-%d],y:[%d-%d-%d],bcusoc:%d,socd_pct_bcuSoc:%d\n",x[0],x[1],x[2],y[0],y[1],y[2],bcuSoc,socd_pct_bcuSoc);
+       //printf("10-----x:[%d-%d-%d],y:[%d-%d-%d],bcusoc:%d,socd_pct_bcuSoc:%d\n",x[0],x[1],x[2],y[0],y[1],y[2],bcuSoc,socd_pct_bcuSoc);
     }
     else
     {
@@ -653,8 +653,8 @@ void SOC(void)
         x[0] = socc_pct_battSocLow;
         x[1] = coinSoc > socc_pct_battSocLow ? (uint16_T)coinSoc : socc_pct_battSocLow;
         x[2] = socd_pct_battSoc0;
-        y[0] = 0;
-        y[1] = coinSoc > 0 ? (uint16_T)coinSoc : 0;
+        y[0] = socc_pct_battSocLow;
+        y[1] = coinSoc > socc_pct_battSocLow ? (uint16_T)coinSoc : socc_pct_battSocLow;
         y[2] = socd_pct_bcuSoc0;
         bcuSoc = SOC_LookUp(socd_pct_battSoc, &x[0], &y[0]);
         
@@ -667,16 +667,15 @@ void SOC(void)
         }
         
         socd_pct_bcuSoc = SOCfitSystem(bcuSoc, &socd_pct_bcuSoc, 1);
-       // printf("11-----x:[%d-%d-%d],y:[%d-%d-%d],bcusoc:%d,socd_pct_bcuSoc:%d\n",x[0],x[1],x[2],y[0],y[1],y[2],bcuSoc,socd_pct_bcuSoc);
+        //printf("11-----x:[%d-%d-%d],y:[%d-%d-%d],bcusoc:%d,socd_pct_bcuSoc:%d\n",x[0],x[1],x[2],y[0],y[1],y[2],bcuSoc,socd_pct_bcuSoc);
     }
     //
     socd_pct_bcuSocEo = socd_pct_bcuSoc;
-
-
+    socd_pct_vcuSoc =  (uint16_T)((uint32_T)((socd_pct_bcuSoc - socc_pct_battSocLow) * 1000) / (socc_pct_battSocUp - socc_pct_battSocLow)); 
+    //printf("BattSOC:%d,BCUSOC:%d,VcuSoc:%d\n",socd_pct_battSoc,socd_pct_bcuSoc,socd_pct_vcuSoc);
     //===================================================================
     //------------------EEsave-------------------------------------------
     //================================================================================================
-
     if ((int16_T)(socd_pct_battSoc - socd_pct_battSoc_save) > 10 || (int16_T)(socd_pct_battSoc - socd_pct_battSoc_save) < -10 || (int16_T)(socd_pct_bcuSoc - socd_pct_bcuSoc_save) > 10 || (int16_T)(socd_pct_bcuSoc - socd_pct_bcuSoc_save) < -10 )
     {
         socd_flg_EEsave = 1;
@@ -687,7 +686,6 @@ void SOC(void)
     {
         socd_flg_EEsave = 0;
     }
-
 	
     FirstRun_SOC = false;
 }