|
@@ -49,6 +49,8 @@
|
|
|
#define NO_DEFINE 255
|
|
|
#define NDEFAULT_AC_INDEX 2
|
|
|
|
|
|
+#define OVP_UVP_CHK_COUNT 3
|
|
|
+
|
|
|
struct SysConfigAndInfo *ShmSysConfigAndInfo;
|
|
|
struct StatusCodeData *ShmStatusCodeData;
|
|
|
struct FanModuleData *ShmFanModuleData;
|
|
@@ -57,10 +59,15 @@ struct LedModuleData *ShmLedModuleData;
|
|
|
struct PsuData *ShmPsuData;
|
|
|
struct OCPP16Data *ShmOCPP16Data;
|
|
|
|
|
|
-#define VIN_MAX_VOLTAGE_IEC 285 // 大於該值 : OVP
|
|
|
-#define VIN_MIN_VOLTAGE_IEC 160 // 小於該值 : UVP
|
|
|
-#define VIN_MAX_VOLTAGE_UL 315 // 大於該值 : OVP // 美規 (W)
|
|
|
-#define VIN_MIN_VOLTAGE_UL 210 // 小於該值 : UVP
|
|
|
+#define VIN_MAX_VOLTAGE_IEC 285 // 大於該值 : OVP
|
|
|
+#define VIN_MAX_REV_VOLTAGE_IEC 275 // 小於賦歸 OVP
|
|
|
+#define VIN_MIN_VOLTAGE_IEC 160 // 小於該值 : UVP
|
|
|
+#define VIN_MIN_REV_VOLTAGE_IEC 170 // 大於賦歸 UVP
|
|
|
+
|
|
|
+#define VIN_MAX_VOLTAGE_UL 315 // 大於該值 : OVP // 美規 (W)
|
|
|
+#define VIN_MAX_REV_VOLTAGE_UL 305 // 小於賦歸 OVP
|
|
|
+#define VIN_MIN_VOLTAGE_UL 210 // 小於該值 : UVP
|
|
|
+#define VIN_MIN_REV_VOLTAGE_UL 220 // 大於賦歸 UVP
|
|
|
|
|
|
#define VIN_DROP_VOLTAGE 150 // 小於該值 : ac drop
|
|
|
|
|
@@ -447,180 +454,252 @@ void GetPresentInputVol()
|
|
|
// Vin (UVP)
|
|
|
if (ShmSysConfigAndInfo->SysInfo.ChargerType == _CHARGER_TYPE_IEC)
|
|
|
{
|
|
|
- if (inputVoltage.L1N_L12 < VIN_MIN_VOLTAGE_IEC)
|
|
|
+ if (ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL1InputUVP == NO)
|
|
|
{
|
|
|
- PRINTF_FUNC("In Uvp L1N_L12 = %f \n", inputVoltage.L1N_L12);
|
|
|
- if (_threePhaseUvp[0] >= 3)
|
|
|
- ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL1InputUVP = YES;
|
|
|
- else
|
|
|
- _threePhaseUvp[0] += 1;
|
|
|
+ if (inputVoltage.L1N_L12 < VIN_MIN_VOLTAGE_IEC)
|
|
|
+ {
|
|
|
+ PRINTF_FUNC("In Uvp L1N_L12 = %f \n", inputVoltage.L1N_L12);
|
|
|
+ if (_threePhaseUvp[0] >= OVP_UVP_CHK_COUNT)
|
|
|
+ ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL1InputUVP = YES;
|
|
|
+ else
|
|
|
+ _threePhaseUvp[0] += 1;
|
|
|
+ }
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL1InputUVP = NO;
|
|
|
- _threePhaseUvp[0] = 0;
|
|
|
+ if (inputVoltage.L1N_L12 > VIN_MIN_REV_VOLTAGE_IEC)
|
|
|
+ {
|
|
|
+ ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL1InputUVP = NO;
|
|
|
+ _threePhaseUvp[0] = 0;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- if (inputVoltage.L2N_L23 < VIN_MIN_VOLTAGE_IEC)
|
|
|
+ if (ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL2InputUVP == NO)
|
|
|
{
|
|
|
- PRINTF_FUNC("In Uvp L2N_L23 = %f \n", inputVoltage.L2N_L23);
|
|
|
- if (_threePhaseUvp[1] >= 3)
|
|
|
- ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL2InputUVP = YES;
|
|
|
- else
|
|
|
+ if (inputVoltage.L2N_L23 < VIN_MIN_VOLTAGE_IEC)
|
|
|
+ {
|
|
|
+ PRINTF_FUNC("In Uvp L2N_L23 = %f \n", inputVoltage.L2N_L23);
|
|
|
+ if (_threePhaseUvp[1] >= OVP_UVP_CHK_COUNT)
|
|
|
+ ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL2InputUVP = YES;
|
|
|
+ else
|
|
|
_threePhaseUvp[1] += 1;
|
|
|
+ }
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL2InputUVP = NO;
|
|
|
- _threePhaseUvp[1] = 0;
|
|
|
+ if (inputVoltage.L2N_L23 > VIN_MIN_REV_VOLTAGE_IEC)
|
|
|
+ {
|
|
|
+ ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL2InputUVP = NO;
|
|
|
+ _threePhaseUvp[1] = 0;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- if (inputVoltage.L3N_L31 < VIN_MIN_VOLTAGE_IEC)
|
|
|
+ if (ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL3InputUVP == NO)
|
|
|
{
|
|
|
- PRINTF_FUNC("In Uvp L3N_L31 = %f \n", inputVoltage.L3N_L31);
|
|
|
- if (_threePhaseUvp[2] >= 3)
|
|
|
- ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL3InputUVP = YES;
|
|
|
- else
|
|
|
- _threePhaseUvp[2] += 1;
|
|
|
+ if (inputVoltage.L3N_L31 < VIN_MIN_VOLTAGE_IEC)
|
|
|
+ {
|
|
|
+ PRINTF_FUNC("In Uvp L3N_L31 = %f \n", inputVoltage.L3N_L31);
|
|
|
+ if (_threePhaseUvp[2] >= OVP_UVP_CHK_COUNT)
|
|
|
+ ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL3InputUVP = YES;
|
|
|
+ else
|
|
|
+ _threePhaseUvp[2] += 1;
|
|
|
+ }
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL3InputUVP = NO;
|
|
|
- _threePhaseUvp[2] = 0;
|
|
|
+ if (inputVoltage.L3N_L31 > VIN_MIN_REV_VOLTAGE_IEC)
|
|
|
+ {
|
|
|
+ ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL3InputUVP = NO;
|
|
|
+ _threePhaseUvp[2] = 0;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
else if (ShmSysConfigAndInfo->SysInfo.ChargerType == _CHARGER_TYPE_UL)
|
|
|
{
|
|
|
- if (inputVoltage.L1N_L12 < VIN_MIN_VOLTAGE_UL)
|
|
|
+ if (ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL1InputUVP == NO)
|
|
|
{
|
|
|
- PRINTF_FUNC("In Uvp L1N_L12 = %f \n", inputVoltage.L1N_L12);
|
|
|
- if (_threePhaseUvp[0] >= 3)
|
|
|
- ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL1InputUVP = YES;
|
|
|
- else
|
|
|
- _threePhaseUvp[0] += 1;
|
|
|
+ if (inputVoltage.L1N_L12 < VIN_MIN_VOLTAGE_UL)
|
|
|
+ {
|
|
|
+ PRINTF_FUNC("In Uvp L1N_L12 = %f \n", inputVoltage.L1N_L12);
|
|
|
+ if (_threePhaseUvp[0] >= OVP_UVP_CHK_COUNT)
|
|
|
+ ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL1InputUVP = YES;
|
|
|
+ else
|
|
|
+ _threePhaseUvp[0] += 1;
|
|
|
+ }
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL1InputUVP = NO;
|
|
|
- _threePhaseUvp[0] = 0;
|
|
|
+ if (inputVoltage.L1N_L12 > VIN_MIN_REV_VOLTAGE_UL)
|
|
|
+ {
|
|
|
+ ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL1InputUVP = NO;
|
|
|
+ _threePhaseUvp[0] = 0;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- if (inputVoltage.L2N_L23 < VIN_MIN_VOLTAGE_UL)
|
|
|
+ if (ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL2InputUVP == NO)
|
|
|
{
|
|
|
- PRINTF_FUNC("In Uvp L2N_L23 = %f \n", inputVoltage.L2N_L23);
|
|
|
- if (_threePhaseUvp[1] >= 3)
|
|
|
- ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL2InputUVP = YES;
|
|
|
- else
|
|
|
- _threePhaseUvp[1] += 1;
|
|
|
+ if (inputVoltage.L2N_L23 < VIN_MIN_VOLTAGE_UL)
|
|
|
+ {
|
|
|
+ PRINTF_FUNC("In Uvp L2N_L23 = %f \n", inputVoltage.L2N_L23);
|
|
|
+ if (_threePhaseUvp[1] >= OVP_UVP_CHK_COUNT)
|
|
|
+ ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL2InputUVP = YES;
|
|
|
+ else
|
|
|
+ _threePhaseUvp[1] += 1;
|
|
|
+ }
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL2InputUVP = NO;
|
|
|
- _threePhaseUvp[1] = 0;
|
|
|
+ if (inputVoltage.L2N_L23 > VIN_MIN_REV_VOLTAGE_UL)
|
|
|
+ {
|
|
|
+ ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL2InputUVP = NO;
|
|
|
+ _threePhaseUvp[1] = 0;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- if (inputVoltage.L3N_L31 < VIN_MIN_VOLTAGE_UL)
|
|
|
+ if (ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL3InputUVP == NO)
|
|
|
{
|
|
|
- PRINTF_FUNC("In Uvp L3N_L31 = %f \n", inputVoltage.L3N_L31);
|
|
|
- if (_threePhaseUvp[2] >= 3)
|
|
|
- ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL3InputUVP = YES;
|
|
|
- else
|
|
|
- _threePhaseUvp[2] += 1;
|
|
|
+ if (inputVoltage.L3N_L31 < VIN_MIN_VOLTAGE_UL)
|
|
|
+ {
|
|
|
+ PRINTF_FUNC("In Uvp L3N_L31 = %f \n", inputVoltage.L3N_L31);
|
|
|
+ if (_threePhaseUvp[2] >= OVP_UVP_CHK_COUNT)
|
|
|
+ ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL3InputUVP = YES;
|
|
|
+ else
|
|
|
+ _threePhaseUvp[2] += 1;
|
|
|
+ }
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL3InputUVP = NO;
|
|
|
- _threePhaseUvp[2] = 0;
|
|
|
+ if (inputVoltage.L3N_L31 > VIN_MIN_REV_VOLTAGE_UL)
|
|
|
+ {
|
|
|
+ ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL3InputUVP = NO;
|
|
|
+ _threePhaseUvp[2] = 0;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
//********************************************************************************************************//
|
|
|
// Vin (OVP)
|
|
|
if (ShmSysConfigAndInfo->SysInfo.ChargerType == _CHARGER_TYPE_IEC)
|
|
|
{
|
|
|
- if (inputVoltage.L1N_L12 > VIN_MAX_VOLTAGE_IEC)
|
|
|
+ if (ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL1InputOVP == NO)
|
|
|
{
|
|
|
- PRINTF_FUNC("In Ovp L1N_L12 = %f \n", inputVoltage.L1N_L12);
|
|
|
- if (_threePhaseOvp[0] >= 3)
|
|
|
- ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL1InputOVP = YES;
|
|
|
- else
|
|
|
- _threePhaseOvp[0] += 1;
|
|
|
+ if (inputVoltage.L1N_L12 > VIN_MAX_VOLTAGE_IEC)
|
|
|
+ {
|
|
|
+ PRINTF_FUNC("In Ovp L1N_L12 = %f \n", inputVoltage.L1N_L12);
|
|
|
+ if (_threePhaseOvp[0] >= OVP_UVP_CHK_COUNT)
|
|
|
+ ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL1InputOVP = YES;
|
|
|
+ else
|
|
|
+ _threePhaseOvp[0] += 1;
|
|
|
+ }
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL1InputOVP = NO;
|
|
|
- _threePhaseOvp[0] = 0;
|
|
|
+ if (inputVoltage.L1N_L12 < VIN_MAX_REV_VOLTAGE_IEC)
|
|
|
+ {
|
|
|
+ ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL1InputOVP = NO;
|
|
|
+ _threePhaseOvp[0] = 0;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- if (inputVoltage.L2N_L23 > VIN_MAX_VOLTAGE_IEC)
|
|
|
+ if (ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL2InputOVP == NO)
|
|
|
{
|
|
|
- PRINTF_FUNC("In Ovp L2N_L23 = %f \n", inputVoltage.L2N_L23);
|
|
|
- if (_threePhaseOvp[1] >= 3)
|
|
|
- ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL2InputOVP = YES;
|
|
|
- else
|
|
|
- _threePhaseOvp[1] += 1;
|
|
|
+ if (inputVoltage.L2N_L23 > VIN_MAX_VOLTAGE_IEC)
|
|
|
+ {
|
|
|
+ PRINTF_FUNC("In Ovp L2N_L23 = %f \n", inputVoltage.L2N_L23);
|
|
|
+ if (_threePhaseOvp[1] >= OVP_UVP_CHK_COUNT)
|
|
|
+ ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL2InputOVP = YES;
|
|
|
+ else
|
|
|
+ _threePhaseOvp[1] += 1;
|
|
|
+ }
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL2InputOVP = NO;
|
|
|
- _threePhaseOvp[1] = 0;
|
|
|
+ if (inputVoltage.L2N_L23 < VIN_MAX_REV_VOLTAGE_IEC)
|
|
|
+ {
|
|
|
+ ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL2InputOVP = NO;
|
|
|
+ _threePhaseOvp[1] = 0;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- if (inputVoltage.L3N_L31 > VIN_MAX_VOLTAGE_IEC)
|
|
|
+ if (ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL3InputOVP == NO)
|
|
|
{
|
|
|
- PRINTF_FUNC("In Ovp L3N_L31 = %f \n", inputVoltage.L3N_L31);
|
|
|
- if (_threePhaseOvp[2] >= 3)
|
|
|
- ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL3InputOVP = YES;
|
|
|
- else
|
|
|
- _threePhaseOvp[2] += 1;
|
|
|
+ if (inputVoltage.L3N_L31 > VIN_MAX_VOLTAGE_IEC)
|
|
|
+ {
|
|
|
+ PRINTF_FUNC("In Ovp L3N_L31 = %f \n", inputVoltage.L3N_L31);
|
|
|
+ if (_threePhaseOvp[2] >= OVP_UVP_CHK_COUNT)
|
|
|
+ ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL3InputOVP = YES;
|
|
|
+ else
|
|
|
+ _threePhaseOvp[2] += 1;
|
|
|
+ }
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL3InputOVP = NO;
|
|
|
- _threePhaseOvp[2] = 0;
|
|
|
+ if (inputVoltage.L3N_L31 < VIN_MAX_REV_VOLTAGE_IEC)
|
|
|
+ {
|
|
|
+ ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL3InputOVP = NO;
|
|
|
+ _threePhaseOvp[2] = 0;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
else if (ShmSysConfigAndInfo->SysInfo.ChargerType == _CHARGER_TYPE_UL)
|
|
|
{
|
|
|
- if (inputVoltage.L1N_L12 > VIN_MAX_VOLTAGE_UL)
|
|
|
+ if (ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL1InputOVP == NO)
|
|
|
{
|
|
|
- PRINTF_FUNC("In Ovp L1N_L12 = %f \n", inputVoltage.L1N_L12);
|
|
|
- if (_threePhaseOvp[0] >= 3)
|
|
|
- ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL1InputOVP = YES;
|
|
|
- else
|
|
|
- _threePhaseOvp[0] += 0;
|
|
|
+ if (inputVoltage.L1N_L12 > VIN_MAX_VOLTAGE_UL)
|
|
|
+ {
|
|
|
+ PRINTF_FUNC("In Ovp L1N_L12 = %f \n", inputVoltage.L1N_L12);
|
|
|
+ if (_threePhaseOvp[0] >= OVP_UVP_CHK_COUNT)
|
|
|
+ ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL1InputOVP = YES;
|
|
|
+ else
|
|
|
+ _threePhaseOvp[0] += 0;
|
|
|
+ }
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL1InputOVP = NO;
|
|
|
- _threePhaseOvp[0] = 0;
|
|
|
+ if (inputVoltage.L1N_L12 < VIN_MAX_REV_VOLTAGE_UL)
|
|
|
+ {
|
|
|
+ ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL1InputOVP = NO;
|
|
|
+ _threePhaseOvp[0] = 0;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- if (inputVoltage.L2N_L23 > VIN_MAX_VOLTAGE_UL)
|
|
|
+ if (ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL2InputOVP == NO)
|
|
|
{
|
|
|
- PRINTF_FUNC("In Ovp L2N_L23 = %f \n", inputVoltage.L2N_L23);
|
|
|
- if (_threePhaseOvp[1] >= 3)
|
|
|
- ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL2InputOVP = YES;
|
|
|
- else
|
|
|
- _threePhaseOvp[1] += 0;
|
|
|
+ if (inputVoltage.L2N_L23 > VIN_MAX_VOLTAGE_UL)
|
|
|
+ {
|
|
|
+ PRINTF_FUNC("In Ovp L2N_L23 = %f \n", inputVoltage.L2N_L23);
|
|
|
+ if (_threePhaseOvp[1] >= OVP_UVP_CHK_COUNT)
|
|
|
+ ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL2InputOVP = YES;
|
|
|
+ else
|
|
|
+ _threePhaseOvp[1] += 0;
|
|
|
+ }
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL2InputOVP = NO;
|
|
|
- _threePhaseOvp[1] = 0;
|
|
|
+ if (inputVoltage.L2N_L23 < VIN_MAX_REV_VOLTAGE_UL)
|
|
|
+ {
|
|
|
+ ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL2InputOVP = NO;
|
|
|
+ _threePhaseOvp[1] = 0;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- if (inputVoltage.L3N_L31 > VIN_MAX_VOLTAGE_UL)
|
|
|
+ if (ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL3InputOVP == NO)
|
|
|
{
|
|
|
- PRINTF_FUNC("In Ovp L3N_L31 = %f \n", inputVoltage.L3N_L31);
|
|
|
- if (_threePhaseOvp[2] >= 3)
|
|
|
- ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL3InputOVP = YES;
|
|
|
- else
|
|
|
- _threePhaseOvp[2] += 1;
|
|
|
+ if (inputVoltage.L3N_L31 > VIN_MAX_VOLTAGE_UL)
|
|
|
+ {
|
|
|
+ PRINTF_FUNC("In Ovp L3N_L31 = %f \n", inputVoltage.L3N_L31);
|
|
|
+ if (_threePhaseOvp[2] >= OVP_UVP_CHK_COUNT)
|
|
|
+ ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL3InputOVP = YES;
|
|
|
+ else
|
|
|
+ _threePhaseOvp[2] += 1;
|
|
|
+ }
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL3InputOVP = NO;
|
|
|
- _threePhaseOvp[2] = 0;
|
|
|
+ if (inputVoltage.L3N_L31 < VIN_MAX_REV_VOLTAGE_UL)
|
|
|
+ {
|
|
|
+ ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL3InputOVP = NO;
|
|
|
+ _threePhaseOvp[2] = 0;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -1101,54 +1180,6 @@ void SetK1K2RelayStatus(byte index)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-void CheckAcInputOvpStatus(byte index)
|
|
|
-{
|
|
|
- if (ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL1InputOVP == YES ||
|
|
|
- ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL2InputOVP == YES ||
|
|
|
- ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL3InputOVP == YES)
|
|
|
- {
|
|
|
-// if ((_chargingData[index]->SystemStatus >= S_PREPARNING && _chargingData[index]->SystemStatus <= S_CHARGING) ||
|
|
|
-// (_chargingData[index]->SystemStatus >= S_CCS_PRECHARGE_ST0 && _chargingData[index]->SystemStatus <= S_CCS_PRECHARGE_ST1))
|
|
|
-// {
|
|
|
-// if (ShmSysConfigAndInfo->SysInfo.ChargerType == _CHARGER_TYPE_IEC)
|
|
|
-// {
|
|
|
-// if (_psuInputVolR > VIN_MAX_VOLTAGE_IEC ||
|
|
|
-// _psuInputVolS > VIN_MAX_VOLTAGE_IEC ||
|
|
|
-// _psuInputVolT > VIN_MAX_VOLTAGE_IEC)
|
|
|
-// {
|
|
|
-// PRINTF_FUNC("IEC _psuInputVolR = %f, _psuInputVolS = %f, _psuInputVolT = %f \n",
|
|
|
-// _psuInputVolR, _psuInputVolS, _psuInputVolT);
|
|
|
-// _chargingData[index]->StopChargeFlag = YES;
|
|
|
-// }
|
|
|
-//
|
|
|
-// }
|
|
|
-// else if (ShmSysConfigAndInfo->SysInfo.ChargerType == _CHARGER_TYPE_UL)
|
|
|
-// {
|
|
|
-// if (_psuInputVolR > VIN_MAX_VOLTAGE_UL ||
|
|
|
-// _psuInputVolS > VIN_MAX_VOLTAGE_UL ||
|
|
|
-// _psuInputVolT > VIN_MAX_VOLTAGE_UL)
|
|
|
-// {
|
|
|
-// PRINTF_FUNC("UL _psuInputVolR = %f, _psuInputVolS = %f, _psuInputVolT = %f \n",
|
|
|
-// _psuInputVolR, _psuInputVolS, _psuInputVolT);
|
|
|
-// _chargingData[index]->StopChargeFlag = YES;
|
|
|
-// }
|
|
|
-// }
|
|
|
-// }
|
|
|
-// else
|
|
|
- _chargingData[index]->StopChargeFlag = YES;
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-void CheckPhaseLossStatus(byte index)
|
|
|
-{
|
|
|
- if (ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL1InputUVP == YES ||
|
|
|
- ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL2InputUVP == YES ||
|
|
|
- ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL3InputUVP == YES)
|
|
|
- {
|
|
|
- _chargingData[index]->StopChargeFlag = YES;
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
void SetParalleRelayStatus()
|
|
|
{
|
|
|
// 之後雙槍單模機種,橋接都會上
|
|
@@ -1300,63 +1331,6 @@ void SetLedColor(struct ChargingInfoData *chargingData_1, struct ChargingInfoDat
|
|
|
else if (ShmSysConfigAndInfo->SysConfig.LedInfo.Intensity == _LED_INTENSITY_MEDIUM)
|
|
|
_colorBuf = COLOR_MAX_LV * LED_INTENSITY_MEDIUM;
|
|
|
|
|
|
- if (ShmSysConfigAndInfo->SysInfo.IsAlternatvieConf)
|
|
|
- {
|
|
|
- if ((chargingData_1->SystemStatus == S_BOOTING || chargingData_1->SystemStatus == S_IDLE || chargingData_1->SystemStatus == S_RESERVATION) &&
|
|
|
- (chargingData_2->SystemStatus == S_BOOTING || chargingData_2->SystemStatus == S_IDLE || chargingData_2->SystemStatus == S_RESERVATION))
|
|
|
- {
|
|
|
- led_color.Connect_1_Green = _colorBuf;
|
|
|
- led_color.Connect_1_Blue = COLOR_MIN_LV;
|
|
|
- led_color.Connect_1_Red = COLOR_MIN_LV;
|
|
|
- led_color.Connect_2_Green = _colorBuf;
|
|
|
- led_color.Connect_2_Blue = COLOR_MIN_LV;
|
|
|
- led_color.Connect_2_Red = COLOR_MIN_LV;
|
|
|
- }
|
|
|
- else if ((chargingData_1->SystemStatus >= S_AUTHORIZING && chargingData_1->SystemStatus <= S_COMPLETE) ||
|
|
|
- (chargingData_1->SystemStatus >= S_CCS_PRECHARGE_ST0 && chargingData_1->SystemStatus <= S_CCS_PRECHARGE_ST1) ||
|
|
|
- (chargingData_2->SystemStatus >= S_AUTHORIZING && chargingData_2->SystemStatus <= S_COMPLETE) ||
|
|
|
- (chargingData_2->SystemStatus >= S_CCS_PRECHARGE_ST0 && chargingData_2->SystemStatus <= S_CCS_PRECHARGE_ST1))
|
|
|
- {
|
|
|
- led_color.Connect_1_Green = COLOR_MIN_LV;
|
|
|
- led_color.Connect_1_Blue = _colorBuf;
|
|
|
- led_color.Connect_1_Red = COLOR_MIN_LV;
|
|
|
- led_color.Connect_2_Green = COLOR_MIN_LV;
|
|
|
- led_color.Connect_2_Blue = _colorBuf;
|
|
|
- led_color.Connect_2_Red = COLOR_MIN_LV;
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- if (chargingData_1->SystemStatus == S_BOOTING || chargingData_1->SystemStatus == S_IDLE || chargingData_1->SystemStatus == S_RESERVATION)
|
|
|
- {
|
|
|
- led_color.Connect_1_Green = _colorBuf;
|
|
|
- led_color.Connect_1_Blue = COLOR_MIN_LV;
|
|
|
- led_color.Connect_1_Red = COLOR_MIN_LV;
|
|
|
- }
|
|
|
- else if ((chargingData_1->SystemStatus >= S_AUTHORIZING && chargingData_1->SystemStatus <= S_COMPLETE) ||
|
|
|
- (chargingData_1->SystemStatus >= S_CCS_PRECHARGE_ST0 && chargingData_1->SystemStatus <= S_CCS_PRECHARGE_ST1))
|
|
|
- {
|
|
|
- led_color.Connect_1_Green = COLOR_MIN_LV;
|
|
|
- led_color.Connect_1_Blue = _colorBuf;
|
|
|
- led_color.Connect_1_Red = COLOR_MIN_LV;
|
|
|
- }
|
|
|
-
|
|
|
- // --------------------------------------------------------------------------
|
|
|
- if (chargingData_2->SystemStatus == S_BOOTING || chargingData_2->SystemStatus == S_IDLE || chargingData_2->SystemStatus == S_RESERVATION)
|
|
|
- {
|
|
|
- led_color.Connect_2_Green = _colorBuf;
|
|
|
- led_color.Connect_2_Blue = COLOR_MIN_LV;
|
|
|
- led_color.Connect_2_Red = COLOR_MIN_LV;
|
|
|
- }
|
|
|
- else if ((chargingData_2->SystemStatus >= S_AUTHORIZING && chargingData_2->SystemStatus <= S_COMPLETE) ||
|
|
|
- (chargingData_2->SystemStatus >= S_CCS_PRECHARGE_ST0 && chargingData_2->SystemStatus <= S_CCS_PRECHARGE_ST1))
|
|
|
- {
|
|
|
- led_color.Connect_2_Green = COLOR_MIN_LV;
|
|
|
- led_color.Connect_2_Blue = _colorBuf;
|
|
|
- led_color.Connect_2_Red = COLOR_MIN_LV;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
if (ShmSysConfigAndInfo->SysWarningInfo.Level == 2)
|
|
|
{
|
|
|
led_color.Connect_1_Green = COLOR_MIN_LV;
|
|
@@ -1366,6 +1340,65 @@ void SetLedColor(struct ChargingInfoData *chargingData_1, struct ChargingInfoDat
|
|
|
led_color.Connect_2_Blue = COLOR_MIN_LV;
|
|
|
led_color.Connect_2_Red = _colorBuf;
|
|
|
}
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if (ShmSysConfigAndInfo->SysInfo.IsAlternatvieConf)
|
|
|
+ {
|
|
|
+ if ((chargingData_1->SystemStatus == S_BOOTING || chargingData_1->SystemStatus == S_IDLE || chargingData_1->SystemStatus == S_RESERVATION) &&
|
|
|
+ (chargingData_2->SystemStatus == S_BOOTING || chargingData_2->SystemStatus == S_IDLE || chargingData_2->SystemStatus == S_RESERVATION))
|
|
|
+ {
|
|
|
+ led_color.Connect_1_Green = _colorBuf;
|
|
|
+ led_color.Connect_1_Blue = COLOR_MIN_LV;
|
|
|
+ led_color.Connect_1_Red = COLOR_MIN_LV;
|
|
|
+ led_color.Connect_2_Green = _colorBuf;
|
|
|
+ led_color.Connect_2_Blue = COLOR_MIN_LV;
|
|
|
+ led_color.Connect_2_Red = COLOR_MIN_LV;
|
|
|
+ }
|
|
|
+ else if ((chargingData_1->SystemStatus >= S_AUTHORIZING && chargingData_1->SystemStatus <= S_COMPLETE) ||
|
|
|
+ (chargingData_1->SystemStatus >= S_CCS_PRECHARGE_ST0 && chargingData_1->SystemStatus <= S_CCS_PRECHARGE_ST1) ||
|
|
|
+ (chargingData_2->SystemStatus >= S_AUTHORIZING && chargingData_2->SystemStatus <= S_COMPLETE) ||
|
|
|
+ (chargingData_2->SystemStatus >= S_CCS_PRECHARGE_ST0 && chargingData_2->SystemStatus <= S_CCS_PRECHARGE_ST1))
|
|
|
+ {
|
|
|
+ led_color.Connect_1_Green = COLOR_MIN_LV;
|
|
|
+ led_color.Connect_1_Blue = _colorBuf;
|
|
|
+ led_color.Connect_1_Red = COLOR_MIN_LV;
|
|
|
+ led_color.Connect_2_Green = COLOR_MIN_LV;
|
|
|
+ led_color.Connect_2_Blue = _colorBuf;
|
|
|
+ led_color.Connect_2_Red = COLOR_MIN_LV;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if (chargingData_1->SystemStatus == S_BOOTING || chargingData_1->SystemStatus == S_IDLE || chargingData_1->SystemStatus == S_RESERVATION)
|
|
|
+ {
|
|
|
+ led_color.Connect_1_Green = _colorBuf;
|
|
|
+ led_color.Connect_1_Blue = COLOR_MIN_LV;
|
|
|
+ led_color.Connect_1_Red = COLOR_MIN_LV;
|
|
|
+ }
|
|
|
+ else if ((chargingData_1->SystemStatus >= S_AUTHORIZING && chargingData_1->SystemStatus <= S_COMPLETE) ||
|
|
|
+ (chargingData_1->SystemStatus >= S_CCS_PRECHARGE_ST0 && chargingData_1->SystemStatus <= S_CCS_PRECHARGE_ST1))
|
|
|
+ {
|
|
|
+ led_color.Connect_1_Green = COLOR_MIN_LV;
|
|
|
+ led_color.Connect_1_Blue = _colorBuf;
|
|
|
+ led_color.Connect_1_Red = COLOR_MIN_LV;
|
|
|
+ }
|
|
|
+
|
|
|
+ // --------------------------------------------------------------------------
|
|
|
+ if (chargingData_2->SystemStatus == S_BOOTING || chargingData_2->SystemStatus == S_IDLE || chargingData_2->SystemStatus == S_RESERVATION)
|
|
|
+ {
|
|
|
+ led_color.Connect_2_Green = _colorBuf;
|
|
|
+ led_color.Connect_2_Blue = COLOR_MIN_LV;
|
|
|
+ led_color.Connect_2_Red = COLOR_MIN_LV;
|
|
|
+ }
|
|
|
+ else if ((chargingData_2->SystemStatus >= S_AUTHORIZING && chargingData_2->SystemStatus <= S_COMPLETE) ||
|
|
|
+ (chargingData_2->SystemStatus >= S_CCS_PRECHARGE_ST0 && chargingData_2->SystemStatus <= S_CCS_PRECHARGE_ST1))
|
|
|
+ {
|
|
|
+ led_color.Connect_2_Green = COLOR_MIN_LV;
|
|
|
+ led_color.Connect_2_Blue = _colorBuf;
|
|
|
+ led_color.Connect_2_Red = COLOR_MIN_LV;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
if (_checkLedChanged > 0)
|
|
|
{
|
|
@@ -1771,6 +1804,14 @@ void CheckOutputPowerOverCarReq(byte index)
|
|
|
_chargingData[index]->FireChargingVoltage, (_chargingData[index]->EvBatterytargetVoltage * 10));
|
|
|
DEBUG_ERROR("[Module_InternalComm]CheckOutputPowerOverCarReq NG : fire = %f, battery = %f \n",
|
|
|
_chargingData[index]->FireChargingVoltage, (_chargingData[index]->EvBatterytargetVoltage * 10));
|
|
|
+
|
|
|
+ if (_chargingData[index]->Type == _Type_Chademo)
|
|
|
+ ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemChademoOutputOVP = YES;
|
|
|
+ else if (_chargingData[index]->Type == _Type_CCS_2)
|
|
|
+ ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemCcsOutputOVP = YES;
|
|
|
+ else if (_chargingData[index]->Type == _Type_GB)
|
|
|
+ ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemGbOutputOVP = YES;
|
|
|
+
|
|
|
_chargingData[index]->StopChargeFlag = YES;
|
|
|
}
|
|
|
}
|
|
@@ -1799,6 +1840,14 @@ void CheckOutputVolNoneMatchFire(byte index)
|
|
|
index, (_chargingData[index]->PresentChargingVoltage * 10), _chargingData[index]->FireChargingVoltage);
|
|
|
DEBUG_ERROR("[Module_InternalComm]CheckOutputVolNoneMatchFire NG (%d): pre = %f, fire = %f \n",
|
|
|
index, (_chargingData[index]->PresentChargingVoltage * 10), _chargingData[index]->FireChargingVoltage);
|
|
|
+
|
|
|
+ if (_chargingData[index]->Type == _Type_Chademo)
|
|
|
+ ShmStatusCodeData->FaultCode.FaultEvents.bits.ChademoOutputRelayDrivingFault = YES;
|
|
|
+ else if (_chargingData[index]->Type == _Type_GB)
|
|
|
+ ShmStatusCodeData->FaultCode.FaultEvents.bits.GbOutputRelayDrivingFault = YES;
|
|
|
+ else if (_chargingData[index]->Type == _Type_CCS_2)
|
|
|
+ ShmStatusCodeData->FaultCode.FaultEvents.bits.CcsOutputRelayDrivingFault = YES;
|
|
|
+
|
|
|
_chargingData[index]->StopChargeFlag = YES;
|
|
|
}
|
|
|
}
|
|
@@ -1875,101 +1924,102 @@ void GetPsuTempForFanSpeed()
|
|
|
|
|
|
void GetFanSpeedByFunction()
|
|
|
{
|
|
|
- if (ShmSysConfigAndInfo->SysConfig.SwitchDebugFlag == YES)
|
|
|
- return;
|
|
|
-
|
|
|
- // 風控修改 :
|
|
|
- // ******************************************************* //
|
|
|
- //
|
|
|
- // 當前PSU輸出總 KW PSU Temp
|
|
|
- // 30 x -------------------- x ---------- + 14 x (PSU Temp - 45)
|
|
|
- // 當前樁最大功率 KW 45
|
|
|
- //
|
|
|
- // ******************************************************* //
|
|
|
-
|
|
|
- // 當前樁最大功率 KW : ShmPsuData->SystemAvailablePower
|
|
|
- unsigned int _maxPower = ShmPsuData->SystemAvailablePower;
|
|
|
- // 當前PSU輸出總 KW & PSU Temp :
|
|
|
- unsigned char temp = 0;
|
|
|
- float power = 0;
|
|
|
-
|
|
|
- for (byte index = 0; index < ShmPsuData->GroupCount; index++)
|
|
|
- {
|
|
|
- for (byte count = 0; count < ShmPsuData->PsuGroup[index].GroupPresentPsuQuantity; count++)
|
|
|
- {
|
|
|
- if (temp < ShmPsuData->PsuGroup[index].PsuModule[count].ExletTemp)
|
|
|
- temp = ShmPsuData->PsuGroup[index].PsuModule[count].ExletTemp;
|
|
|
- }
|
|
|
- power += (_chargingData[index]->PresentChargingPower * 10);
|
|
|
- }
|
|
|
-
|
|
|
- double _pw_rate = 0;
|
|
|
- if (_maxPower > 0)
|
|
|
- _pw_rate = power / (double)_maxPower;
|
|
|
- double _temp_rate = 0;
|
|
|
- if (temp > 0)
|
|
|
- _temp_rate = (double)temp / 45;
|
|
|
- unsigned char _temp_diff = 0;
|
|
|
- if (temp > 45)
|
|
|
- _temp_diff = temp - 45;
|
|
|
-
|
|
|
- ShmFanModuleData->TestFanSpeed = ((30 * _pw_rate * _temp_rate + 14 * _temp_diff) / 100) * MAX_FAN_SPEED;
|
|
|
-
|
|
|
- if (ShmFanModuleData->TestFanSpeed > MAX_FAN_SPEED)
|
|
|
- ShmFanModuleData->TestFanSpeed = MAX_FAN_SPEED;
|
|
|
-
|
|
|
- if (ShmFanModuleData->TestFanSpeed < 0)
|
|
|
- ShmFanModuleData->TestFanSpeed = 0;
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
// if (ShmSysConfigAndInfo->SysConfig.SwitchDebugFlag == YES)
|
|
|
-// return;
|
|
|
+// return;
|
|
|
//
|
|
|
-// // 風控修改 :
|
|
|
-// // ******************************************************* //
|
|
|
-// //
|
|
|
-// // 當前PSU輸出總 KW PSU Temp
|
|
|
-// // 50 x -------------------- x ---------- + 0.5 x (PSU Temp - 70)
|
|
|
-// // 當前樁最大功率 KW 50
|
|
|
-// //
|
|
|
-// // ******************************************************* //
|
|
|
+// // 風控修改 :
|
|
|
+// // ******************************************************* //
|
|
|
+// //
|
|
|
+// // 當前PSU輸出總 KW PSU Temp
|
|
|
+// // 30 x -------------------- x ---------- + 14 x (PSU Temp - 45)
|
|
|
+// // 當前樁最大功率 KW 45
|
|
|
+// //
|
|
|
+// // ******************************************************* //
|
|
|
//
|
|
|
-// // 當前樁最大功率 KW : ShmPsuData->SystemAvailablePower
|
|
|
-// unsigned int _maxPower = ShmPsuData->SystemAvailablePower;
|
|
|
-// // 當前PSU輸出總 KW & PSU Temp :
|
|
|
-// unsigned char temp = 0;
|
|
|
-// float power = 0;
|
|
|
+// // 當前樁最大功率 KW : ShmPsuData->SystemAvailablePower
|
|
|
+// unsigned int _maxPower = ShmPsuData->SystemAvailablePower;
|
|
|
+// // 當前PSU輸出總 KW & PSU Temp :
|
|
|
+// unsigned char temp = 0;
|
|
|
+// float power = 0;
|
|
|
//
|
|
|
-// for (byte index = 0; index < ShmPsuData->GroupCount; index++)
|
|
|
-// {
|
|
|
-// for (byte count = 0; count < ShmPsuData->PsuGroup[index].GroupPresentPsuQuantity; count++)
|
|
|
+// for (byte index = 0; index < ShmPsuData->GroupCount; index++)
|
|
|
// {
|
|
|
-// if (temp < ShmPsuData->PsuGroup[index].PsuModule[count].ExletTemp)
|
|
|
-// temp = ShmPsuData->PsuGroup[index].PsuModule[count].ExletTemp;
|
|
|
+// for (byte count = 0; count < ShmPsuData->PsuGroup[index].GroupPresentPsuQuantity; count++)
|
|
|
+// {
|
|
|
+// if (temp < ShmPsuData->PsuGroup[index].PsuModule[count].ExletTemp)
|
|
|
+// temp = ShmPsuData->PsuGroup[index].PsuModule[count].ExletTemp;
|
|
|
+// }
|
|
|
+// power += (_chargingData[index]->PresentChargingPower * 10);
|
|
|
// }
|
|
|
-// power += (_chargingData[index]->PresentChargingPower * 10);
|
|
|
-// }
|
|
|
-//
|
|
|
-// double _pw_rate = 0;
|
|
|
-// if (_maxPower > 0)
|
|
|
-// _pw_rate = power / (double)_maxPower;
|
|
|
-// double _temp_rate = 0;
|
|
|
-// if (temp > 0)
|
|
|
-// _temp_rate = (double)temp / 50;
|
|
|
-// unsigned char _temp_diff = 0;
|
|
|
-// if (temp > 70)
|
|
|
-// _temp_diff = temp - 70;
|
|
|
//
|
|
|
-// ShmFanModuleData->TestFanSpeed = (((50 * _pw_rate * _temp_rate) + (0.5 * _temp_diff)) / 100) * MAX_FAN_SPEED;
|
|
|
+// double _pw_rate = 0;
|
|
|
+// if (_maxPower > 0)
|
|
|
+// _pw_rate = power / (double)_maxPower;
|
|
|
+// double _temp_rate = 0;
|
|
|
+// if (temp > 0)
|
|
|
+// _temp_rate = (double)temp / 45;
|
|
|
+// unsigned char _temp_diff = 0;
|
|
|
+// if (temp > 45)
|
|
|
+// _temp_diff = temp - 45;
|
|
|
//
|
|
|
-// if (ShmFanModuleData->TestFanSpeed > MAX_FAN_SPEED)
|
|
|
-// ShmFanModuleData->TestFanSpeed = MAX_FAN_SPEED;
|
|
|
+// ShmFanModuleData->TestFanSpeed = ((30 * _pw_rate * _temp_rate + 14 * _temp_diff) / 100) * MAX_FAN_SPEED;
|
|
|
//
|
|
|
-// if (ShmFanModuleData->TestFanSpeed < 0)
|
|
|
-// ShmFanModuleData->TestFanSpeed = 0;
|
|
|
+// if (ShmFanModuleData->TestFanSpeed > MAX_FAN_SPEED)
|
|
|
+// ShmFanModuleData->TestFanSpeed = MAX_FAN_SPEED;
|
|
|
//
|
|
|
+// if (ShmFanModuleData->TestFanSpeed < 0)
|
|
|
+// ShmFanModuleData->TestFanSpeed = 0;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ if (ShmSysConfigAndInfo->SysConfig.SwitchDebugFlag == YES)
|
|
|
+ return;
|
|
|
+
|
|
|
+ // 風控修改 :
|
|
|
+ // ******************************************************* //
|
|
|
+ //
|
|
|
+ // 當前PSU輸出總 KW PSU Temp
|
|
|
+ // 50 x -------------------- x ---------- + 0.5 x (PSU Temp - 70)
|
|
|
+ // 當前樁最大功率 KW 50
|
|
|
+ //
|
|
|
+ // ******************************************************* //
|
|
|
+
|
|
|
+ // 當前樁最大功率 KW : ShmPsuData->SystemAvailablePower
|
|
|
+ unsigned int _maxPower = ShmPsuData->SystemAvailablePower;
|
|
|
+ // 當前PSU輸出總 KW & PSU Temp :
|
|
|
+ unsigned char temp = 0;
|
|
|
+ float power = 0;
|
|
|
+
|
|
|
+ for (byte index = 0; index < ShmPsuData->GroupCount; index++)
|
|
|
+ {
|
|
|
+ for (byte count = 0; count < ShmPsuData->PsuGroup[index].GroupPresentPsuQuantity; count++)
|
|
|
+ {
|
|
|
+ if (temp < ShmPsuData->PsuGroup[index].PsuModule[count].ExletTemp)
|
|
|
+ temp = ShmPsuData->PsuGroup[index].PsuModule[count].ExletTemp;
|
|
|
+ }
|
|
|
+ power += (_chargingData[index]->PresentChargingPower * 10);
|
|
|
+ }
|
|
|
+
|
|
|
+ double _pw_rate = 0;
|
|
|
+ if (_maxPower > 0)
|
|
|
+ _pw_rate = power / (double)_maxPower;
|
|
|
+ double _temp_rate = 0;
|
|
|
+ if (temp > 0)
|
|
|
+ _temp_rate = (double)temp / 50;
|
|
|
+ unsigned char _temp_diff = 0;
|
|
|
+ if (temp > 70)
|
|
|
+ _temp_diff = temp - 70;
|
|
|
+
|
|
|
+ ShmFanModuleData->TestFanSpeed = (((50 * _pw_rate * _temp_rate) + (0.5 * _temp_diff)) / 100) * MAX_FAN_SPEED;
|
|
|
+
|
|
|
+ if (ShmFanModuleData->TestFanSpeed > MAX_FAN_SPEED)
|
|
|
+ ShmFanModuleData->TestFanSpeed = MAX_FAN_SPEED;
|
|
|
+
|
|
|
+ if (ShmFanModuleData->TestFanSpeed < 0)
|
|
|
+ ShmFanModuleData->TestFanSpeed = 0;
|
|
|
+
|
|
|
+// -----------------------------------------------------------------------
|
|
|
// printf("power = %f \n", power);
|
|
|
// printf("_maxPower = %d \n", _maxPower);
|
|
|
// printf("temp = %d \n", temp);
|
|
@@ -2326,6 +2376,37 @@ void AcChargeTypeProcess()
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+void ResetDetAlarmStatus(byte gun)
|
|
|
+{
|
|
|
+ if (_chargingData[gun]->Type == _Type_Chademo)
|
|
|
+ {
|
|
|
+ if (ShmStatusCodeData->FaultCode.FaultEvents.bits.ChademoOutputRelayWelding == YES)
|
|
|
+ ShmStatusCodeData->FaultCode.FaultEvents.bits.ChademoOutputRelayWelding = NO;
|
|
|
+ if (ShmStatusCodeData->FaultCode.FaultEvents.bits.ChademoOutputRelayDrivingFault == YES)
|
|
|
+ ShmStatusCodeData->FaultCode.FaultEvents.bits.ChademoOutputRelayDrivingFault = NO;
|
|
|
+ if (ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemChademoOutputOVP == YES)
|
|
|
+ ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemChademoOutputOVP = NO;
|
|
|
+ }
|
|
|
+ else if (_chargingData[gun]->Type == _Type_GB)
|
|
|
+ {
|
|
|
+ if (ShmStatusCodeData->FaultCode.FaultEvents.bits.GbOutputRelayWelding == YES)
|
|
|
+ ShmStatusCodeData->FaultCode.FaultEvents.bits.GbOutputRelayWelding = NO;
|
|
|
+ if (ShmStatusCodeData->FaultCode.FaultEvents.bits.GbOutputRelayDrivingFault == YES)
|
|
|
+ ShmStatusCodeData->FaultCode.FaultEvents.bits.GbOutputRelayDrivingFault = NO;
|
|
|
+ if (ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemGbOutputOVP == YES)
|
|
|
+ ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemGbOutputOVP = NO;
|
|
|
+ }
|
|
|
+ else if (_chargingData[gun]->Type == _Type_CCS_2)
|
|
|
+ {
|
|
|
+ if (ShmStatusCodeData->FaultCode.FaultEvents.bits.CcsOutputRelayWelding == YES)
|
|
|
+ ShmStatusCodeData->FaultCode.FaultEvents.bits.CcsOutputRelayWelding = NO;
|
|
|
+ if (ShmStatusCodeData->FaultCode.FaultEvents.bits.CcsOutputRelayDrivingFault == YES)
|
|
|
+ ShmStatusCodeData->FaultCode.FaultEvents.bits.CcsOutputRelayDrivingFault = NO;
|
|
|
+ if (ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemCcsOutputOVP == YES)
|
|
|
+ ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemCcsOutputOVP = NO;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
int main(void)
|
|
|
{
|
|
|
if(InitShareMemory() == FAIL)
|
|
@@ -2438,15 +2519,11 @@ int main(void)
|
|
|
// 依據當前各槍的狀態選擇 搭上/放開 Relay
|
|
|
SetK1K2RelayStatus(i);
|
|
|
|
|
|
- if (ShmSysConfigAndInfo->SysConfig.PhaseLossPolicy == YES)
|
|
|
- CheckPhaseLossStatus(i);
|
|
|
-
|
|
|
- CheckAcInputOvpStatus(i);
|
|
|
-
|
|
|
if (_chargingData[i]->SystemStatus == S_IDLE)
|
|
|
{
|
|
|
_chargingData[i]->RelayWeldingCheck = NO;
|
|
|
_isRelayWelding[i] = NO;
|
|
|
+ ResetDetAlarmStatus(i);
|
|
|
}
|
|
|
|
|
|
if (_chargingData[i]->SystemStatus == S_BOOTING ||
|
|
@@ -2606,56 +2683,6 @@ int main(void)
|
|
|
ShmFanModuleData->SetFan3Speed = ShmFanModuleData->TestFanSpeed;
|
|
|
ShmFanModuleData->SetFan4Speed = ShmFanModuleData->TestFanSpeed;
|
|
|
|
|
|
-// if (isCharging)
|
|
|
-// {
|
|
|
-//// if (ShmFanModuleData->PresentFan1Speed < MAX_FAN_SPEED ||
|
|
|
-//// ShmFanModuleData->PresentFan2Speed < MAX_FAN_SPEED ||
|
|
|
-//// ShmFanModuleData->PresentFan3Speed < MAX_FAN_SPEED ||
|
|
|
-//// ShmFanModuleData->PresentFan4Speed < MAX_FAN_SPEED)
|
|
|
-//// {
|
|
|
-//// ShmFanModuleData->SetFan1Speed = MAX_FAN_SPEED;
|
|
|
-//// ShmFanModuleData->SetFan2Speed = MAX_FAN_SPEED;
|
|
|
-//// ShmFanModuleData->SetFan3Speed = MAX_FAN_SPEED;
|
|
|
-//// ShmFanModuleData->SetFan4Speed = MAX_FAN_SPEED;
|
|
|
-//// }
|
|
|
-//
|
|
|
-// // 在還沒問到 PSU 溫度~ 還是要有個最小轉速
|
|
|
-// ShmFanModuleData->SetFan1Speed = MIN_FAN_SPEED;
|
|
|
-// ShmFanModuleData->SetFan2Speed = MIN_FAN_SPEED;
|
|
|
-// ShmFanModuleData->SetFan3Speed = MIN_FAN_SPEED;
|
|
|
-// ShmFanModuleData->SetFan4Speed = MIN_FAN_SPEED;
|
|
|
-//
|
|
|
-// if (ShmFanModuleData->TestFanSpeed > 0)
|
|
|
-// {
|
|
|
-// ShmFanModuleData->SetFan1Speed = ShmFanModuleData->TestFanSpeed;
|
|
|
-// ShmFanModuleData->SetFan2Speed = ShmFanModuleData->TestFanSpeed;
|
|
|
-// ShmFanModuleData->SetFan3Speed = ShmFanModuleData->TestFanSpeed;
|
|
|
-// ShmFanModuleData->SetFan4Speed = ShmFanModuleData->TestFanSpeed;
|
|
|
-// }
|
|
|
-// }
|
|
|
-// else
|
|
|
-// {
|
|
|
-//// if (ShmFanModuleData->PresentFan1Speed > MIN_FAN_SPEED ||
|
|
|
-//// ShmFanModuleData->PresentFan2Speed > MIN_FAN_SPEED ||
|
|
|
-//// ShmFanModuleData->PresentFan3Speed > MIN_FAN_SPEED ||
|
|
|
-//// ShmFanModuleData->PresentFan4Speed > MIN_FAN_SPEED)
|
|
|
-//// {
|
|
|
-// ShmFanModuleData->SetFan1Speed = MIN_FAN_SPEED;
|
|
|
-// ShmFanModuleData->SetFan2Speed = MIN_FAN_SPEED;
|
|
|
-// ShmFanModuleData->SetFan3Speed = MIN_FAN_SPEED;
|
|
|
-// ShmFanModuleData->SetFan4Speed = MIN_FAN_SPEED;
|
|
|
-//// }
|
|
|
-//
|
|
|
-// // 停止時,如溫度還是很高,則需要維持該轉速直到溫度降低
|
|
|
-// if (ShmFanModuleData->TestFanSpeed >= MAX_FAN_SPEED)
|
|
|
-// {
|
|
|
-// ShmFanModuleData->SetFan1Speed = ShmFanModuleData->TestFanSpeed;
|
|
|
-// ShmFanModuleData->SetFan2Speed = ShmFanModuleData->TestFanSpeed;
|
|
|
-// ShmFanModuleData->SetFan3Speed = ShmFanModuleData->TestFanSpeed;
|
|
|
-// ShmFanModuleData->SetFan4Speed = ShmFanModuleData->TestFanSpeed;
|
|
|
-// }
|
|
|
-// }
|
|
|
-
|
|
|
//PRINTF_FUNC("set fan = %d \n", ShmFanModuleData->SetFan1Speed);
|
|
|
SetFanModuleSpeed();
|
|
|
}
|