CAN의 탄생 과정
기술이 발전하면서 자동차에 ECU(전자제어장치)가 포함되기 시작했고 ECU들이 통신하기 위한 방법이 필요했습니다. 초기에는 UART(Universal asynchronous receiver/transmitter)가 사용되었지만, 각 ECU마다 1:1 통신을 위한 연결이 필요했기에 불필요한 비용이 늘어나게 되었습니다.
이러한 문제를 해결하기 위해 CAN(Controller Area Network)이 Bosch에 의해 개발되었고 1986년 공식적으로 소개된 이래, 현재 생산되는 대부분의 자동차에서 사용되고 있으며 기타 다양한 분야에서도 적용되고 있습니다.
현재 CAN 통신은 OBD-II라고 불리는 차량 진단용 통신 표준의 5대 프로토콜 중 하나로 포함되었으며, OBD-II 표준은 1996년 이후로 미국에서 판매되는 모든 승용차와 소형 트럭에 필수적으로 적용되어야 합니다.
CAN 통신의 특징 및 장점
1. Multi Master 통신 방식
CAN Bus는 Multi Master 방식으로 통신을 하기 때문에 여러 노드들이 공유하면서 언제든지 버스를 사용할 수 있습니다. (CSMA/CD 와 같은 방식을 이용함)
2. 간단한 구조
CAN High(CAN-C), CAN Low(CAN-IHS) 두 개의 신호로 통신하므로 단 2개의 선이 필요합니다.
3. ID 값을 이용한 우선 순위
자동차의 ECU들은 고유한 ID 값을 가지고 있으며 ID 값은 낮을수록 우선순위가 높은데, CAN에서는 수신된 ID 값을 이용하여 우선순위를 결정합니다. 주소가 아닌 ID 값을 이용하여 메시지 내용과 우선순위가 결정되기 때문에 이는 시스템 제어 속도와 안정성을 향상시킬 수 있습니다.
CAN Frame 구조
CAN 통신에서는 Frame이라고 하는 단위로 데이터를 전송합니다. Frame의 기본 구조는 아래와 같습니다.
구분 | 설명 | 길이(Bit) |
SOF (Start of Frame) | Frame 시작을 의미하는 필드 | 1 |
Identifier (ID) | 식별자로서 메시지의 내용을 식별하고 메시지의 우선순위를 부여하는 필드 | 11 |
RTR (Remote transmission reques) |
원격 전송 요청 필드 | 1 |
IDE (ID Ext Bit) | 확장 CAN인지 판단하는 필드 | 1 |
r (Reserved) | 나중을 위해 예약된 필드 | 1 |
DLC | Data 필드의 길이를 나타내는 필드 (값이 8보다 크면 Data 필드가 8Byte의 크기를 가진다고 판단) |
4 |
Data | 전달하고자 하는 내용이 담긴 필드 | 0~64 |
CRC | Frame의 송신 오류 및 오류 검출에 사용되는 필드 | 15 |
CRC Delimiter | CRC의 Frame의 마지막을 나타내는 구분자 필드 (1로 설정됨) | 1 |
ACK | 메시지가 정상 수신되었음을 나타내는 필드 송신 노드가 ACK Bit에 1을 설정하여 전송하면 수신 노드에서 CRC의 결과에 따라 ACK Bit를 설정하여(정상:0, 비정상:1) 전송함. 만약, 비정상 수신이 확인될 경우 Frame을 재전송함 |
1 |
ACK Delimiter | ACK Frame의 마지막을 나타내는 구분자 필드 (1로 설정됨) | 1 |
EOF (End of Frame) | Frame의 마지막을 나타내는 필드 | 7 |
ITM (Intermission) | 버스에 있는 노드들이 Frame이 종료되었다고 판다하기 위해서는 1Bit가 연속적으로 11개가 보여야하는데 이를 위해 설정되는 필드 (ACK Delimiter - EOF - ITM으로 11개의 1Bit가 설정됨) |
3 |
CAN 통신의 동작 방법
CAN Bus에서는 전체 노드를 컨트롤하는 마스터 노드가 없기 때문에 노드에서 CAN Bus가 다른 노드에서 사용 중인지 확인합니다. 만약, CAN Bus가 사용 중이지 않는다면, 모든 노드는 ID 값을 통해서 자신에게 필요한 메시지를 수신하거나 송신하며, 다중 노드가 동시에 메시지를 CAN Bus에 송신할 경우 가장 낮은 ID 값을 가진 노드가 최우선적으로 Bus에 메시지를 송신합니다.
우선순위가 높은 메시지는 CAN Bus의 사용 권한을 보장받을 수 있으며 낮은 순위의 다른 노드들은 일정 시간 대기 후 다시 재전송을 수행합니다.
Reference
CAN 버스 - 위키백과, 우리 모두의 백과사전
CAN 통신(Controller Area Network)은 차량 내에서 호스트 컴퓨터 없이 마이크로 콘트롤러나 장치들이 서로 통신하기 위해 설계된 표준 통신 규격이다. CAN 통신은 메시지 기반 프로토콜이며 최근에는 차
ko.wikipedia.org
CAN (Controller Area Network) 통신 소개 및 동작 방법
안녕하세요. 이번에 소개할 내용은 ‘CAN(Controller Area Network) 통신 소개 및 동작 방법’을 주...
blog.naver.com
CAN 버스 점유방식(CSMA/CA)과 Bitwise Arbitration
버스 점유방식이란 메시지 전송과정에서 어떤 전송노드가 '버스'를 점유할지 결정하는 방식이다....
blog.naver.com
'Hack > Vehicle' 카테고리의 다른 글
자동차 개념 정리 - OBD(On Board Diagnostics)-II (0) | 2021.11.02 |
---|---|
자동차 해킹 실습 따라하기 (Exploiting CAN-Bus) (0) | 2021.11.02 |
자동차 해킹 실습 환경 구축하기 (2) | 2021.11.01 |
자동차 개념 정리 - ECU(Electronic Control Unit)와 MCU(Micro Controller Unit) (0) | 2021.11.01 |
댓글