yoncho`s blog

CAN, 자동차 통신 프로토콜 Controller Area Network 본문

기술, 나의 공부를 공유합니다./[Vehicle] CAN, CANFD

CAN, 자동차 통신 프로토콜 Controller Area Network

욘초 2024. 9. 28. 14:05

1.0 CAN [Controller Area Network]

CAN이란, 차량 내에서 호스트 컴퓨터 없이
MCU(Micro Control Unit)들이 서로 통신하기 위해
설계된 표준 통신 규격이다.
차량 내에있는 수많은 ECU(Electronic Control Unit)이
CAN프로토콜을 사용해 통신한다.


위 그림의 CAN Controller와 CAN Transceiver에 대해 설명하겠다.
CAN Controller는 내부 버퍼를 가지며, Transceiver에서 전달되는 수신 메시지에 대해
ID를 기반으로 유효한 데이터인지 판단하며, 유효한 데이터인 경우 MCU로 전달한다.
CAN Transceiver는 CAN Bus 혹은 MUC에서 전달되는 송수신 데이터를 전기적 신호로 변환한다.
MCU로부터 온 데이터는 CAN통신용 데이터로 변환하고,
CAN버스로 부터 온 데이터는 MCU송수신용 데이터로 변환한다.

  • *ECU는 자동차에서 사용되는 많은 전자 제어 장치를 지칭한다.ACU (Airbag Control Unit)
    ECU (Engine Control Unit)
    TCU (Transmission Control Unit)
    BCU (Brake Control Unit)
    OBD (On-Board-Diagnostics)
    etc..

등장 배경은 초기 자동차엔 모듈이 많지 않아,,
모듈끼리 1대1(point2point)방식으로 ECU를 연결했다.
하지만 이 방법엔 모듈간 통신을 위해 많은 선들이 필요했고
이는 점점 차량에 수많은 ECU들이 들어가면서
문제를 야기했다. 통신에 있어서 비효율적이고 차량 무게만 증가되기 때문이다.
그래서 여러 개의 ECU들이 한 네트워크 망안에서 안정적으로 서로 통신할 수 있는
다중 통신(Multi Master)방식을 제공하는 CAN이 등장하게되었다.

1.1 특징

  1. 메시지 지향성 프로토콜 (Message-Oriented Protocol)메시지 우선순위에 따라 ID를 부여하고, ID를 이용해 메시지를 구별한다.
    즉, 메시지가 자신에게 필요한지를 ID를 기반으로 판단한다.
  2. 보완적인 에러 감지 메커니즘메시지 전송 시, 에러가 감지되면 자동적으로 해당 메시지를 즉시 재전송한다.
  3. 멀티 마스터 능력버스가 비어 있을때(idle)라면 언제든지 전송이 가능하다.
    모든 노드가 버스 마스터가 되는 것이며,
    우선 순위 높은 메시지를 먼저 전송한다.
    우선 순위는 ID값이 낮은 메시지가 더 높은 우선순위를 가진다.
  4. 결점 노트 감지 및 비활성화실시간으로 결함 노드를 감지하고 해당 노드를 비활성화한다.
  5. 전기적 노이즈에 강함

1.2 CAN BUS 네트워크 동작원리

CAN은 다중통신망이며, CSMA/CD+AMP방식을 이용한다.
(CSMA/CD+AMP : https://needjarvis.tistory.com/156 )
CAN노드는 메시지를 보내기전 버스가 사용중인지 파악한다.
또한 메시지 간 충돌 검출을 수행합니다.
메시지에는 송.수신측 주소를 포함하지 않고
CAN네트워크상에서 각 노드를 식별할 수 있는
고유식별자 ID (11bits or 29bits)를 가지고있다.
즉, ECU마다 고유 ID값이 존재하고, 메시지를 보낼 때
해당하는 ECU ID값을 메시지 헤더에 붙어서
메시지를 CAN버스에 올려 보내면 ID에 해당하는 ECU쪽에서
메시지를 읽는것이다.
CAN메시지 ID는 11bits(CAN 2.0A)또는 29bits(CAN 2.0B)를
가지며, 메시지 형태를 식별해주는 역할과 메시지 우선순위를 부여한다.

1.3 CAN 프로토콜 규격

CAN메시지 ID(식별자)의 길이에 따라 2가지 버전으로 구분한다.

표준(Standard) CAN (2.0A) : 11 bits , ISO 11898 (1Mbps 이상 고속 통신)
확장(Extended) CAN (2.0B) : 29 bits , ISO 11519 (125Kbps 까지 통신)

표준 CAN 컨트롤러는 오직 표준 CAN포맷 메시지만 송,수신할 수 있다.
반면, 확장 CAN 컨트롤러는 표준,확장 CAN포맷 메시지 모두 송,수신할 수 있다.

1.4 CAN 메시지 구조

CAN에서 정의하는 4가지 프레임

  1. 데이터 프레임 (Data Frame)데이터 전송에 사용
  2. 리모트 프레임 (Remote Frame)수신노드에서 송신노드에게 원하는 메시지 전송 요청을 위해 사용
  3. 에러 프레임 (Error Frame)메시지 에러 감지시 시스템에 알리기 위해 사용
  4. 오버로드 프레임 (Overload Frame)메시지 동기화에 사용

CAN통신에서 데이터 송수신은 메시지 프레임
사용해 이루어진다.
(메시지 프레임 구조는 아래와 같습니다.)

  • SOF (Start Of Frame) : 메시지 처음을 지시, 모든 노드 동기화를 위해 사용
  • Arbitation Field : 중재 필드, ID(11,29bits)와 RTR(1bit)로 구성, 메시지간 충돌을 조정하는데 사용한다. RTR비트의 값은 데이터 프레임(d)인지 리모트 프레임(r)인지 결정한다.
  • Control Field : 제어 필드, IDE(2bits), DLC(4bits,데이터코드길이)로 구성, R0는 Reserved비트(Extended CAN 2.0B R0,R1)이다.
  • Data Field : 데이터 필드, 8bytes(32bits)까지 사용 가능, 전송 데이터를 저장한다.
  • CRC Field : SOF에서 데이터 필드까지 비트열을 이용해 생성한 CRC시퀀스(15bits)와 하나의 ‘r’bit의 CRC DEL(델리미터)로 구성, 메시지 상의 에러 유무 검사에 사용한다.
  • ACK Field : ACK 슬롯(1bit)와 ACK DEL(1bit, ‘d’)로 구성, 임의의 노드에서 올바른 메시지 수신시 ACK Field를 받는 순간 ACK 슬롯을 ‘d’로 설정해 버스 상에서 계속 전송한다.
  • EOF Field : 프레임 종료, 7개의 ‘r’ bit로 구성되어 메시지 끝을 알린다.

참고
[CAN, LIN, FLEXRAY] fescaro_blog

Comments