본문 바로가기

전자 공학/기타

CAN 통신이란?

반응형

안녕하세요. 취업한 공대누나입니다.

오늘은 친구들을 만나고 왔는데 그 중 자동차 네트워크 관련 일을 하는 친구가 있어서 CAN 통신에 대해 조금 듣고 왔습니다. 조금 더 자세히 알아보도록 하겠습니다.


1. CAN 통신이란?

Controller Arean Network의 약자로 차량 내에서 장치들이 서로 통신하기 위해 설계된 표준 통신 규격입니다. 량 내 ECU(Electronic Control Unit)들은 CAN 프로토콜을 사용하여 통신합니다.

초기에는 차량 네트워크용으로 개발되었으나 최근에는 차량뿐만 아니라 의료, 로봇 등 전 분야에 폭넓게 적용되고 있습니다.

 

과거에는 모듈들이 통신하기 위해서 UART 통신을 사용했습니다. 그러나 UART통신은 모듈이 추가될 때마다 연결 선이 계속 추가적으로 필요하게 됩니다. 수많은 연결선들은 자동차의 공간을 많이 차지하게 되고 자동차 무게를 증가시키며 원가를 상승시키게 됩니다.

 

그렇게 CAN 인터페이스가 개발되게 되었는데요. CAN 인터페이스는 여러 개의 모듈을 제어할 수 있어서 연결 선이 감소되게 되었고 자동차 무게가 줄어들었으며 원가도 줄어들 수 있게 되었습니다.

 

CAN 통신은 위와 같이 여러 개 ECU를 병렬로 연결하여 데이터를 주고받는 통신 방법입니다.

CAN 버스를 통해 통신성 상에 데이터를 띄워놓고 필요한 데이터에 접근합니다.


2. CAN 통신의 특징

1) Multi-Master

통신 버스를 여러 노드들이 공유하면서 언제든지 버스를 사용할 수 있습니다.

 

2) 간단하고 잡음에 강한 구조

CAN H CAN L 두 개의 신호로 통신하므로 단 2개의 선이 필요합니다. 많은 모듈이 추가되더라도 추가되는 선의 양이 적습니다.

CAN H는 2.5V~3.5V의 전압을, CAN L는 2.5V~1.5V의 전압을 사용합니다.

CAN H와 CAN L의 전위 차가 없을 때를 recessive(열성), 전위차가 있을 때를 dominant(우성)이라고 합니다. 즉 두 라인의 전위차를 통해 데이터를 전송하는 것입니다.

또한 Twist Pair로 되어 있어 노이즈에 강합니다.

 

3) ID 값을 이용한 우선순위

자동차의 ECU들은 고유한 ID를 가지고 있습니다.

ID값이 낮을수록 우선순위가 높은데, 여러 과정을 통해 설정된 ID 값을 수신하여 우선순위를 결정합니다.

주소가 아닌 ID값으로 메시지 내용과 우선순위가 결정되며 시스템 제어 속도와 안전성을 향상할 수 있습니다.


3. 동작 방법

또한 CAN 통신은 전체 노드를 제어하는 주인(Master)가 없어서 CAN 버스에서 데이터에 쉽게 접근할 수 있습니다. CAN 제어기는 버스 선이 다른 제어기에 의해 사용 중인지 확인을 합니다. 만약 사용중이지 않다면 모든 노드는 ID값을 통해서 자신에게 필요한 메시지를 확인합니다. 불필요한 메시지를 무시하고 자신에게 필요한 메시지만 수신합니다. 다중 노드가 동시에 메시지를 CAN 버스에 전송하려는 경우에는 가장 낮은 ID 값을 가진 최우선 노드가 자동으로 버스에 접근하게 됩니다.


4. CAN 프레임 형식

SOF : 메시지의 시작을 표시합니다. 

ID : 메시지의 우선순위를 결정합니다.

RTR : 데이터 프레임과 리모트 프레임을 구분합니다.

IDE : CAN Standard 프레임과 CAN Extended 프레임을 구분합니다.

R0 : Reserved bit

DLC : 전송 중인 데이터의 바이트 수를 나타냅니다.

Data : 8byte의 데이터를 전송합니다.

CRC : 16bit의 Checksum입니다. 메시지 상의 에러 유무를 나타냅니다.

ACK : 승인

EOF : CAN 프레임의 끝을 표시합니다.

IFS : 버퍼영역입니다.

반응형

'전자 공학 > 기타' 카테고리의 다른 글

[네트워크 기초쌓기] 1. 네트워크의 기초 (패킷, 프로토콜, TCP/IP 참조 모델)  (0) 2021.12.05
KC인증이란?  (0) 2021.03.26
윈도우(Windows)란?  (0) 2021.02.04
JTAG이란? SWD란?  (8) 2021.01.30
Atmega128이란?  (0) 2021.01.26