UDS (Unified Diagnostic Services)ISO 14229에 정의된 차량 진단 서비스 표준. ECU와 진단 테스터(Tester) 사이에서 교환되는 진단 메시지의 포맷과 의미, ECU의 응답 행동을 규정한다. CAN, LIN, MOST, FlexRay, Ethernet 등 다양한 버스 시스템 위에서 공통으로 사용될 수 있도록 설계되어, 전송 계층과 독립적으로 진단 서비스 계층을 정의한다.

진단 프로토콜 개요

진단 프로토콜(Diagnostic Protocol)은 ECU와 진단 테스터 사이의 통신 규약. 다음 요소로 구성된다.

  • ECU와 진단 테스터 사이에 직렬로 전송되는 진단 서비스의 묶음.
  • 송신된 메시지의 의미.
  • ECU가 응답할 때의 행동 방법에 관한 데이터.

OEM마다 적용 방법이 달라 여러 표준이 공존해 왔으며, UDS는 이들을 통합하는 역할을 한다.

KWP → UDS 전환

UDS의 전신 KWP(Keyword Protocol)의 한계를 보완하여 확장·추가된 사양이다.

항목KWPUDS
DTC 크기2 Byte3 Byte
Local Ident.1 Byte2 Byte
지원 버스K-Line 중심CAN, LIN, MOST, FlexRay, Ethernet
Fault MemoryOEM별 상이단일화 (ReadDTCInformation 서비스)
Service ID-간략화
주기 요청불가가능 (ReadDataByPeriodicIdentifier)

ISO 14229 구성

표준내용
ISO 14229-1UDS 진단 서비스 본문 — Service ID, 서브펑션, Request/Response 포맷
ISO 14229-2UDS Session Layer Services — UDS와 전송·네트워크 계층 간 독립성을 위해 공통 세션 계층 정의

ISO 14229-2가 존재하는 이유는 UDS가 CAN/LIN/FlexRay/Ethernet 등 상이한 전송 프로토콜 위에서 동일한 방식으로 동작하도록 세션 계층에서 추상화하기 때문이다. 전송 계층은 CAN TP(CAN 기반), DoIP(IP 기반) 등이 담당한다.

Client-Server 아키텍처

UDS는 Client-Server 기반 통신이다.

  • Client (Tester) — 일반적으로 외부 진단 테스트 장비. Server에 진단 기능을 요청(Request).
  • Server (ECU) — 주로 차량 내 ECU. Client의 요청에 응답(Response) 데이터를 반환.

목적은 테스트, 검사, 모니터링, 진단 기능 수행.

Service ID 규칙 (Request ↔ Positive Response)

UDS에서는 Positive Response SID = Request SID + 0x40.

서비스Request SIDPositive Response SID
DiagnosticSessionControl0x100x50
ECUReset0x110x51
ReadDataByIdentifier0x220x62
WriteDataByIdentifier0x2E0x6E
RoutineControl0x310x71

진단 서비스 분류 (Functional Units)

ISO 14229-1은 진단 서비스를 6개 Functional Unit으로 분류한다.

1. Diagnostic and Communication Management

SID서비스설명
0x10DiagnosticSessionControl진단 세션 전환
0x11ECUResetECU 리셋
0x27SecurityAccess보안 영역 접근 (Seed/Key 인증)
0x28CommunicationControl통신 활성/비활성 제어
0x3ETesterPresentTester 존재 알림 (세션 유지)
0x83AccessTimingParameter타이밍 파라미터 접근
0x84SecuredDataTransmission보안 데이터 전송
0x85ControlDTCSettingDTC 기록 제어
0x86ResponseOnEvent이벤트 기반 응답 설정
0x87LinkControl통신 링크 속도 제어

2. Data Transmission

