01. CAN 통신이란? CAN 통신 개요
CAN 통신 배경
CAN (Controller Area Network)은 차량에 들어가는 제어기(Controller) 간 통신을 위해 개발되었습니다.
제어기는 차량에 들어가는 전자 장치를 제어하기 위한 소형 컴퓨터입니다. 자동차에 전자제어를 이용한 편의기능이 증가하면서 차량에 들어가는 제어기의 수도 많아졌습니다. 이에 제어기 간 통신의 필요성도 증가하였습니다.
CAN은 이러한 필요성에 의해 1983년 보쉬 사에서 만들어졌습니다. 이후에도 여러 차례 CAN 스펙이 나왔고 가장 최신 스펙은 1991년에 개발된 CAN 2.0입니다.
CAN은 버스 네트워킹을 사용
CAN 통신은 버스라는 공용 선을 이용하여 통신합니다.
버스 네트워킹을 사용함으로써 전선의 양을 줄일 수 있고 네트워크에 제어기 추가 및 제거하기 쉽습니다.
차량에는 상황에 따라 새롭게 제어기가 추가되거나 제거해야할 일이 많고 전선의 양을 줄이는 게 중요하므로 버스 네트워킹 방식을 사용하였습니다.
하지만, 버스 네트워킹 방식이 장점만 있는 건 아닙니다. 버스라는 공용선을 이용하기 때문에 한 제어기가 메시지를 보내고 있으면 다른 제어기는 메시지를 보낼 수 없습니다. 이렇게 어떤 메시지가 버스를 사용하여 보내질지 정하는 과정을 arbitration이라 합니다. CAN에서는 이러한 문제를 해결하기 위해 여러 기술들이 적용되었습니다. 이들에 대해서는 이후에 살펴보겠습니다.
또한, CAN은 직렬 통신 방식을 사용하며 버스에 비트를 순차적으로 보냅니다.
CAN은 이벤트 방식
CAN 버스에는 다수 장치가 있습니다. CAN에서는 버스에 연결된 장치를 노드라고도 부릅니다.
노드는 메시지 보내려는 이벤트가 발생하면 메시지를 보내게 됩니다.
다만, 아무때나 메시지를 보내진 않습니다. 버스가 사용중인지 아닌지 살펴보고, 버스가 사용 중이지 않을 때 메시지를 보냅니다. 그럼에도 불구하고 동시에 메시지를 보내게 되면 arbitration 과정을 통해 하나의 메시지만 보내지게 합니다. 이때 우선순위를 기준으로 보내질 메시지를 선택합니다. 우선순위는 메시지의 ID가 낮을 수록 높습니다. 따라서 동시에 보내지게 되는 메시지 중 메시지의 ID가 가장 낮은 메시지가 보내집니다.
CAN은 위와 같이 이벤트 방식 (Event driven)을 사용하기 때문에 타임 크리티컬 하지 않습니다. 즉, 메시지가 특정 시간 안에 보내지는 걸 보장할 수 없습니다. 우선순위가 낮은 메시지는 한도 끝도 없이 밀릴 수 있죠. 이러한 문제를 해결하기 위해 우선순위를 바꾸거나, 네트워크를 분리하는 방법 등이 사용됩니다.
2가닥 선을 이용하며 종단저항이 120옴
CAN은 2가닥 선을 이용하며 두 선의 차동 전압을 사용합니다. 2가닥 선은 각각 CAN-High, CAN-Low라 부르고 CAN-High와 CAN-Low의 전압 차를 이용합니다. 이렇게 두 가닥 선을 이용하면 노이즈에 강건하다고 합니다.
그리고 CAN 사용 시에는 종단 저항 120옴을 잘 확인해야 됩니다. 종단저항 120옴이 설치되지 않으면 제대로된 결과를 얻을 수 없습니다. CAN 사용 전에는 종단 저항 120옴을 잊으면 안됩니다.
전압 차가 나면 0, 전압차가 나지 않으면 1
CAN은 차동전압을 사용하고, 두 선의 전압 차가 있으면 값이 0이고 차가 없으면 값이 1입니다.
전압 차가 0.9V 부터 5V 까지는 0이고 전압 차가 -1V 부터 0.5V 까지는 1입니다.
0을 Dominant(우성), 1을 Recessive(열성)이라 부릅니다. 이는 버스에 1과 0을 동시에 쓰면 0이 반영되기 때문입니다.
Broadcast addressing을 사용
CAN 메시지는 누가 누구한테 보냈는지에 대한 정보가 없습니다. 메시지의 ID가 있을 뿐입니다.
메시지 ID는 내가 보낸 신호의 종류를 지정하는 것입니다.
메세지가 필요한 제어기가 이를 가져다 사용합니다. 따라서 메시지에 누가 누구에게 보냈는지에 대한 정보는 없습니다. 해당 정보는 db라는 이름으로 따로 보관하게 됩니다.
차량 제어기의 특정 정보는 다른 여러 제어기에서도 사용되는 경우가 많습니다. Broadcast addresing 방식은 이를 효과적으로 처리할 수 있습니다.
CAN 종류
CAN은 여러 가지 종류가 있습니다. 위에 내용은 High Speed CAN을 기준으로 설명하였습니다. 이외에도 Low Speed CAN, CAN FD 등이 존재합니다.
Bus system | Transfer rate (Maximum) |
CAN (Low Speed) | 125 kBit/s |
CAN (High Speed) | 1 Mbit/s |
CAN FD | Not Defined |
CAN (High Speed)는 최대 전송 속도는 1Mbit/s지만 일반적으로 500Kbit/s을 많이 사용합니다. CAN은 전속 속도가 빠를 수록 전송선의 길이가 짧아지는데 이러한 이유로 500kbit/s를 많이 사용합니다.
참고