앤디 블로그
  • 모두
  • 아키텍처
  • 기술
  • 자바
  • 스프링
  • 인프라
  • 카프카
  • 데이터베이스
  • 컨퍼런스
  • 개발 문화
책
짧은 글
  • 모두
  • ISOBUS
이력서
  • 모두
  • 아키텍처
  • 기술
  • 자바
  • 스프링
  • 인프라
  • 카프카
  • 데이터베이스
  • 컨퍼런스
  • 개발 문화
책
짧은 글
  • 모두
  • ISOBUS
이력서
  • 통신과 CAN 기초

    • 소개
    • CH1. 통신의 기초
    • CH2. CAN 통신 입문
      • 1. CAN이란
      • 2. CAN을 쓰는 곳
      • 3. CAN의 핵심 특징
        • 3.1 멀티마스터 (Multi-Master)
        • 3.2 메시지 기반 브로드캐스트
        • 3.3 우선순위 기반 중재 (CSMA/CD+AMP)
        • 3.4 높은 신뢰성 — 에러 검출 및 복구
      • 4. CAN vs 다른 통신 방식
      • 다음 챕터
    • CH3. CAN 물리 계층
    • CH4. CAN 데이터 프레임
    • CH5. CAN 중재와 우선순위
    • CH6. CAN 에러 처리
    • CH7. CAN FD
  • SAE J1939

    • CH8. J1939 입문
    • CH9. J1939 메시지 구조
    • CH10. J1939 주소 체계
    • CH11. J1939 Transport Protocol
  • ISOBUS (ISO 11783)

    • CH12. ISOBUS 개요
    • CH13. 네트워크 아키텍처
    • CH14. 네트워크 관리
  • Virtual Terminal (VT)

    • CH15. VT 기초
    • CH16. VT 오브젝트 풀
    • CH17. VT 명령어
  • Task Controller (TC)

    • CH18. TC 기초
    • CH19. TC 프로세스 데이터
    • CH20. TC DDOP
  • 심화 및 실습

    • CH21. 기타 기능
    • CH22. 종합 실습
  • 부록

    • 용어 사전
    • PGN/SPN 목록
    • DDI 목록
    • 트러블슈팅
    • 참고 자료

CAN 통신 입문

학습 목표

  • CAN의 탄생 배경과 ISO 11898 표준을 설명할 수 있다.
  • CAN이 사용되는 분야를 나열할 수 있다.
  • 멀티마스터, 메시지 기반 브로드캐스트, 중재(Arbitration) 개념을 이해한다.
  • CAN과 다른 통신 방식의 차이를 비교할 수 있다.

1. CAN이란

CAN(Controller Area Network)은 1986년 Bosch(보쉬)가 개발한 직렬 통신 프로토콜이다. 원래 자동차 내부의 여러 ECU를 적은 배선으로 연결하기 위해 설계되었다.

당시 자동차 전장 시스템이 복잡해지면서 배선 무게만 50~60kg에 달했다. Bosch는 이 문제를 해결하기 위해 2선 버스 하나로 모든 ECU를 연결하는 방식을 고안했다.

1991년 Mercedes-Benz S-Class에 처음 양산 적용되었고, 이후 ISO 11898로 국제 표준화되었다.

timeline
    title CAN 기술 발전사
    1986 : Bosch가 CAN 프로토콜 발표
    1991 : Mercedes-Benz S-Class에 최초 양산 적용
    1993 : ISO 11898로 국제 표준화
    2003 : J1939 기반 ISOBUS(ISO 11783) 완성
    2012 : Bosch가 CAN FD 규격 발표

CAN 표준 체계:

표준내용
ISO 11898-1데이터 링크 계층 (프레임 구조, 에러 처리)
ISO 11898-2고속 물리 계층 (최대 1 Mbps)
ISO 11898-3저속 내결함성 물리 계층 (최대 125 kbps)
ISO 11898-5저전력 모드 (슬립/웨이크업)

2. CAN을 쓰는 곳

CAN은 자동차에서 시작했지만, 지금은 훨씬 넓은 분야에서 사용된다.

mindmap
  root((CAN 적용 분야))
    자동차
      엔진 제어
      ABS 브레이크
      에어백 시스템
      전동 파워스티어링
      계기판
    농기계
      트랙터 ECU
      ISOBUS 작업기
      GPS 자동조향
      수확량 모니터
    산업기계
      PLC 제어
      로봇 관절 제어
      컨베이어 시스템
    의료장비
      수술 로봇
      영상 진단 장비
    선박
      엔진 모니터링
      항법 장비
    엘리베이터
      층별 제어기
      도어 제어

특히 ISOBUS(ISO 11783)는 CAN을 기반으로 농기계 전용으로 확장한 표준이다. 트랙터와 작업기(파종기, 방제기 등)가 브랜드가 달라도 서로 통신할 수 있다.


3. CAN의 핵심 특징

3.1 멀티마스터 (Multi-Master)

기존 통신 방식은 마스터(명령하는 쪽)가 슬레이브(응답하는 쪽)에게 일방적으로 요청하는 구조가 많다. CAN에서는 어떤 노드든 원할 때 메시지를 전송할 수 있다.

엔진 ECU도 먼저 보낼 수 있고, 브레이크 ECU도 먼저 보낼 수 있다. 단, 동시에 두 노드가 전송을 시도하면 중재(Arbitration) 과정을 통해 우선순위가 높은 메시지가 먼저 전송된다.

