ISO 15765-2는 도로 차량에서 CAN(Controller Area Network)을 통한 진단 통신(DoCAN)의 전송 프로토콜 및 네트워크 계층 서비스에 대한 표준이다. 이 표준은 단일 프레임, 첫 번째 프레임, 연속 프레임, 흐름 제어 프레임의 네 가지 프레임 유형을 정의하여 CAN 네트워크를 통해 데이터를 전송한다. 흐름 제어 프레임은 분할된 전송에서 수신 측의 전송 승인을 확인하고, 연속 프레임 간 간격 및 전송 가능한 연속 프레임 수를 지정한다.
2. 프로토콜 제어 정보 (PCI) 필드 유형
ISO-TP 프로토콜은 데이터 전송을 위해 프로토콜 제어 정보(Protocol Control Information, PCI)를 사용하며, 이는 CAN 메시지의 데이터 필드 앞부분에 위치한다. PCI는 전송되는 데이터의 종류와 상태를 나타내며, 크게 네 가지 프레임 유형으로 구분된다. 각 프레임 유형은 고유한 코드 값을 가지며, 메시지의 길이나 전송 상태에 따라 적절한 프레임 유형이 사용된다.
유형
코드
설명
단일 프레임(SF)
0
최대 7바이트(일반 주소 지정) 또는 6바이트(확장 주소 지정)의 짧은 메시지를 한 번에 전송할 때 사용된다. PCI에는 프레임 유형과 데이터 길이(SF_DL)가 포함된다.
첫 번째 프레임(FF)
1
7바이트(또는 6바이트)를 초과하는 긴 메시지를 여러 프레임으로 나누어 보낼 때, 그 시작을 알리는 프레임이다. PCI에는 프레임 유형과 전체 메시지 길이(FF_DL)가 포함된다.
연속 프레임(CF)
2
첫 번째 프레임(FF) 이후, 분할된 메시지의 나머지 데이터 조각들을 전송하는 데 사용된다. PCI에는 프레임 유형과 순서 번호(Sequence Number, SN)가 포함된다.
흐름 제어 프레임(FC)
3
긴 메시지를 수신하는 측에서 송신 측으로 보내는 응답 프레임이다. 연속 프레임(CF)의 전송 속도와 양을 조절하는 정보를 담고 있다.
예약됨
4..15
현재 사용되지 않고 예약된 코드 값이다.
각 프레임 유형별 PCI 필드의 구조는 다음과 같다. PCI 필드는 CAN 데이터 필드의 첫 번째 또는 첫 두 바이트(FF의 경우)를 차지한다.
CAN-TP 헤더 PCI 필드 구조
프레임 유형
비트 오프셋 7..4 (바이트 0)
비트 오프셋 3..0 (바이트 0)
비트 오프셋 15..8 (바이트 1)
비트 오프셋 23..16 (바이트 2)
이후 바이트
단일 프레임 (SF)
0 (유형=SF)
데이터 길이 (0~7)
데이터 A
데이터 B
데이터 ...
첫 번째 프레임 (FF)
colspan="2" | 전체 메시지 길이 (8~4095)
데이터 A
데이터 B ...
연속 프레임 (CF)
2 (유형=CF)
순서 번호 (0~15)
데이터 A
데이터 B
데이터 ...
흐름 제어 프레임 (FC)
3 (유형=FC)
흐름 상태 (0,1,2)
블록 크기 (BS)
분리 시간 (ST)
(데이터 없음)
단일 프레임(SF): 첫 4비트는 유형(0), 다음 4비트는 페이로드 길이(0~7)를 나타낸다.
첫 번째 프레임(FF): 첫 4비트는 유형(1), 다음 12비트(나머지 4비트 + 다음 바이트 8비트)는 전체 메시지 길이(8~4095)를 나타낸다.
연속 프레임(CF): 첫 4비트는 유형(2), 다음 4비트는 1부터 시작하여 15 다음 0으로 순환하는 순서 번호(Sequence Number)를 나타낸다.
흐름 제어 프레임(FC): 첫 4비트는 유형(3), 다음 4비트는 흐름 상태(FS: 0=전송 계속, 1=대기, 2=오버플로)를 나타낸다. 다음 바이트는 블록 크기(BS), 그 다음 바이트는 분리 시간(ST)을 나타낸다.
CAN FD 환경에서는 더 큰 페이로드를 지원하기 위해 단일 프레임과 첫 번째 프레임의 PCI 구조가 일부 확장되었으나, 기존 ISO 15765-2와의 하위 호환성은 유지된다.
2. 1. 단일 프레임 (Single Frame, SF)
ISO-TP 프로토콜에서 정의하는 프레임 유형 중 하나이다. 단일 프레임(Single Frame, SF)은 전송할 사용자 데이터(페이로드)의 전체 크기가 CAN 버스 데이터 프레임 하나에 모두 담길 수 있을 만큼 작을 때 사용된다. 구체적으로는 최대 7바이트(일반 주소 지정 방식) 또는 6바이트(확장 주소 지정 방식)의 페이로드를 한 번에 전송할 수 있다.
단일 프레임의 프로토콜 제어 정보(Protocol Control Information, PCI)는 1바이트로 구성된다. 첫 4비트는 프레임 유형을 나타내며, 단일 프레임의 경우 이 값은 0이다. 나머지 4비트는 전송되는 페이로드의 실제 길이(1~7바이트)를 나타낸다 (SF_DL).
단일 프레임(SF) CAN-TP 헤더 구조
비트 오프셋
7 .. 4 (바이트 0)
3 .. 0 (바이트 0)
15 .. 8 (바이트 1)
23..16 (바이트 2)
....
단일 프레임 (SF)
0 (유형 = SF)
크기 (0..7 바이트)
데이터 바이트 1
데이터 바이트 2
데이터 바이트 ...
7바이트 이하의 짧은 메시지를 보낼 때 이 단일 프레임 형식을 사용한다. 첫 번째 바이트의 상위 4비트(유형 필드)가 0이기 때문에, 때로는 단순히 '길이-데이터' 형식으로 이루어진 더 간단한 프로토콜로 잘못 해석되기도 한다. 데이터 길이가 7바이트(또는 확장 주소 지정 시 6바이트)를 초과하는 경우에는 첫 번째 프레임(FF)과 연속 프레임(CF)을 이용한 분할 전송 방식이 사용된다.
2. 2. 첫 번째 프레임 (First Frame, FF)
(PCI 바이트 제외)
바이트 1
7 .. 0
메시지 길이 (하위 8비트)
바이트 2 ~
데이터 A, 데이터 B, ...
메시지의 첫 부분 데이터
위 표에서 볼 수 있듯이, PCI의 첫 4비트는 프레임 유형을 나타내며 FF의 경우 값은 '1'이다. 이어지는 12비트는 전체 메시지의 길이를 바이트 단위로 나타낸다(FF_DL). 이 길이는 PCI 자체를 제외한 순수 데이터의 길이이며, 최대 4095바이트까지 표현할 수 있다. 다만 실제 애플리케이션에서는 수신 측의 버퍼 크기나 하드웨어 제약 등으로 인해 이보다 작은 값으로 제한되는 경우가 많다. PCI 필드 다음에는 분할된 메시지의 첫 번째 데이터 조각이 위치한다.
송신 측에서 FF를 보내면, 수신 측은 이를 확인하고 흐름 제어 프레임(FC)을 보내 응답한다. FC 프레임에는 이후 전송될 연속 프레임(CF)들의 전송 간격이나 한 번에 받을 수 있는 CF의 개수(블록 크기) 등의 제어 정보가 담겨 있다.
CAN FD 환경에서는 더 큰 데이터 전송을 지원하기 위해 FF의 길이 필드가 확장되었지만, 기존 ISO 15765와의 하위 호환성은 유지된다.
2. 3. 연속 프레임 (Consecutive Frame, CF)
연속 프레임(Consecutive Frame, CF)은 ISO 15765-2 프로토콜에서 여러 프레임으로 나누어 보내야 하는 긴 메시지의 두 번째 이후 데이터 조각들을 전송하는 데 사용된다. 첫 번째 프레임(FF)이 전송된 후, 수신 측의 흐름 제어 프레임(FC) 지시에 따라 송신 측에서 연속 프레임들을 보내 메시지의 나머지 부분을 전달한다.
각 연속 프레임은 1바이트 크기의 PCI(Protocol Control Information) 헤더를 가진다. 이 헤더의 구조는 다음과 같다.
연속 프레임(CF) 헤더 구조 (첫 번째 바이트)
비트 위치
7 .. 4
3 .. 0
필드명
유형 (Type)
시퀀스 번호 (Sequence Number, SN)
값
2
0 ~ 15
유형 (Type): 상위 4비트는 프레임 유형을 나타내며, 연속 프레임의 경우 항상 2로 설정된다.
시퀀스 번호 (Sequence Number, SN): 하위 4비트는 시퀀스 번호를 나타낸다. 이 번호는 첫 번째 연속 프레임에서 1부터 시작하여 연속 프레임이 전송될 때마다 1씩 증가한다 (1, 2, 3, ..., 15). 15 다음에는 다시 0으로 돌아가 순환한다 (0, 1, 2, ...).
이 시퀀스 번호는 수신 측에서 메시지 조각들이 순서대로 도착했는지, 중간에 누락된 프레임은 없는지 확인하는 데 사용된다. 첫 번째 프레임(FF)에 포함된 데이터 이후의 첫 번째 연속 프레임(CF)은 시퀀스 번호 1을 가진다.
FC 헤더의 첫 바이트는 유형(3)과 흐름 상태(FS) 플래그(0=계속 전송, 1=대기, 2=오버플로/중단)를 포함한다. 두 번째 바이트는 블록 크기(BS)로, 다음 FC 프레임을 기다리기 전에 송신 측이 보낼 수 있는 연속 프레임(CF)의 수를 지정한다. BS 값이 0이면, 송신 측은 나머지 모든 CF를 흐름 제어 없이 연속으로 보낼 수 있다. 세 번째 바이트는 분리 시간(ST)으로, 연속된 CF 프레임 사이의 최소 시간 간격을 나타낸다. ST 값이 0x00부터 0x7F까지는 밀리초(0~127ms) 단위의 시간 간격을 의미하고, 0xF1부터 0xF9까지는 마이크로초(100~900µs) 단위의 더 짧은 시간 간격을 지정한다. ST는 한 프레임의 전송 종료 시점부터 다음 프레임의 전송 시작 시점까지의 최소 시간을 정의한다.
송신 측은 메시지의 나머지 부분을 연속 프레임(CF)을 사용하여 전송한다. 각 CF는 1바이트 헤더(PCI)를 가지며, 상위 4비트는 유형(2)을, 하위 4비트는 시퀀스 번호(SN) 또는 인덱스를 나타낸다. 시퀀스 번호는 첫 번째 CF에서 1로 시작하여 전송되는 CF마다 1씩 증가하며, 15 다음에는 다시 0으로 순환한다(1, 2, ..., 15, 0, 1, ...). 이 번호를 통해 수신 측은 프레임 손실이나 순서 오류를 감지할 수 있다.
FF의 12비트 길이 필드는 이론적으로 최대 4095바이트의 사용자 데이터를 분할 메시지로 전송할 수 있게 하지만, 실제로는 수신 측의 버퍼 크기나 하드웨어 제약 등으로 인해 애플리케이션별 제한이 더 낮게 설정되는 경우가 많다.
CAN FD의 경우, ISO 15765-2 프로토콜은 더 큰 데이터 크기를 지원하도록 확장되었지만, 기존 ISO 15765와의 역호환성은 유지된다.
4. 타이밍 파라미터
ISO 15765-2 표준에서는 통신 과정을 제어하기 위해 여러 타이밍 파라미터를 정의한다. 대표적인 예로 P1 타이머와 P2 타이머 등이 있다.
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.