Explorar o código

[Improve][DM30][DW30][EV communication]: Improve debug information and variable initialize in Module_EvComm.

2020.06.17 / TC Hsu

Actions: Modify the debug information for voltage and current update to EV, add more variable initialize section in IDLE nad RESERVATION case.

Image version    : N/A
Image checksum   : N/A

Hardware PWB P/N : N/A
Hardware Version : N/A

Files:

	modified:   EVSE/Projects/DM30/Apps/Module_EvComm.c
	modified:   EVSE/Projects/DW30/Apps/Module_EvComm.c
TC_Hsu %!s(int64=4) %!d(string=hai) anos
pai
achega
ebc5c98869
Modificáronse 2 ficheiros con 70 adicións e 40 borrados
  1. 35 20
      EVSE/Projects/DM30/Apps/Module_EvComm.c
  2. 35 20
      EVSE/Projects/DW30/Apps/Module_EvComm.c

+ 35 - 20
EVSE/Projects/DM30/Apps/Module_EvComm.c

@@ -55,9 +55,15 @@ float _cur_1 = 0;
 float _pow_2 = 0;
 float _cur_2 = 0;
 
+float _outVol_1 = 0;
+float _outCur_1 = 0;
+float _outVol_2 = 0;
+float _outCur_2 = 0;
+
 // 限制最大充電電壓,因應不同 type 槍線來限制
-// Chademo : 500V, GB : 750, CCS : 950V
-//TODO: change maximum charging voltage by connector type
+// Chademo : 500V, 125A,
+// GB : 750, 120A
+// CCS : 950V, 120A
 float maxChargingVol[2] = { 9500, 9500 };           // 限制最大充電電壓,如依照模塊則填上 0
 // 限制最大充電電流與能量透過 Web
 float maxChargingCur[2] = { 600, 600 };             // 限制最大充電電流,如依照模塊則填上 0
