ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • DoIP (Diagnostic over Internet Protocol) - 메시지 해석
    diagnostic 2025. 4. 8. 21:13

    개요

    • 이더넷 메시지를 보는 방법
    • DoIP 메시지 해석 방법
      • Rourting Activation Request/ Response Message
      • Diagnostic Message
      • Vehicle Identification Message

     

    이더넷 메시지를 보는 방법

    • 인터페이스 하드웨어를 이더넷 케이블에 연결한다. 인터페이스 하드웨어를 PC의 USB에 연결한다.

     

    • 메인 메뉴/ Analysis/ Trace 버튼을 클릭하여 Add Ethernet Trace를 선택하여 이더넷 트레이스 창을 연다.

    • Start 버튼을 클릭하면, 이더넷 트레이스 창에 이더넷 메시지들이 보인다.

    • 데이터의 상세를 보고 싶은 메시지를 선택한 후, 위 그림에서 노란색 화살표가 가리키는 영역 확장 버튼을 클릭한다. 그러면 아래 그림처럼 메시지의 상세를 볼 수 있다.  

    • 창의 오른쪽 영역에서 메시지를 선택하면 왼쪽 영역에 상세가 표시된다. 

     

    DoIP 메시지 해석 방법 

    Routing Activation Request/ Response Message

    • 아래 그림들은 Diagnositc 창에서 Connect DUT를 클릭한 직후에 진단기(PC)와 제어기가 주고 받은 메시지들이다. 앞서 TP 설정에서 아래 그림과 같이 Connecting DUT를 할 때 Auto Activate Routing을 하도록 하였다. 

    • DoIP는 TCP 메시지다. Connect DUT 후 TCP 메시지들 중에서 Source IP(172.20.0.36: Tester)와 Destination IP(172.20.0.38: DUT)가 앞서 TP에서 설정한 값인 메시지를 찾았다. 진단기가 제어기로 보낸 메시지다. 

     

    • 선택한 메시지가 DoIP 메시지라서 아래 그림과 같이 데이터의 일부분을 선택하면 선택된 부분의 해석이 표시된다. 선택한 부분인 0x02는 DoIP 프로토콜의 버전이다. 해석에 Protocol version; 2 (ISO 13400-2:2012)라고 파란색 글씨로 표시가 되었다.

    • 아래 그림에 선택된 부분은 메시지의 종류를 나타낸다. 0x0005는 메시지 라우팅 요청이다. 

    • 메시지의 종류는 아래 표와 같다.
    Payload Type (Hex) Name Description
    0x0001 Vehicle Announcement Broadcasts VIN, EID, and logical address.
    0x0005 Routing Activation Request Requests a diagnostic session.
    0x0006 Routing Activation Response Confirms activation success/failure.
    0x8001 Diagnostic Message Carries UDS requests/responses (e.g., 0x10=Session Control).

     

    • 아래 그림에서 선택된 부분은 payload의 길이를 나타낸다. 7 바이트이다. 빨간색 밑줄 친 부분이 페이로드다. 0E 00 00 00 00 00 00 이렇게 7 바이트다.

    • 아래 그림에 선택된 메시지는 ACK 메시지다. IP 주소를 보면 제어기가 진단기로 보냈다. Interpretation 컬럼을 보면 ACK라고 표시되어 있다.

    • ACK 메시지 다음 제어기가 진단기로 보낸 메시지이다. 

    • 페이로드 파입을 보면 0x0006으로 Routing Activation Response 이다.

     

    Diagnostic Message

    • Diagnostic Session Control 진단 통신 명령의 경우는 다음 설명과 같다.
    • Diagnostic 창의 Diagnostic Console 창에 미리 정의한 진단 통신 서비스들이 있다. ( UDS 진단 통신 (3 / 4) - 진단 요청/ 응답 메시지 설정 :: hsl's tsmaster 사용기 설명을 참조하십시오.)
    • 서비스를 선택하고 마우스 좌측 버튼을 더블 클릭하거나 우측 버튼을 클릭하고 Execute를 클릭하여 실행한다. 
    • 미리 정해진 서비스 메시지가 전송된다. 예제의 경우 10 30으로 진단 모드 진입이다. 
    • 창의 아래쪽 ISO15765-2 (CAN의 Transport Protocol 표준이다.) 창에 송/수신된 "진단 통신" 메시지들이 표시된다. 실제 이더넷 메시지들은 TCP 헤더가 붙고, 그 앞에 IP 헤더가 붙고, 그 앞에 이더넷 헤더가 붙어있다. 이 헤더들을 모두 해석하고 남은 "진단 통신" 메시지이다.  

     

    • 1차 응답 메시지는 7F 10 70 이다. 7F는 부정 응답이다. 10은 요청 10을 복명복창한 것이다. 78은 부정 응답의 이유이다. (NRC: Negatigve Response Code). 의미는 request correctly received - response peding 이다. '알았어 잠깐 기다려'라는 의미다.
    • 2차 응답 메시지는 50 03 00 32 01 F4이다. 50은 10 + 40으로 10 요청의 긍정 응답이라는 표시다. 03은 요청 10 03의 03이다. 00 32 01 F4는 P2 CAN SERVER MAX와 P2* CAN SERVER MAX 일 것이다. 
    • Diagnostic 창에서는 위와 같이 쉽게 볼 수 있는데 이더넷 트레이스 창에서 보는 것은 번거롭다. 얼마나 번거로운지 살펴본다. ;-)
    • 이더넷 트레이스 창에서 전체 최신 메시지 보기 "비"선택 상태로 한다. 각 IP와 Port 별로 최신 메시지를 볼 수 있다. IP와 Port로 특정 메시지를 찾는다. 그리고 타임스탬프를 확인한다. 

     

    • 전체 최신 메시지 보기 상태로 전환한다. 시간 순으로 나열된 전체 메시지들을 볼 수 있다. 동일 시간 동안의 메시지들이라도 CAN에 비해서 이더넷은 전체 메시지들이 아주 아주 많다. 위에서 확인한 타임스탬프로 메시지를 찾는다.
    • 그 위쪽에서 IP 주소와 Port를 확인하여 진단 통신 메시지들을 찾는다. 아래 그림과 같다. 

    • 맨 처음 306.49xxxx 초의 메시지를 선택하여 분석한다. 메시지 타입을 보면 Diagnostic Message 이다. 

    • 페이로드 길이는 6 바이트이다.

    • 소스의 주소는 0x0E00이다.

    • UDS 진단 통신 메시지는 10 03 이다. 

     

    • 정리하면 아래와 같다.

    Vehicle Identification Message

    • 페이로드 타입에 Vehicle Identification이 있다. 
      • 0x0001:  Vehicle Announcement. Broadcasts VIN, EID, and logical address.
    • Vehicle Idenficiation 메시지의 예는 아래와 같다.

     

     

    결론

    • 간략하게 이더넷을 이용한 UDS 진단 통신인 DoIP에 관해 설명하였다.
    • 이더넷과 CAN이라는 물리 계층의 차이가 있을 뿐 UDS 라는 진단 통신은 동일하다. 
    • 이더넷은 다층 구조이다. UDS 진단 통신 메시지를 송신하면, 각 층마다 헤더가 붙는다. 수신측은 각 층을 통과할 때마다 헤더를 점거하고 제거하게 된다. 
    • 이더넷 트레이스 창에서 진단 메시지를 분석하는 것은 귀찮고 시간이 많이 드는 일이다. 

     

    다음에는 C 코드로 TSMaster의 API를 이용하여 DoIP 통신을 하는 방법을 설명한다.  DoIP (Diagnostic over Internet Protocol) - TSMaster API C 코드 :: hsl's tsmaster 사용기

     

     

     

     

     

    목차 :: hsl's tsmaster 사용기