본문 바로가기

하루 30분 전기.전자.하드웨어 공부하기

CAN BUS 네트워크의 버스 충돌 방지 과정

 

 

📍CAN BUS 네트워크 

 

https://codinghago.tistory.com/75

 

CAN통신 이해하기

🚗 CAN 프로토콜CAN : Controller Area Network  1️⃣  CAN 프로토콜이란? CAN은 자동차 부품회사인 보쉬(BOSCH)에서 개발된 차량용 네트워크 통신 방식이다. 차량내에서 호스트 컴퓨터 없이 컨트롤러나

codinghago.tistory.com

 

 

1️⃣ CAN 메시지 형식 

CAN은 다중통신망(Multi Master Network)으로 CSMA/CD + AMP(Carrier Sense Muliple Access/Collision Detection with Arvitration on Message Priority)방식을 이용한다.

 

  • CS(Carrier Sense) : 버스 상태가 idle 상태 일 때 전송 된다. 
  • MA(Muliple Access) : 다중 노드들이 동일한 네트워크에 연결되는 것이 가능하다. 
  • AMP(Arbitration on Message Priority) : 메시지 우선순위에 의한 버스 액세스 

 

CAN 노드에 메시지를 보내기 전에 CAN버스라인이 사용 중인지를 파악한다. 또한 메시지 간 충돌 검출을 수행한다. 이때 어떤 노드로부터 보내진 메시지는 송신측이나 수식측의 주소를 포함하지 않는다. 즉, 주소지정방식으로 통신하지 않는다. 대신 메시지의 처음 부분에 CAN 네트워크상에서 각각의 노드를 식별할 수 있도록 각 노드마다 유일한 식별자(ID-11bits 또는 29bits)를 가지고 있다. 

 

네트워크상에 연결된 모든 노드는 네트워크상에 있는 메시지를 수신한 후 자신이 필요로 하는 식별자의 메시지인 경우에만 받아들이고, 그렇지 않은 경우의 메시지는 무시한다. 네트워크상(CAN 통신라인)에 흘러 다니는 여러 노드의 데이터들이 동시에 사용자가 필요로 하는 노드로 유입되는 경우에는 식별자의 숫자를 비교하여 먼저 받아들일 메시지의 우선순위를 정하는데, 식별자의 숫자가 낮을수록 우선순위가 높다. 우선순위가 높은 메시지가 CAN 버스의 사용 권한을 보장받으며 이때 낮은 순위의 메시지는 자동적으로 다음 버스 사이클에 재전송이 되도록 한다. 각 CAN 메시지는 11비트의 식별자, 또는 29비트의 식별자를 가지며, CAN 메시지의 맨 처음시작 부분에 위치한다. 이러한 식별자는 메시지의 형태를 식별시켜주는 역할과 메시지에 우선순위를 부여하는 역할을 한다. 

 

 

2️⃣ CAN 버스의 충돌 방지 원리와  과정

 CAN 버스는 차등신호를 사용하며, 데이터는 두개의 전압차이 (ΔV )로 표현된다. 우성(dominant) 비트와 열성(recessive)비트라는 용어를 사용한다. 우성 비트는 논리적인 비트값 0을 가지며, 우성(0) 신호를 송신하면 전기적으로 신호값이 low가된다. 열성 비트는 논리적인 비트값 1을 가지며, 열성(1) 신호를 송신하면 전기적으로 high상태에 머물러 있는다. CAN버스는 기본적으로 열성 신호(1) 상태를 유지하다가, 특정 노드가 데이터를 보낼 때 우성 신호(0)를 전송한다. 

 일반적으로 Low(0)라고 하면 신호의 전압이 낮아진다고 생각할 수 있지만, CAN버스에서의 우성신호는 차등 전압이 커지는 상태이다. CAN_H는 Higt로 상승(3.5v), CAN_L는 Low로 하강(1.5v)로 전압 차이가 ΔV = 2V 로 커진다. 결과적으로 CAN 네트워크에서는 우성 신호를 보낸다는 것은 CAN_H는 올라가고, CAN_L는 내려가며,  차등 전압을 증가하는 것이다. 

 

