CAN
통신

CAN

728x90

CAN

 

Controller Area Network의 약자로 차량 내에서 장치들이 서로 통신하기 위해 설계된 표준 통신 규격입니다. 차량 내 ECU(Electronic Control Unit)들은 CAN 프로토콜을 사용하여 통신합니다. 최근에는 차량 뿐만 아니라 산업용 자동화기기나 의료용 장비에서도 종종 사용되고 있습니다. 

 

과거에 자동차 제조업체들은 UART 통신 시스템을 사용하여 차량 내 전자장치를 연결하였습니다. 그러나 더욱 더 많은 전자장치를 차량 내에 탑재하게 됨에 따라, 배선 장치는 공간을 많이 차지할 뿐 아니라 무게가 많이 나가며 비용이 많이 들게 되었습니다. 

 

그렇게 CAN 인터페이스가 개발되게 되었는데 CAN 인터페이스는 여러 개의 모듈을 제어할 수 있어서 배선 비용, 복잡성 그리고 무게를 경감시킬 수 있었습니다.

 

출처 : https://ni.scene7.com/is/image/ni/bd378304156?scl=1

 

CAN 통신 방법

 

CAN은 피어 투 피어 (peer-to-peer) 네트워크입니다. 다시 말하면, 개별 노드가 CAN 버스에서 데이터를 읽거나 쓰기 위해 액세스할 때 컨트롤하는 마스터가 없습니다. CAN 노드가 데이터 전송 준비 완료되면, 버스의 준비 여부를 확인하고 그 후 CAN 프레임을 네트워크에 작성합니다. 전송되는 CAN 프레임은 전송 노드나 수신 노드 중 어느 쪽의 주소도 포함하고 있지 않습니다. 대신, 고유한 중재 ID가 네트워크에서 프레임을 분류합니다. CAN 네트워크 상의 모든 노드는 CAN 프레임을 수신하며, 전송되는 프레임의 중재 ID에 따라 네트워크 상의 각 CAN 노드는 프레임 수용 여부를 결정합니다.

다중 노드가 동시에 메시지를 CAN 버스에 전송하려는 경우에는 가장 낮은 ID 값을 가진 최우선 노드가 자동으로 버스에 접근하게 됩니다.

 

CAN 프레임

 

  • SOF (start-of-frame) 비트 : 메시지의 시작을 표시합니다.
  • 중재 ID : 메시지를 식별하고 메시지의 우선 순위를 지정합니다. 프레임에는 두 가지 포맷인 11 비트 중재 ID를 사용하는 표준과 29 비트 중재 ID를 사용하는 확장이 있습니다.
  • IDE (identifier extension) : CAN Standatd 프레임과 CAN Extended 프레임을 구분합니다.
  • RTR (remote transmission request) : 원격 프레임과 데이터 프레임을 구별하는 역할을 합니다. 
  • DLC (data length code) : 전송 중인 데이터의 바이트 수를 나타냅니다.
  • Data : 데이터의 0 ~ 8 바이트로 구성됩니다.
  • CRC (cyclic redundancy check) : 15 비트의 주기적인 중복 체크 코드 + 역행 delimiter 비트로 구성됩니다. CRC 필드는 오류 검출에 사용됩니다.
  • ACK (ACKnowledgement) 슬롯 : 메시지를 정확하게 수신한 모든 CAN 컨트롤러는 메시지의 말미에 ACK 비트를 전송합니다. 
  • EOF : CAN 프레임의 끝을 표시합니다.
  • IFS : 7비트의 IFS(inter-frame space)는 컨트롤러가 요구하는 시간의 양을 포함하며, 메시지 버퍼 영역에서 적절한 위치로 정확하게 수신된 프레임을 이동시킨다.

 

CAN 물리 계층

 

 

CAN에는 여러 종류의 다른 물리 계층이 있습니다. 이같은 물리 계층은 전기적 레벨, 신호 구조, 케이블 임피던스, 최대 보드 (baud) 속도 등 CAN 네트워크의 특정 사항을 분류합니다. 가장 보편적이며 널리 사용되는 물리 계층은 아래와 같습니다.

 

