Research Institute
  • CAN 프로토콜 개요
    2024년 09월 18일 04시 26분 27초에 업로드 된 글입니다.
    작성자: IIIIIIIIIIIIIIIIIIIIl

    개요

    CAN(Controller Area Network)1983년 Bosch에 의해 최초로 개발되었고 1986년 공식적으로 소개된 이후 현재 생산되는 대부분의 차량에서 사용되고 있습니다. 과거 차량에서는 UART방식인 일대일(Point to Point) 통신을 사용하였으나 차량 내 통신의 증가와 배선의 증가로 인한 배선 관련 문제점의 증가, 전자 제어 장치(ECU) 증가, 설계상의 한계, 차체 중량 증가와 이에 따른 개발비 증가 등, 이러한 문제점을 해결하기 위해 CAN 프로토콜을 개발하게 되었습니다.

    현재 CAN 프로토콜의 여러 특징 때문에  현재는 의료장비, 건물 자동화, 산업 자동화, 비행기, 열차, 중장비 차량 등 다양한 산업 분야에서 사용 되고 있습니다. CAN은 기본적으로 1Mbps의 전송 속도와 장거리 통신을 지원하여 약 최대 1000m 까지 50 kbps의 전송속도로 통신이 가능합니다. 자동차의 중심면과 접지면에 평행하도록 길이를 측정하면 승용차 기준 약 4500MM ~ 5000MM 사이로 차량 내부 통신을 목적으로 하는 구간에서 CAN 프로토콜의 성능 범주에 있는 것을 확인할 수 있습니다. 그리고  8 바이트의 데이터 페이로드를 전송할 수 있으며 물리적인 케이블로 twisted pair wire를 사용합니다. 현대의 상용 차량에서는 11비트 식별자를 가진 CAN 2.0A 포맷 또는 확장형 29비트 식별자를 가진 CAN 2.0B 포맷이 활용되고 있습니다. 2011년에는 CAN의 확장 버전인 CAN-FD가 개발되어, 데이터 전송 속도를 8Mbps로 높이고 데이터 페이로드를 최대 64 바이트까지 확장할 수 있게 되었습니다. 최신 CAN XL 프로토콜은 최대 2048 바이트의 페이로드와 10Mbps의 전송 속도를 지원하며 인터넷 프로토콜을 위한 설계를 갖추고 있습니다. CAN 2.0A 컨트롤러는 11비트 식별자른 가진 표준 CAN 포맷의 메시지만 전송 및 수신할 수 있으며 확장 CAN 포맷(CAN 2.0B)의 메시지를 수신하더라도 데이터를 처리하지 못합니다. 즉, CAN 2.0A 컨트롤러에서 전송된 메시지 데이터만 유효합니다. 반면 CAN 2.0B 컨트롤러는 두 가지 포맷의 메시지를 모두 송수신할 수 있습니다. CAN은 버스 토폴로지를 채택하여 여러 장치 간의 통신을 지원하며 각 데이터 프레임의 SOF(Start Of Frame) 필드는 데이터 전송의 시작을 알리고 ID(Identifier)는 메시지의 우선순위와 내용을 표시하며 DLC(Data Length Code)는 데이터 필드의 크기를 지정하고 CRC(Cyclic Redundancy Check) 필드는 데이터 전송의 정확성을 검증하고 ACK(ACKnowledgement) 필드는 데이터 수신 여부를 확인합니다.

    Without CAN vs With CAN

    OSI 모델과 CAN 프로토콜

    CAN 프로토콜은 OSI 모델에 따라 물리 계층과 데이터 링크 계층으로 구분됩니다. 물리 계층은 RAW CAN 데이터(비트와 바이트)를 다른 CAN 노드로 전송하기 위한 전기적 및 기계적 특성과 구현을 정의합니다. 그리고 ISO-11898-2,3에 표준이 정의되어 있으며 각각 CAN 통신을 위한 물리적 특성과 전기적 사양이 정의되어 있습니다. 물리 계층에서 사용되는 하드웨어는 CAN transceiver가 있습니다. 데이터 링크 계층은 CAN 데이터의 전송과 수신을 관리하고 CAN 프로토콜의 특성을 구현하는 역할을 수행합니다. 그리고 ISO-11898-1 사양을 따르며 해당 표준은 데이터 링크 계층과 메세지 처리 방법에 대해 정의되어 있습니다. 데이터 링크 계층에서 사용되는 하드웨워는 CAN controller가 있습니다. 그리고 데이터 링크 계층은 다음과 같은 사항을 제공합니다.

    • 메시지 전송 결정: 어떤 메시지를 보내야 할지를 판단합니다.
    • 메시지 수신 결정: 수신된 메시지 중 유효한 것을 선택합니다.
    • 애플리케이션과의 인터페이스 제공: 물리 계층에서 전달된 데이터를 처리할 수 있도록 합니다.
    • 복구 관리 및 알림: 시스템 오류나 과부하에 대한 처리를 지원합니다.
    • 데이터 프레이밍: 데이터의 구조를 관리하여 오류 없는 전송을 보장합니다.
    • 중재 수행: 여러 CAN 노드가 동시에 데이터를 보내려 할 때 어떤 노드가 전송할지를 결정합니다.
    • 오류 검출: 데이터 전송 중 발생할 수 있는 오류를 감지합니다.
    • 메시지 필터링: 수신된 데이터를 필터링하여 필요한 메시지만 처리합니다.
    • 전송 순서 제어: 메시지를 전송할 때의 순서를 관리합니다.

    계층화된 ISO 11898 표준 아키텍처

    CAN 통신 특징

    1.  구성의 유연성: 모든 노드가 저항으로 종료된 케이블에 연결되어 있으며 네트워크의 다른 노드에 영향을 주지 않고도 어떤 노드든 연결 및 분리할 수 있습니다.

    2. 메시지 기반 프로토콜: 모든 노드가 CAN 버스에서 메시지를 방송할 수 있으며 모든 다른 노드는 이 메시지를 수신할 수 있습니다. 수신자는 메시지를 수신할지 여부를 선택할 수 있습니다. 따라서 CAN은 데이터 전송 시 노드의 주소 대신 메시지의 우선순위에 기반하여 ID(식별자)를 부여합니다. 특정 노드 A가 메시지를 전송할 때, 다른 노드는 이 ID를 통해 해당 메시지가 필요한지 판단하고, 필요할 경우 수신하며 그렇지 않으면 무시합니다.

    3. 멀티 마스터 통신 제공: 모든 노드가 언제든지 전송 및 수신할 수 있어 자동차 산업에서 안전과 관련된 ECU (전장 제어 장치)와 같은 즉각적인 메시지 처리가 가능합니다. 따라서 CAN 네트워크는 버스를 관리할 필요 없이 모든 노드가 동시에 사용할 수 있습니다. 버스가 비어 있을 때 어떤 노드든 메시지를 전송할 수 있으며 두 개의 노드가 동시에 전송을 시도하면 우선순위에 따라 결정됩니다.

    4. 메시지 우선순위 지정: 안전과 관련된 중요한 메시지는 낮은 식별자 값을 부여받아 높은 우선순위를 가지며 제조업체는 식별자 값을 통해 메시지 우선순위를 결정할 수 있습니다.

    5. CSMA/CA 및 CSMA/CD 기능: Carrier Sense Multiple Access with Collision Avoidance(CSMA/CA)를 통해 버스 상태를 확인하고 Carrier Sense Multiple Access/ Collision Detection(CSMA/CD)을 통해 데이터 전송 중 문제가 발생하면 전송을 중단하고 대기합니다.

    6. 오류 감지 및 결함 격리 기능: 각 CAN 노드는 자체 오류 진단 및 복구 상태를 가지고 있으며 오류 상태에 따라 분류됩니다. 지속적으로 버스의 상태를 감시하여 결함이 있는 노드를 실시간으로 감지하고 Bus-OFF 상태에 도달하면 다른 노드에 영향을 주지 않고 네트워크에서 분리됩니다. 따라서 CAN은 다양한 에러 감지 방법을 조합하여 높은 신뢰성을 제공합니다. 메시지 전송 중 에러가 발생하면 자동으로 해당 메시지를 재전송하여 에러 복구 시간이 짧습니다. 

    7. 우수한 속도 및 노이즈 감소 기능: 최대 1 Mbps의 속도를 제공하며 차동 케이블(CAN_H, CAN_L)을 사용하여 잡음을 효과적으로 제거하고 더 나은 잡음 내성을 제공하며 신호 저하 없이 긴 거리에서도 연결할 수 있어 네트워크의 장치 간 안정적이고 신뢰할 수 있는 통신을 보장하는 데 중요한 이점을 제공하여 교차 간섭 및 전자기 간섭을 줄입니다. 

    8. 기타 기능: 노드 동기화, CRC를 통한 프레임 무결성 검사, 수용 필터링 등의 기능이 내장되어 있어 하드웨어 수준에서 소프트웨어 코드 오버헤드를 줄입니다. 그리고 여러 반도체 제조업체들이 다양한 CAN 컨트롤러와 트랜시버를 생산하고 있어 가격이 저렴하고 조달이 용이합니다.
     

    CAN 네트워크 동작 원리

    CAN은 다중 통신망으로 CSMA/CD+AMP 방식인 Carrier Sense Multiple Access/Collision Detection with Arbitration on Message Priority를 활용합니다. 메시지를 전송하기 전에 CAN 노드는 CAN 버스라인이 사용 중인지 확인하고 메시지 간의 충돌을 감지합니다. 이 과정에서 송신 및 수신 주소는 포함되지 않으며 주소 기반의 통신이 아닙니다. 대신 각 노드는 CAN 네트워크에서 식별할 수 있는 고유한 식별자 ID(11비트 또는 29비트)[CAN 2.0A / CAN 2.0B)를 가지고 있습니다. 네트워크에 연결된 모든 노드는 수신한 메시지 중 필요한 식별자의 메시지만을 수락하고 나머지는 무시합니다. 동시에 여러 노드의 데이터가 흐를 경우 식별자의 값을 비교하여 우선순위를 결정합니다. 식별자 값이 낮을수록 우선순위가 높으며 우선순위가 높은 메시지가 CAN 버스 사용 권한을 부여받습니다. 이때 낮은 우선순위의 메시지는 다음 버스 사이클에 재전송됩니다. 각 CAN 메시지는 11비트 CAN 2.0A 또는 29비트 CAN 2.0B의 식별자를 포함하며 메시지의 시작 부분에 위치합니다. 이 식별자는 메시지의 형식을 식별하고 우선순위를 부여하는 역할을 합니다.

    자동차 네트워크 구성

    차량 내 CAN 통신 기술은 종류에 따라 속도와 운영 프로토콜이 다르며 CAN의 전송 속도는 보통 500Kbps이며 최대 1Mbps까지 가능하고 SAE는 속도에 따라 네트워크 프로토콜을 Class A, B, C로 구분합니다. Class C는  High Speed CAN 통신으로 여유로운 통신 프레임을 제공하지만 정밀함을 요구하지 않는 제어 분야(예: 시트, 램프, 와이퍼 등)에 적용되면 낭비를 초래할 수 있습니다.. Class B는 Low Speed CAN 통신으로 엔진, 변속기, 제동, 조향, 자율 주행 등 대량의 데이터를 실시간으로 전송해야 할 때 데이터 병목 현상이 발생해 안전성을 저하시킬 수 있습니다. 따라서 전송 데이터의 중요도와 속도에 적합한 제어기 수 구성이 차량 네트워크 설계에서 필수적이며 CAN 프로토콜은 이론적으로 단일 네트워크에서 최대 2032개의 장치(하나의 ID를 가진 하나의 노드 가정)를 연결할 수 있습니다. 그러나 하드웨어(CAN Transceiver)의 한계로 단일 네트워크에서는 최대 110개의 노드만 연결할 수 있습니다.

     

    클래스 통신 속도 적용 분야
    클래스 A 최대 10 kbps 조명, 창문, 파워 윈도우, 도어 잠금 장치 등
    클래스 B 10 kbps ~ 125 kbps 엔진 상태, 연료 소비량, 바디 및 시트 제어 등
    클래스 C 125 kbps ~ 1 Mbps 엔진, 변속기, 브레이크 등의 실시간 제어 시스템

     아래 그림들은 실제 2024 K3 차량 내 적용된 CAN 네트워크 구조로 C-CAN, P-CAN, B-CAN, M-CAN, I-CAN의 5가지로 구성되어 있습니다. C-CAN, P-CAN, I-CAN은 High Speed CAN 통신을 적용하며 옵션 등에 따라 제어기수의 변화가 존재합니다

    • C-CAN (Chassis CAN)
      C-CAN은 차체와 관련된 제어 시스템을 연결하는 네트워크로, 엔진, 변속기, ABS, 스티어링 시스템 등의 주행 안전성 관련 정보를 처리합니다.
    • P-CAN (Powertrain CAN)
      P-CAN은 파워트레인과 관련된 네트워크로, 엔진과 변속기 시스템 간의 통신을 담당하며, 연료 효율성과 배기가스 조절 기능을 지원합니다.
    • B-CAN (Body CAN)
      B-CAN은 차량의 바디와 관련된 전자 시스템을 연결하는 네트워크로, 조명, 창문, 도어 잠금 및 해제, 미러 제어 등과 같은 편의 기능을 담당합니다.
    • M-CAN (Multimedia CAN)
      M-CAN은 차량의 멀티미디어 및 인포테인먼트 시스템을 위한 네트워크로, 오디오, 비디오 및 내비게이션 시스템 간의 통신을 처리합니다.
    • I-CAN (Intelligent CAN)
      I-CAN은 주로 ADAS(Advanced Driver Assistance Systems) 및 자율 주행 기술과 관련된 기능을 지원하는 네트워크로, 센서와 카메라에서 수집된 데이터를 처리합니다.
    • D-CAN (Diagnostic CAN)
      D-CAN은 차량의 진단 및 유지 보수를 위한 네트워크입니다. 차량 내 다양한 센서 및 시스템의 상태를 모니터링하고 오류 코드를 읽어 문제를 진단하며, 주로 차량 수리 및 정비 시설에서 활용됩니다. 
    2024 K3(BD) - C-CAN
    2024 K3(BD) - P-CAN
    2024 K3(BD) - B-CAN
    2024 K3(BD) - M-CAN
    2024 K3(BD) - I-CAN

     

    2024 K3(BD) - D-CAN

     

    CAN 관련 표준

    CAN (Controller Area Network) 표준은 자동차 및 산업 응용 분야에서 통신을 정의하는 여러 ISO 규격을 포함하고 있습니다. 주요 표준은 아래와 같습니다. 일반적으로 사람들이 "CAN"이라고 언급할 때는 대부분 ISO 11898-1 및 ISO 11898-2에서 정의된 기본적인 부분을 의미합니다.

    1. ISO 11898-1: CAN 프로토콜의 핵심으로 메시지 형식과 전송 방법을 정의
    2. ISO 11898-2: 고속 물리 계층을 정의하며 최대 1 Mbps의 속도로 twisted pair wire을 통해 통신할 수 있음
    3. ISO 11898-3: 저속 고장 내성 물리 계층을 정의하여 신뢰성이 중요한 응용 분야에서 사용
    4. ISO 11898-4: Time-Triggered CAN(TT-CAN)을 도입하여  정밀한 타이밍이 필요한 시간 응용 프로그램에서 사용됨
    5. ISO 11898-5: 저전력 모드를 갖춘 고속 미디어 접근 장치에 대한 표준임
    6. ISO 14230 (Keyword Protocol 2000, KWP2000): CAN에 특정되지 않은 진단 통신을 위한 규격
    7. ISO 15765 (Keyword Protocol 2000, KWP2000) : CAN 버스를 통한 진단 통신을 정의함
    8. J1939: 트럭과 버스를 위한 널리 사용되는 고수준 프로토콜로 SAE에 의해 정의되며 물리 계층, 데이터 링크 계층, 다양한 미리 정의된 메시지를 포함함
    9. ISO 11783: 농업 응용을 위한 J1939 변형으로 특히 트랙터에 적합함
    10. ISO 11992: 트럭과 트레일러 간의 인터페이스를 정의하여 상호 운용성을 보장함
    11. NMEA 2000®: 해양 응용을 위한 J1939 기반 프로토콜로 NMEA 위원회에 의해 개발됨
    12. SAE J1939 - CAN 위에 구축된 OBD(온보드 진단) 프로토콜 제품군으로 트럭, 버스, 유압 시스템 등과 같은 대형 차량에 사용됨
    13. OBD-II (OBD-2) – 온보드 진단(OBD)은 모든 전기, 전자 및 기계 시스템의 진단 및 작동 정보를 방송하기 위해 주로 자동차에 사용되는 표준
    14. CANopen - 주로 임베디드 시스템 도메인(산업, 의료, 로봇 공학 등)에서 사용되는 개방형 프로토콜이며 주소 지정 및 데이터 전송 기능을 제공하고 있음.

    참고자료

    - https://copperhilltech.com/a-brief-introduction-to-controller-area-network/

    - https://gsw.kia.com/

    - S. C. Hpl, “Introduction to the Controller Area Network(CAN),” Application Report SLOA101, pp. 1–17, 2002.

    댓글