Compare commits

...

1 Commits

Author SHA1 Message Date
85cd7c626c 초기 rpm ramp값 idle speed 캡쳐 기능 2026-04-15 09:29:31 +09:00
3 changed files with 12 additions and 7 deletions

16
Oper.c
View File

@@ -157,6 +157,7 @@ static void CProcessApuStateGenerating(void)
CSetEngineActualRpm(GeneralOperValue.uiDynamicRPM); // RPM 가변 제어 시작 CSetEngineActualRpm(GeneralOperValue.uiDynamicRPM); // RPM 가변 제어 시작
#else #else
Uint32 ulElapsed; Uint32 ulElapsed;
Uint16 uiRampRange;
Uint16 uiRampRpm; Uint16 uiRampRpm;
CSetGcuCommand((Uint16)IDX_GCU_CMD_GENERATING); CSetGcuCommand((Uint16)IDX_GCU_CMD_GENERATING);
@@ -170,22 +171,25 @@ static void CProcessApuStateGenerating(void)
{ {
if (GeneralOperValue.ulRampStartClock == 0UL) if (GeneralOperValue.ulRampStartClock == 0UL)
{ {
Uint16 uiActual = CGetEngineActualRpm();
GeneralOperValue.uiRampStartRpm = (uiActual < RPM_RAMP_END) ? uiActual : RPM_RAMP_END;
GeneralOperValue.ulRampStartClock = CGetSoftClock(); GeneralOperValue.ulRampStartClock = CGetSoftClock();
CSetEngineActualRpm(RPM_RAMP_START); CSetEngineActualRpm(GeneralOperValue.uiRampStartRpm);
} }
else else
{ {
ulElapsed = (CGetSoftClock() + SYSTEM_10MIN_TIME - GeneralOperValue.ulRampStartClock) % SYSTEM_10MIN_TIME; ulElapsed = (CGetSoftClock() + SYSTEM_10MIN_TIME - GeneralOperValue.ulRampStartClock) % SYSTEM_10MIN_TIME;
uiRampRange = RPM_RAMP_END - GeneralOperValue.uiRampStartRpm; // 동적 범위
if (ulElapsed < TIME_RAMP_UP) if (ulElapsed < TIME_RAMP_UP)
{ {
uiRampRpm = (Uint16)(RPM_RAMP_START + (Uint16)(((Uint32)RPM_RAMP_RANGE * ulElapsed) / TIME_RAMP_UP)); uiRampRpm = (Uint16)(GeneralOperValue.uiRampStartRpm + (Uint16)(((Uint32)uiRampRange * ulElapsed) / TIME_RAMP_UP));
CSetEngineActualRpm(uiRampRpm); CSetEngineActualRpm(uiRampRpm);
} }
else else
{ {
GeneralOperValue.uiRampComplete = 1U; GeneralOperValue.uiRampComplete = 1U;
GeneralOperValue.uiDynamicRPM = CDynamicRpmControl(); GeneralOperValue.uiDynamicRPM = CDynamicRpmControl();
CSetEngineActualRpm(GeneralOperValue.uiDynamicRPM); CSetEngineActualRpm(GeneralOperValue.uiDynamicRPM);
} }
} }
@@ -472,7 +476,7 @@ void CSetEcuCommand(Uint16 Command)
CSetEngineActualRpm(Rx400.SetRPM.PCAN_RPM); CSetEngineActualRpm(Rx400.SetRPM.PCAN_RPM);
#else #else
//CSetEngineActualRpm(2400U); //CSetEngineActualRpm(2400U);
CSetEngineActualRpm(1500U); // Target Idle CSetEngineActualRpm(1200U); // IDLE_SEQ_MOD (Idle speed 1200[최저] ~ 2000[최고])
#endif #endif
} }
} }

2
main.c
View File

@@ -147,7 +147,7 @@ static void CSoftTimerWorkProcess(void)
if (GeneralOperValue.uiApuState > (Uint16)IDX_APU_OPER_POST) // ADC 오프셋 보정 완료 후 감지 if (GeneralOperValue.uiApuState > (Uint16)IDX_APU_OPER_POST) // ADC 오프셋 보정 완료 후 감지
{ {
CAlarmProcedure(); //CAlarmProcedure();
CDisplayAlarmPopup(); CDisplayAlarmPopup();
} }

1
main.h
View File

@@ -213,6 +213,7 @@ typedef struct ClassGeneralOperValue
Uint32 ulTotalOperationHour; Uint32 ulTotalOperationHour;
Uint32 ulRampStartClock; // IDLE_SEQ_MOD Uint32 ulRampStartClock; // IDLE_SEQ_MOD
Uint16 uiRampComplete; // IDLE_SEQ_MOD Uint16 uiRampComplete; // IDLE_SEQ_MOD
Uint16 uiRampStartRpm; // IDLE_SEQ_MOD
struct struct
{ {
Uint16 PlayCmd; Uint16 PlayCmd;