CAN(Controller Area Network)은 1986년 독일의 Robert Bosch GmbH에서 개발한 직렬 통신 프로토콜로, 원래는 자동차 내부의 전자 제어 장치(ECU, Electronic Control Unit) 간의 실시간 통신을 위해 설계되었습니다. 멀티 마스터(Multi-Master) 방식의 통신을 지원하는 필드버스 기술로, 높은 신뢰성과 내노이즈성을 바탕으로 자동차 분야를 넘어 산업 자동화, 의료 장비, 선박, 항공기 등 다양한 분야로 응용 범위가 확장되었습니다.
CAN 프로토콜은 다음과 같은 프레임 형식을 사용합니다:
1. SOF(Start of Frame): 프레임의 시작을 알리는 1비트
2. ID 필드:
CAN은 노드 간 직접 통신이 아닌 메시지 브로드캐스팅 방식을 사용합니다. 모든 메시지는 고유한 식별자(ID)를 가지며, 수신 노드는 자신에게 필요한 메시지만 선택적으로 수신합니다.
여러 노드가 동시에 전송을 시도할 경우, CSMA/CD+AMP(Carrier Sense Multiple Access/Collision Detection with Arbitration on Message Priority) 방식으로 충돌을 해결합니다. 낮은 ID 값을 가진 메시지가 높은 우선순위를 가지며, 충돌 발생 시 우선순위가 높은 메시지가 버스 사용권을 획득합니다.
CAN은 다음과 같은 5가지 오류 검출 메커니즘을 갖추고 있습니다:
1. CRC(Cyclic Redundancy Check): 데이터 전송 오류 검출
2. 프레임 검사(Frame Check): 프레임 형식 검사
3. ACK 검사(Acknowledgement Check): 수신 확인 실패 검출
4. 비트 모니터링(Bit Monitoring): 송신 비트와 버스 상태 비교
5. 비트 스터핑(Bit Stuffing): 연속된 5개 이상의 동일 비트 방지
오류 발생 시 오류 플래그를 전송하여 모든 노드에게 알리고, 오류 카운터를 증가시킵니다. 오류가 지속되면 해당 노드는 오류 패시브(Error Passive) 상태를 거쳐 버스오프(Bus Off) 상태로 진입하여 네트워크 안정성을 확보합니다.
기존 CAN의 한계를 극복하기 위해 2012년 도입된 개선된 버전으로, 다음과 같은 특징이 있습니다:
CAN은 OSI 모델의 물리 계층과 데이터 링크 계층만 정의하므로, 다음과 같은 상위 계층 프로토콜과 함께 사용됩니다:
CAN은 현대 자동차에서 가장 널리 사용되는 네트워크 프로토콜로, 다음과 같은 시스템에 적용됩니다:
산업 현장에서 CAN은 다음과 같은 용도로 활용됩니다:
최신 자동차에서는 CAN과 함께 다음과 같은 고속 네트워크도 함께 사용되고 있습니다:
자동차 네트워크의 보안이 중요해지면서, 다음과 같은 보안 기능이 CAN 시스템에 추가되고 있습니다:
실시간 이더넷 기술인 TSN과 CAN의 장점을 결합한 새로운 통신 프로토콜들이 연구되고 있습니다.
CAN은 30년 이상의 역사를 가진 입증된 통신 프로토콜로, 실시간성, 신뢰성, 비용 효율성을 바탕으로 자동차 및 산업 환경에서 널리 사용되고 있습니다. CAN FD와 같은 개선된 버전과 다양한 상위 프로토콜의 발전으로 응용 범위가 계속 확장되고 있으며, 여전히 현대 임베디드 시스템의 통신에서 중요한 역할을 담당하고 있습니다. 다만, 대용량 멀티미디어 데이터나 고속 제어 시스템을 위해서는 이더넷과 같은 고속 프로토콜과의 상호 보완적인 사용이 필요합니다. 향후에도 CAN은 자동차 및 산업용 네트워크의 기반 기술로서 계속 발전해 나갈 것으로 예상됩니다.
CAN은 '자동차의 신경망'과 같은 특별한 통신 방식이에요! 우리 몸에 있는 신경이 뇌와 근육, 눈, 귀 등을 연결해서 정보를 전달하듯이, CAN은 자동차 안의 여러 컴퓨터들을 하나의 선으로 모두 연결해요.
예를 들어, 운전자가 브레이크 페달을 밟으면 브레이크 센서가 "브레이크가 밟혔어요!"라는 메시지를 CAN 선을 통해 보내고, 이 메시지는 엔진 컴퓨터, 바퀴 제어 컴퓨터 등 여러 장치에 동시에 전달돼요. 각 장치는 필요한 메시지만 골라서 반응하기 때문에 아주 효율적이죠!
CAN은 아주 튼튼하게 만들어져서 전기적 간섭이나 노이즈에도 메시지가 잘못 전달되지 않아요. 또한 중요한 메시지(예: 브레이크 관련)는 덜 중요한 메시지(예: 라디오 볼륨 조절)보다 먼저 전송되게 할 수 있어서, 안전에 매우 중요한 역할을 한답니다!
처음에는 자동차에서만 사용했지만, 지금은 병원 장비, 공장의 로봇, 엘리베이터 등 다양한 곳에서도 CAN을 사용하고 있어요. 우리 생활 주변의 많은 기계들이 CAN 덕분에 더 똑똑하고 안전하게 작동하고 있답니다!