티스토리 뷰

안녕하세요. 구스입니다. 


이번 글에서는 차량 통신 기술 중 하나의 CAN 통신 그리고 차세대 통신인 CAN FD 통신에 대해서 알아볼까 합니다.


자동차 통신 기술은 ECU와 센서간의 통신을 위해서 많이 사용이 됩니다. 물론 속도가 문제가 되지 않는 곳이면 LIN통신도 사용을 많이 하고 있습니다. 속도 제약이 있는 곳이라면 FlexRay를 쓰기도 합니다.


LIN, CAN, FlexRay 모두 차량에서 많이 사용되는 통신 방법입니다.

이 세가지 통신 방법을 비교하면 아래와 같은데요. 


LIN이 가장싸지만 속도가 느리고, FlexRay가 가장 비싸지만 안전하고, 빠르다는 장점을 가지고 있습니다

CAN은 중간 정도의 성능과 안정성을 가지고 있겠죠. 




CAN, LIN, FlexRay에 대한 부분은 차후에 한번 자세히 알아보도록 하구요.

오늘은 CAN과 CAN FD에 대해서 집중을 하도록 할께요.


CAN은 보쉬에 의해 정의되었으며, 자동차 통신 기술로는 CAN 2.0 스펙을 따르고 있습니다. 

CAN 통신을 간략히 정리하면 아래와 같습니다. 


  • 다중 마스터 기능 
  • 사용 최대 속도는 CAN 2.0의 경우 1M, CAN FD의 경우 15M (일반적으로 CAN은 320K, CAN FD는 3.7M를 MAX로 사용)
  • 확장된 에러 체크에 따른 높은 신뢰성 통신
  • 길이에 따라 최대 속도가 달라질 수 있음

길이에 따른 CAN 2.0 최대 속도 정보

  • 1 Mbit/s    40 m
  • 500 kbit/s  110 m
  • 250 kbit/s  240 m
  • 125 kbit/s  500 m
  • 50 kbit/s    1.3 km
  • 20 kbit/s    3.3 km
  • 10 kbit/s    6.6 km
  • 5 kbit/s     130 km


CAN 통신은 노드라 불리는 개체들과의 통신입니다. 이 노드들은 따로 ID나 Address를 가지고 있지 않습니다. 

메시지의 구분은 메시지 패킷에 포함된 ID(Identifier)를 통해서 받을 메시지인지 아닌지를 구분합니다. 


자주 사용되는 CAN의 스펙은 아래와 같이 구분할 수 있습니다.


  • CAN 2.0A : 표준 CAN으로 불리는 이 버전은 11비트의 ID를 가지고 있으며 최대 속도는 250K로 동작을 합니다.

  • CAN 2.0B : Full CAN으로 불리는 이 버전은 29비트의 ID를 가지고 있으며, 최대 1M 속도로 동작을 합니다.

  • CAN FD : CAN 2.0 패킷을 이용하지만 최대 표준 속도를 3.7M 확장시킨 버전입니다. 메시지의 Data 부분은 CAN 2.0과 달리 64바이트로 구성이 되어 있으며 거리가 멀어지면 이전 버전에서는 문제가 발생하였지만 2015년 스펙 수정을 통해서 보완되었습니다. 

CAN 메시지 패킷은 아래와 같이 구성이 됩니다. CAN 2.0A, 2.0B, CAN FD 모두 동일한 패킷을 사용하며 ID와 Data의 크기에 대한 차이가 발생을 합니다. 



하지만 CAN 메시지 패킷의 상세 내역을 보면 CAN 2.0과 CAN FD는 조금 차이를 가지고 있습니다. 


먼저 CAN 2.0을 보도록 합시다.

위에서 언급한 것과 같이 Data Field 부분은 0-8바이트 입니다. DLC에서 결정을 하며, MAX 값이 8바이트 입니다. 



다음은 CAN FD 통신의 메시지 패킷입니다.

DLC에서 8, 12, 16, 20, 24, 32, 48, 64 바이트를 정의할 수 있습니다. 이에 따라 Data Field의 길이도 달라지게 됩니다. 




마지막으로 CAN에 대한 에러 검사입니다. 

CAN은 Stuffing Error, Bit Error, Checksum Error, Frame Error, Acknowledgement Error와 같이 5개의 에러 검사를 합니다. 물론 CAN FD는 훨씬 복잡합니다. 

상세한 내용은 아래의 링크를 참고하시면 될 것 같습니다. 

이 글에서는 자동차 통신 기술인 CAN과 CAN FD에 대해서 간략히 알아보았습니다.
그럼 이만 줄이겠습니다.


이 글이 도움이 되셨으면 아래의 하트를 눌러주세요.




댓글