본문 바로가기
자동차 임베디드 SW/CAN통신 & LIN통신

UDS 진단통신 TP에 대하여(작성중)

by 존버매니아.임베디드 개발자 2023. 2. 22.
반응형

ISO 15765-2 - Wikipedia
위키 설명이 젤 나은듯
 
https://m.blog.naver.com/PostView.naver?blogId=suresofttech&logNo=222850407600&proxyReferer=
참고 설명

TP는 트랜스포트 레이어 프로토콜 약자

UDS 통신(ISO-14229)에서 정의하는 서비스들 중에서 필요한 데이터의 총 길이가 8바이트를 초과하는 경우가 있다.

Standard CAN 을 쓸 경우 메세지 하나의 최대 길이가 8Byte이다.
그런데 만약 UDS에서 보내려는 메세지 포맷의 길이가 10byte라면 어떻게 해야할까?

이런 문제를 해결하기 위해 사용하는 프로토콜이 TP 이다.
(Transport Layer Protocol)
이때 UDS 통신에서 사용하는 tp 프로토콜이 ISO 15765-2 이다.

 

TP 프로토콜의 컨셉은, 보내려는 메세지를 "여러개의 메세지로 쪼개서 보내자" 이다.
예를 들어 UDS에서 총 10byte의 메세지를 보내고 싶다면, 8바이트 데이터를 먼저 보내고 남은 2바이트를 다음 메세지에 담아서 보내는 식이다.

 

그런데, 이 10byte의 메세지를 수신하는 측에서 생각해보자.
수신측에서는 처음에 8byte짜리 데이터를 수신 받을 것이다.
근데 수신자 입장에서는 그냥 8byte짜리 메세지 1개를 보낸건지.
아니면 송신자가 보내려는 내용이 총 10byte인데 그 중에 첫번째 8byte만 보낸건지 구분할 수 없다.

이런 문제를 해결하기 위해서, 만약 메세지를 쪼개서 보내는 거라면. 이 메세지는 쪼개서 보내는 메세지입니다~ 하고 수신자 측에 알려줄 필요가 있다.
TP 프로토콜에서는 데이터영역의 첫번째,두번째 바이트에 이런 정보를 담아서 수신자에게 정보를 전달해주는게 전반적인 컨셉이다.


TP에서는 캔 메세지를 4개의 타입으로 구분한다.
싱글 프레임, 퍼스트 프레임, consecutive 프레임,
flow control 프레임

참고로  flow control frame은 제어기가 응답할 때만 사용된다.

can data 영역의 첫번째 바이트상위 4bit를 보면 어떤 프레임인지 바로 구분이 가능하다.
0이면 싱글
1이면 first
2이면 consecutive
3이면 flow control 이다.


싱글프레임은. 송신측에서 보내려는 데이터의 길이가 7byte 이하일 때를 의미한다.
캔 메세지 길이는 최대 8byte인데 왜 7byte 이하일 때 싱글프레임을 사용하냐면 메세지 첫번째 영역에
이 메세지는 쪼개지지 않은 Single Frame 입니다. 라는 정보를 적어야되기 때문이다.

그리고 나머지 7byte 영역에 송신자가 원하는 데이터를 적으면 된다.

이게 싱글프레임 컨셉이다.

 

만약 메세지를 쪼개서 보내야하는 경우 (예를 들어 10byte를 보내는경우)

이 경우,  먼저 First Frame이라는 메세지를 보낸다. 이 때 First Frame 메세지에 담기는 송신자의 데이터는 6byte이다.
왜냐면 First Frame은 앞에 2byte를 TP 용 정보를 담는데 사용하기 때문이다.

First Frame의 의미는. 내가 지금 보내려는 데이터는 메세지 1개로 끝나지 않고, 메세지를 여러개로 쪼개서 보낼거야~
근데 그 중에 이게 첫번째 메세지야! 라고 알려주는 메세지이다.

 

수신자는 First Frame을 수신받으면, 이것을 제대로 수신 받았다고 송신자에게 알려줘야한다.

이 때 사용하는게 Flow Control 이라는 메세지다.
이 메세지에는 이런저런 정보들이 담겨있는데.. 일단 생략하고.

암튼 송신자는 First Frame을 송신한 후, Flow Control 메세지를 수신받고나서. 아 이제 수신자 측이 내 메세지 받을 준비가 됐구나~ 하고 나머지 메세지들을 송신하는데. 이 나머지 메세지들을 Consecutive Frame 이라고 부른다.

 

하나의 메세지로 커버 가능하면 아래와 같음 (Single Frame 하나 보내고 끝)

 

보내려는 메세지의 길이가 길어서 쪼개서 보내야하는 경우 아래와 같음

 

반응형