High-Speed CAN
High-speed CAN은 현재까지 가장 보편적으로 사용되는 계층입니다. 고속 CAN 네트워크는 두 개의 와이어로 실행되며 최대 1 Mb/s 전송 속도로 통신을 진행합니다. 고속 CAN의 다른 명칭으로는 CAN C와 ISO 11898-2가 있습니다. 일반적인 고속 CAN 디바이스에는 ABS (anti-lock brake systems), 엔진 컨트롤 모듈 그리고 방출 시스템 등이 있습니다.

저속/내고장(fault-tolerant) CAN 하드웨어
저속/내고장 CAN 네트워크 또한 두 개의 와이어로 실행되며, 최고 125 kb/s 속도로 디바이스와 통신하며, 내고장 기능이 있는 트랜시버를 제공합니다. 저속/내고장 CAN 디바이스는 CAN B 및 ISO 11898-3으로도 알려져 있습니다. 자동차에서의 일반적인 저속/내고장 기기에는 안락장치가 있습니다. 차량의 문을 열고 닫을 때의 강도를 고려하여 차량의 문을 통과해야 하는 와이어는 저속/내고장입니다. 또한, 브레이크 등과 같이 강화된 보안 레벨이 요구되는 경우, 저속/내고장 CAN은 그 해결책이 될 수 있습니다.

단일 와이어 CAN 하드웨어
단일 와이어 CAN 인터페이스는 최고 33.3 kb/s (고속 모드에서는 88.3 kb/s) 속도로 디바이스와 통신합니다. 단일 와이어 CAN의 다른 명칭은 SAE-J2411, CAN A 및 GMLAN입니다. 차량 내 일반적인 단일 와이어 디바이스는 고성능을 요구하지 않습니다. 일반적인 어플리케이션에는 좌석과 거울 조정기 등의 안락 장치가 있습니다.

소프트웨어 선택가능한 CAN 하드웨어
내쇼날인스트루먼트의 CAN 하드웨어 제품을 이용하면 소프트웨어 선택가능한 CAN 인터페이스를 구성할 수 있으므로 모든 온보드 트랜시버 (고속, 저속/내고장 또는 단일 와이어 CAN)를 사용할 수 있습니다. 다중 트랜시버 하드웨어는 통신 표준의 통합이 요구되는 어플리케이션에 있어 최상의 솔루션을 제공합니다. 소프트웨어 선택가능한 CAN 하드웨어를 사용하면, 사용자 고유의 외부 CAN 트랜시버를 선택할 수 있습니다.

 

물리 계층에서, CAN은 광섬유 또는 꼬인 2선(twisted pair. 가장 보편적) 같은 다양한 종류의 매체를 사용하여 통신할 수 있다.

 

CAN 장점

 

  • 다중 주인(Multi Master) 통신 방식 : CAN 버스는 다중 주인(Multi Master) 방식으로 통신하므로 통신 버스를 여러 노드(node)들이 공유하면서 언제든지 버스를 사용할 수 있습니다.
  • 간단한 구조  CAN_High, CAN_Low 두 개의 신호로 통신하므로 단 2개의 선이 필요로 합니다. 그러므로 많은 모듈이 추가되더라도 추가되는 선의 양이 적습니다. 
  • 잡음에 매우 강함 : CAN BUS는 Twist Pair 2선으로 되어있어 전기적 잡음(noise)에 강해 메시지를 보호할 수 있습니다.
  • 고속 및 원거리 통신 : CAN 통신은 최대 1M bps에 달하는 고속 통신을 제공하며, 보통 통신 속도가 500k~ 1M bps 속도로 CAN 통신이 가능합니다. 또한, 최대 1,000m까지 원거리 통신이 가능합니다.
  • ID 값을 이용한 우선순위 : 자동차의 ECU들은 고유한 ID 값을 가지고 있습니다. ID 값은 낮을수록 우선순위가 높은데, CAN에서는 여과 과정(filtering)을 통해 설정된 ID 값을 수신해 우선순위를 결정합니다. 주소가 아닌 ID 값으로 메시지 내용과 우선순위가 결정되며 이는 시스템 제어 속도와 안전성을 향상할 수 있습니다.
728x90

'통신' 카테고리의 다른 글

SPI  (0) 2022.02.16
LoRa  (0) 2022.02.15
WIFI  (0) 2022.02.14
Bluetooth  (0) 2022.02.14
I2C  (0) 2022.02.11