본문 바로가기
카테고리 없음

[CANape]XCP on Ethernet 소개하기

by studyml 2025. 4. 29.
반응형

자동차 ECU 개발에 있어서 디버깅과 데이터 모니터링은 뗄 수 없는 필수 과정입니다. 하지만 전통적인 CAN 기반 모니터링 방식에는 한계가 분명히 존재합니다. 이 포스팅에서는 "XCP on Ethernet"이라는 기술이 왜 필요한지, 그리고 실제로 어떻게 실무에 적용되는지에 대해 쉽고 구체적으로 설명해보겠습니다.

 

XCP의 정의

 XCP는 "eXtended Calibration Protocol"의 약자입니다. 이름에서 알 수 있듯, ECU 메모리에 접근하여 데이터를 읽거나 수정하는 프로토콜입니다. 주로 데이터 모니터링과 파라미터 보정(Calibration)에 사용되며, 이는 제어 시스템의 품질을 확보하고, 다양한 조건에서 시스템이 제대로 동작하는지를 확인하는 데 필수적인 절차입니다. 쉽게 말하면 다음과 같습니다.

  • 모니터링(Monitoring): 현재 ECU 내 변수들의 값을 확인하는 것.
  • 캘리브레이션(Calibration): 변수의 값을 수정하여 시스템 반응을 실시간으로 조정하는 것.

CANape monitoring and calibration
CANape monitoring and calibration

 

 오해의 소지가 있습니다. XCP는 말그대로 프로토콜입니다. 다만 요즘 XCP 이야기만 나오면 모두들 CANape를 필수로 보고 있습니다만, 프로토콜만 맞으면 사용 가능한 부분이고, CANape는 사용자가 손쉽게 사용 하도록 만들어진 Tool의 종류로 보시면 됩니다. 

반응형

 

왜 모니터링이 중요한가?

 저는 차량 부품회사 제어 엔지니어 입니다. 가장 중요한 개발 환경이라 하면 저는 당연히 모니터링 환경을 1등으로 뽑을 듯 싶습니다. 자신이 설계한 ECU가 예상대로 동작하는지 확인하려면, 내부 상태(변수 값)를 볼 수 있어야 합니다. 예를 들어, PID 제어기의 P, I, D 출력값이 어떻게 변하는지를 보고 적절한 P 게인을 조정하는 것은 매우 기본적인 작업입니다. 이를 통해 시스템 튜닝을 손쉽게 하고, 개발 공수를 줄일 수 있기 때문입니다. 

 

Online Calibration의 중요성

 실제 개발 현장에서 모든 로직을 매번 수정하고 재컴파일하면 비효율적입니다. 그래서 개발자는 알고리즘을 변경하지 않고, 변수만 조정해 다양한 조건에 맞추는 방법을 선호합니다. 이때 사용하는 것이 Calibration 입니다. 예를 들면,  PID 제어기 사례를 들 수있습니다. 

  • P, I, D 게인은 calibration 대상
  • Pout, Iout, Dout은 모니터링 대상 변수

즉, 개발자는 코어 로직을 그대로 유지한 채, 어플리케이션 엔지니어가 적절한 파라미터를 찾아 튜닝하는 구조로 역할을 분담할 수 있습니다.

 

CAN 모니터링 방식의 한계점

XCP 방식이 들어오기 전에 가장 많이 사용하던 방식은 CAN을 통해 하나의 로거를 만들어 내부 데이터를 받는 형태가 가장 많았습니다. CAN 기반 모니터링을 할 경우 다음과 같은 문제점을 갖을 수 밖에 없습니다.

  • 전송 용량 한계: 1ms 주기로 2~3개 이상의 데이터를 올리기 어려움. 고속 데이터에는 완전히 부적합.
  • 추가 설정 필요: 별도 CAN 채널 생성, 전역 변수 설정, extern 변수 등 공수 증가.
  • 모니터링 제한: 8byte 내 제한 때문에 값의 정밀도(Resolution)를 낮추어야 함.
  • 동기화 이슈 : CAN은 비동기 특성으로 실제 발생된 신호의 주기에 대한 보장을 해 주지 않음

결국 많은 데이터를 보고 싶다면 CAN ID를 늘려야 하고, 데이터는 비트 연산을 통해 억지로 가공해야만 합니다. 이는 실질적으로 실시간 모니터링이라 보기 어렵고, 모니터링만을 위한 개발 공수가 추가로 발생 됩니다. 

 

XCP on Ethernet이 필요한 이유

 그렇다면 XCP를 사용하면 좋은 점은 어떤게 있을까요? 앞선 절에서 간단한 기능에 대해서만 말씀 드렸지만, 본격적인 장점에 대해서 기술했습니다. 

 

고속 데이터 전송 가능

  • 50μs 주기로도 수십 개 변수 모니터링 가능
  • CAN보다 수십~수백 배 빠른 전송 속도
  • 모터 제어, 인버터 제어 등 고주파 응답이 중요한 분야에서는 XCP on Ethernet이 사실상 필수

 특히 요즘 자동차는 모터를 기본으로 활용하며, 62.5~100μs 단위의 제어가 필요합니다. 1ms 수준의 CAN 모니터링으로는 신호 중 90% 이상을 놓치게 됩니다. 중간에 loop time이 빠지는 지 혹은 속도 계산 부분 이슈가 생겨도 모니터링 주기가 신호 생성 주기보다 느리면 답이 없습니다. 

디버깅 속도와 정확도 향상

  • 데이터 로깅을 통해 재현 불가능한 버그 추적 가능 및 재현 시뮬레이션 가능
  • ECU 내부의 tick counter, 인터페이스 지연, 스케줄링 문제 등을 가시적으로 확인 가능

T32와 같은 레지스터 디버거는 실시간성이 떨어지며, 파형을 "사진처럼"만 보여줍니다. 반면 CANape는 동영상처럼 데이터를 연속으로 저장하고 분석할 수 있어 디버깅 효율이 대폭 향상됩니다.

타 부서와 협업 용이

  • ECU 변수 전반을 공유할 수 있어, 이슈 발생 시 타 부서와의 협업이 매우 쉬움
  • 1회 측정으로 여러 부서가 같은 데이터를 기반으로 분석 가능
  • 재현이 어려운 버그도 데이터 저장으로 해결 가능

기존에는 데이터 부족으로 인해 반복 측정, 재현 시도, 타부서 요청 등이 이어지며 갈등이 생기기 쉬웠습니다. XCP on Ethernet은 이러한 낭비와 분쟁을 줄여줍니다. 실제 사례를 들면 어떤 응답 특성을 볼 때 기존 방식으로는 데이터 모니터링 변수의 한계로 이슈가 발생한 부서에서는 재 시험을 해야하는 경우가 많습니다. 사전에 데이터를 취득 한 경우에는 재시험 필요없이 바로 분석이 가능하기 때문에 개발 공수가 줄어 들 수있고, 이슈에 대한 명확한 제기가 가능합니다.

 

마무리

 개인적으로 부품 회사에 근무 중이지만, 사용하면서 괜찮았던 툴들을 정리하고자합니다. XCP 는 차량 R&D 분야에 있어서 필수적인 툴입니다. 다만, 언급은 못 드렸지만, 가격이 사악합니다.