HPC ECU의 회생 제동 제어, 상태 관리 및 주요 기능 로직 구현 More...
Functions | |
void | OnEnterFailSafe () |
Fail-Safe 상태 진입 시 호출되는 함수 | |
void | OnEnterBatteryProtection () |
배터리 보호 상태 진입 시 호출되는 함수 | |
void | OnEnterNormal () |
정상 상태 진입 시 호출되는 함수 | |
void | TransitionToState (enum SystemState newState) |
시스템 상태를 새로운 상태로 전환하는 함수 | |
void | SetFault (dword faultBit) |
폴트 레지스터에 특정 폴트 비트를 설정하는 함수 | |
void | ClearFault (dword faultBit) |
폴트 레지스터에서 특정 폴트 비트를 해제하는 함수 | |
void | InitializeGlobals () |
시작 시 모든 전역 변수를 기본 상태로 초기화 | |
float | CalculateOptimalTorque () |
운전자 입력과 차량 상태를 기반으로 최적의 모터 토크를 계산하는 함수 | |
void | UpdateVehiclePhysics () |
토크 값을 기반으로 차량의 RPM과 속도를 업데이트하는 물리 시뮬레이션 함수 | |
void | ExecuteTorqueControlTask () |
주기적으로 모터 토크 제어 명령을 전송하는 태스크 | |
void | ExecuteAutoModeOptimizationTask () |
자동 모드 최적화 태스크 | |
void | ExecuteClusterDisplayTask () |
클러스터에 표시할 정보를 주기적으로 전송하는 태스크 | |
void | ExecuteEnergyEfficiencyTask () |
에너지 효율 계산(누적 회생 에너지)을 주기적으로 수행하는 태스크 | |
void | HandleMainTaskTimer () |
메인 태스크 타이머 이벤트 발생 시 주기적으로 호출되는 함수 | |
void | HandleStartEvent () |
'on start' 이벤트 핸들러 로직을 처리 | |
void | HandleStopEvent () |
'on stopMeasurement' 이벤트 핸들러 로직을 처리 | |
void | HandleWatchdogTimeout () |
워치독 타임아웃 발생 시 호출되는 이벤트 핸들러 | |
void | SendModeChangeResponse (message M008_Mode_Change_Req request) |
회생제동 모드 변경 요청에 대한 응답 메시지를 전송하는 함수 | |
void | HandleModeChangeReqMessage (message M008_Mode_Change_Req msg) |
'on message M008_Mode_Change_Req' 이벤트 핸들러 로직을 처리 | |
void | HandleBatteryBasicMessage (message M006_Battery_Basic msg) |
'on message M006_Battery_Basic' 이벤트 핸들러 로직을 처리 | |
void | HandleRegenTorqueFeedbackMessage (message M002_Regen_Torque_Feedback msg) |
'on message M002_Regen_Torque_Feedback' 이벤트 핸들러 로직을 처리 | |
void | HandleFailSafeStatusMessage (dword faultCode) |
Fail-Safe 상태 메시지 수신 이벤트 핸들러 로직을 처리 | |
void | HandleVehicleDynamicsMessage (message M005_Vehicle_Dynamics msg) |
'on message M005_Vehicle_Dynamics' 이벤트 핸들러 로직을 처리 | |
void | HandleBrakePedalMessage (message M005_EXT_Brake_Pedal msg) |
'on message M005_EXT_Brake_Pedal' 이벤트 핸들러 로직을 처리 | |
HPC ECU의 회생 제동 제어, 상태 관리 및 주요 기능 로직 구현
float CalculateOptimalTorque | ( | ) |
운전자 입력과 차량 상태를 기반으로 최적의 모터 토크를 계산하는 함수
다음 우선순위로 토크를 계산:
폴트 레지스터에서 특정 폴트 비트를 해제하는 함수
faultBit | 해제할 폴트 비트 |
폴트 해제 시 진단 데이터도 함께 업데이트
void ExecuteAutoModeOptimizationTask | ( | ) |
자동 모드 최적화 태스크
주기적으로 자동 회생 제동 강도를 교통 상황과 도로 조건에 맞게 조절
void ExecuteClusterDisplayTask | ( | ) |
클러스터에 표시할 정보를 주기적으로 전송하는 태스크
회생 제동 모드, 배터리 SOC, 누적 회생 에너지, 경고 상태, 차량/모터 속도 정보 전송
void ExecuteEnergyEfficiencyTask | ( | ) |
void ExecuteTorqueControlTask | ( | ) |
주기적으로 모터 토크 제어 명령을 전송하는 태스크
FAIL_SAFE 상태에서는 실행하지 않으며, CRC를 포함한 E2E 보호 적용
void HandleBatteryBasicMessage | ( | message M006_Battery_Basic | msg | ) |
'on message M006_Battery_Basic' 이벤트 핸들러 로직을 처리
msg | 수신된 메시지 |
배터리 SOC 및 온도 정보를 수신하여 배터리 보호 상태를 결정
void HandleBrakePedalMessage | ( | message M005_EXT_Brake_Pedal | msg | ) |
'on message M005_EXT_Brake_Pedal' 이벤트 핸들러 로직을 처리
msg | 수신된 메시지 |
브레이크 페달 위치 정보를 수신하여 제동 의도를 파악
Fail-Safe 상태 메시지 수신 이벤트 핸들러 로직을 처리
faultCode | 수신된 폴트 코드 |
다른 ECU로부터 Critical Fault 수신 시 FAIL_SAFE 상태로 전환
void HandleMainTaskTimer | ( | ) |
메인 태스크 타이머 이벤트 발생 시 주기적으로 호출되는 함수
다양한 주기로 태스크를 스케줄링:
void HandleModeChangeReqMessage | ( | message M008_Mode_Change_Req | msg | ) |
'on message M008_Mode_Change_Req' 이벤트 핸들러 로직을 처리
msg | 수신된 메시지 |
회생 제동 모드 변경 요청을 처리하고 응답 메시지 전송
void HandleRegenTorqueFeedbackMessage | ( | message M002_Regen_Torque_Feedback | msg | ) |
'on message M002_Regen_Torque_Feedback' 이벤트 핸들러 로직을 처리
msg | 수신된 메시지 |
목표 회생 제동량 대비 실제 회생 제동량이 부족할 경우, 마찰 제동으로 보상 요청
void HandleStartEvent | ( | ) |
'on start' 이벤트 핸들러 로직을 처리
전역 변수 초기화, 메인 태스크 및 워치독 타이머 시작, NORMAL 상태로 전이
void HandleStopEvent | ( | ) |
'on stopMeasurement' 이벤트 핸들러 로직을 처리
시스템 종료 작업을 수행
void HandleVehicleDynamicsMessage | ( | message M005_Vehicle_Dynamics | msg | ) |
'on message M005_Vehicle_Dynamics' 이벤트 핸들러 로직을 처리
msg | 수신된 메시지 |
가속 페달 위치, 차량 속도, 조향각 등의 정보를 갱신하고, 감속도를 계산하여 제동등을 제어
void HandleWatchdogTimeout | ( | ) |
워치독 타임아웃 발생 시 호출되는 이벤트 핸들러
워치독 폴트를 설정하고 FAIL_SAFE 상태로 전환
void InitializeGlobals | ( | ) |
시작 시 모든 전역 변수를 기본 상태로 초기화
시스템 시작 시 모든 데이터 구조체와 변수를 안전한 초기값으로 설정
void OnEnterBatteryProtection | ( | ) |
배터리 보호 상태 진입 시 호출되는 함수
회생 제동 토크가 제한됨을 알리고 관련 폴트를 설정
void OnEnterFailSafe | ( | ) |
Fail-Safe 상태 진입 시 호출되는 함수
모든 토크 명령을 비활성화하고 안전 상태임을 알림
void OnEnterNormal | ( | ) |
정상 상태 진입 시 호출되는 함수
정상 작동 상태로 복귀했음을 알림
void SendModeChangeResponse | ( | message M008_Mode_Change_Req | request | ) |
회생제동 모드 변경 요청에 대한 응답 메시지를 전송하는 함수
request | 수신된 모드 변경 요청 메시지 |
정상 또는 배터리 보호 상태에서만 모드 변경 허용
폴트 레지스터에 특정 폴트 비트를 설정하는 함수
faultBit | 설정할 폴트 비트 |
이미 설정된 폴트는 중복 설정하지 않으며 진단 데이터에 반영
void TransitionToState | ( | enum SystemState | newState | ) |
시스템 상태를 새로운 상태로 전환하는 함수
newState | 새로운 시스템 상태 |
상태 변경 시 해당 상태의 진입 함수를 호출하고 시스템 변수를 업데이트
void UpdateVehiclePhysics | ( | ) |
토크 값을 기반으로 차량의 RPM과 속도를 업데이트하는 물리 시뮬레이션 함수
뉴턴의 회전 운동 법칙을 사용하여 각가속도를 계산하고, 기어비와 바퀴 반경을 고려하여 차량 속도를 결정