ADM/GW/src/Logic/Param_Match.c
3minbe 9733a58eb1 Actuator Fault 신호 수신 시 피드백 신호 생성 코드 작성
네오테크 송부용 코드 삭제
  - ARC check 주석 해제
  - Param match 파일 내 input data 주석 해제
2025-08-20 11:07:11 +09:00

129 lines
5.7 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* Param_Match.c
*
* Created on: 2025. 4. 21.
* Author: MSI
*/
#include "ADM_Integrated_Logic.h"
#include "Global_Variable.h"
void Input_Data_Set_Logic(void)
{
ADM_Integrated_Logic_U.GV_MCU_RPM = GV_MCU_RPM;
ADM_Integrated_Logic_U.GV_Operation_Mode = GV_VCU_Drive_Mode;
ADM_Integrated_Logic_U.GV_Vx_Fbk = GV_VCU_Vx_Fbk;
ADM_Integrated_Logic_U.GV_IMU_AX_Val = GV_IMU_AX_Val;
ADM_Integrated_Logic_U.GV_IMU_AY_Val = GV_IMU_AY_Val;
ADM_Integrated_Logic_U.GV_IMU_AZ_Val = GV_IMU_AZ_Val;
ADM_Integrated_Logic_U.GV_IMU_PitchRtVal = GV_IMU_PitchRtVal;
ADM_Integrated_Logic_U.GV_ACU_Fault_Flag = GV_RC_VCU_ACU_Fault_Flag;
ADM_Integrated_Logic_U.GV_MCU_Actuator_Fault_Flag = GV_RC_VCU_MCU_Actuator_Fault_Flag;
ADM_Integrated_Logic_U.GV_IDB_ECU_Fault_Flag = GV_VCU_RC_IDB_ECU_Fault_Flag;
ADM_Integrated_Logic_U.GV_RCU_ECU_Fault_Flag = GV_VCU_RC_RCU_ECU_Fault_Flag;
ADM_Integrated_Logic_U.GV_RWA1_ECU_Fault_Flag = GV_VCU_RC_RWA1_ECU_Fault_Flag;
ADM_Integrated_Logic_U.GV_RWA2_ECU_Fault_Flag = GV_VCU_RC_RWA2_ECU_Fault_Flag;
ADM_Integrated_Logic_U.GV_RWA_Actuator_Fault = GV_RC_VCU_RWA_Actuator_Fault_Flag;
// ADM_Integrated_Logic_U.GV_ACU_Fault_Flag = 0;
// ADM_Integrated_Logic_U.GV_MCU_Actuator_Fault_Flag = 0;
// ADM_Integrated_Logic_U.GV_IDB_ECU_Fault_Flag = 0;
// ADM_Integrated_Logic_U.GV_RCU_ECU_Fault_Flag = 0;
// ADM_Integrated_Logic_U.GV_RWA1_ECU_Fault_Flag = 0;
// ADM_Integrated_Logic_U.GV_RWA2_ECU_Fault_Flag = 0;
// ADM_Integrated_Logic_U.GV_RWA_Actuator_Fault = 0;
if(GV_VCU_Drive_Mode == 0) // ACU Mode
{
ADM_Integrated_Logic_U.GV_BrakeTorqueCommand = GV_ACU_BrakeTorqueCommand;
ADM_Integrated_Logic_U.GV_Vx_Command = GV_ACU_Vx_Command;
ADM_Integrated_Logic_U.GV_Vx_Limit = 40;
ADM_Integrated_Logic_U.GV_VCU_GearSelStat = GV_ACU_VCU_GearPos;
ADM_Integrated_Logic_U.GV_RWA_RackAngleCommand = GV_ACU_RWA_cmd_deg;
ADM_Integrated_Logic_U.GV_RWS_RackAngleCommand = GV_ACU_RWS_cmd_deg;
}
else if(GV_VCU_Drive_Mode == 1) // RC Mode
{
ADM_Integrated_Logic_U.GV_BrakeTorqueCommand = GV_RC_BrakeTorqueCommand;
ADM_Integrated_Logic_U.GV_Vx_Command = GV_RC_Vx_Command;
ADM_Integrated_Logic_U.GV_Vx_Limit = GV_RC_VX_Limit;
ADM_Integrated_Logic_U.GV_VCU_GearSelStat = GV_RC_GearSelStat;
ADM_Integrated_Logic_U.GV_RWA_RackAngleCommand = GV_RC_RWA_RackAngleCommand;
ADM_Integrated_Logic_U.GV_RWS_RackAngleCommand = 0;
}
else if(GV_VCU_Drive_Mode == 2) //Emergency Mode
{
ADM_Integrated_Logic_U.GV_Vx_Command = 0;
}
if(GV_MCU_Fault_Check == 0) ADM_Integrated_Logic_U.GV_MCU_EstTrq = GV_MCU_EstTrq;
else ADM_Integrated_Logic_U.GV_MCU_EstTrq = 0;
}
void Output_Data_Set_Logic(void)
{
GV_Brake_Torque_Command = ADM_Integrated_Logic_Y.GV_Brake_Command;
GV_Motor_Torque_Cmd = ADM_Integrated_Logic_Y.GV_Motor_Torque_Cmd;
GV_VCU_Hill_TrqCmd = ADM_Integrated_Logic_Y.GV_Hill_Torque_Assist;
GV_RWA_040_RackAngleCmd = ADM_Integrated_Logic_Y.GV_Master_Rack_Angle_Cmd;
GV_RWA2_040_RackAngleCmd = ADM_Integrated_Logic_Y.GV_Master_Rack_Angle_Cmd;
GV_RWS1_040_RackAngleCmd = ADM_Integrated_Logic_Y.GV_RWS_RackAngleCmd1;
GV_RWS2_040_RackAngleCmd = ADM_Integrated_Logic_Y.GV_RWS_RackAngleCmd1;
GV_VCU_GearSelStat = ADM_Integrated_Logic_Y.GV_Gear_Postion_Out;
GV_Act_Fault_Exist = ADM_Integrated_Logic_Y.Act_Fault_Exist; // EILS
// GV_Act_Fault_Exist = 0; // Real
GV_Target_MCU_Out = ADM_Integrated_Logic_Y.Target_MCU_Out;
GV_Target_IDB_Out = ADM_Integrated_Logic_Y.Target_IDB_Out;
GV_Target_RWA_Out = ADM_Integrated_Logic_Y.Target_RWA_Out;
if (GV_RWA_040_RackAngleCmd > GV_RWA_Limit) GV_RWA_040_RackAngleCmd = GV_RWA_Limit;
else if (GV_RWA_040_RackAngleCmd < -GV_RWA_Limit) GV_RWA_040_RackAngleCmd = -GV_RWA_Limit;
if (GV_RWA2_040_RackAngleCmd > GV_RWA_Limit) GV_RWA2_040_RackAngleCmd = GV_RWA_Limit;
else if (GV_RWA2_040_RackAngleCmd < -GV_RWA_Limit) GV_RWA2_040_RackAngleCmd = -GV_RWA_Limit;
if (GV_RWS1_040_RackAngleCmd > 200) GV_RWS1_040_RackAngleCmd = 200;
else if (GV_RWS1_040_RackAngleCmd < -200) GV_RWS1_040_RackAngleCmd = -200;
if (GV_RWS2_040_RackAngleCmd > 200) GV_RWS2_040_RackAngleCmd = 200;
else if (GV_RWS2_040_RackAngleCmd < -200) GV_RWS2_040_RackAngleCmd = -200;
if(GV_VCU_Drive_Mode == 0) // ACU mode
{
if(GV_VCU_GearSelStat == 1 || GV_VCU_GearSelStat == 3) GV_Master_Brake_Torque_Command = GV_ACU_BrakeTorqueCommand + GV_Brake_Torque_Command;
else GV_Master_Brake_Torque_Command = GV_ACU_BrakeTorqueCommand;
}
else if(GV_VCU_Drive_Mode == 1) // RC mode
{
if(GV_VCU_GearSelStat == 1 || GV_VCU_GearSelStat == 3) GV_Master_Brake_Torque_Command = GV_RC_BrakeTorqueCommand + GV_Brake_Torque_Command;
else GV_Master_Brake_Torque_Command = GV_RC_BrakeTorqueCommand;
}
else if(GV_VCU_Drive_Mode == 2) // Emergency mode
{
GV_Master_Brake_Torque_Command = GV_Brake_Torque_Command;
}
else if(GV_VCU_Drive_Mode == 3) // Default mode
{
GV_Motor_Torque_Cmd = 0;
GV_Master_Brake_Torque_Command = GV_RC_BrakeTorqueCommand;
// GV_Master_Brake_Command = 0; // <20><EFBFBD><E2BABB><EFBFBD><EFBFBD> <20><> <20><EFBFBD><EAB7B9>ũ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
// GV_MASTER_RWA_RackAngleCommand = 0; // <20><>Ƽ<EFBFBD><20>߾<EFBFBD> <20><><EFBFBD><EFBFBD>
// GV_MASTER_RWS_RackAngleCommand = 0;
}
//-------------------- Fault mode --------------------//
GV_IDB_BrakeTorqueCommand = GV_Master_Brake_Torque_Command;
GV_RCU_BrakeTorqueCommand = GV_Master_Brake_Torque_Command;
if(GV_VCU_RC_IDB_ECU_Fault_Flag == 1) GV_IDB_BrakeTorqueCommand = 0;
if(GV_VCU_RC_RCU_ECU_Fault_Flag == 1) GV_RCU_BrakeTorqueCommand = 0;
if(GV_VCU_RC_RWA1_ECU_Fault_Flag == 1) GV_RWA_040_RackAngleCmd = 0;
if(GV_VCU_RC_RWA2_ECU_Fault_Flag == 1) GV_RWA2_040_RackAngleCmd = 0;
if(GV_RC_VCU_RWA_Actuator_Fault_Flag == 1)
{
GV_RWA_040_RackAngleCmd = 0;
GV_RWA2_040_RackAngleCmd = 0;
}
}