✅우성 신호 (dominant, 0)

  • CAN_H는 전압이 높아지고(보통 3.5v)
  • CAN_는 전압이 낮아짐 (보통 1.5v)
  • 결과적으로 차등 전압 (ΔV) = 3.5V - 1.5V = 2V
  • 이 상태를 '버스가 활성화되었다'고 표현함.

열성 신호 ( recessive, 1)  

  • CAN_H와 CAN_L과 같은 접압(보통 2.5V)이 됨
  • 따라서 차등 전압 (ΔV) = 0V가 되어 신호가 없는 상태로 간주됨 

 기본적으로 모든 노드는 버스가 열성상태(1)를 유지하며, 만약 한 노드가 메시지를 보낼 필요가 생기면 이 노드는 버스 상태를 우성(0)으로 만들면서 데이터를 송신한다. 우성신호를 만들기 위해서 CAN_H를 3.5V로 올리고, CAN_L를 1.5V로 낮춘다. 송신할 메시지가 있는 여러 노드들이 동시에 송신을 시작하고 자신이 보낸 신호와 실제 버스 상태를 비교하면서 송신한다. 만약 자신이 열성신호(1)을 보냈는데, 버스에서 우성신호(0)가 감지되면, 자신보다 우선순위가 높은 노드가 데이터를 보내고 있다는 뜻이므로 즉시 송신을 중단한다. 이 과정을 통해 가장 우선순위가 높은 노드만 남아서 메시지를 전송할 수 있게 된다. 

 

 

예를 들어, 11비트 ID CAN네트워크에 노드 ID 15(00000001111b)와 16(00000010000)이 동작하고 있다고 하자. 두 노드가 동시에 메시지를 전송한다고 할 때, 각 각은 먼저 시작 비트를 전송한 후, 노드 ID를 전송한다.

 

ID 비트의 0~6비트 까지는 충돌없이 전송을 하다가 7번째 비트를 전송할 때, 노드 16은 열성 비트 1을 전송하고 노드 15는 우성 비트 0을 전송한다. 이때 노드 16은 자신이 1을 전송한 것을 알고 있으나, 자신이 CAN 네트워크에 읽은 값은 0이 된다. 그러므로 자신보다 우선순위가 높은 다른 노드 송신 중이라는 것을 인식하고 즉시 송신을 중단한다. 즉, 충돌을 감지하고 노드 16은 나머지 메시지들을 더 이상 전송하지 않는다. 반면 노드 15는 아무런 문제없이 다음 비트들을 전송할 수 있다. 

 

CAN 버스는 40m 이하의 네트워크 길이에서 1Mbps까지 전송할 수 있다. 거리가 멀어지면 전송률은 낮아져서, 500m에서는 125kbps로 전송할 수 있다. 향상된 CAN FD표준에서는 충돌 해결 이후 전송한 데이터 부분은 노드 ID전송 속도의 10배 정도까지 빠르게 전송할 수 있다. 

 

 

3️⃣ 송신 대기 및 전송기회

 

여러 노드가 동시에 송신을 시도하면 Bitwise Arbitration(비트 단위 우선권 결정 과정)을 통해 우선순위가 가장 높은 노드가 메시지를 보내게 된다.  그렇다면 우선순위가 낮은 노드들은 어떻게 송신을 할 수 있을까?

 

우선순위가 낮은 노드들은 송신을 멈추고 대기한다. 우선 순위가 높은 노드의 메시지 전송이 완료되면 버스가 다시 열성 신호 상태로 돌아온다. 대기 중이던 노드는 다시 송신을 시도한다. 만약, 또 다른 노드가 동시에 송신을 시도한다면 다시 우선순위 경쟁(Arbitration) 과정이 발생한다. 

 

