ver 26.3.8.1

- EPB 적용
  : Motor_Status.c
  : P단 시 EPB apply
- 비상 정지 로직 수정
  : Drive_Mode.c
  : 정지 후 P단 이동 및 EPB apply(최초1회)
  : N-P단 이동 가능
- 함수 명 변경
  : ECU_Check → System_check
- Fault 판단 함수 수정
  : Drive_Mode.c → System_Check.c로 이동
This commit is contained in:
3minbe 2026-03-08 15:39:46 +09:00
parent 85257c3f29
commit 5dac4c2aaf
11 changed files with 56 additions and 20 deletions

View File

@ -1,5 +1,5 @@
{
"cmake.sourceDirectory": "C:/Users/MSI/Documents/WorkSpace/git/ADM/GW",
"cmake.sourceDirectory": "C:/Users/blueb/Documents/WorkSpace/git/ADM/GW",
"files.associations": {
"algorithm": "cpp",
"any": "cpp",

View File

@ -971,3 +971,9 @@ uint8_t GV_VCU_AccControlFlag = 0;
// VCU Emergency Stop
uint8_t GV_VCU_Emergency_Flag = 0;
bool isEmergencyVcu;
bool isEmergencyRc;
bool isEmergencyAcu;
bool isEmergencySwitch;
bool isEmergency;
bool isCharging;

View File

@ -11,6 +11,7 @@
#include "stdint.h"
#include "main.h"
#include "define.h"
#include "stdbool.h"
/*----------------------------------------Variables----------------------------------------*/
/* Variable Name : IG_Process_Status
* Data Type : uint8
@ -981,6 +982,12 @@ extern uint8_t GV_VCU_AccControlFlag;
// VCU Emergency Stop
extern uint8_t GV_VCU_Emergency_Flag;
extern bool isEmergencyVcu;
extern bool isEmergencyRc;
extern bool isEmergencyAcu;
extern bool isEmergencySwitch;
extern bool isEmergency;
extern bool isCharging;
#endif /* GLOBAL_VARIABLE_H_ */

View File

@ -41,7 +41,7 @@ void ECU3_KATECH_Logic_10ms(void)
RCU_Arc_check();
RWA1_Arc_check();
RWA2_Arc_check();
ECU_check();
System_check();
}
void ECU3_KATECH_Logic_20ms(void)

View File

@ -26,6 +26,7 @@ void Motor_Status(void)
GV_VCU_MtrDir = 0;
GV_VCU_EPAM_Park_Request_to_EPC = 1; // 1 = Lock
GV_ParkBrakeRequest = 2; // 2 = EPB Apply
}
else if(GV_VCU_GearSelStat == 1) // R
{
@ -33,6 +34,7 @@ void Motor_Status(void)
GV_VCU_MtrDir = 2;
GV_VCU_EPAM_Park_Request_to_EPC = 2; // 2 = Release
GV_ParkBrakeRequest = 1; // 1 = EPB Release
}
else if(GV_VCU_GearSelStat == 2 && GV_VCU_Vx_Fbk == 0) // N
{
@ -40,6 +42,7 @@ void Motor_Status(void)
GV_VCU_MtrDir = 0;
GV_VCU_EPAM_Park_Request_to_EPC = 2;
GV_ParkBrakeRequest = 1; // 1 = EPB Release
}
else if(GV_VCU_GearSelStat == 3 && GV_VCU_Vx_Fbk == 0) // D
{
@ -47,5 +50,6 @@ void Motor_Status(void)
GV_VCU_MtrDir = 1;
GV_VCU_EPAM_Park_Request_to_EPC = 2;
GV_ParkBrakeRequest = 1; // 1 = EPB Release
}
}

View File

@ -163,7 +163,7 @@ void RWA2_Arc_check(void) // Ch3 0x072 5ms
GV_prev_RWA2_ECU_Arc = GV_RWA2_Arc;
}
void ECU_check(void)
void System_check(void)
{
if(GV_RC_VCU_ACU_Fault_Flag == 1 && GV_Act_Fault_Exist) GV_VCU_RC_ACU_Fault_Flag = 1;
else GV_VCU_RC_ACU_Fault_Flag = 0;
@ -178,6 +178,18 @@ void ECU_check(void)
GV_ACU_ECU_Fault_Flag_Master = 1;
else
GV_ACU_ECU_Fault_Flag_Master = 0;
isEmergencyVcu = (GV_VCU_Emergency_Flag == 1
|| GV_ACU_ECU_Fault_Flag == 1 || GV_ACU_ECU_Fault_Flag1 == 1 || GV_ACU_ECU_Fault_Flag2 == 1 || GV_ACU_ECU_Fault_Flag3 == 1
|| GV_VCU_RC_IDB_ECU_Fault_Flag == 1 || GV_VCU_RC_RCU_ECU_Fault_Flag == 1
|| GV_VCU_RC_RWA1_ECU_Fault_Flag == 1 || GV_VCU_RC_RWA2_ECU_Fault_Flag == 1 || GV_VCU_RC_RWA_Actuator_Fault_Flag == 1
|| GV_VCU_RC_MCU_Actuator_Fault_Flag == 1);
isEmergencyRc = (GV_RC_Emergency_Stop == 1);
isEmergencyAcu = (GV_ACU_Emergency_Stop == 1);
isEmergencySwitch = (Emergency_Switch == 1);
isEmergency = (isEmergencyVcu || isEmergencyRc || isEmergencySwitch || isEmergencyAcu || GV_RC_ALV_FLAG == 1 || GV_Act_Fault_Exist == 1);
isCharging = (GV_ChargingStatus == 1 || GV_ChargingStatus == 2 || GV_ChargingStatus == 3); // 0(READY), 1(INITALIZE), 2(CHARGING), 3(EXIT)
}

