|
@@ -61,7 +61,7 @@ struct PsuData *ShmPsuData;
|
|
|
#define IOUT_MAX_CURRENT 50
|
|
|
|
|
|
#define MAX_FAN_SPEED 13500
|
|
|
-#define MIN_FAN_SPEED 2800
|
|
|
+#define MIN_FAN_SPEED 3000
|
|
|
#define NORMAL_FAN_SPEED 7000
|
|
|
|
|
|
// GFD Status
|
|
@@ -96,10 +96,9 @@ bool FindChargingInfoData(byte target, struct ChargingInfoData **chargingData);
|
|
|
|
|
|
int Uart5Fd;
|
|
|
char *relayRs485PortName = "/dev/ttyS5";
|
|
|
-unsigned short fanSpeedSmoothValue = 1000;
|
|
|
+unsigned short fanSpeedSmoothValue = 500;
|
|
|
|
|
|
bool isStopChargingCount = false;
|
|
|
-bool isSystemBooting = false;
|
|
|
struct timeval _close_ac_contactor;
|
|
|
|
|
|
struct timeval _priority_time;
|
|
@@ -109,6 +108,8 @@ struct timeval _ac_preparing;
|
|
|
struct timeb _ac_startChargingTime;
|
|
|
struct timeb _ac_endChargingTime;
|
|
|
|
|
|
+unsigned short _setFanSpeed = 0;
|
|
|
+
|
|
|
Ver ver;
|
|
|
PresentInputVoltage inputVoltage;
|
|
|
PresentOutputVoltage outputVoltage;
|
|
@@ -737,34 +738,38 @@ void GetAuxPower()
|
|
|
void SetFanModuleSpeed()
|
|
|
{
|
|
|
// 調整風扇速度要漸進式 : 500 rpm/p
|
|
|
- if (ShmFanModuleData->PresentFan1Speed != ShmFanModuleData->SetFan1Speed ||
|
|
|
- ShmFanModuleData->PresentFan2Speed != ShmFanModuleData->SetFan2Speed ||
|
|
|
- ShmFanModuleData->PresentFan3Speed != ShmFanModuleData->SetFan3Speed ||
|
|
|
- ShmFanModuleData->PresentFan4Speed != ShmFanModuleData->SetFan4Speed)
|
|
|
+// if (ShmFanModuleData->PresentFan1Speed != ShmFanModuleData->SetFan1Speed ||
|
|
|
+// ShmFanModuleData->PresentFan2Speed != ShmFanModuleData->SetFan2Speed ||
|
|
|
+// ShmFanModuleData->PresentFan3Speed != ShmFanModuleData->SetFan3Speed ||
|
|
|
+// ShmFanModuleData->PresentFan4Speed != ShmFanModuleData->SetFan4Speed)
|
|
|
{
|
|
|
//printf("ShmFanModuleData->SetFan1Speed = %d \n", ShmFanModuleData->SetFan1Speed);
|
|
|
|
|
|
FanSpeed _fanSpeed;
|
|
|
|
|
|
- unsigned short speed = ShmFanModuleData->PresentFan1Speed + fanSpeedSmoothValue;
|
|
|
- if (speed >= ShmFanModuleData->SetFan1Speed)
|
|
|
- speed = ShmFanModuleData->SetFan1Speed;
|
|
|
- _fanSpeed.speed[0] = speed;
|
|
|
+ //unsigned short speed = ShmFanModuleData->PresentFan1Speed + fanSpeedSmoothValue;
|
|
|
+ _setFanSpeed += fanSpeedSmoothValue;
|
|
|
+
|
|
|
+ //if (speed >= ShmFanModuleData->SetFan1Speed)
|
|
|
+ // speed = ShmFanModuleData->SetFan1Speed;
|
|
|
+ if (_setFanSpeed >= ShmFanModuleData->SetFan1Speed)
|
|
|
+ _setFanSpeed = ShmFanModuleData->SetFan1Speed;
|
|
|
+ _fanSpeed.speed[0] = _setFanSpeed;
|
|
|
|
|
|
- speed = ShmFanModuleData->PresentFan2Speed + fanSpeedSmoothValue;
|
|
|
- if (speed >= ShmFanModuleData->SetFan2Speed)
|
|
|
- speed = ShmFanModuleData->SetFan2Speed;
|
|
|
- _fanSpeed.speed[1] = speed;
|
|
|
+ //speed = ShmFanModuleData->PresentFan2Speed + fanSpeedSmoothValue;
|
|
|
+ //if (speed >= ShmFanModuleData->SetFan2Speed)
|
|
|
+ // speed = ShmFanModuleData->SetFan2Speed;
|
|
|
+ _fanSpeed.speed[1] = _setFanSpeed;
|
|
|
|
|
|
- speed = ShmFanModuleData->PresentFan3Speed + fanSpeedSmoothValue;
|
|
|
- if (speed >= ShmFanModuleData->SetFan3Speed)
|
|
|
- speed = ShmFanModuleData->SetFan3Speed;
|
|
|
- _fanSpeed.speed[2] = speed;
|
|
|
+ //speed = ShmFanModuleData->PresentFan3Speed + fanSpeedSmoothValue;
|
|
|
+ //if (speed >= ShmFanModuleData->SetFan3Speed)
|
|
|
+ // speed = ShmFanModuleData->SetFan3Speed;
|
|
|
+ _fanSpeed.speed[2] = _setFanSpeed;
|
|
|
|
|
|
- speed = ShmFanModuleData->PresentFan4Speed + fanSpeedSmoothValue;
|
|
|
- if (speed >= ShmFanModuleData->SetFan4Speed)
|
|
|
- speed = ShmFanModuleData->SetFan4Speed;
|
|
|
- _fanSpeed.speed[3] = speed;
|
|
|
+ //speed = ShmFanModuleData->PresentFan4Speed + fanSpeedSmoothValue;
|
|
|
+ //if (speed >= ShmFanModuleData->SetFan4Speed)
|
|
|
+ // speed = ShmFanModuleData->SetFan4Speed;
|
|
|
+ _fanSpeed.speed[3] = _setFanSpeed;
|
|
|
|
|
|
if (Config_Fan_Speed(Uart5Fd, Addr.Fan, &_fanSpeed) == PASS)
|
|
|
{
|
|
@@ -773,45 +778,6 @@ void SetFanModuleSpeed()
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-void SetRelayModuleFanSpeed()
|
|
|
-{
|
|
|
- // 調整風扇速度要漸進式 : 100 rpm/p
|
|
|
- if (ShmFanModuleData->PresentFan1Speed != ShmFanModuleData->SetFan1Speed)
|
|
|
- {
|
|
|
- FanSpeed _fanSpeed;
|
|
|
- unsigned short speed = 0;
|
|
|
-
|
|
|
- if (ShmFanModuleData->SetFan1Speed > ShmFanModuleData->PresentFan1Speed)
|
|
|
- {
|
|
|
- speed = ShmFanModuleData->PresentFan1Speed + fanSpeedSmoothValue;
|
|
|
- if (speed >= ShmFanModuleData->SetFan1Speed)
|
|
|
- speed = ShmFanModuleData->SetFan1Speed;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- speed = ShmFanModuleData->PresentFan1Speed - fanSpeedSmoothValue;
|
|
|
- if (speed <= 0)
|
|
|
- speed = ShmFanModuleData->SetFan1Speed;
|
|
|
- }
|
|
|
-
|
|
|
- _fanSpeed.speed[0] = speed & 0xff;
|
|
|
- _fanSpeed.speed[1] = (speed >> 8) & 0xff;
|
|
|
- ShmFanModuleData->PresentFan1Speed = speed;
|
|
|
-
|
|
|
- Config_Fan_Speed(Uart5Fd, Addr.Relay, &_fanSpeed);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-void GetRelayModuleFanSpeed()
|
|
|
-{
|
|
|
- PRINTF_FUNC("Get fan board speed \n");
|
|
|
- if (Query_Fan_Speed(Uart5Fd, Addr.Relay, &fanSpeed) == PASS)
|
|
|
- {
|
|
|
- ShmFanModuleData->PresentFan1Speed = fanSpeed.speed[0] + (fanSpeed.speed[1] >> 8);
|
|
|
- PRINTF_FUNC("SystemFanRotaSpeed_1 = %d \n", fanSpeed.speed[0]);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
//==========================================
|
|
|
// Common Function
|
|
|
//==========================================
|
|
@@ -1857,7 +1823,8 @@ int main(void)
|
|
|
// 三相輸入電壓
|
|
|
GetPresentInputVol();
|
|
|
|
|
|
- // 讀取當前 relay 狀態
|
|
|
+ // 讀取當前 AC relay 狀態
|
|
|
+ regRelay.relay_event.bits.AC_Contactor = ShmSysConfigAndInfo->SysInfo.AcContactorStatus;
|
|
|
//GetRelayOutputStatus();
|
|
|
|
|
|
for (int i = 0; i < gunCount; i++)
|
|
@@ -1883,8 +1850,9 @@ int main(void)
|
|
|
}
|
|
|
|
|
|
if (_chargingData[i]->SystemStatus == S_BOOTING ||
|
|
|
- (_chargingData[i]->SystemStatus >= S_PREPARNING && _chargingData[i]->SystemStatus <= S_COMPLETE) ||
|
|
|
+ (_chargingData[i]->SystemStatus >= S_REASSIGN_CHECK && _chargingData[i]->SystemStatus <= S_COMPLETE) ||
|
|
|
(_chargingData[i]->SystemStatus >= S_CCS_PRECHARGE_ST0 && _chargingData[i]->SystemStatus <= S_CCS_PRECHARGE_ST1) ||
|
|
|
+ ShmSysConfigAndInfo->SysInfo.WaitForPlugit == YES ||
|
|
|
(ShmSysConfigAndInfo->SysInfo.PageIndex >= _LCM_AUTHORIZING && ShmSysConfigAndInfo->SysInfo.PageIndex <= _LCM_WAIT_FOR_PLUG))
|
|
|
{
|
|
|
_chargingData[i]->IsReadyToCharging = YES;
|
|
@@ -1918,10 +1886,10 @@ int main(void)
|
|
|
SetParalleRelayStatus();
|
|
|
|
|
|
// 搭上 AC Contactor
|
|
|
- if (isCharging)
|
|
|
- outputRelay.relay_event.bits.AC_Contactor = YES;
|
|
|
- else
|
|
|
- outputRelay.relay_event.bits.AC_Contactor = NO;
|
|
|
+// if (isCharging)
|
|
|
+// outputRelay.relay_event.bits.AC_Contactor = YES;
|
|
|
+// else
|
|
|
+// outputRelay.relay_event.bits.AC_Contactor = NO;
|
|
|
|
|
|
if (isCharging)
|
|
|
{
|
|
@@ -1937,8 +1905,7 @@ int main(void)
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- if (!isSystemBooting ||
|
|
|
- (outputRelay.relay_event.bits.AC_Contactor == YES && GetTimeoutValue(_close_ac_contactor) / 1000 >= (TEN_MINUTES * 1000)))
|
|
|
+ if ((outputRelay.relay_event.bits.AC_Contactor == YES && GetTimeoutValue(_close_ac_contactor) / 1000 >= (TEN_MINUTES * 1000)))
|
|
|
outputRelay.relay_event.bits.AC_Contactor = NO;
|
|
|
}
|
|
|
}
|
|
@@ -1946,19 +1913,9 @@ int main(void)
|
|
|
// 搭上/鬆開 Relay
|
|
|
if(IsNoneMatchRelayStatus())
|
|
|
{
|
|
|
- PRINTF_FUNC("********Run Relay, AC = %x, g1_p = %x, g1_n = %x, g2_p = %x, g2_n = %x, pre = %x, bri_p = %x, bri_n = %x \n",
|
|
|
- outputRelay.relay_event.bits.AC_Contactor,
|
|
|
- outputRelay.relay_event.bits.Gun1_P,
|
|
|
- outputRelay.relay_event.bits.Gun1_N,
|
|
|
- outputRelay.relay_event.bits.Gun2_P,
|
|
|
- outputRelay.relay_event.bits.Gun2_N,
|
|
|
- outputRelay.relay_event.bits.CCS_Precharge,
|
|
|
- outputRelay.relay_event.bits.Gun1_Parallel_P,
|
|
|
- outputRelay.relay_event.bits.Gun1_Parallel_N);
|
|
|
-
|
|
|
if (Config_Relay_Output(Uart5Fd, Addr.Relay, &outputRelay))
|
|
|
{
|
|
|
- regRelay.relay_event.bits.AC_Contactor = ShmSysConfigAndInfo->SysInfo.AcContactorStatus;
|
|
|
+ //regRelay.relay_event.bits.AC_Contactor = ShmSysConfigAndInfo->SysInfo.AcContactorStatus;
|
|
|
regRelay.relay_event.bits.CCS_Precharge = outputRelay.relay_event.bits.CCS_Precharge;
|
|
|
regRelay.relay_event.bits.Gun1_P = outputRelay.relay_event.bits.Gun1_P;
|
|
|
regRelay.relay_event.bits.Gun1_N = outputRelay.relay_event.bits.Gun1_N;
|
|
@@ -2033,28 +1990,27 @@ int main(void)
|
|
|
GetPsuTempForFanSpeed();
|
|
|
|
|
|
GetFanSpeed();
|
|
|
- if (ShmFanModuleData->PresentFan1Speed != 0)
|
|
|
- ShmSysConfigAndInfo->SysInfo.SystemFanRotaSpeed = ShmFanModuleData->PresentFan1Speed;
|
|
|
- else if (ShmFanModuleData->PresentFan2Speed != 0)
|
|
|
- ShmSysConfigAndInfo->SysInfo.SystemFanRotaSpeed = ShmFanModuleData->PresentFan2Speed;
|
|
|
- else if (ShmFanModuleData->PresentFan3Speed != 0)
|
|
|
- ShmSysConfigAndInfo->SysInfo.SystemFanRotaSpeed = ShmFanModuleData->PresentFan3Speed;
|
|
|
- else if (ShmFanModuleData->PresentFan4Speed != 0)
|
|
|
- ShmSysConfigAndInfo->SysInfo.SystemFanRotaSpeed = ShmFanModuleData->PresentFan4Speed;
|
|
|
+ ShmSysConfigAndInfo->SysInfo.SystemFanRotaSpeed = _setFanSpeed;
|
|
|
|
|
|
gettimeofday(&_priority_time, NULL);
|
|
|
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;
|
|
|
- }
|
|
|
+// 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)
|
|
|
{
|
|
@@ -2066,16 +2022,16 @@ int main(void)
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- if (ShmFanModuleData->PresentFan1Speed > MIN_FAN_SPEED ||
|
|
|
- ShmFanModuleData->PresentFan2Speed > MIN_FAN_SPEED ||
|
|
|
- ShmFanModuleData->PresentFan3Speed > MIN_FAN_SPEED ||
|
|
|
- ShmFanModuleData->PresentFan4Speed > MIN_FAN_SPEED)
|
|
|
- {
|
|
|
+// 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)
|