StudyRepository
article thumbnail
Published 2023. 9. 1. 17:15
CAN 통신 자동차
728x90

 

 

 

 

CAN 통신이란?

 

CAN (Controller Area Network) 차량 내에서 호스트 컴퓨터 없이 마이크로 컨트롤러나 장치들이 서로 통신하기 위해 설계된 표준 통신 규격이다.

 

 차량 *ECU(Electronic control unit)들은 CAN 프로토콜을 사용하여 통신한다.

 

 

 

 

 

 

CAN 특징

 

 

메시지 지향성 프로토콜(Message-Oriented Protocol)

 

CAN은 노드의 주소에 의해 데이터가 교환되는 것이 아니라 메시지의 우선순위에 따라 ID(IDentifier)를 할당하고, 이 ID를 이용해 메시지를 구별하는 방식을 사용한다. 즉, 임의의 한 노드 A가 메시지를 전송했다면, A를 제외한 나머지 노드들은 A가 전송한 메시지가 자신에게 필요한 메시지인지를 판단(ID기반 판단)한다. 자신에게 필요하다면 받아들이고, 아니라면 무시한다.

 

 

 

보완적인 에러 감지 메커니즘

 

CAN은 다양한 에러 감지 메커니즘이 상호 보완적으로 에러를 감지하기 때문에 높은 안정성을 보장합니다. 또한 메시지 전송 시, 에러가 감지되면 자동적으로 해당 메시지를 즉시 재전송하는 기능이 있기 때문에 다른 프로토콜에 비해 에러 회복 시간이 짧다.

 

 

 

멀티 마스터 능력

 

CAN을 기반으로 한 네트워크에는 버스를 점유하기 위한 감독자 노드(Bus Master)의 필요가 없다. 즉 모든 노드가 버스 마스터가 되어 버스가 비어 있을 때(idle)라면 언제든지 메시지 전송이 가능하다. 모든 노드는 버스가 비워지는 즉시 메시지 전송을 시작한다. 만약 CAN 버스에서 두 개의 노드에서 메시지를 동시에 전송하려고 하더라도, 우선순위(식별자, ID)에 따라 각각 전송 된다. 즉 우선순위가 높은 메시지(이 때, 더 낮은 ID 번호가 더 높은 우선순위를 가짐)가 먼저 전송된다.

 

 

 

결점 있는 노드의 감지와 비활성화

 

CAN은 버스의 상태를 항상 모니터링하기 때문에 실시간으로 결함이 있는 노드를 감지해 해당 노드를 비활성화함으로써 네트워크의 신뢰성을 보장한다.

 

 

 

전기적 노이즈에 강함

 

꼬인 2선(Twist Pair Wire, *CAN_H, CAN_L)을 이용하여 전기적으로 차별되는 통신을 하여 전기적 노이즈에 매우 강하다.

 

 

 

저렴한 가격 및 구성의 용이성

 

현재 수십 개의 반도체 제조업체가 다양한 CAN 컨트롤러와 트랜시버를 개발 및 판매하고 있어 가격이 저렴하고 조달이 용이하다.

 

 

 

 

CAN 등장 배경

초기에는 자동차 안에 모듈이 많지 않았기 때문에 UART방식, 즉 일대일(Point-To-Point) 방식으로 ECU를 연결했다. 하지만 이런 방식이라면 서로 다른 모듈간 통신을 위해서는 많은 선(line)이 필요한 것이 문제가 된다. 이는 배선의 증가로 인한 유지 보수 문제, 그리고 배선 증가로 인한 무게 증가, 연비 하락과도 연결이 되었으며 기술의 발전으로 차량 내부에 모듈 수가 점점 증가하고 있는 만큼 이와 같은 문제의 해결이 필요했다. 이러한 문제를 해결한 것이 바로 CAN이다.

 

 

 

CAN은 여러 개의 CAN 디바이스가 서로 통신할 수 있는 안정적인 네트워크(다중 통신 방식, Multi Master 방식)를 제공한다. 이와 같은 네트워크의 장점은 ECU가 시스템 내 각 디바이스마다 아날로그 및 디지털 입력을 갖는 것이 아니라 단일의 CAN 인터페이스만 보유한다는 점이다. 따라서 자동차의 전체 비용과 중량도 줄일 수 있다.

 

 

 

 

 

네트워크상에 연결된 모든 노드는 네트워크상에 있는 메시지를 수신한 후 자신이 필요로 하는 식별자의 메시지인 경우에만 받아들이고, 그렇지 않은 경우의 메시지는 무시한다.

 

네트워크상(CAN 통신 라인)에 흘러 다니는 여러 노드의 데이터들이 동시에 사용자가 필요로 하는 노드로 유입되는 경우에는 식별자의 숫자를 비교하여 먼저 받아들일 메시지의 우선순위를 정하는데, 식별자의 숫자가 낮을수록 우선순위가 높다.

 

선순위가 높은 메시지가 CAN 버스의 사용 권한을 보장받으며 이때 낮은 순위의 메시지는 자동적으로 다음 버스 사이클에 재전송이 되도록 한다.

 

각 CAN 메시지는 11비트의 식별자(CAN 2.0A), 또는 29비트의 식별자(CAN 2.0B)를 가지며, CAN 메시지의 맨 처음 시작부분에 위치한다.

 

이러한 식별자는 메시지의 형태를 식별시켜주는 역할과 메시지에 우선순위를 부여하는 역할을 한다.

 

 

 

