해결된 질문
작성
·
311
0
CAN에서 여러 센서들이 있는데
혹시 각 센서에서 CAN 데이터를 너무 많이 보내는 상황은 어떻게 되나요??
CAN 데이터 보낼 수 있는 데이터량의 한계가 있는지? 어떻게 정해지는지?
CAN 데이터가 너무 많을 경우 어떠한 문제가 생길 수 있는지?
답변 1
0
안녕하세요.
제 강의 중에 "메세지의 우선순위 & Bus Load " 라는 강의가 있는데 이 강의의 10분 47초부터 설명하는 Bus Load 관련 내용을 들으면 질문에 대한 답이 될 수 있지 않을까 합니다.
--
그래도 일단 여기에 답글을 남겨보자면
일단 High Speed CAN 기준으로 1개 메세지의 데이터 최대 길이는 8byte 이죠.
근데 만약에 내가 보내고 싶은 데이터가 100바이트 1000바이트면 어떻게 하면 될까요?
보내고 싶은 데이터를 앞에서부터 8바이트씩 잘라서 메세지를 여러 번 보내면 됩니다.
1000바이트가 아니라 아무리 큰 데이터라도 그만큼 메세지를 여러 번 보내면 데이터를 보내는 게 가능합니다.
근데 이 때 관건은 시간이 얼마나 걸리냐 입니다.
예를 들어 800byte의 데이터를 보내려면
메세지를 100번 보내야 되고
8,000byte의 데이터를 보내려면
메세지를 1,000번 보내야 합니다.
메세지 100번 보내는 것보다 1,000번 보내는게 시간이 10배 더 걸리겠죠.
그러면 메세지를 1개 보내는데 얼마나 시간이 소요될까요? 그것은 캔통신에서 사용하는 통신속도(BaudRate)과 연관이 있습니다.
BaudRate이란 1초동안 몇 bit의 데이터를 보낼 수 있는지를 나타내는 지표입니다.
이 속도가 빠르면 빠를수록 메세지 1개를 전송하는데 시간이 짧게 걸릴 것이고. 그만큼 데이터를 빨리 보낼 수 있게 됩니다.
다시 원래의 질문으로 돌아가서.
CAN데이터로 보낼 수 있는 데이터량의 한계가 있는가?
-> 한계 없습니다. 왜냐면 아무리 내가 보내려는 데이터가 커도 8바이트씩 나눠서 메세지를 그만큼 여러 번 많이 보내면 시간은 오래 걸리더라도 어쨋거나 보낼 수는 있으니까요.
-> 질문을 좀 바꿔서,
단순히 데이터 량의 한계를 묻는 게 아니라
일정한 시간 동안에 최대한 보낼 수 있는 데이터량 에 한계가 있는지? 를 물어야 합니다.
만약 그렇게 물으신다면. 한계가 있는 게 맞습니다.
그리고 그 한계는 BaudRate에 의해 결정됩니다. BaudRate이 높으면 높을수록 같은 시간동안에 보낼 수 있는 데이터의 량이 더 많아집니다.
그리고 두번재 질문. CAN 데이터가 너무 많을 경우 어떤 문제가 생길 수 있는지.
-> 캔 통신은 버스형 토폴로지 이기 때문에 버스상에는 오직 1개의 메세지만 송신될 수 있습니다.
그렇기 때문에 만약 각종 센서들이 보내야 되는 데이터가 너무 많아서 쉴 새없이 메세지를 계속 계속 보내게 되면 다른 제어기들은 보내고 싶은 메세지를 못보내거나 아니면 한참 뒤에 딜레이를 갖고 보내거나 하게 됩니다.
그렇기 때문에 Bus Load라는 개념을 도입해서 현재 버스에 얼마나 많은 메세지들이 왔다갔다 하고 있는지를 측정합니다.
버스 로드가 너무 높으면 통신이 제대로 되지 않기 때문에 자동차회사들은 버스로드의 최대치를 정해 놓고 이것을 관리합니다.
친절한 답변 감사합니다~~
제가 잘 이해하지 못한 부분에 대해서 명쾌하게 해결되었습니다!!