프로토콜을 설계할 때 주요한 요구사항 중 하나는 다른 전송 레이어들을 지원해야 한다는 것이다.
XCP on CAN, FlexRay, Ethernet, Sxl, USB 등의 레이어가 정의 되었다.
CAN
XCP는 CAN 캘리브레이션 프로토콜(CCP; CAN Calibration Protocol)의 후계 프로토콜로 개발되었으며, CAN 버스의 요구사항을 완전히 충족시키고 있다.
CAN 버스를 통한 통신은 관련 기술파일(DBC, ARXML-- autosar)에서 정의하고 있다.
CAN 메시지는 고유한 CAN 식별자로 식별한다.
통신 Metrics는 누가 어떤 메시지를 보냈으며, CAN 버스에서 8바이트가 어떻게 사용되었는가 와 같이 기술파일에 정의되어 있다.
0x12 메시지는 CAN 노드 A로 부터 발송되었으며, 버스상의 다른 노드는 이 메시지를 수신한다.
CAN 노드 C와 D는 이 메시지가 필요없다고 판단하고, 수신을 거절했다.
반면, CAN 노드 B는 상위 레이어에서 이 메시지가 필요하리라 판단하고 Rx 버퍼를 통해 보냈다.
0x12 메시지에 대해, CAN Node B에서 Rx 버퍼를 통해 내보낸 XCP 메시지는 통신 매트릭스에서 기술하지 않았다.
만약, 이 측정값이 슬레이브에서 동적인 DAQ 리스트를 통해 XCP의 도움을 받아 발신된 것이라면, 사용자가 선택한 신호에 따라 조립된다.
신호 선택이 변경되는 경우에는 메시지 내용도 마찬가지로 변경된다.
통신 메트릭스와 XCP 사이에는 관계가 있다.
CAN 식별자와, XCP 메시지를 CAN을 통해 전송해야 할 필요가 있다.
사용한 CAN 식별자 수를 최소화 하기 위해, XCP 통신은 2개의 CAN 식별자만 사용하도록 제한한다.
이 식별자는 정상적인 통신을 위해 DBC에서 사용할 수 없다. – (CAN 통신 정의파일)
마스터에서 슬레이브로 정보를 전송하는데 식별자 하나, 슬레이브에서 마스터로 응답을 보낼 때 식별자 하나를 사용한다.
CAN 버스는 메시지당 최대 8바이트를 전송한다.
XCP의 경우 사용한 명령어나, 발송한 응답에 대한 정보가 필요하다. 이 정보는 CAN 데이터의 첫 번째 바이트에 실리게 된다. – XCP Packet + Controll field for CAN(CAN 식별자?)
XCP on CAN에서 데이터를 전송할 때, CAN 메시지당 7바이트를 XCP Packet으로 사용할 수 있다는 뜻이다.
Ethernet
XCP on Ethernet은 TCP/IP나 UDP/IP와 함꼐 사용할 수 있다.
TCP는 Ethernet에서 사용하는 보호된 전송 프로토콜로 Handshake 방식은 패킷 손실을 탐지하는데 사용된다.
패킷 손실이 탐지된 경우. TCP는 패킷을 반복적으로 전송한다.
UDP는 보호 매커니즘을 제공하지 않는다. 패킷 손실이 발생한 경우, UDP는 프로토콜 차원에서 손실된 패킷을 반복적으로 보내는 메커니즘을 제공하지 않는다.
XCP on Ethernet은 실제 ECU에서 사용할 수 있을 뿐 아니라, 가상 ECU의 측정/캘리브레이션 용으로도 사용할 수 있다.
여기서 가상 ECU란, ECU에서 구동되는 코드를 PC 상의 실행 프로그램(e.g., DLL)으로 실행할 수 있도록 한 것이다.
이 경우, ECU와는 전혀 다른 자원을 사용하게 된다.(CPU, Memroy 등)
하나의 IP Packet은 항상 발신자와 수신자 정보를 포함한다. 고유한 주소는 IP 주소와 포트번호로 구성된다.
Header는 Intel 포멧(4Byte)의 2단어로 된 제어필드로 구성된다.
LEN(길이)와 CTR(카운터)를 담고 있다.
LEN은 XCP 패킷 내의 바이트 수를 나타낸다.
CTR은 패킷 손실을 탐지하는데 사용된다. – 송신자와 수신자의 Counter가 맞아야 한다. – Master와 Slave에는 독립적인 Counter가 존재하며, 패킷을 보낼 때 마다 카운터 수를 늘린다.
Master가 counter 1로 메시지를 전송하면, Slave는 메시지에 counter 1로 응답한다.
UDP/IP는 측정값을 전송하는데 적합하다.
패킷이 하나 손실되는 경우, 그 패킷을 포함한 측정값이 손실되어 측정에 차이가 생기게 된다.
이런 손실이 가끔 발생하는 경우 무시할 수 있으나, 측정 데이터를 고속제어용으로 사용하는 경우 TCP/IP 사용을 권고한다.
Reference
Andreas Patzer, Rainer Zaiser, XCP-ECU 개발을 위한 표준 프로토콜 - 프로토콜 기초와 응용분야 (Vector, 2014)
'기타 > XCP (파라미터 측정 및 캘리브레이션)' 카테고리의 다른 글
08. ECU 기술파일 - a2l (0) | 2022.01.04 |
---|---|
07. XCP 서비스 (0) | 2022.01.04 |
05. DTO 교환 - 동기화 데이터 교환 (0) | 2022.01.04 |
04. CTO 교환 (0) | 2022.01.03 |
03. XCP 프로토콜 레이어 (1) | 2022.01.02 |