정리

  • 배선의 증가로 인한 여러 문제점을 해결하기 위해 CAN 등장
  • 하나의 CAN BUS 네트워크에 여러 ECU들이 연결되어 있음
  • CAN BUS 네트워크를 통해 각 노드(ECU)들은 서로 메시지를 주고받음
  • 메시지의 우선순위에 따라 할당된 유일한 식별자(ID)를 이용해 메시지를 구별함
  • CAN BUS 네트워크에 두 개의 노드에서 메시지가 동시에 전송되려고 할 때, 더 높은 우선순위(더 낮은 ID번호)를 가진 노드의 메시지가 먼저 전송됨

 

 

 

CAN 통신 프로토콜

 

 

-CAN 프로토콜 규격-

 

CAN 메시지에 있는 식별자(ID)의 길이에 따라 두 가지 모드로 구분된다.

  • 표준 CAN(버전 2.0A): 11비트 식별자
  • 확장 CAN(버전 2.0B): 29비트 식별자

 

ISO 규격에 따라 두 가지로 구분되며 통신 속도에서 차이가 있다.

  • ISO 11898: 1Mbps 이상의 고속 통신 가능
  • ISO 11519: 125Kbps 까지의 통신 가능

 

 

대부분의 CAN 2.0A 컨트롤러는 오직 표준 CAN 포맷의 메시지만 전송 및 수신이 가능하며, 확장 CAN 포맷(CAN 2.0B)의 메시지를 수신하더라도 그 메시지를 무시해 버린다. 즉, CAN 2.0A 컨트롤러에서 보내온 메시지 데이터만 유효하다. 그러나 CAN 2.0B 컨트롤러는 양쪽 메시지 포맷(CAN 2.0A, CAN 2.0B)에 대해 모두 송수신이 가능하다.

 

 

 

 

CAN 메시지 포맷(구조)

 

CAN에서는 데이터 프레임(data frame), 리모트 프레임(remote frame), 에러 프레임(error frame), 오버로드 프레임(overload frame)의 4가지 프레임 타입을 정의하고 있다. 데이터 프레임은 일반적으로 데이터 전송에 사용되며, 리모트 프레임은 수신할 노드에서 원하는 메시지를 전송할 수 있는 송신 노드에게 전송을 요청할 때 사용된다. 에러 프레임은 메시지의 에러가 감지되었을 때 시스템에 알릴 목적으로 사용된다. 마지막으로 오버로드 프레임은 메시지의 동기화를 목적으로 사용된다. CAN 통신에서 데이터 송수신은 메시지 프레임을 사용하여 이루어진다. 메시지 프레임의 구조는 다음과 같다.

 

 

 

 

다음 표는 CAN 메시지 프레임의 각 필드에 대한 설명이다.


 

 

 

 

용어 설명

 

 

-ECU(Electronic Control Unit)-

 

ECU는 자동차에서 사용되는 많은 전자 제어 장치들을 지칭하는 말. 여기에는 아래와 같은 장치들이 포함된다.

  • Airbag Control Unit(ACU)
  • Engine Control Unit(ECU)
  • Tansmission Control Unit(TCU)
  • Brake Control Unit(BCU)
  • On-Board-Diagnostics(OBD)
  • 등등

 

ECU는 각종 센서에서 오는 정보를 토대로 최적의 결과를 판단하는 일을 한다. 자동차의 성능이 점점 발전함에 따라 이제는 구동계 뿐만 아니라 각종 전자장치를 제어하는 역할까지 하고 있다. 과거 자동차엔 ECU가 30개미만으로 내장되어 있었지만, 최근엔 편의를 위한 장치들이 많아지면서 최대 100여개까지도 내장되고 있다.

 

 

 

 

 

-CAN Controller, CAN Transceiver-

 

차량용 네트워크의 백본망을 구성하고 있는 CAN프로토콜은 CAN Controller와 CAN Transceiver로 구현된다.

CAN Controller는 내부 버퍼를 가지며 Transceiver에서 전달되는 수신 메시지에 대해 유효한 데이터인지 아닌지를 ID기반으로 판별한 후 유효한 데이터인 경우 MCU로 전달한다.

송신 메시지의 경우 MCU에서 전송하고자 하는 데이터에 대해 CAN Transceiver로 전달한다.

CAN Transceiver는 CAN 버스 혹은 MCU에서 전달되는 송수신 데이터를 전기적 신호로 변환한다.

CAN Transceiver는 MCU로부터 전달된 데이터를 CAN 통신용 데이터로 변환하며, CAN 버스에서 전달된 CAN 통신용 데이터를 MCU 송수신용 데이터로 변환한다.

 

 

 

 

 

-CAN_H, CAN_L-

 

전기적으로 신호를 전송하는 역할을 하는 물리계층에서, CAN은 광섬유나 꼬인 2선(Twist Pair Wire)과 같은 다양한 종류의 매체를 사용하여 통신할 수 있다.

꼬인 2선 시그널링은 각 전선에 서로 다른 전압을 사용하여 버스 상에서의 노이즈를 줄인다.

이때의 꼬인 2선을 각각 CAN_H(or CAN High)와 CAN_L(or CAN Low)라고 부른다.

 

 

 

 

 

 

 

 

 

 

728x90

'자동차' 카테고리의 다른 글

ASPICE 3.1의 CL  (2) 2023.10.06
ASPICE  (8) 2023.09.06
CAN과 CAN FD  (0) 2023.09.04
ASIL  (0) 2023.09.04
ISO 26262  (0) 2023.09.04
profile

StudyRepository

@Minseo26262

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!