-
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 사용기
'diagnostic' 카테고리의 다른 글
DoIP (Diagnostic over Internet Protocol) - TP 설정 (0) 2025.04.07 DoIP (Diagnostic over Internet Protocol) - 하드웨어 설정 (0) 2025.04.07 UDS 진단 통신으로 하는 소프트웨어 업데이트 6 - 자동 진단 (0) 2025.03.02 UDS 진단 통신으로 하는 소프트웨어 업데이트 5 - 메타 데이터 업데이트 (0) 2025.02.28 UDS 진단 통신으로 하는 소프트웨어 업데이트 4 - 소프트웨어 전송 (계속) (0) 2025.02.28