@@ -2833,30 +2839,27 @@ void CANReceiver()
                         break;
                     case ACK_GET_MISCELLANEOUS_INFO:
                     {
+                        _chargingData[targetGun]->GunLocked = frame.data[0];
+                        _chargingData[targetGun]->PilotVoltage = (float)(-120 + frame.data[3]) / 10;
+
                         if (_chargingData[targetGun]->Type == _Type_Chademo)
                         {
-                            _chargingData[targetGun]->GunLocked = frame.data[0];
                             ShmCHAdeMOData->evse[_chargingData[targetGun]->type_index].ConnectorTemperatureP = frame.data[1];
                             ShmCHAdeMOData->evse[_chargingData[targetGun]->type_index].ConnectorTemperatureN = frame.data[2];
-                            _chargingData[targetGun]->PilotVoltage = (float)(-120 + frame.data[3]) / 10;
                             ShmCHAdeMOData->evse[_chargingData[targetGun]->type_index].EvboardStatus = frame.data[7];
                         }
                         else if (_chargingData[targetGun]->Type == _Type_GB)
                         {
-                            _chargingData[targetGun]->GunLocked = frame.data[0];
                             ShmGBTData->evse[_chargingData[targetGun]->type_index].ConnectorTemperatureP = frame.data[1];
                             ShmGBTData->evse[_chargingData[targetGun]->type_index].ConnectorTemperatureN = frame.data[2];
-                            _chargingData[targetGun]->PilotVoltage = (float)(-120 + frame.data[3]) / 10;
                             ShmGBTData->evse[_chargingData[targetGun]->type_index].EvboardStatus = frame.data[7];
                         }
                         else if (_chargingData[targetGun]->Type == _Type_CCS_2)
                         {
                             if (ShmCcsData->CommProtocol == 0x01)
                             {
-                                _chargingData[targetGun]->GunLocked = frame.data[0];
                                 //ShmCcsData->V2GMessage_DIN70121[_chargingData[targetGun]->type_index]. .ConnectorTemperatureP = frame.data[1];
                                 //ShmCcsData->V2GMessage_DIN70121[_chargingData[targetGun]->type_index]. .ConnectorTemperatureN = frame.data[2];
-                                _chargingData[targetGun]->PilotVoltage = (float)(-120 + frame.data[3]) / 10;
                             }
                         }
 
@@ -2915,17 +2918,23 @@ void SetPresentChargingOutputPower(struct ChargingInfoData *chargingData_1, stru
     float vol1 = 0, cur1 = 0;
     float vol2 = 0, cur2 = 0;
 
-    //PRINTF_FUNC("f vol - 0 = %f \n", chargingData_1->FireChargingVoltage);
-    //PRINTF_FUNC("f cur - 0 = %f \n", chargingData_1->PresentChargingCurrent);
-    //PRINTF_FUNC("***********************f vol - 1 = %f \n", chargingData_2->FireChargingVoltage);
-    //PRINTF_FUNC("***********************f cur - 1 = %f \n", chargingData_2->PresentChargingCurrent);
-
     vol1 = chargingData_1->FireChargingVoltage;
     cur1 = (chargingData_1->PresentChargingCurrent * 10);
 
     vol2 = chargingData_2->FireChargingVoltage;
     cur2 = (chargingData_2->PresentChargingCurrent * 10);
 
+    if (_outVol_1 != vol1 ||
+        _outCur_1 != cur1 ||
+        _outVol_2 != vol2 ||
+        _outCur_2 != cur2)
+    {
+        PRINTF_FUNC("G1 -> Output Vol = %f, Output Cur = %f -- G2 -> Output Vol = %f, Output Cur = %f \n",
+            vol1, cur1, vol2, cur2);
+
+        _outVol_1 = vol1; _outCur_1 = cur1; _outVol_2 = vol2; _outCur_2 = cur2;
+    }
+
     SetPresentOutputPower(vol1, cur1, vol2, cur2);
 }
 
@@ -3206,13 +3215,6 @@ int main(int argc, char *argv[])
             {
                 case S_IDLE:
                 case S_RESERVATION:
-                    _chargingData[_index]->PresentChargedEnergy = 0;
-                    _chargingData[_index]->PresentChargingPower = 0;
-                    _chargingData[_index]->GroundFaultStatus = GFD_WAIT;
-                    _chargingData[_index]->StopChargeFlag = NO;
-                    _chargingData[_index]->ChargingFee = 0.0;
-                    chargingTime[_index] = 0;
-
                     if (_chargingData[_index]->Type == _Type_Chademo)
                     {
                         ClearAbnormalStatus_Chademo(_index);
@@ -3228,6 +3230,19 @@ int main(int argc, char *argv[])
 
                     if (priorityLow == 1)
                     {
+                        _chargingData[_index]->PresentChargedEnergy = 0;
+                        _chargingData[_index]->PresentChargingPower = 0;
+                        _chargingData[_index]->GroundFaultStatus = GFD_WAIT;
+                        _chargingData[_index]->RealRatingPower = 0;
+                        _chargingData[_index]->StopChargeFlag = NO;
+                        _chargingData[_index]->ChargingFee = 0.0;
+                        _chargingData[_index]->EvBatterySoc = 0;
+                        _chargingData[_index]->PresentChargingVoltage = 0;
+                        _chargingData[_index]->PresentChargingCurrent = 0;
+                        _chargingData[_index]->EvBatteryMaxVoltage = 0;
+
+                        chargingTime[_index] = 0;
+
                         maxChargingPow = (ShmSysConfigAndInfo->SysConfig.MaxChargingPower * 10);
                     }
                     break;

+ 35 - 20
EVSE/Projects/DW30/Apps/Module_EvComm.c

@@ -55,9 +55,15 @@ float _cur_1 = 0;
 float _pow_2 = 0;
 float _cur_2 = 0;
 
+float _outVol_1 = 0;
+float _outCur_1 = 0;
+float _outVol_2 = 0;
+float _outCur_2 = 0;
+
 // 限制最大充電電壓,因應不同 type 槍線來限制
-// Chademo : 500V, GB : 750, CCS : 950V
-//TODO: change maximum charging voltage by connector type
+// Chademo : 500V, 125A,
+// GB : 750, 120A
+// CCS : 950V, 120A
 float maxChargingVol[2] = { 9500, 9500 };           // 限制最大充電電壓,如依照模塊則填上 0
 // 限制最大充電電流與能量透過 Web
 float maxChargingCur[2] = { 600, 600 };             // 限制最大充電電流,如依照模塊則填上 0
@@ -2833,30 +2839,27 @@ void CANReceiver()
                         break;
                     case ACK_GET_MISCELLANEOUS_INFO:
                     {
+                        _chargingData[targetGun]->GunLocked = frame.data[0];
+                        _chargingData[targetGun]->PilotVoltage = (float)(-120 + frame.data[3]) / 10;
+
                         if (_chargingData[targetGun]->Type == _Type_Chademo)
                         {
-                            _chargingData[targetGun]->GunLocked = frame.data[0];
                             ShmCHAdeMOData->evse[_chargingData[targetGun]->type_index].ConnectorTemperatureP = frame.data[1];
                             ShmCHAdeMOData->evse[_chargingData[targetGun]->type_index].ConnectorTemperatureN = frame.data[2];
-                            _chargingData[targetGun]->PilotVoltage = (float)(-120 + frame.data[3]) / 10;
                             ShmCHAdeMOData->evse[_chargingData[targetGun]->type_index].EvboardStatus = frame.data[7];
                         }
                         else if (_chargingData[targetGun]->Type == _Type_GB)
                         {
-                            _chargingData[targetGun]->GunLocked = frame.data[0];
                             ShmGBTData->evse[_chargingData[targetGun]->type_index].ConnectorTemperatureP = frame.data[1];
                             ShmGBTData->evse[_chargingData[targetGun]->type_index].ConnectorTemperatureN = frame.data[2];
-                            _chargingData[targetGun]->PilotVoltage = (float)(-120 + frame.data[3]) / 10;
                             ShmGBTData->evse[_chargingData[targetGun]->type_index].EvboardStatus = frame.data[7];
                         }
                         else if (_chargingData[targetGun]->Type == _Type_CCS_2)
                         {
                             if (ShmCcsData->CommProtocol == 0x01)
                             {
-                                _chargingData[targetGun]->GunLocked = frame.data[0];
                                 //ShmCcsData->V2GMessage_DIN70121[_chargingData[targetGun]->type_index]. .ConnectorTemperatureP = frame.data[1];
                                 //ShmCcsData->V2GMessage_DIN70121[_chargingData[targetGun]->type_index]. .ConnectorTemperatureN = frame.data[2];
-                                _chargingData[targetGun]->PilotVoltage = (float)(-120 + frame.data[3]) / 10;
                             }
                         }
 
@@ -2915,17 +2918,23 @@ void SetPresentChargingOutputPower(struct ChargingInfoData *chargingData_1, stru
     float vol1 = 0, cur1 = 0;
     float vol2 = 0, cur2 = 0;
 
-    //PRINTF_FUNC("f vol - 0 = %f \n", chargingData_1->FireChargingVoltage);
-    //PRINTF_FUNC("f cur - 0 = %f \n", chargingData_1->PresentChargingCurrent);
-    //PRINTF_FUNC("***********************f vol - 1 = %f \n", chargingData_2->FireChargingVoltage);
-    //PRINTF_FUNC("***********************f cur - 1 = %f \n", chargingData_2->PresentChargingCurrent);
-
     vol1 = chargingData_1->FireChargingVoltage;
     cur1 = (chargingData_1->PresentChargingCurrent * 10);
 
     vol2 = chargingData_2->FireChargingVoltage;
     cur2 = (chargingData_2->PresentChargingCurrent * 10);
 
+    if (_outVol_1 != vol1 ||
+        _outCur_1 != cur1 ||
+        _outVol_2 != vol2 ||
+        _outCur_2 != cur2)
+    {
+        PRINTF_FUNC("G1 -> Output Vol = %f, Output Cur = %f -- G2 -> Output Vol = %f, Output Cur = %f \n",
+            vol1, cur1, vol2, cur2);
+
+        _outVol_1 = vol1; _outCur_1 = cur1; _outVol_2 = vol2; _outCur_2 = cur2;
+    }
+
     SetPresentOutputPower(vol1, cur1, vol2, cur2);
 }
 
@@ -3206,13 +3215,6 @@ int main(int argc, char *argv[])
             {
                 case S_IDLE:
                 case S_RESERVATION:
-                    _chargingData[_index]->PresentChargedEnergy = 0;
-                    _chargingData[_index]->PresentChargingPower = 0;
-                    _chargingData[_index]->GroundFaultStatus = GFD_WAIT;
-                    _chargingData[_index]->StopChargeFlag = NO;
-                    _chargingData[_index]->ChargingFee = 0.0;
-                    chargingTime[_index] = 0;
-
                     if (_chargingData[_index]->Type == _Type_Chademo)
                     {
                         ClearAbnormalStatus_Chademo(_index);
@@ -3228,6 +3230,19 @@ int main(int argc, char *argv[])
 
                     if (priorityLow == 1)
                     {
+                        _chargingData[_index]->PresentChargedEnergy = 0;
+                        _chargingData[_index]->PresentChargingPower = 0;
+                        _chargingData[_index]->GroundFaultStatus = GFD_WAIT;
+                        _chargingData[_index]->RealRatingPower = 0;
+                        _chargingData[_index]->StopChargeFlag = NO;
+                        _chargingData[_index]->ChargingFee = 0.0;
+                        _chargingData[_index]->EvBatterySoc = 0;
+                        _chargingData[_index]->PresentChargingVoltage = 0;
+                        _chargingData[_index]->PresentChargingCurrent = 0;
+                        _chargingData[_index]->EvBatteryMaxVoltage = 0;
+
+                        chargingTime[_index] = 0;
+
                         maxChargingPow = (ShmSysConfigAndInfo->SysConfig.MaxChargingPower * 10);
                     }
                     break;