inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

CAN 통신 - 자동차 신입이 알아야 할 모든 것

메세지의 우선순위

NODE 1, NODE 2가 같은 CAN ID로 메시지를 전송하게 될 때 우선 순위는 어떻게 되나요?

해결된 질문

782

정현석

작성한 질문수 3

0

안녕하세요 CAN 통신 스터디를 하는 중에 아래와 같은 질문 이있어서 확인 부탁 드립니다.

  1. NODE 1, NODE 2가 같은 CAN ID로

메시지를 전송하게 될 때 우선 순위는 어떻게 되나요?

 

  1. 제가 STM32를 이용해서 CAN 통신 공부를 하고 있는데

STM32에서 CAN 에러가 발생 되서 확인해보니

Form Error와 Bit Stuffing 에러가 확인 됐습니다.

이 에러가 같은 CAN ID로 동시에 메시지를 보낼 경우

발생 될 수가 있나요?

위 에러는 보통 어떤 경우에 발생되는지 설명 부탁 드립니다.

CAN

답변 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