3.2 메시지 기반 브로드캐스트

CAN에서는 "누구에게 보낸다"는 수신자 주소가 없다. 대신 메시지 ID로 내용의 종류를 나타낸다.

예를 들어 ID 0x0CF004B4라면 "엔진 상태 정보"를 의미한다고 약속한다. 이 메시지가 버스에 올라오면 버스에 연결된 모든 노드가 받다. 각 노드는 자신이 필요한 ID만 골라서 처리한다.

sequenceDiagram
    participant 엔진ECU
    participant 버스
    participant 계기판ECU
    participant 변속기ECU
    participant ABS_ECU

    엔진ECU->>버스: ID=0x100, 데이터=RPM:2000
    버스->>계기판ECU: ID=0x100, 데이터=RPM:2000
    버스->>변속기ECU: ID=0x100, 데이터=RPM:2000
    버스->>ABS_ECU: ID=0x100, 데이터=RPM:2000

    Note over 계기판ECU: ID 0x100 필요! → RPM 표시
    Note over 변속기ECU: ID 0x100 필요! → 기어 결정
    Note over ABS_ECU: ID 0x100 불필요 → 무시

3.3 우선순위 기반 중재 (CSMA/CD+AMP)

CAN은 CSMA/CD+AMP 방식을 사용한다.

  • CSMA (Carrier Sense Multiple Access): 버스가 비어 있을 때만 전송 시작
  • CD (Collision Detection): 충돌 감지
  • AMP (Arbitration on Message Priority): 메시지 우선순위로 중재

두 노드가 동시에 전송을 시작하면, ID 값이 낮을수록 우선순위가 높다. ID를 비트 단위로 비교해 나가면서 먼저 Recessive(1)를 보낸 노드가 자동으로 물러난다.

노드A가 보내는 ID: 0 1 0 0 ...
노드B가 보내는 ID: 0 1 1 0 ...
                         ↑
                   이 비트에서 충돌
                   노드A(0=Dominant) 승리
                   노드B는 재전송 대기

충돌이 발생해도 전송 중인 메시지는 손상되지 않고 우선순위가 높은 메시지가 그대로 전송된다. 이것이 CAN 중재의 핵심이다.

3.4 높은 신뢰성 — 에러 검출 및 복구

CAN은 5가지 에러 검출 메커니즘을 내장한다.

에러 종류검출 방법
비트 에러전송하며 동시에 버스 읽기, 내가 보낸 값과 다르면 에러
스터프 에러같은 비트가 5개 연속이면 에러 (비트 스터핑 규칙 위반)
CRC 에러수신된 CRC가 계산값과 다르면 에러
형식 에러프레임 형식이 규격과 다르면 에러
ACK 에러수신자가 ACK를 보내지 않으면 에러

에러가 감지되면 에러 프레임을 전송해 버스에 알리고, 자동으로 재전송한다. 노드가 과도하게 에러를 일으키면 Bus-Off 상태로 전환되어 버스 보호도 된다.


4. CAN vs 다른 통신 방식

농기계와 자동차 분야에서 자주 언급되는 통신 방식들과 CAN을 비교한다.

항목CANRS-485LINFlexRayAutomotive Ethernet
표준ISO 11898EIA-485ISO 17987ISO 17458IEEE 802.3
최대 속도1 Mbps10 Mbps20 kbps10 Mbps100 Mbps ~ 1 Gbps
토폴로지선형 버스선형 버스단일 마스터 버스이중 채널 버스스타/링
배선 수2선2선1선4선2선(UTP)
마스터 구조멀티마스터멀티마스터단일마스터멀티마스터멀티마스터
실시간성높음중간낮음매우 높음높음(TSN)
비용낮음낮음매우 낮음높음중간
주요 용도ECU 제어, ISOBUS산업 자동화시트·미러·조명고안전 시스템ADAS, 인포테인먼트

선택 기준 요약:

  • 단순하고 저비용: LIN (창문, 좌석 등 저속 기능)
  • ECU 제어, 안정성: CAN (엔진, 브레이크, ISOBUS)
  • 고속 + 높은 안전성: FlexRay (전자식 파워트레인, X-by-wire)
  • 영상·대용량 데이터: Automotive Ethernet (카메라, 라이다)

현재 자동차 한 대에는 CAN, LIN, Automotive Ethernet이 모두 함께 사용된다. 농기계에서는 CAN 기반의 ISOBUS가 핵심 표준이다.


핵심 정리

  • CAN은 1986년 Bosch가 개발한 2선 직렬 통신 프로토콜로 ISO 11898로 표준화되었다.
  • 자동차, 농기계, 산업기계, 의료장비 등 폭넓게 사용된다.
  • 멀티마스터: 어떤 노드든 자유롭게 전송 가능.
  • 메시지 기반 브로드캐스트: 수신자 주소 없이 ID로 메시지 종류를 식별.
  • 중재(AMP): ID 값이 낮을수록 우선순위가 높고, 충돌 없이 고우선순위 메시지가 전송된다.
  • 5가지 에러 검출 메커니즘으로 높은 신뢰성을 보장한다.

다음 챕터

  • 다음 : CAN 물리 계층
Prev
통신의 기초
Next
CAN 물리 계층