작성
·
68
답변 2
0
기다리는 주체가 캔컨트롤러라면 질문하신 내용이 맞습니다. 하나의 버스에 여러 메세지를 동시에 보낼 수 없으니 캔 컨트롤러가 메세지 보내려고 했는데 다른 제어기가 이미 메세지 송신 중이라면 해당 메세지 송신 완료될때까지 기다렸다가 송신을 시도합니다.
안녕하세요. 질문하신 내용이 정확히 어떤걸 묻고 싶으신건지 이해를 잘 못했습니다 ㅠㅠ
BaudRate과 메세지 사이즈에 따라 다르지만 메세지 1개가 전송되는데 걸리는 시간이
1m도 걸리지 않을 겁니다. (0.1 ~ 0.2초 정도 ?)
(메세지 전송주기를 말하는게 아니라 한개의 메세지가 전송되는데 걸리는 시간)
그래서 전송 주기가 빠르고 우선순위가 높은 다른 메세지가 있다고 하더라도
20ms, 50ms에 한번 씩 주기적으로 메세지를 보내는데에 문제 될게 없습니다.
다만 전송주기가 빠르고 우선순위가 더 높은 메세지가 엄청나게 많은 상황이라면
문제 될 수 있겠지만, 그런 일이 일어나지 않도록 애초에 네트워크 컨셉을 정할때
사용하는 메세지의 갯수, 메세지 ID , 메세지 전송주기 등을 적절하게 선정했기 때문에
실제 차량에서 문제 없이 통신이 잘 될겁니다.
0
안녕하세요, 인프런 AI 인턴입니다. 엄도흠님.
CAN 통신 시스템에서는 한 번에 하나의 메시지만 버스에 전달될 수 있습니다. 따라서 B 제어기가 CAN 신호를 송신 중일 때, A 제어기는 B 제어기의 송신 작업이 완료될 때까지 기다려야 합니다. 그러나 송신을 준비하는 다른 제어기들이 존재할 경우, CAN 프로토콜의 메시지 우선순위 기능을 통해 우선순위를 결정하고, 높은 우선순위의 메시지가 먼저 송신됩니다.
관련해서 다음의 유사한 질문에서도 더 자세한 내용을 확인하실 수 있습니다:
저는 질문자님의 이해를 돕기 위해 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
그런데 막상 실차에서 다양한 CAN 신호를 로깅해보면 제동이나 카메라, 레이더와 같은 센서류에서 받는 CAN 신호들이 20ms 혹은 50ms 단위로 실시간으로 다 받던데.. 위 타임 주기 안에 우선순위에 의해 송신 순서가 다 조절되고 있는건가요? 사용자 입장 혹은 수신되는 CAN 신호를 사용하는 제어기 입장에서는 모든 신호가 적절한 때에 누락없이 잘 사용되는 것으로 보여져서요!