View File

@ -13,7 +13,7 @@ extern void IDB_Arc_check(void);
extern void RCU_Arc_check(void);
extern void RWA1_Arc_check(void);
extern void RWA2_Arc_check(void);
extern void ECU_check(void);
extern void System_check(void);
extern void No_signal_RC(void);

View File

@ -115,22 +115,14 @@ void ExecuteDriveMode()
void CheckDriveMode(void)
{
RcRequestCheck();
bool isEmergencyVcu = (GV_VCU_Emergency_Flag == 1 || GV_ACU_ECU_Fault_Flag == 1 || GV_ACU_ECU_Fault_Flag1 == 1 || GV_ACU_ECU_Fault_Flag2 == 1 || GV_ACU_ECU_Fault_Flag3 == 1 || GV_VCU_RC_IDB_ECU_Fault_Flag == 1 || GV_VCU_RC_RCU_ECU_Fault_Flag == 1 || GV_VCU_RC_RWA1_ECU_Fault_Flag == 1 || GV_VCU_RC_RWA2_ECU_Fault_Flag == 1 || GV_VCU_RC_RWA_Actuator_Fault_Flag == 1 || GV_VCU_RC_MCU_Actuator_Fault_Flag == 1 || GV_VCU_RC_ACU_Fault_Flag == 1);
bool isEmergencyRc = (GV_RC_Emergency_Stop == 1);
bool isEmergencyAcu = (GV_ACU_Emergency_Stop == 1);
bool isEmergencySwitch = (Emergency_Switch == 1);
bool isEmergency = (isEmergencyVcu || isEmergencyRc || isEmergencySwitch || isEmergencyAcu || GV_RC_ALV_FLAG == 1 || GV_Act_Fault_Exist == 1);
bool isCharging = (GV_ChargingStatus == 1 || GV_ChargingStatus == 2 || GV_ChargingStatus == 3); // 0(READY), 1(INITALIZE), 2(CHARGING), 3(EXIT)
bool acuWaitOn = false;
const DriveMode_e curMode = GV_VCU_Drive_Mode;
DriveMode_e nextMode = curMode;
HandoverPhase_e nextPhase = HO_NONE;
RcRequestCheck();
if(isEmergency)
{
nextMode = DRIVE_MODE_EMERGENCY;
@ -277,6 +269,7 @@ void CheckDriveMode(void)
break;
}
}
GV_VCU_Drive_Mode = (uint8_t)nextMode;
GV_VCU_HandoverPhase = nextPhase;
@ -375,10 +368,22 @@ void ExecuteRCMode()
/*============================== Emergency Mode ==============================*/
bool Flag_EmergencyAutoParking = true;
void ExecuteEmergencyMode()
{
GV_VCU_EPAM_Park_Request_to_EPC = 2; // EPam release
if(GV_VCU_Vx_Fbk >= 0.1 && Flag_EmergencyAutoParking)
GV_VCU_GearSelStat = 2; // gear N
else if(GV_VCU_GearSelStat == 2 && GV_VCU_Vx_Fbk < 0.1 && Flag_EmergencyAutoParking)
{
GV_VCU_GearSelStat = 0; // gear P
Flag_EmergencyAutoParking = false;
}
else if(GV_VCU_GearSelStat == 2 && GV_VCU_Vx_Fbk < 0.1 && !Flag_EmergencyAutoParking)
GV_VCU_GearSelStat = 2; // gear N
else if(GV_VCU_GearSelStat == 0 && GV_VCU_Vx_Fbk < 0.1 && !Flag_EmergencyAutoParking)
GV_VCU_GearSelStat = 0; // gear P
else
// Do nothing, maintain current gear
GV_VCU_RC_Emergency_Stop = 1;
GV_VCU_ACU_Emergency_Stop = 1;
@ -397,6 +402,8 @@ void ExecuteEmergencyMode()
GV_VCU_RC_Emergency_Stop = 0;
GV_VCU_ACU_Emergency_Stop = 0;
Flag_EmergencyAutoParking = true;
GV_VCU_Drive_Mode = DRIVE_MODE_DEFAULT;
}
}

View File

@ -7,7 +7,7 @@ void SET_SW_VER(void)
{
GV_YEAR = 26;
GV_Month = 3;
GV_Day = 3;
GV_Ver = 2;
GV_Day = 8;
GV_Ver = 1;
GV_CAR_NUM = 240623;
}

Binary file not shown.