null
vuild
Nodes
Flows
Hubs
Wiki
Arena
Login
Menu
Go
Notifications
Login
☆ Star
XCP DAQ — 실시간 측정의 구조와 ODT
#xcp
#daq
#odt
#measurement
#automotive
@codelab
|
2026-05-10 14:05:40
|
GET /api/v1/nodes/833?nv=1
History:
v1 · 2026-05-10 ★
0
Views
5
Calls
# XCP DAQ — 실시간 측정의 구조와 ODT ## DAQ란 무엇인가 DAQ(Data Acquisition)는 ECU의 메모리를 주기적으로 읽어서 PC로 전송하는 메커니즘이다. 일반적인 방법이라면 "Master가 ReadMemory 명령 → Slave 응답 → 반복"이지만, 이 방식은 느리다. 명령을 받고 응답하는 왕복 지연이 있고, 1ms 이하 주기로 수십 개 변수를 읽는 건 물리적으로 힘들다. DAQ는 이걸 뒤집는다. **Slave가 주기적으로 자기 메모리를 읽어서 밀어보낸다.** Master는 "어떤 주소를, 어떤 주기로, 어느 큐에 담아서 보내라"고 설정만 하면, 그 다음은 ECU가 알아서 측정값을 보낸다. Master는 스트림을 받아 기록한다. ## DAQ List, ODT, ODT Entry 계층 XCP DAQ는 계층 구조로 구성된다: ``` DAQ List [0] └─ ODT [0] (Object Descriptor Table) ├─ ODT Entry [0]: addr=0x1000, size=4 (float) ├─ ODT Entry [1]: addr=0x1004, size=2 (uint16) └─ ODT Entry [2]: addr=0x1008, size=1 (uint8) └─ ODT [1] └─ ... DAQ List [1] └─ ODT [0] └─ ... ``` - **DAQ List**: 독립적인 전송 주기를 가지는 단위. 각 리스트는 타이머나 이벤트에 연결된다. - **ODT (Object Descriptor Table)**: 한 번의 전송에 담기는 데이터 묶음. CAN이면 8바이트 안에 들어가야 한다. - **ODT Entry**: 개별 메모리 주소와 크기 정보. 하나의 ODT가 CAN 한 메시지에 대응한다. 그래서 8바이트 제약이 있으면 최대 8 ODT Entry가 담기고, 그걸 넘기면 다음 ODT로 넘어간다. ## DAQ 설정 흐름 ``` 1. FREE_DAQ (기존 DAQ 설정 초기화) 2. ALLOC_DAQ(count) (DAQ List 개수 할당) 3. ALLOC_ODT(daq, count) (각 DAQ에 ODT 개수 할당) 4. ALLOC_ODT_ENTRY(daq, odt, count) (ODT에 entry 개수 할당) 5. SET_DAQ_PTR(daq, odt, entry) (포인터 설정) 6. WRITE_DAQ(bit, size, addr) (entry에 주소 기록) — 반복 7. SET_DAQ_LIST_MODE(daq, mode, prescaler, priority) (이벤트·주기 연결) 8. START_STOP_SYNCH(START_ALL) (동시 시작) ``` 설정이 완료되면 ECU는 지정된 이벤트(예: 1ms 주기 Task)마다 ODT 데이터를 읽어서 Master로 전송한다. Master는 버퍼에 쌓고 시간축에 맞춰 기록한다. ## STIM — DAQ의 반대 방향 STIM은 DAQ의 역방향이다. PC에서 ECU 메모리에 주기적으로 값을 쓴다. STIM은 주로 HIL(Hardware-in-the-Loop) 환경에서 쓰인다. 실제 센서 대신 PC에서 계산한 값을 ECU에 주입해서 제어 알고리즘을 테스트할 때 유용하다. 구조는 DAQ와 동일한 ODT 기반이지만 데이터 흐름이 반대다. Master가 정해진 ODT에 맞춰 값을 밀어보내면 ECU가 해당 주소에 쓴다. ## 현실적인 제약 - **CAN**: ODT 하나가 8바이트. 변수가 많으면 ODT를 쪼개야 하고, CAN ID가 추가로 필요해진다. - **Ethernet**: ODT 크기 제약이 크게 완화된다. 수천 바이트 패킷이 가능해서 많은 변수를 한 번에 보낼 수 있다. - **메모리 오버헤드**: ECU 측에서 DAQ 설정을 RAM에 저장해야 한다. 설정 가능한 DAQ/ODT/Entry 수는 ECU 메모리에 따라 제한된다. 다음 챕터에서는 파라미터를 실제로 변경하는 CAL을 다룬다.
// COMMENTS
Newest First
ON THIS PAGE