UDS (Unified Diagnostic Services) 상세 설명
UDS(ISO 14229)는 차량 및 산업용 ECU의 진단을 수행하는 표준 프로토콜로, CAN(ISO 15765-4)에서 실행되며 다양한 진단 서비스(SID)를 제공한다.
1. UDS 메시지 구조
UDS는 CAN ID, ISO-TP(ISO 15765-2) 데이터 프레임, 그리고 진단 서비스 데이터로 구성된다.
1.1 CAN ID 구조
UDS에서 사용하는 CAN ID는 Normal (Standard ID)과 Extended (Extended ID) 형식이 있다.
(1) Standard CAN ID (11-bit)
- 송신 ID (Request, 진단기 → ECU) : 0x7DF
- 모든 ECU를 대상으로 브로드캐스트 요청을 보냄
- 응답 ID (Response, ECU → 진단기)
- ECU 1: 0x7E8
- ECU 2: 0x7E9
- ECU 3: 0x7EA
- 여러 ECU가 응답할 수 있음
(2) Extended CAN ID (29-bit)
- 송신 ID (Request, 진단기 → ECU) : 0x18DAF1XX
- XX: ECU의 주소 (예: 0x18DAF110 → ECU ID 10에 요청)
- 응답 ID (Response, ECU → 진단기) : 0x18DAXXF1
- XX: ECU의 주소 (예: 0x18DA10F1 → ECU ID 10에서 응답)
2. UDS 서비스 구조
UDS는 요청(Request)과 응답(Response) 메시지를 Service ID (SID) 기반으로 구성한다.
서비스 명칭요청 SID응답 SID설명
Diagnostic Session Control | 0x10 | 0x50 | 진단 세션 시작 |
ECU Reset | 0x11 | 0x51 | ECU 리셋 |
Security Access | 0x27 | 0x67 | 보안 인증 (Seed/Key) |
Communication Control | 0x28 | 0x68 | 통신 제어 |
Tester Present | 0x3E | 0x7E | 진단기 활성 유지 |
Read Data By Identifier | 0x22 | 0x62 | 특정 데이터 읽기 (예: VIN) |
Write Data By Identifier | 0x2E | 0x6E | 특정 데이터 쓰기 |
Read DTCs | 0x19 | 0x59 | 오류 코드 읽기 |
Routine Control | 0x31 | 0x71 | 특정 루틴 실행 (예: DPF 재생성) |
Request Download | 0x34 | 0x74 | ECU 소프트웨어 다운로드 요청 |
Transfer Data | 0x36 | 0x76 | ECU 데이터 전송 |
3. UDS 데이터 패킷 구조
UDS는 ISO-TP (ISO 15765-2)를 사용하여 8바이트 이상의 데이터를 전송한다.
3.1 ISO-TP 프레임 구조
프레임 타입PCI 값첫 번째 바이트내용
Single Frame (SF) | 0x0X | 0x02 22 F1 90 | 데이터가 7바이트 이하 |
First Frame (FF) | 0x1X | 0x10 14 22 F1 90 ... | 다중 프레임 전송 시작 |
Consecutive Frame (CF) | 0x2X | 0x21 11 22 33 ... | 연속 데이터 프레임 |
Flow Control Frame (FC) | 0x3X | 0x30 00 00 | 수신 상태 피드백 |
4. UDS 요청 및 응답 예제
4.1 진단 세션 변경 (0x10)
진단기가 ECU의 특정 기능을 활성화하려면 Diagnostic Session Control (0x10) 명령을 사용한다.
예제: 프로그래밍 세션으로 전환
요청: 10 03
응답: 50 03
- 10 03 → 0x03 (Programming Session)
- 50 03 → 응답 성공
4.2 ECU 리셋 (0x11)
ECU를 리셋하는 명령이다.
예제: ECU 하드 리셋
요청: 11 01
응답: 51 01
- 11 01 → Hard Reset 요청
- 51 01 → 응답 성공
4.3 보안 인증 (Seed/Key) (0x27)
일부 기능(예: ECU Flashing)은 보안 인증이 필요하다.
예제: Security Access
- Seed 요청
- 요청: 27 01 응답: 67 01 XX XX XX XX (Seed 값 반환)
- Key 전송
- 요청: 27 02 YY YY YY YY (Seed 기반 Key 전송) 응답: 67 02 (보안 해제 성공)
4.4 데이터 읽기 (0x22)
ECU의 특정 데이터(예: VIN)를 읽는 명령이다.
예제: VIN 읽기
요청: 22 F1 90
응답: 62 F1 90 57 4D 5A 42 59 58 32 35 36 38 36
- 22 F1 90 → VIN 요청
- 62 F1 90 ... → 57 4D 5A... (VIN 데이터 반환)
4.5 DTC (Diagnostic Trouble Code) 조회 (0x19)
ECU가 저장한 오류 코드를 조회한다.
예제: 현재 오류 코드 요청
요청: 19 02
응답: 59 02 02 07 E8 03 01 0F
- 19 02 → 현재 저장된 DTC 요청
- 59 02 → 응답
- 07E8, 0301, 0F → 오류 코드 목록
4.6 ECU 소프트웨어 업데이트 (Flashing)
- Programming Session 시작
- 요청: 10 03 응답: 50 03
- 보안 해제
- 요청: 27 01 응답: 67 01 XX XX XX XX 요청: 27 02 YY YY YY YY 응답: 67 02
- Flash 다운로드 요청
- 요청: 34 00 00 10 00 응답: 74 20
- 데이터 전송
- 요청: 36 00 AA BB CC ... 응답: 76 00
- 전송 종료
- 요청: 37 00 응답: 77 00
5. 결론
- UDS (ISO 14229)는 차량 ECU와 진단기 간의 정교한 진단 및 제어 프로토콜이다.
- CAN ID는 Standard (11-bit)와 Extended (29-bit) 형태로 사용된다.
- ISO-TP (ISO 15765-2)를 통해 멀티 프레임 데이터 송수신이 가능하다.
- 주요 기능:
- Diagnostic Session Control (0x10)
- Security Access (0x27)
- DTC 조회 (0x19)
- ECU Flashing (0x34, 0x36)
🚗✨ UDS는 차량 ECU와 깊이 상호작용하며, 정비 및 프로그래밍을 수행할 수 있는 강력한 프로토콜이다!
'Programming > CANoe' 카테고리의 다른 글
CANoe CAN/CANFD 진단통신 전송 2: 모니터 Configuration 제작 (0) | 2025.02.16 |
---|---|
UDS의 Extended CAN ID란? (0) | 2025.02.16 |
CAN 진단 통신이란? (0) | 2025.02.16 |
CANoe CAN/CANFD 진단통신 전송 1: 환경 구성 (0) | 2025.02.08 |
CANoe의 ACK설정에 대해서 (0) | 2025.02.08 |