UDS (Unified Diagnostic Services) 상세 설명

UDS(ISO 14229)는 차량 및 산업용 ECU의 진단을 수행하는 표준 프로토콜로, CAN(ISO 15765-4)에서 실행되며 다양한 진단 서비스(SID)를 제공한다.


1. UDS 메시지 구조

UDS는 CAN IDISO-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

  1. Seed 요청
  2. 요청: 27 01 응답: 67 01 XX XX XX XX (Seed 값 반환)
  3. Key 전송
  4. 요청: 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)

  1. Programming Session 시작
  2. 요청: 10 03 응답: 50 03
  3. 보안 해제
  4. 요청: 27 01 응답: 67 01 XX XX XX XX 요청: 27 02 YY YY YY YY 응답: 67 02
  5. Flash 다운로드 요청
  6. 요청: 34 00 00 10 00 응답: 74 20
  7. 데이터 전송
  8. 요청: 36 00 AA BB CC ... 응답: 76 00
  9. 전송 종료
  10. 요청: 37 00 응답: 77 00

5. 결론

  • UDS (ISO 14229)는 차량 ECU와 진단기 간의 정교한 진단 및 제어 프로토콜이다.
  • CAN IDStandard (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와 깊이 상호작용하며, 정비 및 프로그래밍을 수행할 수 있는 강력한 프로토콜이다!

블로그 이미지

RIsN

,