카테고리 없음

[CAN] CAN 통신 프로젝트 준비

CAN 프로젝트 2026. 4. 5. 12:33

 1.  프로젝트 배경

최근 자동차 산업은 단순한 기계 중심 구조에서 벗어나 소프트웨어 중심의 SDV(Software Defined Vehicle) 형태로 빠르게 변화하고 있다.

이러한 변화 속에서 차량 내부의 다양한 ECU(Electronic Control Unit) 간 통신을 담당하는 CAN 통신은 여전히 핵심적인 역할을 수행하고 있다.

본 프로젝트에서는 CAN 통신을 직접 구현하고 분석함으로써, 자동차 소프트웨어의 기초 구조를 이해하는 것을 목표로 한다.


2.  프로젝트 목표

  • 개념적 목표 : Controller Area Network(CAN) 통신 구조 및 동작 원리를 이해한다.
  • SW 개발 역량 목표 : Linux 기반 환경에서 C++을 활용하여 CAN 데이터를 수신·처리하는 응용 소프트웨어를 구현한다.
  • HW 설계 역량 목표 : CAN 통신의 신뢰성을 확보하기 위한 하드웨어 인터페이스 및 주변 회로를 설계한다.

3.  프로젝트 개요

본 프로젝트는 차량 내부 네트워크에서 사용되는 CAN 통신을 기반으로,
차량 데이터를 송수신하고 이를 분석하는 소프트웨어를 구현하는 것을 목표로 한다.

특히 Linux의 SocketCAN 환경을 활용하여 실제 차량 통신 구조와 유사한 환경을 구성하고,
C++ 기반으로 데이터 처리 로직을 설계한다.


4.  전체 시스템 구조

본 프로젝트의 전체 구조는 다음과 같다.

[CAN 데이터 생성기] → [CAN 버스] → [C++ 수신 프로그램] → [데이터 분석 및 출력]

  • CAN 데이터 생성기: 차량 속도, RPM 등의 데이터를 생성
  • CAN 버스: 데이터 전달 (vcan 기반 가상 환경 사용)
  • C++ 수신 프로그램: CAN 메시지 수신 및 파싱
  • 데이터 분석: 사람이 이해할 수 있는 형태로 출력

5.  개발 방법론 (V-model 적용)

*제미나이가 이미지로 V-model을 설명해주는 자료

 

본 프로젝트는 차량업계에서 많이 사용하는 V-model 기반 개발 프로세스를 참고하여, 요구사항 정의부터 구현 및 검증 단계까지 체계적으로 진행하고자한다.

V-model 구조는 다음과 같이 구성된다. "요구사항 정의 → 시스템 설계 → 상세 설계 → 구현 → 단위 테스트 → 통합 테스트"

 

이를 본 프로젝트에 적용하면 다음과 같다.

  • 요구사항 정의: 차량 내 ECU 간 CAN 통신을 통해 속도 및 엔진 데이터를 실시간으로 송수신하고 이를 안정적으로 처리하는 시스템을 개발한다.
  • 시스템 설계: 전체 데이터 흐름 및 구조 설계
  • 상세 설계:
    1. HW 상세설계 : 회로도, 인터페이스 pinmap
    2. SW 상세설계 : CAN ID 및 데이터 포맷 정의
  • 구현: C++ 기반 CAN 수신 프로그램 개발
  • 단위 테스트: CAN 메시지 송수신 검증
  • 통합 테스트: 전체 시스템 동작 검증

6.  향후 진행 계획

본 프로젝트는 다음과 같은 순서로 진행할 예정이다.

  1. CAN 통신 이론 정리
  2. 시스템 아키텍처 설계
  3. Linux CAN 환경 구축 (SocketCAN)
  4. C++ 기반 CAN 수신 프로그램 구현
  5. 프로그램 탑재 환경 설계(PC or MCU, FPGA 등)
  6. 테스트 및 결과 분석

7.  기대 효과

본 프로젝트를 통해 다음과 같은 역량을 확보할 수 있을 것으로 기대한다.

  • 자동차 네트워크(CAN)에 대한 이해
  • 임베디드 Linux 환경에서의 개발 경험
  • C++ 기반 데이터 처리 및 시스템 설계 능력
  • 실제 자동차 소프트웨어 개발 프로세스(V-model)에 대한 이해

📌  마무리

이번 프로젝트는 단순한 통신 구현을 넘어서,
자동차 소프트웨어 개발 흐름을 직접 경험하는 것을 목표로 한다.

 

다음 글에서는 CAN 통신의 기본 개념과 구조에 대해 정리할 예정이다.