🚗 CAN 프로토콜
CAN : Controller Area Network
1️⃣ CAN 프로토콜이란?
CAN은 자동차 부품회사인 보쉬(BOSCH)에서 개발된 차량용 네트워크 통신 방식이다. 차량내에서 호스트 컴퓨터 없이 컨트롤러나 장치들끼리 통신하기 위해서 만들어졌다. 차량 내 ECU(Eletronic control unit)들은 CAN프로토콜을 사용하여 통신한다.
CAN이전에는 Point-To-Point(일대일)방식으로 ECU를 연결했다. 하지만 서로 다른 모듈간 통신을 위해서는 많은 선(line)이 필요했다. 이는 배선의 증가를 초래하고 유지 보수문제, 배선 증가로 인산 무게 증가, 연비 하락과도 연결이 되었다. 그리고 기술의 발전으로 차량 내부에 모듈 수가 점점 증가하고 있기 때문에 이런 문제의 해결이 필요했다. 이런 문제를 CAN이 해결해주었다.
CAN은 직렬 버스 시스템으로 위의 그림과 같이 하나의 큰 버스 네트워크를 이용한다. 즉, 여러개의 노드(NODE)가 동일한 버스를 공유하는 방식이다. 여러개의 CAN디바이스가 서로 통신할 수 있는 안정적인 다중 통신(Multi Master 방식) 방식의 네트워크이다. 이런 네트워크는 ECU가 시스템 내 각 디바이스마다 아날로그 및 디지털 입력을 갖는 것이 아니라 단일의 CAN인터페이스만 보유할 수 있다. 따라서 자동차의 전체 비용과 중량도 줄일 수 있다.
CAN통신은 위와 같이 여러개의 제어기들을 병렬로 연결해서 데이터를 주고 받는 구조로 되어 있고 양 끝단에는 종단 저항을 받고 있다. 통신 라인을 공유하는 모든 제어기들이 마스터 역할을 하고 있기 때문에 필요에 따라 언제든지 통신이 가능하다. 모든 노드가 와이어 두개로 연결된다. 두 개의 와이어가 TP(Twisted Pair)를 형성하며, 특징적인 120Ω 저항으로 종단 된다.
제어기 내부의 CAN통신 회로 구성은 위의 블록도와 같다. 가장 오른쪽은 CAN BUS로 CAN H와 CAN L신호를 주고 받는다. CAN BUS는 제어기 커넥터를 통해 연결된 후 CAN트랜시버로 연결된다. CAN 트랜시버는 마이크로컨트롤러 (MCU)와 연결된다. 즉, MCU와 CAN BUS사이에 CAN 트랜시버가 있는 구조이다.
🔹 CAN 트랜시버의 역할
CAN트랜시버는 디지털 CAN데이터 프레임을 물리적 신호(CAN_H 및 CAN_L 차동 신호)로 변환하고 전송하는 역할을 한다.
2️⃣CAN프레임 형식
CAN 통신에서 요구하는 CAN통신 프레임을 만족해야 제어기들 간에 데이터를 전송할 수 있는다.
SOF(Start of Frame) | 메시지의 시작을 표시, idle 상태 이후 동기화 |
Identifier | 메시지의 우선 순위를 설정, 이진값이 낮을 수록 우선순위가 높음 |
RTR(Remote Transmission Request) | 데이터 프레임과 리모트 프레임 구분(데이터 프레임은 0) |
IDE(Idenrifier Extension) | CAN Standard프레임과 CAN Extended프레임 구분 |
RO | Reserved bit |
DLC(Data Length Code) | 전송 중인 데이터의 바이트 수 |
Data | 8byte데이터를 전송 |
CRC(Cycle Redundancy Check) | 16bit checksum |
Ack(Acknowledgement) | 승인 |
EOF(End of Fram) | CAN프레임의 끝을 표시 |
IFS(Interframe Space) | 버퍼 영역 |
CAN통신은 브로트캐스트 통신으로 여러 제어기들이 신호를 함께 보낸다. 그래서 네트워크의 모든 디바이스는 전송되는 모든 메세지를 볼 수 있따. 각 디바이스는 메시지가 중요한지 아니면 제거해도 되는지를 결정한다. 하지만 동시에 여러 제어기들이 신호를 송신한다면 충돌이 발생할 수 있다. 그래서 CAN은 중요도에 따라 우선순위를 설정한다. 어떻게 우선순위를 정할까?
3️⃣ CAN프로토콜의 우선순위 결정 및 충돌 방지 방식(Arbitration process)
신호가 HIGH이면 recessive, LOW이면 dominant이다. Dominatm(LOW)가 Recessive(HIGH)보다 우선순위가 높다.
- Dominant (LOW, 0) → "실제로 신호를 전송하고 있음"
- Recessive (HIGH, 1) → "버스를 비워두고 있음 (기본 상태)"
모든 노드는 자신이 보낸 신호와 실제 버스의 상태를 비교하면서 전송을 진행한다. 만약 자신이 보낸 신호가 Recessive(HIGH)인데, 실제 버스 상태가 Dominant(LOW)라면 자신보다 우선순위가 높은 노드가 있다는 의미이므로 전송을 중단해야 한다.
그림을 보면 10~6비트까지는 NODE1, NODE2, NODE3이 모두 같은 값을 보내므로 그대로 전송된다. 하지만 5bit에서 NODE2가 Recessive인 HIGH 상태가 되었지만 실제 버스에 LOW가 존재하기 때문에 NODE2는 자신보다 우선순위가 높은 노드가 있다는 것을 인식하고 전송을 중지한다.
2bit에서도 마찬가지이다. NODE1이 HIGH를 보냈지만 버스에는 LOW가 존재하기 때문에 자신보다 우선순위가 높은 노드가 있다는 것을 인식하고 전송을 중지한다.
https://codinghago.tistory.com/80
CAN BUS 네트워크의 버스 충돌 방지 과정
📍CAN BUS 네트워크 https://codinghago.tistory.com/75 CAN통신 이해하기🚗 CAN 프로토콜CAN : Controller Area Network 1️⃣ CAN 프로토콜이란? CAN은 자동차 부품회사인 보쉬(BOSCH)에서 개발된 차량용 네트워
codinghago.tistory.com
4️⃣ CAN 장점
✔ 낮은 비용 및 저전력 소비
- CAN 컨트롤러와 트랜시버 칩셋이 비교적 저렴하고, 통신 방식이 단순하여 구현 비용이 낮음.
- 또한, 노드가 대기 상태일 때 저전력 모드로 전환 가능
✔ 브로트캐스트 통신
- A/CA(Carrier Sense Multiple Access with Collision Avoidance) 방식을 사용하여 충돌을 방지함.
- 비트 단위 충돌 검출(Arbitration) 덕분에 데이터 전송 중 충돌이 발생하지 않음.
- 또한, LOW(Dominant) 신호가 우선권을 가지므로 신호가 더 확실하게 전달됨.
✔ 우선순위 기반 메시지 전송 (Priority Arbitration)
- CAN은 멀티마스터 방식이지만, 우선순위가 높은 노드(낮은 ID)가 항상 먼저 전송할 수 있음.
- 충돌이 발생해도 데이터 손실 없이 자동 조정됨 (비트 단위 Arbitration).
✔ 고장 감지 및 내결함성 (Falut Tolerance)
- CAN은 자동으로 오류를 감지하고 오류가 발생한 노드는 네트워크에서 격리됨.
- 비트 스터핑(Bit Stuffing), CRC(순환 중복 검사), ACK(수신 확인) 등을 통해 데이터 오류를 검출.
5️⃣ CAN 단점
✔ 데이터 전송 속도 제한적 (최대 1Mbps)
- 고속 데이터 통신이 필요한 경우 CAN의 전송 속도가 부족할 수 있음.
- 일반적인 Classical CAN의 최대 속도는 1Mbps, CAN FD(Flexible Data-rate)를 사용하면 5~8Mbps까지 가능.
✔ 네트워크 길이에 따른 속도 저하
- 배선이 길어질수록 전송 속도가 감소함.
- 예를 들어, 최대 1Mbps 속도로 전송하려면 네트워크 길이는 40m 이하여야 함.
✔ 노드 지정 방식이 없음(브로드캐스트 방식)
- CAN은 IP 주소 같은 개별 노드 주소가 없고, 모든 노드가 동일한 메시지를 받음.
- 즉, 특정 노드에만 데이터를 보내려면 필터링(Filtering) 또는 추가적인 소프트웨어 설정이 필요함.
✔ 보안 취약점(암호화 기능 없음)
- 기본적인 CAN 프로토콜에는 데이터 암호화나 인증 기능이 없음.
- 물리적 접근이 가능하면 네트워크에 침입하여 데이터 조작이 가능함.
- 🚗 예제: 자동차 해킹(OBD-II 포트를 통한 원격 해킹) 사례가 존재함.
- ➡ 해결책: CAN-FD 및 Secure CAN(추가 보안 기능 적용) 사용.
Reference
▪ https://m.blog.naver.com/lagrange0115/221941482740
CAN 통신의 개요 (Controller Area Network)
통신은 사람이나 사물 간에 매체를 통하여 정보나 의사를 전달하는 것을 말합니다. 자동차 안에는 수많은 ...
blog.naver.com
▪ https://www.ti.com/document-viewer/lit/html/KOKT078
KOKT078 Technical article | TI.com
www.ti.com
▪ https://ddongwon.tistory.com/34
CAN 프로토콜이란?
1. CAN 프로토콜이란? CAN은 (Controller Area Network) 차량내에서 호스트 컴퓨터 없이 컨트롤러나 장치들끼리 통신하기 위해서 만들어진 표준 통신 규격 이다. 즉 CAN은 위의 그림과 같이 하나의 큰 버스
ddongwon.tistory.com
CAN (Controller Area Network) 프로토콜 개요
이 NI 백서는 중요한 용어 및 프로그래밍 팁을 포함하여 차량 내 사용을 위한 CAN (Controller Area Network)에 대한 자세한 내용을 제공합니다.
www.ni.com
▪ https://www.fescaro.com/ko/archives/249/
기술블로그 - INSIGHT - 페스카로(FESCARO) - 자동차 소프트웨어 전문기업(자동차 사이버보안, 제어기,
페스카로는 자율주행차, 전기차, 커넥티드카 등 미래차의 모든 SW솔루션을 제공합니다. 자동차 사이버보안부터 게이트웨이 제어기, V2X, SDV까지 다가오는 미래차 산업의 혁신을 주도합니다.
www.fescaro.com
'하루 30분 전기.전자.하드웨어 공부하기' 카테고리의 다른 글
EEPROM(Electrically Erasable Programmable Read-Only Memory) 개념과 사용예시 (0) | 2025.02.14 |
---|---|
EPEC Controller의 CAN1과 CAN2 차이 (0) | 2025.02.13 |
전자회로 왕초보의 기초 - 1.주요 부품 설명 (0) | 2025.02.12 |
CAN BUS 네트워크의 버스 충돌 방지 과정 (0) | 2025.02.10 |
CANopen 프로토콜 이란 (CAN통신) (1) | 2025.02.06 |