본문 바로가기
Embedded SW/Embedded SW Introduction

09. CAN Arbitration 은 어떻게 이루어질까?

by 방구석 임베디드 2021. 7. 17.
반응형

우선 Arbitration(중재)라는 것은 무엇을 의미하는 것일까요?

 

CAN BUS 라인은 모든 ECU가 사용하고 있습니다.

만일 ECU1과 ECU2가 같은 시점에 Message를 보낸다고 가정해 보아요!

그러면 그 순간 CAN 라인은 누구에게 우선권을 주어야 하는걸까요?

 

결론부터 말하면, 아래의 Identifier(Arbitration) Field의 값이 낮은 순부터

CAN BUS에 정보를 실을 수 있습니다.

 

아래 그림을 보면 Node A, Node B, Node C가 모두 동시에 정보를 보내려고 합니다.

Start-of-frame bit에서 message의 시작을 알립니다.

 

Node A = 100 0000 0111 = 0x407

Node B = 100 0000 0101 = 0x405

Node C = 100 0000 0100 = 0x404

 

Identifier frame의 2번 비트를 살펴 보도록 하요!

모두 1을 보냄으로 여기까지는 동일합니다.

그런데 1번 비트를 살펴보면 Node A는 1을 보내고 Node B와 C는 0을 보냅니다.

0이 dominant이므로 0이 이깁니다.

그리고 0번 비트에서 Node C가 0이므로 Node C가 이깁니다.

결국 Node C가 BUS를 장악하게 됩니다.

 

여기서 한가지 주목해야할 점이 있습니다.

축구경기를 할때 심판이 있는 것처럼, 지금 누군가가 교통정리를 했나요?

보통은 Master가 교통정리를 합니다.

하지만, 여기서 Master는 없었고, 이러한 것을 조절해주는 다른 Controller는 없었습니다.

그냥 A,B,C끼리 부딪치고, 알아서 Arbitration이 되었습니다.

 

지금 회로적으로 CAN 라인에서는 0일때 High 라인은 3.5V, Low 라인은 1.5V가 됩니다.

아래와 같이 ECU1은 0을 날리고, ECU2는 1을 날리는 상황이라면

ECU1의 CAN Transceiver는 3.5V(CAN H), 1.5V(CAN L)을 전압을 생성하여 보낼것이고

ECU2의 CAN Transceiver는 2.5V(CAN H), 2.5V(CAN L)을 전압을 생성하여 보낼것입니다.

그러면 저 CAN H라인과 CAN L 라인은 어떻게 전압이 측정될까요?

CAN H는 3.5V, CAN L는 1.5V가 측정이 됩니다.

다시말해서 0을 보낼때, BUS를 장악하도록 만들어진것입니다.

 

다시한번 이 부분을 살펴 볼게요!!

그냥 회로적으로 ID가 낮을수록 먼저 버스를 장악하도록 만들었습니다.

그리고 Arbitration에서 진 Node는 그 순간 CAN Controller에서 전압을 보내지 않습니다.

NODE A는 주황색 색깔이 시작되는 부분부터 더이상 전압을 보내지 않습니다.

NODE B도 identifier 0번 비트부터 전압을 보내지 않습니다.

 

그러면, 정말 중요한 메시지는 ID가 낮은것을 선택해야 겠고,

덜 중요한 메시지의 ID는 크게 선택을 해야겠네요 ^^

 

오늘 포스팅은 이것으로 마치도록 하겠습니다.

반응형

댓글