[CAN 통신 이란?]

우리누리·2024년 6월 22일
post-thumbnail

CAN 통신 (Controller Area Network)

개념

CAN (Controller Area Network)은 차량 내 다양한 전자 제어 장치(ECU) 간의 데이터를 실시간으로 교환하기 위한 통신 표준입니다. 1980년대 중반, Bosch에서 개발되었으며, 현재는 자동차뿐만 아니라 산업용 장비, 의료 기기 등 다양한 분야에서도 사용되고 있습니다.

원리 및 동작 방식

CAN 통신은 다중 마스터 방식의 버스형 네트워크 구조를 가지고 있습니다. 이는 여러 제어 장치가 하나의 버스를 통해 통신할 수 있음을 의미합니다. 다음은 CAN 통신의 주요 원리와 동작 방식을 설명합니다:

1. 메시지 기반 통신

CAN 통신은 주소 기반이 아닌 메시지 기반 통신을 사용합니다. 각 메시지는 고유의 식별자(ID)를 가지고 있으며, 네트워크 상의 모든 장치가 이 메시지를 수신할 수 있습니다. 특정 장치는 자신이 필요로 하는 메시지 ID를 필터링하여 처리합니다.

2. 메시지 프레임

CAN 통신에서는 메시지 프레임을 사용하여 송수신이 이루어집니다. 메시지 프레임은 하나 또는 그 이상의 송신 노드로부터 데이터를 수신 노드로 운반합니다. CAN Protocol은 다음과 같은 두 가지 형태의 메시지 프레임을 지원합니다:

  • 표준 CAN (버전 2.0A)
  • 확장 CAN (버전 2.0B)

표준 CAN 메시지 구조 (2.0A)

이미지 출처: uglytree.tistory.com

표준 CAN 메시지 구조는 7개의 서로 다른 필드로 구성됩니다:

  1. 프레임의 시작 (SOF: Start Of Frame) 필드

    • 메시지 프레임의 시작을 표시하기 위한 필드입니다.
    • 메시지 프레임의 최우선에 위치하며 디폴트 "0" 값을 가집니다.
  2. 중재 필드 (Arbitration Field)

    • 11비트의 식별자와 원격 전송 요구(RTR) 비트로 구성됩니다.
    • 디폴트 "0"을 가지는 RTR 비트는 비트값이 "0"일 때 CAN 메시지가 데이터 프레임이라는 것을 가리킵니다.
    • RTR 비트 값이 "1"이면 CAN 메시지가 원격 전송 요청(RTR: Remote Transmission Request)을 의미합니다.
    • 원격 프레임은 데이터 버스 상의 어떤 한 노드로부터 다른 노드로 데이터를 전송 요청할 때 사용됩니다.
  3. 제어 필드 (Control Field)

    • 6비트로 구성되며 향후에 사용되기 위해 예약된 두 개의 "0" 값을 가지는 R0, R1와 데이터 필드의 바이트 수를 가리키는 4비트의 데이터 길이 코드(DLC: Data Length Code)로 구성됩니다.
  4. 데이터 필드 (Data Field)

    • 한 노드로부터 다른 노드로 전하고자 하는 데이터를 넣기 위한 필드입니다.
    • 0~8바이트로 구성됩니다.
  5. CRC 필드 (CRC: Cyclic Redundancy Check)

    • 15비트의 주기적 중복확인(CRC) 코드를 가지며 데이터 필드의 끝을 알리는 "1" 값을 가지는 비트로 구성됩니다.
  6. ACK 필드 (ACKnowledge Field)

    • 2비트로 구성되며 첫 번째 비트는 "0" 값을 가지는 Slot 비트입니다.
    • 메시지를 성공적으로 수신한 다른 노드로부터 전송된 "1" 값으로 기록될 수 있습니다.
    • 두 번째 비트는 "1" 값을 가집니다.
  7. 프레임 종료 필드 (EOF: End Of Frame Field)

    • 7비트로 구성되며 모두 "1" 값을 가집니다.
    • EOF 뒤이어 모두 "1" 값을 가진 3비트의 프레임 중단 필드 (INTermission Field)가 이어집니다.
    • 3비트의 INT 주기 이후에 CAN 버스라인은 자유 상태(다른 노드가 데이터를 보낼 수 있는 상태)로 인식됩니다.
    • 이후 버스 Idle Time은 "0"을 포함한 임의의 길이입니다.

확장 CAN 메시지 구조 (2.0B)

이미지 출처: uglytree.tistory.com

