포스트

CAN

CAN
  • 1. CAN 통신 개요
    • Controller Area Network
    • 1986년 Bosch에서 개발, ISO 표준
    • 여러 장치들이 하나의 버스라인에 연결되어 데이터를 주고 받는 프로토콜
      • 멀티마스터 직렬 통신 프로토콜
    • 자동차, 산업 자동화, 의료 기기 널리 사용
    • 1991년 Mercedes-Benz S-class model W140에 최초로 적용
      • 5개의 ECU가 CAN통신으로 연결
  • 2. CAN 통신 특징
    • 1) 멀티마스터 & 메시지 기반 통신
      • 멀티 마스터 방식 : 네트워크에 연결된 모든 노드가 송신/수신 가능
      • 메시지 기반 통신 : 특정 기기 주소가 아닌 메시지 ID를 기반으로 통신
    • 2) 차동 신호 방식 (Differential Signaling)
      • CANH, CANL 두 개의 신호선을 사용
      • 차동 신호(Differential Signal) 방식으로 데이터 전송
      • 외부 노이즈 영향 최소화
    • 3) 충돌 방지 (Arbitation)
      • 송신 노드가 동일한 메시지 ID를 전송하면 우선순위를 가진 메시지가 버스를 차지
    • 4) 오류 검출 및 복구
      • CRC (Cyclic Redundancy Check)
      • ACK (Acknowledge) 비트
      • Error Frame
  • 3. CAN 통신 구조
    • CAN 통신 계층
    • CAN Bus 상태 | 상태 | 설명 | | ————————— | ———————————- | | Dominant (지배 상태) | CANH=3.5V, CANL=1.5V (논리적 LOW) | | Recessive (비지배 상태) | CANH=2.5V, CANL=2.5V (논리적 HIGH) |

    • CAN Controller -> CAN Transeiver -> CAN Bus
    • CAN Transceiver
      • CAN Controller의 디지털 신호를 물리적인 CAN Bus 신호로 변환
      • 수신 신호를 디지털 신호로 변환하여 전달
    • CAN Controller
      • 묶어서 한 Frame으로 만듬
      • Pack, Unpack

단점 예측 불가능한 지연 우선순위 낮은 메시지 입장에서 얼마나 기다려야할지 알 수가 없다

이더넷은 실시간 x CAN은 실시간

실시간이란? dead line이내에 데이터 처리가 가능한가 (hard real time)


3. CAN 통신 구조

1) CAN 통신 계층

| 계층 | 설명 | | ————————————- | ———————————————– | | 물리 계층 (Physical Layer) | CANH, CANL 신호선 사용하여 차동 신호 전송 | | 데이터링크 계층 (Data Link Layer) | CAN 프레임 구조, 충돌 회피, 오류 검출/복구 수행 | | 전송 계층 (Transport Layer) | 고급 CAN 프로토콜 (CAN-FD, ISO 15765-4 등) 포함 | | 응용 계층 (Application Layer) | 상위 프로토콜 (J1939, OBD-II, CANopen 등) 적용 |

2) CAN Bus 상태

| 상태 | 설명 | | ————————— | ———————————- | | Dominant (지배 상태) | CANH=3.5V, CANL=1.5V (논리적 LOW) | | Recessive (비지배 상태) | CANH=2.5V, CANL=2.5V (논리적 HIGH) |


4. CAN 프레임 형식

CAN 데이터 프레임은 다음과 같은 구조를 가진다.

1) Standard CAN Frame (11-bit ID)

| 필드 | 길이 (비트) | 설명 | | ——————————— | ———– | ————————— | | SOF (Start of Frame) | 1 | 프레임 시작 | | Identifier (ID) | 11 | 메시지의 우선순위 결정 | | RTR (Remote Transmission Request) | 1 | 데이터 요청 여부 | | Control Field | 6 | DLC (Data Length Code) 포함 | | Data Field | 0~8바이트 | 전송 데이터 | | CRC Field | 15 + 1 | 오류 검출 코드 | | ACK Field | 1 + 1 | 수신 확인 응답 | | EOF (End of Frame) | 7 | 프레임 종료 |

2) Extended CAN Frame (29-bit ID)

  • Identifier 필드가 29비트로 확장된 버전.

5. CAN 통신 방식

1) 송신 (Transmission)

  1. 송신 노드가 CAN Bus 상태 확인 (idle 상태).
  2. 메시지 ID를 포함한 데이터 전송.
  3. 다중 노드가 전송하면 우선순위(ID 낮음 우선권) 결정.
  4. 수신 노드가 데이터 수신 후 ACK 비트 응답.

2) 수신 (Reception)

  1. 네트워크에 있는 모든 노드는 메시지 ID 확인.
  2. ID가 필요한 데이터라면 수신 후 ACK 신호 송신.
  3. 불필요한 메시지는 무시.

6. CAN 오류 검출 메커니즘

| 오류 유형 | 설명 | | ————— | —————————————- | | Bit Error | 송신한 비트와 수신한 비트가 다름 | | Stuff Error | 동일한 비트가 5회 연속 출현 시 오류 발생 | | CRC Error | 수신한 CRC 값과 송신한 CRC 값이 불일치 | | ACK Error | 송신자가 ACK 비트를 받지 못함 | | Form Error | 프레임 포맷 규칙 위반 |



8. 확장된 CAN 프로토콜

1) CAN FD (CAN with Flexible Data-Rate)

  • 기존 CAN보다 데이터 속도 증가 (최대 8Mbps).
  • 데이터 필드 크기 8바이트 → 64바이트 확장.

2) CANopen

  • 산업 자동화에서 사용되는 상위 프로토콜.
  • 노드 간 데이터 공유마스터-슬레이브 구조 지원.

3) J1939

  • 대형 차량 (버스, 트럭, 농기계 등)에서 사용.
  • 29-bit Extended CAN Frame 사용.

9. 결론

  • CAN은 고속, 신뢰성, 오류 감지 기능을 갖춘 자동차 및 산업용 네트워크 표준 프로토콜.
  • 멀티마스터 & 차동 신호 방식을 적용하여 우선순위 기반 데이터 송수신이 가능.
  • 확장된 프로토콜 (CAN-FD, CANopen, J1939)을 활용하면 다양한 분야에 적용 가능.

🔹 자동차 및 임베디드 시스템을 개발할 때 CAN 통신 이해는 필수적!