기능안전(ISO 26262)을 적용한 제어기를 개발하다 보면,
“이 루틴이 제대로 실행되고 있는지 어떻게 보장하지?” 라는 질문이 생깁니다.
바로 그 해답이 Program Flow Monitoring (PFM)입니다.
이 글에서는 Program Flow Monitoring의 개념,
AUTOSAR 적용 여부에 따른 구현 방식,
그리고 BMS 제어기를 예시로 한 적용 사례까지 모두 정리해드립니다.
🔍 Program Flow Monitoring이란?
프로그램이 정해진 흐름대로 정확히 실행되고 있는지를 감시하는 기능입니다.
PFM은 단순히 "죽었는지"만 보는 워치독이 아닙니다.
실행 순서, 주기, 응답 시간까지 감시하여 시스템이 설계대로 동작하고 있는지를 보장합니다.
📚 세 가지 감시 방식
유형 |
설명 |
감시 목적 |
✅ Deadline |
코드가 일정 시간 내에 끝나는가? |
지연 또는 무한루프 감지 |
✅ Alive |
주기적으로 호출되고 있는가? |
루틴 누락/정지 감지 |
✅ Logical |
올바른 순서로 실행되고 있는가? |
점프 오류, 잘못된 흐름 감지 |
🛠️ AUTOSAR vs 비-AUTOSAR 시스템
항목 |
AUTOSAR 시스템 |
비 AUTOSAR 시스템 |
구현 주체 |
BSW(WdgM), RTE, ASW 협업 |
ASW 개발자가 직접 구현 |
감시 방식 |
WdgM_PerformCheckPoint() + 설정 |
변수 기반 FSM 구현 |
통합성 |
표준화됨, 도구 기반 |
유연하지만 개발 부담 있음 |
※ WdgM 모듈이 있는 경우, 주기/흐름/시간을 모두 구조적으로 감시할 수 있습니다.
🧠 BMS 제어기에서의 예시
루틴 이름감시 유형요구사항감지 사례
루틴 이름 |
감시 유형 |
요구사항 |
감지 사례 |
셀 전압 측정 루틴 |
Alive |
10ms마다 실행 |
루틴 누락 시 셀 상태 미검출 |
SoC 계산 |
Deadline |
50ms 내 완료 |
지연 시 충전 상태 오판 가능 |
Fault → Balancing |
Logical |
Fault 후에만 실행 |
순서 오류 시 과충전 발생 가능 |
열 폭주 감시 |
Alive + Deadline |
20ms 내 진입 |
지연 시 안전 문제 |
VCU 송신 루틴 |
Alive |
100ms마다 전송 |
누락 시 VCU 통신 오류 발생 |
🧩 누가 구현하나요?
구성 요소 |
담당자 |
감시 대상 정의 |
기능안전 엔지니어 |
모듈 구현 (WdgM) |
BSW 개발자 |
Checkpoint 설정 |
RTE or 통합 담당자 |
실행 코드 삽입 |
ASW 개발자 |
비-AUTOSAR 전체 구현 |
ASW 개발자 단독 |
🧾 ISO 26262 기준
- ISO 26262-6 7.4.15: 제어 흐름 감시(Control Flow Monitoring) 요구
- ASIL C~D 등급에서는 Watchdog과 함께 적용이 사실상 필수입니다.
✅ 마무리 정리
Program Flow Monitoring이란? |
코드의 흐름·주기·응답을 감시하는 기능안전 메커니즘 |
세 가지 유형 |
Deadline / Alive / Logical |
워치독과의 차이 |
시간 vs 논리 흐름 감시 (보완 관계) |
AUTOSAR 시스템 |
WdgM, RTE 통해 구조적으로 구현 |
비-AUTOSAR 시스템 |
수동 FSM, 변수 기반으로 구현 |
적용 사례 |
BMS, VCU, ADAS 등 ASIL C~D 제어기 |