확장 CAN 메시지 구조는 2.0A와 구분되기 위해 29비트의 메시지 프레임 식별자를 가집니다. 기존에 사용 중인 2.0A와 호환됩니다. 표준 CAN(2.0A)과 차이점은 중재 필드가 두 개의 CAN 메시지 식별자로 구분되어 포함됩니다.

  • 첫 번째(기본 ID)는 11비트 길이로 2.0A와 호환되게 되어 있습니다.
  • 두 번째 필드(확장 ID)는 18비트 길이로 ID는 총 29비트로 구성됩니다.
  • 두 개의 ID 필드 사이에 ID 확장자 (IDE: IDentifier Extension)가 있어 두 개의 ID 필드를 구분합니다.
  • SRR(Substitute Remote Request) 비트는 중재 필드에 속해 있으며 표준 데이터 프레임과 확장 데이터 프레임을 중재해야 하는 경우에 대비하기 위해 항상 "1" 값을 전송합니다.
  • 만약 표준 데이터 프레임과 확장 데이터 프레임이 같은 기본 ID (11비트)를 가지고 있으면 표준 데이터 프레임이 우선 순위를 가집니다.

CAN 2.0A와 2.0B의 호환성

  • 2.0B Controller 입장에서는 2.0A와 송수신에 있어 완벽하게 호환됩니다.

  • 2.0A Controller는 두 가지 경우가 있습니다.

    1. 2.0A의 메시지만 송수신이 가능한 경우이며 2.0B의 메시지는 에러를 발생시킵니다.
      • 2.0A와 2.0B는 하나의 CAN 네트워크 상에서 사용 불가합니다.
    2. 2.0B Passive로 알려져 있으며 2.0A의 메시지는 송수신 가능하고 2.0B의 메시지는 식별을 하여 무시합니다.
      • 2.0A와 2.0B는 하나의 CAN 네트워크 상에서 사용 가능합니다.
  • 사용할 수 있는 CAN ID 갯수:

    • 2.0A = 2032개
    • 2.0B = 5억 개 초과

3. 우선순위와 충돌 해결

CAN 통신에서는 메시지 ID가 낮을수록 높은 우선순위를 가집니다. 두 개 이상의 장치가 동시에 메시지를 전송하려고 하면, 우선순위가 높은 메시지가 버스를 점유하게 됩니다. 이를 통해 충돌을 방지하고 중요한 메시지가 먼저 전달되도록 합니다.

4. 에러 검출 및 수정

CAN 통신은 높은 신뢰성을 위해 다양한 에러 검출 메커니즘을 사용합니다:

  • 비트 스터핑: 연속된 5개의 동일 비트가 전송되면 반대 비트를 삽입하여 동기화를 유지합니다.
  • CRC: 전송된 데이터의 무결성을 확인합니다.
  • ACK: 수신자가 데이터를 올바르게 수신했는지 확인합니다.
  • 에러 플래그: 에러 발생 시 네트워크에 에러 플래그를 전송하여 다른 장치들이 해당 프레임을 무시하도록 합니다.

장점

  • 실시간 통신: CAN 통신은 높은 데이터 전송 속도와 짧은 전송 지연 시간으로 실시간 데이터 교환이 가능합니다.
  • 높은 신뢰성: 에러 검출 및 수정 메커니즘이 내장되어 있어 데이터 전송의 신뢰성이 높습니다.
  • 효율성: 다중 마스터 기능을 통해 여러 ECU가 동시에 통신할 수 있으며, 버스형 네트워크 구조로 배선이 간단합니다.
  • 확장성: 노드 추가가 용이하여 시스템 확장이 쉽습니다.
  • 비용 절감: 단순한 배선 구조와 효율적인 데이터 전송으로 비용 절감 효과가 있습니다.

단점

  • 대역폭 제한: 통신 속도가 최대 1 Mbps로 제한되어 있어 대용량 데이터 전송에는 적합하지 않습니다.
  • 복잡한 프로토콜: 프로토콜이 복잡하여 초기 설정과 디버깅이 까다로울 수 있습니다.
  • 보안 취약점: 기본적으로 보안 기능이 내장되어 있지 않아 외부 공격에 취약할 수 있습니다.

차량 전장에 사용되는 이유

  • 통합 제어: 다양한 ECU 간의 통신을 통합하여 차량의 전반적인 성능과 효율성을 향상시킵니다.
  • 실시간 데이터 교환: 엔진 제어, 브레이크 시스템, 에어백 등의 실시간 데이터 교환이 필요하기 때문에 CAN 통신이 적합합니다.
  • 신뢰성: 차량 안전과 직결되는 시스템에서 신뢰성 높은 통신이 필수적이므로 CAN 통신이 사용됩니다.
  • 비용 효율성: 차량 내 복잡한 배선 대신 버스형 네트워크를 사용하여 비용을 절감할 수 있습니다.

결론

CAN 통신은 차량 내 다양한 전자제어장치 간의 데이터를 실시간으로 교환하기 위한 매우 중요한 통신 표준입니다. 높은 신뢰성과 효율성, 그리고 실시간 데이터 교환 능력 덕분에 차량 전장 시스템에서 널리 사용되고 있습니다. 물론 대역폭 제한과 보안 문제 등의 단점도 존재하지만, 이러한 단점들은 다양한 보완 기술을 통해 극복할 수 있을 것입니다.


추가 자료

0개의 댓글