null
vuild_
Nodes
Flows
Hubs
Login
MENU
GO
Notifications
Login
⌂
AUTOSAR 개발자 실전 가이드
Structure
overview
•
AUTOSAR가 필요한 이유
•
AUTOSAR 레이어드 아키텍처 구조
components
•
Core, Partition, OS Application 관계
•
SWC와 Runnable — 실행 단위 이해
rte-ports
•
P-Port, R-Port와 인터페이스 설계
•
Explicit vs Implicit Write — 언제 무엇을 쓰나
autosar-os
•
AUTOSAR OS Task와 ISR 설계
•
Alarm, Counter, Schedule Table 정리
•
OS Application과 메모리 보호 설정
spec-practice
•
MUST vs SHALL vs SHOULD — 스펙 용어 해석법
•
DET 에러 처리 — Det_ReportError와 RuntimeError
com-stack
•
ComSignal에서 PduR까지 — 신호가 CAN 프레임이 되는 경로
•
CanIf부터 CanNm까지 — CAN 통신 스택 계층 분리
diagnostics
•
DEM으로 DTC 관리하기 — 이벤트 상태와 고장 이력
•
DCM과 UDS 서비스 — 진단 통신의 실전 구조
ecum-bswm
•
EcuM 시동/종료 시퀀스 — ECU가 켜지고 꺼지는 순서
•
BswM 모드 전환 — 규칙 기반 상태 관리
nvm-schm
•
NvM 읽기/쓰기 패턴 — 비휘발성 메모리를 안전하게 다루는 방법
•
SchM Exclusive Area — 인터럽트와 Task 간 공유 자원 보호
Flow Structure
CanIf부터 CanNm까지 — CAN 통신 스택 계층 분리
14 / 19
DCM과 UDS 서비스 — 진단 통신의 실전 구조
☆ Star
↗ Full
DEM으로 DTC 관리하기 — 이벤트 상태와 고장 이력
#autosar
#dem
#dtc
#diagnostic
#fault
@devpc
|
2026-05-04 12:39:29
|
GET /api/v1/flows/24/nodes/435?fv=1&nv=1
Context:
Flow v1
→
Node v1
0
Views
1
Calls
# DEM으로 DTC 관리하기 — 이벤트 상태와 고장 이력 ## DEM이란 DEM(Diagnostic Event Manager)은 AUTOSAR에서 고장 이벤트를 수집하고 DTC(Diagnostic Trouble Code)를 관리하는 모듈이다. 정비소에서 스캐너로 읽는 고장 코드가 바로 DEM이 관리하는 DTC다. --- ## DTC 라이프사이클 ``` 이벤트 없음 │ ├── Dem_SetEventStatus(FAILED) → PENDING │ ├── 연속 FAILED (확정 카운터 충족) → CONFIRMED │ (NvM에 저장, 점등 가능) │ ├── Dem_SetEventStatus(PASSED) → PENDING → (사이클 경과) → 자동 클리어 or 유지 │ └── Dem_ClearDTC() 명령 → 클리어 ``` **확정(Confirmed) DTC**: 진단 사이클(보통 주행 사이클)에서 FAILED가 반복 확인된 고장. 정비 스캔으로 읽히는 것이 이 DTC다. --- ## Dem_SetEventStatus 패턴 ```c /* 센서 값 범위 체크 → DTC 상태 업데이트 */ if (sensor_value > SENSOR_MAX_VALID || sensor_value < SENSOR_MIN_VALID) { Dem_SetEventStatus(DemConf_DemEventParameter_SensorOutOfRange, DEM_EVENT_STATUS_FAILED); } else { Dem_SetEventStatus(DemConf_DemEventParameter_SensorOutOfRange, DEM_EVENT_STATUS_PASSED); } ``` **주의**: `Dem_SetEventStatus`는 매 주기마다 호출해야 한다. 한 번 FAILED 후 호출을 안 하면 DEM이 상태를 알 수 없어 healing(자동 클리어)이 안 된다. --- ## DTC 스냅샷 데이터 (FreezeFrame) DTC 발생 시점의 데이터를 스냅샷으로 저장할 수 있다. 정비 시 "언제, 어떤 조건에서 고장이 났는가"를 분석하는 데 쓴다. ```c /* FreezeFrame 데이터 제공 콜백 */ Std_ReturnType Dem_ReadDataOfFreezeFrame( uint8 *DestBuffer) { DestBuffer[0] = (uint8)(vehicle_speed >> 8); DestBuffer[1] = (uint8)(vehicle_speed & 0xFF); DestBuffer[2] = engine_temp; return E_OK; } ``` DEM 설정에서 어떤 데이터 요소를 FreezeFrame으로 저장할지 `DemFreezeFrameRecordClass`로 지정한다. --- ## OBD vs EOBD vs 제조사 DTC | 구분 | 코드 형식 | 예시 | |------|----------|------| | OBD/EOBD (표준) | P0xxx / C0xxx | P0300 (점화 실화) | | 제조사 고유 | P1xxx, P3xxx | P1234 (제조사 정의) | | AUTOSAR 내부 | 16진수 UDS DTC | 0x123456 | AUTOSAR DEM은 UDS DTC 형식(3바이트)으로 관리하며, OBD Mode $03/$04와 UDS $19 서비스로 외부에서 읽을 수 있다. --- ## DTC 클리어와 주행 사이클 ```c /* $14 서비스 수신 → DEM 클리어 호출 */ Dem_ClearDTC( 0xFFFFFF, /* 모든 DTC */ DEM_DTC_FORMAT_UDS, DEM_DTC_ORIGIN_PRIMARY_MEMORY ); ``` 클리어 후에도 DTC가 다시 CONFIRMED가 되려면 진단 조건이 다시 충족되어야 한다. `DemEventAvailableDefault` 설정에 따라 일부 DTC는 특정 조건에서만 활성화된다.
CanIf부터 CanNm까지 — CAN 통신 스택 계층 분리
DCM과 UDS 서비스 — 진단 통신의 실전 구조
// COMMENTS
Newest First
ON THIS PAGE
No content selected.