Browse Source

2022-06-13 / Wendell

Actions
1. [add] GUN_TYPE_S
2. [add] Boost Mode For GUN_TYPE_T, GUN_TYPE_D, GUN_TYPE_S

Files
1. As follow commit history

Image version: D0.00.XX.XXXX.XX
Wendell 2 years ago
parent
commit
2e70d7b7a7
2 changed files with 83 additions and 48 deletions
  1. 55 27
      EVSE/Modularization/Module_RatedCurrent.c
  2. 28 21
      EVSE/Modularization/Module_RatedCurrent.h

+ 55 - 27
EVSE/Modularization/Module_RatedCurrent.c

@@ -36,8 +36,8 @@ static SymStruct modelTable[] = {
 	{ "DQ", MODEL_DQ },
 	{ "DK", MODEL_DK },
 	{ "DX", MODEL_DX },
-	{ "DB", MODEL_DB },
-	{ "DH", MODEL_DH },
+    { "DB", MODEL_DB },
+    { "DH", MODEL_DH },
 };
 
 static SymStruct regulationTable[] = {
@@ -58,8 +58,8 @@ static SymStruct regulationTable[] = {
 };
 
 static SymStruct powerTable[] = {
-	{"201", POWER_20W},
-	{"251", POWER_25W},
+    {"201", POWER_20W},
+    {"251", POWER_25W},
     {"301", POWER_30W},
     {"601", POWER_60W},
 	{"801", POWER_80W},
@@ -106,9 +106,10 @@ static SymStruct gunTypeTable[] = {
 	{"B", GUN_TYPE_B},
 	{"H", GUN_TYPE_H},
 	{"A", GUN_TYPE_A},
-	{"L", GUN_TYPE_L},
-	{"Y", GUN_TYPE_Y},
-	{"Z", GUN_TYPE_Z},
+    {"L", GUN_TYPE_L},
+    {"Y", GUN_TYPE_Y},
+    {"Z", GUN_TYPE_Z},
+    {"S", GUN_TYPE_S},
 };
 
 //------------------------------------------------------------------------------
@@ -169,7 +170,7 @@ static int keyfromstring(char *key, SymStruct *table, int tableCount)
 }
 
 //------------------------------------------------------------------------------
-static uint16_t defaultRatedCurrent(uint8_t modelType, uint32_t gunType, int powerKey)
+static uint16_t defaultRatedCurrent(uint8_t modelType, uint32_t gunType, int powerKey, int reguKey)
 {
 	uint16_t ret = RC_0A;
 
@@ -184,7 +185,7 @@ static uint16_t defaultRatedCurrent(uint8_t modelType, uint32_t gunType, int pow
 
     if(powerKey < POWER_30W)
     {
-    	powerKey = POWER_30W;
+        powerKey = POWER_30W;
     }
 
     switch (gunType) {
@@ -192,7 +193,20 @@ static uint16_t defaultRatedCurrent(uint8_t modelType, uint32_t gunType, int pow
     	if(powerKey == POWER_30W)
     		ret = RC_60A;
     	else if(powerKey >= POWER_60W)
-    		ret =  RC_120A;
+    	{
+    	    if(reguKey == REG_JARI)
+    	    {
+    	        ret =  RC_125A;
+    	    }
+    	    else
+    	    {
+    	        ret =  RC_120A;
+    	    }
+    	}
+        break;
+
+    case GUN_TYPE_S:
+        ret =  RC_200A;
         break;
 
     case GUN_TYPE_U:
@@ -238,7 +252,7 @@ static uint16_t defaultRatedCurrent(uint8_t modelType, uint32_t gunType, int pow
 
     case GUN_TYPE_T:
     case GUN_TYPE_D:
-    	ret = RC_300A;
+    	ret = RC_500A;
         break;
 
     case GUN_TYPE_H:
@@ -250,14 +264,13 @@ static uint16_t defaultRatedCurrent(uint8_t modelType, uint32_t gunType, int pow
     	break;
 
     case GUN_TYPE_L:
-    	ret =  RC_80A;
-    	break;
+        ret =  RC_80A;
+        break;
 
     case GUN_TYPE_Y:
     case GUN_TYPE_Z:
-    	ret =  RC_150A;
-    	break;
-
+        ret =  RC_150A;
+        break;
 
     case GUN_TYPE_0:
     	ret = RC_0A;
@@ -271,8 +284,8 @@ static uint16_t defaultRatedCurrent(uint8_t modelType, uint32_t gunType, int pow
     case GUN_TYPE_6:
     case GUN_TYPE_7:
     case GUN_TYPE_8:
-    	ret = RC_0A;
-    	break;
+        ret = RC_0A;
+        break;
 
     default:
         log_error("Gun type is not defined: 0x%x\r\n", gunType);
@@ -350,6 +363,14 @@ static uint16_t exchangeRatingCur(uint32_t key)
     case DS_CE_60_E:
     	return RC_120A; //rating current 120A
 
+    //125A J For JARI / Japan Market
+    case DS_JARI_60_J:
+    case DS_JARI_90_J:
+    case DS_JARI_120_J:
+    case DS_JARI_150_J:
+    case DS_JARI_180_J:
+        return RC_125A; //rating current 125A
+
     //200A U
     case DD_CE_180_U:
     case DD_CE_360_U:
@@ -445,7 +466,7 @@ static uint16_t exchangeRatingCur(uint32_t key)
 
     case DD_CNS_180_D:
     case DD_CNS_360_D:
-        return RC_300A;
+        return RC_500A;
 
     //500A V
     case DD_CE_180_V:
@@ -500,6 +521,8 @@ static void exchangeGunTypeAndVolValue(uint8_t key, GunTypeAndVolInfo *gunAndVol
 
     case GUN_TYPE_J:// : CHAdeMO
     case GUN_TYPE_K:
+    case GUN_TYPE_L:
+    case GUN_TYPE_S:
         pGunAndVol->GunType = Gun_Type_Chademo;
         pGunAndVol->GunVoltage = VOL_CHADEMO;
         break;
@@ -528,14 +551,14 @@ static void exchangeGunTypeAndVolValue(uint8_t key, GunTypeAndVolInfo *gunAndVol
     }
 }
 
-static int exchangePowerValue(uint8_t key)
+static int exchangePowerValue(uint8_t key, uint8_t modelKey)
 {
     switch (key) {
     case POWER_20W:
-		return 200;
+        return 200;
 
     case POWER_25W:
-		return 250;
+        return 250;
 
     case POWER_30W:
         return 300;
@@ -586,7 +609,10 @@ static int exchangePowerValue(uint8_t key)
         return 7200;
 
     default:
-    	log_error("Power is not defined\r\n");
+        if(modelKey != MODEL_DD && modelKey != MODEL_DX)
+        {
+            log_error("Power is not defined\r\n");
+        }
         return 0;
         break;
     }
@@ -632,9 +658,13 @@ int RatedCurrentParsing(char *pModuleName, void *pDestStruct)
     strncpy(power, &pModuleName[4], 3);
     power[3] = '\0';
 
+    //get modelKey and reguKey
+    modelKey = keyfromstring(&model[0], &modelTable[0], sizeof(modelTable) / sizeof(SymStruct));
+    reguKey = keyfromstring(&regulation[0], &regulationTable[0], sizeof(regulationTable) / sizeof(SymStruct));
+
     //get max power value
     powerKey = keyfromstring(&power[0], &powerTable[0], sizeof(powerTable) / sizeof(SymStruct));
-    pParsingInfo->Power = exchangePowerValue(powerKey);
+    pParsingInfo->Power = exchangePowerValue(powerKey, modelKey);
 
     pParsingInfo->GetGunCount = 0;
     for (i = 0; i < sizeof(pParsingInfo->ParsingInfo) / sizeof(RateCurInfo); i++) {
@@ -664,8 +694,6 @@ int RatedCurrentParsing(char *pModuleName, void *pDestStruct)
         strncpy(gunType, &pModuleName[gunTypeIndex], 1);
         gunType[1] = '\0';
 
-        modelKey = keyfromstring(&model[0], &modelTable[0], sizeof(modelTable) / sizeof(SymStruct));
-        reguKey = keyfromstring(&regulation[0], &regulationTable[0], sizeof(regulationTable) / sizeof(SymStruct));
         if ((gunTypeKey = keyfromstring(&gunType[0], &gunTypeTable[0], sizeof(gunTypeTable) / sizeof(SymStruct))) == GUN_TYPE_0) {
             //log_error("Rated Current Parsing the type of gun is none\r\n");
             continue;
@@ -676,7 +704,7 @@ int RatedCurrentParsing(char *pModuleName, void *pDestStruct)
         ret = ((modelKey << 24) | (reguKey << 16) | (powerKey << 8) | gunTypeKey);
         ratingCurVal = exchangeRatingCur(ret);
         if (ratingCurVal == RC_0A) {
-            ratingCurVal = defaultRatedCurrent(modelKey, gunTypeKey, powerKey);
+            ratingCurVal = defaultRatedCurrent(modelKey, gunTypeKey, powerKey, reguKey);
         }
 
         memset((uint8_t *)&fGunAndVol, 0, sizeof(GunTypeAndVolInfo));

+ 28 - 21
EVSE/Modularization/Module_RatedCurrent.h

@@ -24,8 +24,8 @@
 #define MODEL_DQ								(0x0C) //DC EVSE Infy 30KW GB
 #define MODEL_DK								(0x0D) //DC EVSE Power rack
 #define MODEL_DX								(0x0E) //DC EVSE Output Communication Box (Dispenser)
-#define MODEL_DB								(0x0F) //DC to DC EVSE Output power cabinet
-#define MODEL_DH								(0x10) //CSU 3.0
+#define MODEL_DB                                (0x0F) //DC to DC EVSE Output power cabinet
+#define MODEL_DH                                (0x10) //CSU 3.0
 
 //------------------------------------------------------------------------------
 // regulation key
@@ -48,21 +48,21 @@
 //------------------------------------------------------------------------------
 // rate power key
 //------------------------------------------------------------------------------
-#define POWER_20W 								(0x01)
-#define POWER_25W 								(0x02)
-#define POWER_30W 								(0x03)
-#define POWER_60W 								(0x04)
-#define POWER_80W 								(0x05)
-#define POWER_90W 								(0x06)
-#define POWER_120W								(0x07)
-#define POWER_150W								(0x08)
-#define POWER_160W								(0x09)
-#define POWER_180W								(0x0A)
-#define POWER_210W								(0x0B)
-#define POWER_240W								(0x0C)
-#define POWER_270W								(0x0D)
-#define POWER_300W								(0x0E)
-#define POWER_330W								(0x0F)
+#define POWER_20W                               (0x01)
+#define POWER_25W                               (0x02)
+#define POWER_30W                               (0x03)
+#define POWER_60W                               (0x04)
+#define POWER_80W                               (0x05)
+#define POWER_90W                               (0x06)
+#define POWER_120W                              (0x07)
+#define POWER_150W                              (0x08)
+#define POWER_160W                              (0x09)
+#define POWER_180W                              (0x0A)
+#define POWER_210W                              (0x0B)
+#define POWER_240W                              (0x0C)
+#define POWER_270W                              (0x0D)
+#define POWER_300W                              (0x0E)
+#define POWER_330W                              (0x0F)
 #define POWER_360W                              (0x10)
 #define POWER_480W                              (0x11)
 #define POWER_720W                              (0x12)
@@ -79,14 +79,14 @@
 #define GUN_TYPE_6                              (0x06) //GB/T AC Socket
 #define GUN_TYPE_7                              (0x07) //CS2 AC Plug
 #define GUN_TYPE_8                              (0x08) //Type E socket
-#define GUN_TYPE_J                              (0x09) //CHAdeMO
+#define GUN_TYPE_J                              (0x09) //CHAdeMO, Japan Market: 125A, else 120A
 #define GUN_TYPE_U                              (0x0A) //Natural cooling CCS1 combo
 #define GUN_TYPE_V                              (0x0B) //Liquid cooling CCS1 combo
 #define GUN_TYPE_E                              (0x0C) //Natural cooling CCS2 combo
 #define GUN_TYPE_F                              (0x0D) //Liquid cooling CCS2 combo
 #define GUN_TYPE_G                              (0x0E) //GBT DC
-#define GUN_TYPE_T                              (0x0F) //Rema CCS1
-#define GUN_TYPE_D                              (0x10) //Rema CCS2
+#define GUN_TYPE_T                              (0x0F) //Rema CCS1 300A, Boost Mode: 500A
+#define GUN_TYPE_D                              (0x10) //Rema CCS2 300A, Boost Mode: 500A
 #define GUN_TYPE_K                              (0x11) //CHAdeMO 200A/500V
 #define GUN_TYPE_M                              (0x12) //CCS2 80A
 #define GUN_TYPE_N                              (0x13) //CCS1 80A
@@ -100,6 +100,7 @@
 #define GUN_TYPE_L                              (0x1B) //CHAdeMO 80A
 #define GUN_TYPE_Y                              (0x1C) //CCS1 150A
 #define GUN_TYPE_Z                              (0x1D) //CCS2 150A
+#define GUN_TYPE_S                              (0x1E) //CHAdeMO 125A, Boost Mode: 200A
 
 //------------------------------------------------------------------------------
 // rating current parameters
@@ -110,7 +111,7 @@
 #define RC_80A                                  (800)
 #define RC_120A                                 (1200)
 #define RC_125A                                 (1250)
-#define RC_150A									(1500)
+#define RC_150A                                 (1500)
 #define RC_200A                                 (2000)
 #define RC_250A                                 (2500)
 #define RC_300A                                 (3000)
@@ -163,6 +164,12 @@
 #define DS_CNS_150_J                            ((uint32_t)((MODEL_DS << 24) | (REG_CNS << 16) | (POWER_150W << 8) | GUN_TYPE_J))
 #define DS_CNS_180_J                            ((uint32_t)((MODEL_DS << 24) | (REG_CNS << 16) | (POWER_180W << 8) | GUN_TYPE_J))
 
+#define DS_JARI_60_J                            ((uint32_t)((MODEL_DS << 24) | (REG_JARI << 16) | (POWER_60W << 8) | GUN_TYPE_J))
+#define DS_JARI_90_J                            ((uint32_t)((MODEL_DS << 24) | (REG_JARI << 16) | (POWER_90W << 8) | GUN_TYPE_J))
+#define DS_JARI_120_J                           ((uint32_t)((MODEL_DS << 24) | (REG_JARI << 16) | (POWER_120W << 8) | GUN_TYPE_J))
+#define DS_JARI_150_J                           ((uint32_t)((MODEL_DS << 24) | (REG_JARI << 16) | (POWER_150W << 8) | GUN_TYPE_J))
+#define DS_JARI_180_J                           ((uint32_t)((MODEL_DS << 24) | (REG_JARI << 16) | (POWER_180W << 8) | GUN_TYPE_J))
+
 //U
 #define DD_CE_180_U                             ((uint32_t)((MODEL_DD << 24) | (REG_CE << 16) | (POWER_180W << 8) | GUN_TYPE_U))
 #define DD_CE_360_U                             ((uint32_t)((MODEL_DD << 24) | (REG_CE << 16) | (POWER_360W << 8) | GUN_TYPE_U))