하지만 시스템 디자인이 잘못도리 경우, 낮은 우선순위의 CAN메시지는 아예 전송되지 않을 수도 있다. 이러한 문제를 방지하기 위해 CAN 프로토콜은 우선순위가 낮은 노드도 일정 시간 후에 메시지를 재전송하도록 설계되어있다. 예를 들어, 우선순위가 낮은 노드 정보는 우성 비트 종료 시점에 자동으로 송신되며, 6클럭 비트 후에 재전송을 시도한다. 

 

✅인터프레임 간격(IFS, Inter_Frame Space)

  • 한 노드가 메시지를 전송한 후에는 짧은 대기 시간이 필요함
  • 이때 우선순위가 낮은 노드도 다시 송신을 시도할 수 있음

 

✅ 송신 재시도 (Automatic Retransmission)

  • 송신에 실패한 노드는 자동으로 다음 가능한 순간에 재송신을 시도함
  • 버스가 한순간이라도 비게 되면 낮은 우선순위의 노드가 다시 도전할 수 있음

 

✅ 네트워크 부하 조절

  • 만약 높은 우선순위의 메시지가 너무 많다면, 시스템 설계시 노드별 메시지 주기를 조정하여 특정 노드가 버스를 독점하지 않도록 함. 

 

 하지만 버스 부하가 증가할 때에는 낮은 우선순위의 CAN메시지가 전송되기 까지 오래시간이 걸린다. 이는 CAN통신 시스템의 실시간 성능을 저하하기 때문에 시스템을 디자인할 때에 CAN메시지의 우선순위는 전달하고자 하는 신호의 긴급성에 의해 결정되어야한다. 

 

 

Reference

 

http://elearning.vector.com/mod/page/view.php?id=1905

 

Vector E-Learning

자동차의 데이터 무결성 차량 전자 시스템의 안전과 신뢰성에는 안정적인 데이터 전송이 전제되어야 합니다. 따라서 CAN은 엄격한 실시간 조건을 준수할 뿐만 아니라 데이터 전송의 안정성도

elearning.vector.com

 

 

https://youngseong.tistory.com/336

 

CAN 통신이란

0. 순서1. CAN (Controller Area Network) 통신이란  1.1. 등장 배경  1.2. CAN의 구성  1.3. CAN의 특징  1.4. High Speed CAN vs Low Speed CAN   1.4.1. About High Speed CAN   1.4.2. About Low Speed CAN 2. About

youngseong.tistory.com

 

 

https://www.winstar.com.tw/kr/can-bus-interface-communication

 

CAN 버스 인터페이스 바로 알기 | Winstar

서문 Winstar는 변함없이 고객에게 종합적인 솔루션 서비스를 제공하고 있으며, 그에 따라 스마트 디스플레이 시리즈 제품을 활발히 출시해 왔습니다. 처음 출시된 CAN 시리즈 스마트 디스플레이

www.winstar.com.tw

 

 

https://ko.wikipedia.org/wiki/CAN_%EB%B2%84%EC%8A%A4

 

CAN 버스 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. CAN 통신(Controller Area Network)은 차량 내에서 호스트 컴퓨터 없이 마이크로 컨트롤러나 장치들이 서로 통신하기 위해 설계된 표준 통신 규격이다. CAN 통신은 메시

ko.wikipedia.org

 

 

https://chkw0107.tistory.com/49

 

CAN 통신 역사 History 배경 진화

CAN 기술의 역사 CAN 프로토콜 (CAN 사양 1.0), C 참조 CAN 모델 및 SAE 문서를 설명하는 Bosch가 발행한 최초의 문서 1986 년 2월 Robert Bosch GmbH는 SAE (Society of Automotive Engineers) 회의에서 CAN (Controller Area Networ

chkw0107.tistory.com

 

https://blog.naver.com/bycho211/221029297220