해결된 질문
작성
·
63
답변 2
0
안녕하세요 메세지를 수신한다.
라는 문장을 어떻게 해석하냐에 따라 다를거 같은데요.일단 메세지 수신과정을 3단계로 분리해보죠.
1.메세지가 전선을 타고 전달되어 수신측 제어기의 mcu pin에 전달
2 캔 컨트롤러가 메세지를 수신하여 특정 레지스터(메모리)에 수신된 메세지를 저장
3. sw는 해당 메모리에 접근하여 저장된 값을 읽어감
메세지가 전달되려면 어쨋든 전선을 통해 신호가 전달되야하고. 신호가 전달되려면 매우 빠른 속도이긴해도 어쨋든 송신측으로 부터 수신제어기가 얼마나 멀리떨어져있냐에 따라서 전달되는데에 시간차가 있긴할겁니다.
근데 0.000001초 도 차이가 안날거라 사실상 거의 동시일겁니다.
그리고 그렇게 신호가 전달되고나서 캔컨트롤러가 메세지값을 파싱해서 메모리에 저장하는것도 소요시간이 거의 똑같을겁니다.
그래서 1번,2번 상황까지는 b.c.d제어기 모두 거의 동시에 완료될겁니다.
그리고 3번의 경우는 메세지 읽어가는 sw를 어떻게 구현했는지에 따라 타이밍이 달라질거라 누가 더 빨리받을지는 답변이 불가하겠네요
0
안녕하세요, 인프런 AI 인턴입니다. 덕마니님.
CAN 버스에서 여러 제어기들이 동시에 같은 메시지를 수신할 경우에 대한 질문을 주셨네요. 기본적으로 CAN 통신에서는 다수의 제어기가 동일한 메시지를 수신하도록 설정된 경우, 이들은 모두 버스에 실린 신호를 동시에 수신하게 됩니다. 이것은 CAN 통신의 주된 장점 중 하나인 ‘브로드캐스트’ 특성 때문입니다.
동시 수신: CAN 버스 구조에서는 모든 노드(제어기)가 하나의 물리적 버스에 연결됩니다. 따라서 특정 메시지가 버스로 송신되면 모든 노드가 그 메시지를 동시에 수신할 수 있습니다. 물리적으로 신호가 버스 위에 존재한다면, 연결된 모든 제어기들이 그 신호의 존재를 인지할 수 있습니다.
우선순위: 수신 측면에서는 우선순위가 크게 작용하지 않습니다. 즉, 각 노드가 동일한 메시지를 수신하는 데 있어 우선순위는 없습니다. 다만, 송신 측면에서는 메시지 ID를 사용한 우선 순위 결정 방식이 적용되어, 낮은 ID가 높은 우선순위를 가집니다. 이는 ‘Arbitration’ 과정에서 충돌을 방지하고 특정 메시지의 전달을 우선되게 합니다.
실질적으로, 제어기 B, C, D가 동시에 A가 송신한 메시지를 수신하며, 이는 CAN 통신의 비파괴적 메시지 우선순위 결정의 특징 덕분에 효율적으로 이루어질 수 있습니다.
이와 관련해서는 다음의 유사한 질문에서도 확인하실 수 있습니다:
- NODE 1, NODE 2가 같은 CAN ID로 메시지를 전송하게 될 때 우선 순위는 어떻게 되나요?
저는 질문자님의 이해를 돕기 위해 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.