UDS (Unified Diagnostic Services)


UDS 프로토콜은 무엇인가?

UDS (Unified Diagnostic Services) 프로토콜은 자동차 산업에서 차량 내 전자 제어 시스템(ECU: Electronic Control Unit)의 진단, 테스트, 수리를 위해 사용되는 진단 통신 프로토콜이다.
차량의 온보드 진단 (OBD: On Board Unit) 시스템과 진단 도구 간의 진단 및 제어 데이터를 교환하는 데 사용되는 표준화된 프로토콜이다.

UDS 프로토콜의 특징은?

UDS는 ISO 14229 표준에 기반을 두고 있으며, 진단을 위해 사용되는 서비스, 데이터 유형, 통신 규칙을 정의함
이 프로토콜은 진단기능에 맞춰 표준화된 접근법을 제공함으로써 다양한 유형의 차량을 진단 및 수리과정을 쉽게 만들어줌
UDS 프로토콜은 클라이언트-서버 (Client - Server) 모델을 사용하며, 진단 도구를 클라이언트로, 차량 ECU를 서버로 구성함
클라이언트는 서버에 요청을 보내고, 서버는 요청된 정보를 응답

UDS 프로토콜 메시지 구조

💡

UDS (Unified Diagnostic Services) 메시지는 ISO 14229 표준을 따르는 특정한 구조를 가짐 (CAN bus의 기본 구조를 따른다)
ISO 14229-1 (Application Layer)
ISO 14229-3 (Application Layer for CAN)
ISO 14229-2 (Session Layer)
ISO 15765-2 (Transport + Network Layer for CAN)
ISO 11898 (Physical + Data Link Layer for CAN)

Frame Type Byte 0 < Byte 1
Service ID (for UDS)
Byte 2
Data
Byte 7
Data
Bit offset Bit 7-4 Bit 3-0 Bit 15-8 Bit 23-16 Bit 63-56
Single Frame
(SF)
Type = 0 (0-7) Single frame data length Data A Data B Data G
First Frame
(FF)
Type = 1 Data length of multi frame data size (8-4096) Byte < Data A Data F
Consecutive Frame
(CF)
Type = 2 Sequence number index (0-15) Data A Data B Data G
Flow Control Frame
(FC)
Type = 3 Flow Control Flag (0, 1, 2) Block size Separation Time/ST min NA <

CAN ID

  • CAN 프로토콜에서 각 메시지는 고유한 식별자(CAN ID)를 가짐
  • 이 ID는 메시지의 우선순위를 결정하는데 사용되며, ID가 낮을 수록 우선순위가 높음

Protocol Control Info(PCI)

  • UDS 메시지에서 데이터의 길이와 형식을 나타냄
  • PCI는 실제 데이터에 대한 정보를 제공하며, 데이터가 어떤 형식인지(단일 프레임, 첫 번째 프레임, 연속 프레임 등)를 결정하는데 사용

UDS Serivce Identifier(SID)

💡

해당 자료의 자세한 내용은 여기에 있습니다.

  • 특정 진단 서비스를 식별하는 고유한 ID
  • ECU Reset을 요청하려면 SID 0x11을 사용

Request Data Parameters

💡

2-byte(0~65535)인 Data Identifier (DID)를 포함한다

  • 서비스의 세부 기능을 정의
  • 특정 요청에 대한 추가적인 세부 사항을 제공 (Sub function)

UDS Sub Function Byte

  • 서비스 요청을 수행하기 위해 필요한 추가 정보를 포함
  • 예를 들어 identifiers, memory addresses, values 등을 포

Padding

  • UDS 메시지는 일정한 길이를 유지해야함, 따라서 메시지가 해당 길이에 도달하지 못하는 경우 나머지 부분은 ‘패딩(Padding)’으로 채움
  • 일반적으로 0또는 A, 특정 값으로 설정됨

Positive Response

  • 요청된 서비스 ID에 0x40을 더한 값을 SID로 보냄 - ex) 0x10에 대한 Positive Response는 0x50
  • Data payload에 요청된 작업에 대한 구체적인 응답 데이터를 보냄

Negative Response

Negative Response SID

  • UDS 프로토콜에서, 응답(Response)이 Negative한 경우. 즉, 요청이 성공적으로 처리되지 못한 경우 Negative Response Service ID가 사용됨
  • 이는 클라이언트에게 요청이 실패했음을 알리는데 사용됨

Rejected SID

  • 요청된 SID(Service ID)가 정상적으로 처리되지 못하거나 버전이 지원되지 않는 경우에 사용
  • 이는 클라이언트에게 해당 서비스가 현재 처리될 수 없거나 지원되지 않음을 알림

Negative Response Code(NRC)

💡

해당 자료의 자세한 내용은 여기에 있습니다.

  • 요청이 Negative로 처리된 경우, NRC는 Negative Response의 원인을 알려줌
  • 예를 들어, 요청된 기능이 서버에 의해 지원되지 않거나, 요청된 서비스가 현재 실행되지 못하는 상황 등을 나타낼 수 있음

CAN ISO-TP - Transport Protocol (ISO 15765-2)

  • CAN ISO-TP (ISO 15765-2)는 CAN 버스에서 데이터를 전송하기 위한 표준 프로토콜
  • 데이터를 단일 프레임(Single-frame) 또는 다중 프레임(Multi-frame)으로 나누어 전송

ISO-TP: Single-frame communication

  • 단일 프레임 통신은 데이터가 단일 CAN 프레임 내에 수용될 때 사용
  • 단일 프레임은 데이터 길이와 데이터 필드를 포함

ISO-TP: Multi-frame communication

  • 다중 프레임 통신은 데이터가 단일 CAN 프레임에 수용될 수 없을 때 사용
  • 첫 번째 프레임, 연속 프레임, 그리고 종료 프레임을 사용하여 데이터를 나누어 전송

Table of contents