자동차 제어기 소프트웨어는 보통 하드웨어에 가까운 MCAL 계층부터 센서 데이터를 해석하는 BSW, 그리고 실제 로직이 담긴 ASW까지 여러 층으로 구성됩니다. 그중 가장 중요한 두뇌 역할을 하는 곳이 바로 ASW Layer (Application Software Layer)입니다.
이번 포스팅에서는 AUTOSAR를 사용하지 않은 시스템에서의 BDC (Battery Disconnect Unit Controller)를 예시로, ASW Layer가 어떤 식으로 구성되고, 어떻게 기능안전을 반영하는지 상세히 설명드리겠습니다.
2. ASW Layer란?
ASW는 제어기의 핵심 기능 로직을 담고 있는 최상위 소프트웨어 계층입니다. 전류 측정, 상태 판단, 릴레이 제어, 진단 메시지 전송 등 실질적인 기능 처리는 대부분 이 ASW에서 수행됩니다.
3. BDC 제어기란?
BDC(Battery Disconnect Controller)는 고전압 배터리 시스템에서 릴레이나 FET를 통해 전력을 차단하거나 연결하는 기능을 수행합니다. 다음과 같은 역할이 일반적입니다.
- 전류, 온도, 내부 상태를 기반으로 릴레이 차단 판단
- 차량 제어기(VCU 등)와 CAN 통신
- 과전류, 통신 이상 등 안전 관련 이벤트에 빠르게 반응
4. BDC 제어기 ASW 구조 예시
기능 루틴 | 역할 | 구현 예 |
---|---|---|
Measure_Current() | 션트 저항을 통한 전류 측정 | Adc_Read() 호출 |
Check_DisconnectCondition() | 릴레이 차단 여부 판단 | 전류 + 온도 + 상태 확인 |
Control_Relay() | 조건 만족 시 릴레이 차단 | Dio_Write() 또는 Port_SetLevel() 호출 |
Send_Diagnostics() | Fault, 상태 정보 전송 | Can_Write() 호출 |
// 메인 루프 예시
void App_MainLoop(void) {
Measure_Current();
Check_DisconnectCondition();
Control_Relay();
Send_Diagnostics();
}
5. BSW와의 연동
ASW는 BSW에서 제공하는 API를 직접 호출하거나, 변경에 유연하게 대응하기 위해 Wrapper 계층을 둘 수 있습니다.
// 직접 호출
Adc_ReadGroup(ADC_ID_CURRENT, buffer);
Can_Write(CAN_ID_FAULT, &tx_data);
// 래퍼 사용 시
BdcAdc_GetCurrent();
BdcCan_SendFaultInfo();
6. 기능안전 대응 방식
- 제어 흐름 감시 (Logical/Deadline Monitoring)
- Fault 발생 시 릴레이 차단 로직
- 주기성 확인을 위한 Alive Monitoring
- 외부 Watchdog과 연동하여 SW Hang 방지
if (disconnectCondition == TRUE) {
Dio_Write(RELAY_PIN, STD_LOW);
faultFlag = TRUE;
}
7. 실무 적용 사례
- 현대모비스 BDC ECU – 릴레이 On/Off 신호를 FET Gate로 출력하며, VCU CAN 메시지에 따라 상태 변경
- LG Energy Solution BDU – 과전류 감지 시 5ms 이내에 릴레이 차단. 내부 FaultFlag 우선 적용
- 삼성SDI 팩용 BDC – MCU 자체 진단으로 릴레이 제어 상태 피드백 확인. 리튬이온 셀 보호 목적
8. ASW 구조 요약도
[ Application Layer (ASW) ]
- main.c
- disconnect_logic.c
- fault_check.c
- can_interface.c
↓ API 호출
[ BSW Layer ]
- Can, Adc, Dio, Port, Wdg 등
↓
[ MCAL Layer ]
↓
[ Hardware (TC387, STM32 등) ]
9. 마무리 요약
질문 | 답변 |
---|---|
ASW Layer란? | 제어 로직의 핵심 영역이며 실제 기능 수행 담당 |
BDC에서의 ASW 역할? | 릴레이 판단, 전류 측정, 진단 전송 |
AUTOSAR 없이도 가능한가? | 가능. 직접 API 호출 + 구조적 설계로 대응 가능 |
기능안전 대응은? | Flow Monitoring, WDT 연동, Fault 상태 분리 등으로 가능 |
추천 태그
#ASWLayer #BDC제어기 #비AUTOSAR #기능안전 #BatteryDisconnect #ApplicationLayer #임베디드시스템 #ECU소프트웨어 #자동차제어기
'Automotive Study' 카테고리의 다른 글
MCU 칩 FMEDA 완벽 정리: SM, ESM, SMC와 역할 분담까지! (1) | 2025.04.23 |
---|---|
자동차 브레이크 제어기의 ASW, BSW, MCU 계층 구조 완전 정리 (0) | 2025.04.17 |
Program Flow Monitoring이란? BMS 제어기 사례로 이해하는 흐름 감시 방법 (1) | 2025.04.15 |
차량용 소프트웨어에서 BSW Layer란? 오토사 적용/미적용 ASW 대응 전략까지! (1) | 2025.04.14 |
차량용 MCU의 핵심 구조, 하드웨어 레이어란? (1) | 2025.04.13 |