[UDS] 진단 서비스 심화

CS·2026년 2월 5일
  • 법규 통신 (OBD II, SAE J1979) -> 환경 규제(배기가스 등)

법규에서 명시된 항목을 진단기로 확인하기 위한 통신 표준
UDS와는 별도의 프로토콜이 정의되어 있음
북미, 내수, 유럽 사양 모두 J1979 기반 법규 통신 지원이 필요함
세부 진단 필요 항목은 법규마다 다를 수 있으나 통신 표준은 J1979 사용함
최근 UDS를 활용한 SAE J1979-2 등의 새로운 표준이 제정되었음

  • UDS (Unified Diagnostic Services)

차량 진단을 위한 통신 표준
제조사, 제어기, 차량 옵션 등에 따라 진단 항목이 상이함
통신은 표준을 준수하되 진단 항목 및 방법은 OEM에서 정의함
OEM에서 정의한 스펙에 맞게 진단기 개발차량 진단 이외에 제조 공정에서 필요한 서비스도 개발함
E.g., 이모빌라이저 초기화 등

이들을 통해

  1. DTC
  2. Smart Key 페어링(학습)
  3. 종합검사(환경 규제 등)

수행

보통 진단 통신은 8B보다 큰 데이터 송수신이 필요함
VIN만해도 17바이트 이상의 송수신이 필요하기에 CAN-TP 상위 계층에서 진단 통신이 지원됨

  • Single Frame(7B 이하) : 한 번에 송수신 가능하나 잘 쓰이진 않음

  • Consecutive Frame(8B 이상) : CAN-TP의 존재 의의

  • SF_DL : Single Frame으로 전송되는 Data LEN

  • First frame(FF_DL) : 분할되어 전송되는 Data의 1st Frame으로 Data의 전체 LEN

  • Consecutive Frame : 분할되어 전송되는 Data의 2nd 이상 Frame으로
    SN : sequence No를 뜻함(1부터 증가)

  • Flow Control : 수신측이 전달하는 내용으로 FF를 받고 진행함. 흐름 제어 기능

FS : Flow status로 0은 CTS(진행/재개/BS개 수신 준비 완료) /
1은 wait으로 송신기가 새 FC를 대기하게 만든다 /
2는 Overflow로 송신기 전송 중단이다

BS : Block Size로 블록당 CF의 절대 값
(FC없이 최대 수신할 수 있는 CF의 최대 개수를 나타냄)
단 00쓰면 그냥 계속 전송한다

STmin : Minimum Separation Time
CF 전송 사이 최소 시간 간격을 지정한다
00~7F :0ms~127ms(1당 1ms)
F1~F9 :100us~900us(1당 100us)
FA~FF :미사용

예를 들어 SF로 2B data 전송할 경우(무조건 8B단위로 송수신 하기에 미사용 Data는 Padding)

우선
MSB에는 0000(SF) 0002(LEN)
Byte 2 : 03
Byte 3 : 01
나머지 Padding으로 들어감

Consecutive의 경우, 10B를 전송할 경우
(수신 노드가 FC로 BS(4)/STmin(2)를 응답)

FF : 0x10(FF) 0x0A(10B) 이후 Data인 01 02 03 04 05 06 채워서 전송
FC : 0x30(FC,FS) 0x04(BS), 0x02(STmin) 이후 0 Padding
CF : 0x21(CF,SN) 이후 Data인 07 08 09 10 남은 곳은 Padding

법규 진단통신(J1979) 동작 모드

  • 진단 통신 CAN ID

ECU 별로 요청/응답 CAN ID가 정해져있음

  1. Functional Addressing : Broadcast Request(0x7DF)

  2. Physical Addressing :
    Request to ECU(Engine Control Unit) : 0x7E0
    Response from ECU : 0x7E8

0x7E0 ~ 0x7EF까지 ID를 정해뒀음.

  • 법규 진단 통신 Frame Format

각 동작 모드마다 Frame format이 정해져 있음
Mode 01 :

법규 진단 통신의 PID는 J1979DA에 정의되어 있고, 데이터 크기 및 물리값 계산 방법 정의 되어있음

이는 일부로 필수 표준 항목들이 더 있고 추가 항목은 자유임

UDS(ISO 14229)

DoIP대신 DoCAN을 쓰는 것 말고는 크게 다른 것은 없음

  • ISO 14229-1 : UDS

  • ISO 14229-2 : UDS Session layer services
    UDS 및 모든 전송 프로토콜 및 NW 계층 서비스 간의 독립성 제공
    "공통 세션 계층 서비스임"

  • ISO 15765-2 : DoCAN 전송 및 NW 계층 서비스(CAN-TP)

  • ISO 11898-1/ISO 11898-2/ISO 11898-3 : CAN 컨트롤러와 트랜시버

  • 진단 및 통신 관리

0x11 / 0x27 등 OTA 관련 SID들이 존재함

  • Data 송수신 기능

0x22 / 0x2E등 존재

  • 저장 관련

DTC가 여기 있음

  • 리프로그래밍 서비스 관련 SID들

외에도 다른 SID들이 존재한다.

법규 통신의 경우 표준에 따라 모든 OEM들이 공통으로 따라야 하지만

UDS는 OEM별로 필요에 의해 개발하고 정의할 수 있음
(물론 표준은 있는데 표준이라 전 OEM이 다 같진 않음)
예를들어 해당 DID가 어떤 센서인지는 OEM별로 다름
다만 해석이 0001의 경우 1번 센서 읽기 이렇게 해석은 가능

긍정 응답의 경우 요청 SID에 +0x40을 수행하여 응답하고
DID(0x00 0x01) 이후에 DID의 값을 넣고 남은 곳은 Padding 처리한다.

값이 작은 경우에야 SF로 처리가 가능하겠지만, 큰 경우에는 CF로 처리해야 한다
예를 들면 VIN같은 경우

profile
학습

0개의 댓글