NODE 1, NODE 2가 같은 CAN ID로 메시지를 전송하게 될 때 우선 순위는 어떻게 되나요?
안녕하세요 CAN 통신 스터디를 하는 중에 아래와 같은 질문 이있어서 확인 부탁 드립니다.
NODE 1, NODE 2가 같은 CAN ID로
메시지를 전송하게 될 때 우선 순위는 어떻게 되나요?
제가 STM32를 이용해서 CAN 통신 공부를 하고 있는데
STM32에서 CAN 에러가 발생 되서 확인해보니
Form Error와 Bit Stuffing 에러가 확인 됐습니다.
이 에러가 같은 CAN ID로 동시에 메시지를 보낼 경우
발생 될 수가 있나요?
위 에러는 보통 어떤 경우에 발생되는지 설명 부탁 드립니다.
답변 1
0
안녕하세요.
우선 1번 질문의 경우는 음.. 캔 프로토콜상에 그런 부분에 대해서 정의된 내용은 없고 결론만 말씀드리면 어떻게 동작할지 예측 불가. 잘 모르겠다가 결론입니다.
그래서 일반적으로 하나의 캔 네트워크에서 여러 개의 제어기가 같은 ID의 메세지를 송신하지 않도록 설계합니다.
2번 질문의 경우 저도 정확하게 답변 드리기는 어렵습니다만
같은 제어기가 같은 메세지의 ID를 송신하면 말씀하신 에러가 발생하는 상황은 있을 수 있겠습니다.
2개의 제어기가 같은 ID의 메세지를 동시에 송신한다면 버스상에 CAN ID를 Write하는 부분 즉 Arbitration 구간 동안에 두 개의 제어기 모두 자신이 버스상에 가장 우선순위가 높은 메세지를 송신하고 있다고 판단을 할 것이고, 그래서 계속해서 메세지의 남은 영역들을 버스상에 출력하려고 할 겁니다.
(DLC, Data, CRC 등등)
근데 만약 제어기1과 제어기2가 송신하는 메세지 속에 DLC나, Data 영역의 값이 다르다면
어떤 제어기는 값을 1을 쓰고, 어떤 제어기는 값을 0을 쓰는 순간이 생길텐데
이 경우 0이 우선순위가 높으므로 버스상에는 0이 출력이 될 것이고,
그러면 값1을 쓰려고 시도했던 제어기 입장에서는 본인은 1을 출력했는데 다른 제어기에 의해 값이0 이므로
Bit Error로 인식할겁니다.
그리고 만약 제어기1번이 00000 이라는 값을 출력하는 경우, 비트 스터핑 룰에 의해 그 뒤에는 값 1을 써야 합니다. 근데 만약에 하필 다른 제어기2번이 그때 값 0을 write 하고 있다면 결과적으로 버스상에는 0이 출력될거고
이 경우에는 제어기1번 입장에서는 비트스터핑이 되지 않았으므로 비트스터핑 에러로 인식이 될 겁니다.
결론적으로, 같은 ID의 메세지를 2개의 제어기가 송신하는데 , 송신되는 2개의 메세지가 데이터의 값이나 DLC 값 등이 서로 다르다면 위와 같은 이슈로 인해 에러들이 발생할 수 있을 겁니다.
그리고 만약, ID도 같고 다른 값들도 전부 같다고 하더라도
제어기1번,제어기2번이 한치의 오차도 없이 정확하게 똑같은 타이밍에 메세지를 보낸다면 문제될게 없지만
메세지를 송신하는 과정에서 약간의 딜레이가 생겨서 둘중 하나가 1을 쓸 때, 다른 하나가 0을 쓰는 case가 발생해서 또 문제가 발생할 수도 있을 것 같습니다.
6:19 다이어그램에서 CANH CANL사이에 SPLIT 핀은 뭐하는 핀인가요?
0
21
0
candb와 data
0
82
1
Bus Off(버스 오프) 상태가 흔히 발생되는 상태인가요?
0
243
1
차량용 이더넷 통신 강의 계획은 없으신가요?
0
114
1
강의자료 문의
0
80
2
B라는 제어기가 CAN 버스에 CAN 신호를 송신하고 있다면 A제어기는 B제어기의 작업이 끝날 때까지 CAN 신호를 송신 못하나요? 작업이 완료될 때까지 기다려야 하나요?
0
114
2
120옴 저항 관련 문의
0
224
2
여러개 제어기가 동일한 메시지를 수신할 때 동시에 수신하나요?
0
119
2
Error 프레임 보낼 때
0
212
1
E2E protocol을 사용할때 data frame에 crc와 counter 영역을 따로 둔다고 했는데 데이터 영역에 있는 crc와 메세지 프레임에 따로 CRC 영역이 있는데 그 둘간의 차이는 뭘까요...?
0
249
1
D-sub 핀과 120옴 저항 질문드립니다
0
491
2
ERROR PASSIVE FRAME
0
134
1
CAN wake-up 시퀀스에 대해
0
653
2
통신 타이밍을 비교하는 시점
0
174
0
센서신호와 CAN
0
350
1
Profile1에서 사용하는 Data ID : 2BYTE
0
201
2
CRC 계산 방법
0
760
1
CAN DBC 파일이 있는데요. 어느 부분에서 E2E프로토콜
0
383
1
ack 기능 궁금한 점
0
429
2
수업 자료 관련 문의
0
249
1
데이터 영역에서 보면서 궁금증 잇읍니다
0
178
1
CAN통신에서 PDU라는 개념도 있나요?
0
600
2
혹시 무선 충전 관련해서 강의가 만들어질 수 있을까요?
0
212
1
CAN 메시지 ID 관련되서
0
331
2





