네트워크 통신에서 데이터를 주고받으려면 패킷 구조를 먼저 정해야 한다. XCP도 목적에 따라 CTO(Command Transfer Object)와 DTO(Data Transfer Object)로 패킷을 나눈다.

| 상위 분류 | 역할 | 하위 분류 |
|---|---|---|
| CTO | 명령 교환 | CMD, RES, ERR, EV, SERV |
| DTO | 데이터 교환 | DAQ, STIM |
CTO는 명령과 응답을 전달하고, DTO는 측정값이나 자극 데이터를 전달한다. 하위 패킷의 세부 형식은 데이터 성격과 설정에 따라 달라지므로 ASAM XCP 문서와 사용 중인 도구의 레퍼런스를 함께 확인한다.
XCP on Ethernet 기본 구조

TCP 또는 UDP 위에서 XCP를 쓸 때는 보통 XCP 헤더 뒤에 XCP 패킷이 이어진다. XCP on Ethernet은 Tail을 별도로 사용하지 않는 구조를 기본으로 본다.

| 영역 | 크기 | 설명 |
|---|---|---|
| LEN | 2 Byte | CTR 이후 XCP 패킷 길이, Little Endian |
| CTR | 2 Byte | 송신마다 증가하는 카운터, 손실 감지에 사용 |
| PID | 1 Byte | 패킷 식별자 |
| FILL | 0 또는 1 Byte | 정렬을 위한 Padding |
| DAQ | 0, 1, 2 Byte | DAQ List 식별값 |
| TIME STAMP | 0, 1, 2, 4 Byte | 측정 시간 값 |
| DATA | N Byte | 측정 또는 제어 데이터 |

CTO 패킷 예

Master에서 Slave로 보내는 CTO는 CMD가 될 수 있고, Slave에서 Master로 보내는 CTO는 RES가 될 수 있다. 두 패킷의 PID가 같아도 송신 방향에 따라 의미가 달라질 수 있으므로, 패킷을 볼 때는 먼저 송신자를 구분한다.
DTO 패킷 예

DTO에서는 LEN과 CTR이 XCP 헤더가 되고, 그 뒤의 PID와 DATA가 실제 XCP 패킷을 이룬다. LEN은 전체 Ethernet 프레임 길이가 아니라 CTR 이후의 XCP 패킷 길이를 뜻한다.

DTO 패킷 종류

DTO는 Identification Field와 Timestamp Field 구성에 따라 여러 형태로 나뉜다. PID는 뒤에 DAQ 영역이 있는지에 따라 상대 또는 절대 ODT 번호를 뜻할 수 있고, DAQ는 절대 DAQ List 번호를 뜻한다.

패킷 구조를 해석할 때는 PID 값만 보지 말고 송신 방향, CTO 또는 DTO 구분, DAQ와 Timestamp 필드 유무를 함께 확인한다.
댓글을 불러오고 있습니다.