개념
자동차 통신 기술 중 하나의 CAN 통신 그리고 차세대 통신인 CAN FD 통신에 대해 알아보자
자동차 통신 기술은 ECU와 센서간의 통신을 위해서 많이 사용된다. 물론 속도가 문제가 되지 않는 곳이면 LIN통신도 사용하고있다. 속도 제약이 있는 곳에선 FlexRay를 쓰기도 한다.
LIN, CAN, FlexRay 모두 차량에서 많이 사용되는 통신 방법이다.
1. LIN: 가장 싸지만 속도가 느리다.
2. FlexRay: 가장 비싸지만 안전하고 속도가 빠르다.
3. CAN: LIN과 FlexRay 중간정도의 성능과 안정성을 가지고 있다.
Controller Area Network (CAN)은 차량 내부 네트워크로 가장 많이 사용되는 통신 프로토콜이다. CAN 프로토콜은 비용, 신뢰 성 측면에서 차량 내부 통신으로 적합한 특징을 지니고 있다. 하지만 최근 들어 차량에 적재되는 Electronic Control Unit (ECU) 이 증가하게 되면서, CAN bus의 부하를 줄일 수 있는 새로운 통신 프로토콜이 필요하게 되었다. Controller Area Network with Flexible Data rate (CAN-FD)는 CAN과 비교했을 때, 전송 속도가 빠르고 전송량이 크다는 장점을 갖고 있다. 이러한 장점은 CAN node들이 공유하는 CAN bus의 부담을 줄여 차량 내부 전자 장치의 동작 반응 시간을 단축시킨다. 또한, CAN과 CAN-FD 는 서로 호환 가능하기 때문에 유지보수가 편리하다는 장점이 있다.
스펙
통상적으로 자주 사용되는 CAN의 스펙은 다음과 같이 구분할 수 있다.
1. CAN 2.0A: 표준 CAN으로 불리는 버전으로, 11비트의 ID를 가지고 있고, 최대 속도는 250K로 동작한다.
2. CAN 2.0B: Full CAN으로 불리는 버전으로, 29비트의 ID를 가지고 있으며, 최대 1M의 속도로 동작한다.
3. 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는 조금 차이를 가지고 있다.
1. CAN 2.0의 Data Field 부분은 0-8바이트 이다. DLC에서 결정을 하며, MAX 값이 8바이트이다.
2, CAN FD 통신의 메시지 패킷은 DLC에서 8, 12, 16, 20, 24, 32, 48, 64 바이트를 정의할 수 있다. 이에 따라 Data Field의 길이도 달라지게 된다.
CAN과 CAN FD에 대한 에러검사
CAN은 Stuffing Error, Bit Error, Checksum Error, Frame Error, Acknowledgement Error와 같이 5개의 에러검사를 수행한다. 물론 CAN FD가 훨씬 복잡하다.
상세한 내용은 아래 링크를 참조하자.
https://www.kvaser.com/can-protocol-tutorial/##errorHandling