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

07. CAN 정보 전달 방식 (BUS Networking, Broadcast Addressing)

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

그러면면 지금부터 CAN의 정보 전달 방식에 대해서 알아 보도록 해요!

 

정보 전달 방식에 앞서서, 한가지 생각을 해보면 좋을 것 같습니다.

 

왜 자동차에서 CAN이라는 통신 방식을 사용하는 것일까요?

전압으로 다른 방식으로 전달 할 수도 있었을 것입니다.

예전에는 아래와 같이 Point to Point 방식을 사용하였습니다.

이 방식은 전압을 전달하는 선을 하나씩 연결하여 정보를 주고받는 방법입니다.

저 라인에 12V를 주면 이것은 1로 해석을 해서, 에어컨을 켜라! 라는 뜻이 되겠고

0V를 주면 0이니까 에이컨을 꺼라! 라는 뜻이 되겠죠!

 

그런데, 2가지 문제점에 봉착하게 됩니다.

1) 자동차에 전기장치가 많아지면서 ECU가 많아지고 더 많은 라인이 필요하게 되었다.

자동차 하나 만드는데 드는 노력이 많아지고, 배선이 무거워져 연비에 영향을 준다!

 

2) 자동차에서 Face Lift 하는데, ECU 하나를 추가해야하는 상황이다!! 큰일이다. 다시 배선연결 회로를 짜고

검증해야 한다!!

 

여기서 2)번에 해당하는 부분이 확장성인데, Point to Point방식의 약점은 바로이 확장성에 있습니다.

결국 ECU 하나를 추가되면, Wiring System 구성 및 검증을 수반해야 하기 때문에 확장성에 가장 큰 어려움이 있습니다.

이것이 자동차에서 Point to Point 통신 방식을 사용할수 없는 이유가 되었습니다.

 

 

1. CAN은 Bus Networking 방식이다?


만일 위의 그림과 같이 BUS Networking 방식을 사용한다면??

전선의 무게도 줄일수 있고, 시스템 검증도 줄일수 있고

다른 ECU 하나가 추가 된다고 해도 바로 BUS에 연결하면 되니 확장성이 많이 개선될수 있습니다.

여기서 BUS Networking 방식이 사실 감이 잘 오지 않습니다.

중요한 포인트는,

BUS라는 전압 라인에 아주 작은시간동안, 시간을 할당하여 정보를 전달하겠다는 의미입니다.

결국 전압 라인은 하나니까, 2us 정도씩 아주 작게 전압을 조절하여, 

정보를 전달하고

서로 해깔리면 안되니까!

이것이 내가 보낸 신호다. 남이 보낸신호다라는 구분을 할수 있도록 교통정리가 필요합니다.

그러한 교통정리는 CAN 프로토콜로 정의하여 미리 약속을 해놓습니다.

 

ECU는 저위에 떠다니는 전압을 받아서, 

해석하고 이것이 내가 필요한것이면 받아서 수신하면됩니다.

 

CAN은 이렇게 CAN_H과 CAN_L을 이용한 BUS Networking 방식을 사용합니다.


2. CAN은 Broadcast Addressing 방식을 사용한다?

방금전 CAN이 Bus를 이용하여 정보를 전달하는 것을 설명하였습니다.

그런데 여기서 Broadcast Addressing은 무슨 뜻일까요?

 

무언가 방송을 하는 것같습니다.

내가 노래를 부르면 사람들이 다 듣습니다.

방송하는 것과 같은것이죠

 

만일 제가 특정 사람의 귀에만 대고 속삭이면 이건 방송을 하는 것은 아닙니다.

 

다시 말해서 지금 CAN이라는 통신 방식은 제어기 들이 통신하는 방식입니다.

그래서, 제어기들 모두가 동등한 권리를 가집니다.

따로 Master, Slave의 개념은 없습니다.

 

지금 현재 CAN 라인에 아무런 정보도 보내고 있지 않는 상태 입니다.

그런데, ECU 1이 몬가 정보를 보낼것이 있나 봄니다.

그러면, ECU 1은 바로 CAN H와 CAH L의 전압 라인을 장악하게 됩니다.

아래와 같이 약 111개의 비트를 보내겠죠!

대략 하나의 메시지를 500Kbps로 전달한다고 할때 1개의 비트당 2us가 걸립니다.

그러면 111*2u = 222us가 걸리고 추가적인 비트(Stuff Bit)도 있어서 계산하면 약 250us가 걸립니다.

250us 동안 위의 순차정인 비트 정보를 전압으로 보내면서, 라인을 장악하고 있는 것입니다.

노래를 크게 부르고 있는 것입니다.

다른 ECU는 다 CAN H, CAN L 라인과 연결이 되어 있기 때문에

ECU1이 노래를 부르는 것을 다 들을수 있습니다.

 

ㅎㅎ 그렇습니다.

내가 노래를 부르면 다 들을수 있다.

이것이 Broadcast Addresing 방식이라고 할수 있습니다.

 

그런데, 한가지 의문이 듭니다!!!

 

만일 ECU1과 ECU2가 동시에 정보를 보내고 싶습니다.

동시에 CAN H, CAH L 라인을 장악하고 싶습니다.

 

이러할 경우 어떻게 해야할까요?

이제 Arbitration의 개념이 나오게 됩니다!!!

 

반응형

댓글