inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

에러의 종류: CRC 에러와 Ack 에러의 차이점

해결된 질문

2392

순이는배고파

작성한 질문수 1

0

안녕하세요, CAN통신 에러의 종류 학습하다가 궁금한 점이 생겨 질문 남깁니다.

에러의 종류 중 CRC 에러와 Acknowledge 에러의 차이점이 궁금합니다.

  1. CRC 에러
    - CRC는 데이터 오류를 검출하는 방법 중 하나
    - Data 영역 뒤에 붙어 데이터 전달 과정 중 값이 변조되진 않았는지 확인하는 역할
    - CRC 값이 이상한 경우 에러 발생

  2. Ack 에러
    - 송신자가 메세지를 보내면 수신자들이 CRC를 통해 데이터 변조 여부를 확인
    - 정상일 경우 Ack영역의 data1을 data0으로 바꿔 보냄
    - Ack영역에 1을 채워 보냈는데 1 그대로 돌아올 경우
    - 예외: CAN 네트워크에 제어기가 송신자 하나만 있을 경우

우선 제가 이해하고 있는 각 에러의 정의는 상기 내용과 같습니다만,

CRC에러: CRC 값이 이상, 즉 데이터 전달 과정에서 변조가 됨
ACK에러: 수신자들이 변조 여부를 확인하는 과정에서 변조가 되었다 판단

두 종류의 에러 모두 '데이터의 변조'라는 원인으로 발생하기 때문에
결국 같은 에러가 아닌가 하는 의문점이 듭니다.

두 가지 에러의 근본적인 원인은 같지만 각각의 'CRC값의 오류', 'Ack영역 값의 오류'
라는 판단으로 에러 카운터 수를 올리는 건가요?

질문 읽어주셔서 감사합니다.

CAN

답변 1

1

존버매니아

안녕하세요! 제가 질문을 제대로 이해한건지 모르겠는데 우선 답해보겠습니다.

우선 ACK 에러는 수신측은 인식할 수 없는(판단하지 않는?) 에러입니다. ACK 에러는 송신측만 확인하는 것입니다. 송신측이 메세지를 송신한 후 Ack bit 값을 확인해서 값이 1이면 비정상이라고 인식하는게 Ack bit 입니다.

참고로 수신측에서 에러가 있을때 1로 쓰는게 아니라 송신측이 1로 쓰는거고 수신측은 문제 없이 잘 받았으면 0으로 쓰는 동작을 하는겁니다. 그러니까 수신측에서 에러를 인식하면 1이라고 값을 쓰는게 아니라 그대로 냅두는거고 정상 수신했을때만 0이라 쓰는거죠. 근데 0은 dominant 이니까 송신측이 써놓은 1에 덮어써서 0이 되는거구요.

 

Ack 비트의 값 확인을 송신측이 하는 것이기 때문에 수신측에서는 당연히 Ack 비트라는게 있을 수 없죠. 수신측은 수신받은 메세지에 문제가 있을 경우 Ack 비트에 0을 쓰는 동작을 안하는 것이지 이것을 Ack 에러로 판단하는게 아닙니다.

 

그러니까 만약 송신측 A , 수신측 B 가 있을때.

메세지에 crc 에러가 있다면, 수신측은 해당 메세지를 수신하고 이것을 crc 에러로 판단하여 내부적으로 카운터를 올리고 Ack에 아무값도 안씁니다.

한편 송신측은 메세지를 보낸 후 Ack를 확인해봤더니 값이 여전히 1로 쓰여있으니 이것을 ack 에러로 인식하는 것이구요.

근본적 원인은 같지만 수신측은 crc 에러라 인식할 것이고, 송신측은 Ack 에러로 인식하겠네요,

0

순이는배고파

데이터의 변조라는 근본적인 원인을 두고 수신자는 CRC에러로, 송신자는 Ack 에러로 인식하는 것이군요! 이해했습니다.

답변 감사합니다. 좋은 하루 보내세요! :)

6:19 다이어그램에서 CANH CANL사이에 SPLIT 핀은 뭐하는 핀인가요?

0

22

0

candb와 data

0

84

1

Bus Off(버스 오프) 상태가 흔히 발생되는 상태인가요?

0

247

1

차량용 이더넷 통신 강의 계획은 없으신가요?

0

114

1

강의자료 문의

0

81

2

B라는 제어기가 CAN 버스에 CAN 신호를 송신하고 있다면 A제어기는 B제어기의 작업이 끝날 때까지 CAN 신호를 송신 못하나요? 작업이 완료될 때까지 기다려야 하나요?

0

114

2

120옴 저항 관련 문의

0

224

2

여러개 제어기가 동일한 메시지를 수신할 때 동시에 수신하나요?

0

119

2

Error 프레임 보낼 때

0

213

1

E2E protocol을 사용할때 data frame에 crc와 counter 영역을 따로 둔다고 했는데 데이터 영역에 있는 crc와 메세지 프레임에 따로 CRC 영역이 있는데 그 둘간의 차이는 뭘까요...?

0

249

1

D-sub 핀과 120옴 저항 질문드립니다

0

491

2

ERROR PASSIVE FRAME

0

135

1

CAN wake-up 시퀀스에 대해

0

654

2

통신 타이밍을 비교하는 시점

0

174

0

센서신호와 CAN

0

351

1

Profile1에서 사용하는 Data ID : 2BYTE

0

201

2

CRC 계산 방법

0

765

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