SID서비스설명
0x22ReadDataByIdentifier식별자로 데이터 읽기
0x23ReadMemoryByAddress메모리 주소로 읽기
0x24ReadScalingDataByIdentifier데이터 스케일링 정보 읽기
0x2AReadDataByPeriodicIdentifier주기적 데이터 읽기
0x2CDynamicallyDefineDataIdentifier동적 식별자 정의
0x2DWriteMemoryByAddress메모리 주소로 쓰기
0x2EWriteDataByIdentifier식별자로 데이터 쓰기

3. Stored Data Transmission

SID서비스설명
0x14ClearDiagnosticInformation저장된 진단 정보(DTC) 삭제
0x19ReadDTCInformation저장된 DTC 조회 (단일화된 진입점)

4. InputOutput Control

SID서비스설명
0x2FInputOutputControlByIdentifierECU 입출력 신호 강제 제어

5. Routine

SID서비스설명
0x31RoutineControl자가 진단·튜닝 루틴 시작/중지/결과 요청

6. Upload Download

SID서비스설명
0x34RequestDownload다운로드 요청 (Tester → ECU)
0x35RequestUpload업로드 요청 (ECU → Tester)
0x36TransferData데이터 블록 전송
0x37RequestTransferExit전송 종료 요청
0x38RequestFileTransfer파일 단위 전송

대표 서비스 상세

DiagnosticSessionControl (0x10)

ECU의 진단 세션을 전환한다.

Request 포맷

Byte필드
#1Request SID0x10
#2sub-function = diagnosticSessionType0x00~0xFF

sub-function 주요 값

세션Mnemonic
0x00ISOSAEReservedISOSAERESRVD
0x01DefaultSessionDS
0x02ProgrammingSessionPROGS
0x03ExtendedDiagnosticSessionEXTDS
0x40~0x5FSystemSupplierSpecificSSS

Positive Response 포맷

Byte필드
#1Response SID0x50
#2diagnosticSessionType 에코Request 값과 동일
#3~sessionParameterRecord[]세션별 부가 데이터

CAN TP 캡슐화 예:

  • Request: 02 10 01 — SF·길이 2 / SID 0x10 / DefaultSession
  • Response: 02 50 01 — SF·길이 2 / SID 0x50 / DefaultSession 에코

ReadDataByIdentifier (0x22)

Client가 Server(ECU)에 저장된 데이터 값을 식별자로 요청한다.

Request

Byte필드
#1Request SID = 0x22
#2~#3dataIdentifier #1 (2 Byte, MSB·LSB)
dataIdentifier #m (반복 가능)

Positive Response

Byte필드
#1Response SID = 0x62
#2~#3dataIdentifier 에코
#4~dataRecord (요청된 데이터 값)

WriteDataByIdentifier (0x2E)

Client가 Server(ECU) 내부에 데이터 값을 식별자 기준으로 기록한다.

Request

Byte필드
#1Request SID = 0x2E
#2~#3dataIdentifier (2 Byte)
#4~dataRecord (기록할 값)

Positive Response

Byte필드
#1Response SID = 0x6E
#2~#3dataIdentifier 에코

A_PDU 파라미터

UDS 메시지의 Application Layer PDU는 다음 파라미터를 포함한다.

파라미터이름의미
MTypeMessage Type메시지 타입
SASource Address (Logical Address)송신자 논리 주소
TATarget Address수신자 주소
TAtypeTarget Address Type주소 타입 (Physical/Functional)
RARemote Address원격 주소 (remote addressing 시만)
A_Data.A_PCI.SIService ID서비스 식별자
A_Data.Parameterdata-parameter #1…#k서비스별 페이로드 파라미터
LengthLength of A_Data전체 A_Data 길이

Target Address는 DoIP Diagnostic Routing에서 Gateway가 메시지 목적 ECU를 식별하는 기준으로 사용된다.

전송 계층 매핑

UDS는 ISO 14229-2 세션 계층에서 추상화되며, 실제 전송은 버스별 전송 프로토콜을 사용한다.

버스전송 프로토콜
CAN / CAN FDCAN TP(ISO 15765-2) — 8 Byte 제약 극복
LINLIN TP
FlexRayFlexRay TP
EthernetDoIP (ISO 13400)

같이 보기