본문 바로가기
임베디드

[임베디드] CAN 통신이란?

by 코딩히어로 2021. 12. 27.
728x90

CAN 통신이란 Controller Arean Network의 약자로 대부분 차량 내에서

장치들이 서로 통신하기 위해서 설계된 자동차를 위한 표준 통신 규격입니다.

 

차량 내의 ECU(Electronic Control Unit) 즉 각각의 기능을 하는 모듈들은 CAN 통신

프로토콜을 통해서 통신합니다.

 

과거 자동차 통신은 UART를 통해 각각의 모듈들이 통신을 했지만 기능이 추가될 때마다

연결선이 비례해서 증가하고 모듈 간의 통신을 하기 위해서는 더 복잡해지는

시스템 구조를 가지고 있었습니다.

 

이렇게 시스템이 복잡해지게 되면 당연히 차량을 만드는대 있어 원가상승은 큰 문제입니다.

이를 보완하기 위해서 CAN 인터페이스를 개발하게 됩니다.

 

CAN 통신의 가장 큰 장점은 CAN BUS를 통해 두 가닥의 선으로 연결만 해주면

손쉽게 모듈을 붙이거나 제거할 수 있다는 점입니다.

 

CAN은 CAN BUS라는 라인에 ECU들을 병렬로 연결하여 통신합니다.

통신은 버스를 통해서 통신선 상에 데이터를 띄워놓고 필요한 데이터에

Access 하는 방식으로 사용됩니다.

 

CAN 통신 특징


1. 다중 Master 통신

 

CAN 버스는 다중 Master 방식으로 통신하므로 통신 버스를 여러 노드들이 공유하면서

언제든지 버스를 사용하여 통신을 할 수 있습니다.

 

2. 간단한 통신 구조

 

CAN Hight, CAN Low라는 두 개의 신호선을 통해 통신하므로 오직 버스에 연결될

두 개의 선만 필요로 하는 간단한 구조입니다.

이러한 구조 덕분에 아무리 모듈이 많이 늘어난다 해도 시스템상에 존재하는

선의 개수는 적으며 시스템 구조 또한 버스를 통하기 때문에 단순합니다.

 

3. 잡음에 강한 통신

 

CAN BUS는 2선 통신 방식으로 전기적인 noise에 대해 강한 통신 특성을 보여줍니다.

 

4. 우선순위 통신방식

 

CAN BUS에 연결되는 모든 모듈은 고유한 ID값을 가지고 있습니다.

ID값이 낮을수록 우선순위가 높으며 CAN에서는 여과 과정인 Filtering을 통해 설정된

ID값을 수신해 우선순위를 파악합니다.

 

5. 고속 및 원거리 통신

 

CAN 통신은 최대 1M bps의 고속 통신을 제공하며 보통 통신 속도가 500k ~ 1M bps입니다.

또한 통신 가능 거리는 1km까지 지원합니다.

 

 

CAN 통신 동작


CAN 통신은 전체 노드들을 제어하는 Master가 없기 때문에 CAN BUS에서 데이터에

쉽게 접근할 수 있습니다.

 

CAN 트랜시버는 BUS가 다른 트랜시버에 의해 사용 중인지 확인합니다.

만약 사용 중이지 않다면 모든 노드는 ID값을 통해서 자신에게 필요한 메시지를 확인합니다.

불필요한 메시지를 무시하고 자신에게 필요한 메시지만 수신합니다.

 

다중 노드가 동시에 메시지를 CAN BUS에 띄울 경우 가장 낮은 ID값을

가진 최우선 노드가 자동으로 BUS를 선점하게 됩니다.

 

CAN이 에러를 감지하는 일반적인 방법은 메시지가 제대로 받아들여졌을 때

수신 노드로부터 송신 노드에게 ACK라고 불리는 신호를 보냅니다.

 

이 AKC 응답 안에 포함된 핵심 정보는 일반적으로 수신 노드의 주소이며

CAN 개념에서는 이런 식의 지역 주소 개념은 완전히 사라집니다.

 

 

CAN 프레임 구조


 

1. SOF

 

메시지의 시작을 의미하는 비트로 BUS의 노드를 동기화하기 위해 사용합니다.

 

2. IDENTIFIER

 

식별자로 메시지의 내용을 식별하고 우선순위를 부여합니다.

CAN 메시지에 있는 ID의 길이에 따라 표준 CAN과 확장 CAN 두 가지 mode로 분류합니다.

 

3. CONTROL

 

데이터의 길이를 의미하는 비트입니다.

 

4. DATA

 

CAN BUS에 띄울 모듈의 데이터 내용입니다.

 

5. CRC

 

프레임의 송신 오류 및 오류 검출에 사용되는 비트입니다.

 

6. ACK

 

오류가 없는 메시지가 전송되었다는 것을 의미하는 비트로 CAN 트랜시버는 메시지를

정확하게 수신했다고 한다면 ACK 비트를 전송해야 합니다.

전송 노드는 버스 상에서 ACK 비트의 유무를 확인하고 만약 ACK 비트가 발견되지

않는다고 하면 재전송을 시도합니다.

 

7. EOF

 

프레임의 끝을 나타내며 종료를 의미합니다.

 


자동차의 주요 통신인 CAN 통신에 대해 알아보았습니다.

기본적으로 자동차에 많이 쓰이는 통신이지만 공장 설비 및 자동화 등 많은 분야에서도

범위를 넓혀가고 있는 통신입니다.

 

얼마 전 진행했던 콩나물 공장 자동화 설비에서도 CAN 통신을 통해서 구성을 한 경험이 있습니다.

이처럼 개념 및 사용법을 알게 되면 많은 분야에서 사용할 수 있습니다.

 

다음번 포스팅에서는 실질적인 CAN 통신 동작방법에 대해 알아보겠습니다.

728x90
반응형

'임베디드' 카테고리의 다른 글

[임베디드] PLL이란?  (4) 2022.01.10
[임베디드] ADC란?  (21) 2022.01.06
[임베디드] Timer란?  (0) 2021.10.12
[임베디드] RS485 통신이란?  (0) 2021.08.26
[임베디드] Timer를 이용해 1시간 이상 측정하기  (0) 2021.08.17

댓글