Table of contents
네트워크 및 통신을 통해, 데이터를 주고 받기 위해서는 패킷의 구조가 정해져 있어야 합니다.
XCP 역시, 다른 프로토콜들과 마찬가지로 패킷이 아래와 같이 분류되어 있습니다.
상위 분류 | 내용 | 하위 분류 |
CTO(Command Transfer Object) | 명령어 교환 | CMD(Command Packet) RES(Command Response Packet) ERR(Error) EV(Event Packet) SERV(Service Request Packet) |
DTO(Data Transfer Object) | 데이터 교환 | DAQ(Data AcQuisition) STIM(Stimulation) |
하위 분류 | 내용 | 상위 분류 |
CMD(Command Packet) | 명령어 전송 | CTO(Command Transfer Object) |
RES(Command Response Packet) | 긍정적 응답 | CTO(Command Transfer Object) |
ERR(Error) | 부정적 응답 | CTO(Command Transfer Object) |
EV(Event Packet) | 비동기 이벤트 | CTO(Command Transfer Object) |
SERV(Service Request Packet) | 서비스 요청 | CTO(Command Transfer Object) |
DAQ(Data AcQuisition) | 주기적인 측정값 전송 | DTO(Data Transfer Object) |
STIM(Stimulation) | 슬레이브의 주기적인 신호 인가 | DTO(Data Transfer Object) |
하위 분류 이후에도, 세부 내용이 데이터의 성격에 따라 조금씩 다른 부분이 있습니다.
# 이 내용은 Vector사의 Referencebook이나 ASAM의 XCP 문서를 참조하는 것이 좋습니다.
XCP Packet 기본 구조
XCP는 Packet의 기본 구조를 다음과 같이 정의하고 있습니다.
TCP 및 UDP 관점에서 보면, XCP 패킷의 구조는 아래와 유사합니다.
보시는 것처럼 XCP on Ethernet에서는 Tail을 활용하지 않는 것을 원칙으로 하죠.
결국, XCP on Ethernet만의 패킷의 기본 구조를 보면 아래와 같습니다.
하지만, 이 구조는 설정에 따라 다르고, CTO 패킷보다는 DTO 패킷의 설명이라고 보는 것이 이해하기에 좋습니다.
각, 영역에 대한 설명은 다음과 같습니다.
분류 | 바이트 | 내용 |
LEN | 2 | XCP 패킷의 길이를 의미 Byte Order : Intel / Little Endian 예) - 0x0200 = 2Byte - CTR 영역 이후로 총 2Byte |
CTR(Counter) | 2 | 패킷을 보낼때마다 증가하는 카운터 패킷 손실을 감지하기 위해 활용 |
PID(Packet Identifier) | 1 | 패킷의 식별자 하기의 그림 참조 |
FILL | 0, 1 | alignement를 위해 활용 Padding과 동일한 역할 |
DAQ | 0, 1, 2 | 절대 DAQ List의 값 |
TIME STAMP | 0, 1, 2, 4 | 측정된 시간 값 |
DATA | N | 측정된 데이터 |
# PID 활용 범위
CTO 패킷 구조와 DTO 패킷 구조 예
CTO 패킷 구조 예
위의 좌측 그림은 XCP Master가 XCP Slave에게 보내는 CTO 패킷입니다.
CTO 내에서도 CMD라는 패킷이고, PID가 0xFF이므로 CONNECT 를 의미합니다.
우측 그림은 XCP Slave가 Master에게 보내는 CTO 패킷이고, 그 중에서도 RES를 의미합니다.
여기서 주의해야할 점은 송신자가 Master인지, Slave인지 먼저 구분되고
PID에 따라 패킷의 의미가 달라지는 점입니다.
위의 두 패킷을 구분하기 위해서는 'PID' 영역의 값을 보고 판단해야하는데 둘다 모두 0xFF입니다.
하지만, 송신자가 Master냐 Slave냐에 따라, CMD 패킷이 되기도 하고 RES 패킷으로 구분되죠.
#좀 더 자세한 내용은 Vector사의 Reference와 ASAM 문서를 통해 확인할 수 있습니다.
DTO 패킷 구조 예
DTO 패킷의 구조를 살펴보겠습니다.
FILL, DAQ, TIME STAMP 영역을 활용할 수도 있지만, DTO 패킷 구조의 종류 중 하나인 것이고 위와 같이 간단하게 구성할 수도 있습니다.
DTO 패킷 구조의 종류는 아래에서 다시 정리하고, 일단 가볍게 정리해보겠습니다.
먼저, LEN과 CTR은 XCP 헤더로 분류됩니다.
LEN과 CTR은 각각 2바이트이며, 패킷의 길이와 카운터를 의미하죠.
LEN은 XCP 전체 길이를 의미하는 것이 아니고, XCP 패킷의 길이를 의미합니다.
XCP 패킷은 CTR 이후부터를 지칭하고, 아래 그림 기준으로 PID와 DATA 영역이 되겠네요.
DTO 패킷 구조의 종류
위에서 DTO 패킷 중 가장 기본적인 구조를 정리했습니다.
그리고 이번에는 기본적인 것 외의 DTO 패킷을 살펴보겠습니다.
DTO패킷은 대표적으로 4가지로 구분되는데, ID(Identification Field), TS(Timestamp Field) 영역에서 차이가 있습니다.
각 영역이 의미하는 바가 있는데, PID의 경우 조금 특이하게 종류에 따라 의미하는 내용이 달라집니다.
PID 영역은 뒤에 DAQ 영역의 유무에 따라, 절대적인 ODT 번호를 의미하거나 상대적인 ODT 번호를 의미합니다.
DAQ은 절대적인 DAQ 리스트 번호를 의미합니다.
TS는 Time stamp의 약어이며, 말 그대로 시간을 의미합니다.
'데이터통신/네트워크 > XCP' 카테고리의 다른 글
XCP on Ethernet : 기능(PGM, CAL, DAQ, STIM) (0) | 2022.07.06 |
---|---|
XCP on Ethernet : Network Architecture (0) | 2022.06.29 |
XCP on Ethernet(TCP/IP) 연결 과정 요약 (0) | 2021.12.28 |
XCP on Ethernet(TCP/IP) 데이터 통신 시스템 구조 이해 (0) | 2021.12.28 |
XCP 및 XCP on Ethernet 관련 사이트 정리 (0) | 2021.12.28 |