-
자동차 통신 CAN (Controller Area Network) 통신 소개 및 동작 방법자동차(Automotive) 2019. 4. 4. 14:29반응형
자동차 통신 네트워크 기술은 자동차 내 전자제어시스템 (Electronic Control Unit) 간의 정보를 전달하기 위해 개발되었습니다. 차량의 전장화가 급속히 진행되면서 자동차 ECU간의 통신량이 증가하기 시작했다. 기존 ECU를 1대1 방식으로 연결하던 배선 시스템에서 다양한 종류의 통신 방법들이 자동차 통신 네트워크에 적용되어 왔습니다. 그 중 대표적인것들로 CAN, LIN, FlexRay, Ethernet 등을 꼽을 수 있습니다.
오늘은 이중 기본중의 기본인 CAN(Controller Area Network) 통신에 대한 기본 개요와 동작 방법에 대하여 이야기해 보겠습니다.
CAN이란 자동차의 ECU(Electronic Control Unit)사이의 통신이라고 생각하시면 됩니다. 그림처럼 자동차안에는 이렇게 많은 ECU들이 서로 연결되어 통신을 하고 있습니다.CAN 통신은 왜 만들어졌을까요?
1980년대까지 자동차는 대부분 기계식이여서 전자적 제어를 하지 않았습니다. 점차 기술의 발전으로 인하여 자동차에 다양한 전자제어 시스템(ECU)들이 생겨났고 이러한 ECU들이 서로 통신하기 위해 비동기 직렬 통신 방식으로 불리는UART(Universal Asynchronous Receiver/Transmitter)를 사용했습니다. 그러나 UART의 통신은 각 ECU들이 1:1 통신을 해서 ECU가 추가될 때마다 같은 수의 연결이 필요했습니다. ECU가 늘어나면서 도저히 감당할수 없을정도로 많은 연결이 생기고 공간이나 케이블의 무게가 점점 증가하면서 결국 원가를 크게 상승시키게 되었습니다.
이러한 문제 해결을 위해서 메르세데스-벤츠(Mercedes-Benz)는 보쉬(Bosch)에 차량용 네트워크를 만들어달라고 의뢰를 하였고 1985년에 보쉬에 의해서 CAN이 만들어졌습니다. 여러 개의 CAN Device가 붙은 ECU들이 서로 통신할 수 있으며, 하나의 CAN 인터페이스로 여러 개의 모듈을 제어할 수 있어서 연결선 수의 감소, 자동차 무게의 경감, 원가 하락뿐만 아니라 효율적으로 시스템 제어가 가능해졌습니다. 이렇게 사용되어 지던 인터페이스는 1993년에 ISO가 국제 표준 규격으로 제정됩니다. 이렇게 CAN은 자동차 통신의 필수불가결 요소가 되었고 현재 제2세대까지 나왔습니다.1. CAN Version History
1985년 CAN Version 1.0이 release되었고 1987년에 1.1 그리고 1990년에 CAN 1.2이 나왔습니다. 그리고 1991년에 CAN 2.0부터 표준 CAN과 확장 CAN으로 구분되어 있습니다. 표준 CAN은 기존과 같지만, 확장 CAN은 확장 ID(Identification)를 추가해 많은 데이터를 사용할 수가 있습니다.
반응형2. CAN 통신의 특징 및 장점
CAN 통신은 여러 개 ECU를 병렬로 연결하여 데이터를 주고받는 통신방법입니다. CAN 버스를 통해서 통신선 상에 데이터를 띄어놓고 필요한 데이터에 접근(Access) 합니다. 그럼 이제부터 어떠한 이유로 자동차에 CAN 통신을 두루 쓰게 되었는지 그 특징과 장점을 알아보겠습니다.
① 다중 주인(Multi Master) 통신 방식:
CAN 버스는 다중 주인(Multi Master) 방식으로 통신하므로 통신 버스를 여러 노드(node)들이 공유하면서 언제든지 버스를 사용할 수 있습니다.
② 간단한 구조:
CAN_High, CAN_Low 두 개의 신호로 통신하므로 단 2개의 선이 필요로 합니다. 그러므로 많은 모듈이 추가되더라도 추가되는 선의 양이 적습니다.
③ 잡음에 매우 강함:
CAN BUS는 Twist Pair 2선으로 되어있어 전기적 잡음(noise)에 강해 메시지를 보호할 수 있습니다.
④ ID 값을 이용한 우선순위:
자동차의 ECU들은 고유한 ID 값을 가지고 있습니다. ID 값은 낮을수록 우선순위가 높은데, CAN에서는 여과 과정(filtering)을 통해 설정된 ID 값을 수신해 우선순위를 결정합니다. 주소가 아닌 ID 값으로 메시지 내용과 우선순위가 결정되며 이는 시스템 제어 속도와 안전성을 향상할 수 있습니다.
특히 BUS를 이용하므로 연결선 수를 대폭 줄일 수 있으며 이는 자동차의 무게와도 직결되므로 매우 중요합니다.
⑤ 고속 및 원거리 통신:
CAN 통신은 최대 1M bps에 달하는 고속 통신을 제공하며, 보통 통신 속도가 500k~ 1M bps 속도로 CAN 통신이 가능합니다. 또한, 최대 1,000m까지 원거리 통신이 가능합니다.
⑥ PLUG & PLAY 기능:
PLUG & PLAY 기능을 제공해서 CAN 제어기(controller)를 버스에 간편하게 연결하고 끊을 수가 있어서, 여러 장치를 추가하고 제거하기가 매우 쉽습니다.CAN 계층 구조
CAN 의 계층 구조를 보면 다음과 같이 응용 계층, 데이터 링크 계층, 물리 계층 3 계층 구조이다. 각 계층에서 하는 역할을 간단하게 그림으로 잘 나타낸 것 같아 참조하였다.
CAN 물리 계층
CAN에는 여러 종류의 다른 물리 계층이 있다. 이 같은 물리 계층은 전기적 레벨, 신호 구조, 케이블 임피던스, 최대 보드 (baud) 속도 등 CAN 네트워크의 특정 사항을 분류한다. 가장 보편적이며 널리 사용되는 물리 계층은 아래와 같다.
- High-Speed CAN High-speed CAN은 현재까지 가장 보편적으로 사용되는 계층. 고속 CAN 네트워크는 두 개의 와이어로 실행되며 최대 1 Mb/s 전송 속도로 통신을 진행한다. 고속 CAN의 다른 명칭으로는 CAN C와 ISO 11898-2가 있다. 일반적인 고속 CAN 디바이스에는 ABS (anti-lock brake systems), 엔진 컨트롤 모듈 그리고 방출 시스템 등이 있다.
- 저속/내고장(fault-tolerant) CAN 하드웨어 저속/내고장 CAN 네트워크 또한 두 개의 와이어로 실행되며, 최고 125 kb/s 속도로 디바이스와 통신하며, 내고장 기능이 있는 트랜시버를 제공한다. 저속/내고장 CAN 디바이스는 CAN B 및 ISO 11898-3으로도 알려져 있다. 자동차에서의 일반적인 저속/내고장 기기에는 안락장치가 있다. 차량의 문을 열고 닫을 때의 강도를 고려하여 차량의 문을 통과해야 하는 와이어는 저속/내고장이다. 또한, 브레이크 등과 같이 강화된 보안 레벨이 요구되는 경우, 저속/내고장 CAN은 그 해결책이 될 수 있다.
- 단일 와이어 CAN 하드웨어 단일 와이어 CAN 인터페이스는 최고 33.3 kb/s (고속 모드에서는 88.3 kb/s) 속도로 디바이스와 통신한다. 단일 와이어 CAN의 다른 명칭은 SAE-J2411, CAN A 및 GMLAN이다. 차량 내 일반적인 단일 와이어 디바이스는 고성능을 요구하지 않는다. 일반적인 어플리케이션에는 좌석과 거울 조정기 등의 안락 장치가 있다.
- 소프트웨어 선택가능한 CAN 하드웨어 NI사의 CAN 하드웨어 제품를 사용하여 소프트웨어 선택가능한 CAN 인터페이스를 구성하여 모든 온보드 트랜시버 (고속, 저속/내고장 또는 단일 와이어 CAN)를 사용할 수 있다. 소프트웨어 선택가능한 CAN 하드웨어를 사용하면, 사용자 고유의 외부 CAN 트랜시버를 선택할 수 있다.
물리 계층에서, CAN은 광섬유 또는 꼬인 2선(twisted pair. 가장 보편적) 같은 다양한 종류의 매체를 사용하여 통신할 수 있다.
꼬인 2선 시그널링은 각각의 전선에서 서로 다른 전압들을 사용하여 실행되므로 (balanced-line signalling 으로도 알려져 있다), 한 전선에서의 신호 전압은 또한 다른 전선에서 전송되지만, 반전된다. 수신기에서, 이 신호는 한 신호를 반전하고 두 개의 신호를 합해서 복원된다.
이것은 두 개 전선들에 대해 공통적인 것이므로, 이 방법은 버스상에서 발견된 어떤 노이즈도 줄일 수 있다. 바로 이 과정에서 CAN은 자체의 잡음 면역(noise immunity)과 결함 허용(fault tolerance) 기능들을 유도한다. 두 개의 전선들은 CAN_H (또는 CAN High)와 CAN_L (또는 CAN Low)로 불린다. 정지 상태(또는 "recessive") 에서 CAN_H 와 CAN_L 은 2.5V에 놓인다. 이것은 디지털 "1"로 표시되며, 또한 "recessive" 비트로도 알려져 있다. 디지털 '0' 은 또한 "dominant' 비트로도 알려져 있으며, CAN_L보다 큰 CAN_H에 의해 지시된다. 일반적으로 디지털 '0' 의 경우, 관련된 전압은 CAN_H = 3.5V 그리고 CAN_L = 1.5V이다. dominant 는 recessive 보다 우선순위가 높아 버스에 연결되는 노드가 한 개라도 도미넌트이면 버스는 도미넌트 레벨인 된다.
메시지 포맷
CAN에서는 데이터 프레임 (data frame), 리모트 프레임 (remote frame), 에러 프레임 (error frame), 오버로드 프레임 (overload frame) 의 4가지 프레임 타입을 정의하고 있다. 데이터 프레임은 일반적으로 데이터 전송에 사용되며, 리모트 프레임은 수신할 노드에서 원하는 메시지를 전송할 수 있는 송신 노드에게 전송을 요청하는 것이다. 에러 프레임은 메시지의 에러가 감지되었을 때 시스템에 알릴 목적으로 사용되는 프레임이다. 마지막으로 오버로드 프레임은 메시지의 동기화를 목적으로 사용되는 메시지이다.
그러나 실제로 CAN에서는 데이터 프레임과 에러 프레임을 제외하고는 잘 사용되지 않는다.CAN Version 중 가장 대표적인 ISO 11898 의 데이터 포맷을 살펴보면, 우선 위에서 말했듯이 CAN 2.0A 와 B가 있다.CAN 2.0 A 는 Standard Format으로 ID 즉 식별자가 11bit 이고 CAN 2.0 B 는 Extended Format으로 ID 즉 식별자가 29bit 이다.
CAN 통신에서 데이터는 메시지 프레임을 사용하여 송수신이 이루어진다. 메시지 프레임은 하나 또는 그 이상의 송신 노드로부터 데이터를 수신 노드로 전송한다. 대부분의 CAN 2.0A 제어기는 오직 표준 CAN 방식의 메시지만 전송 및 수신 가능하며 확장 CAN 방식(CAN 2.0B)의 메시지를 수신하더라도 그 데이터를 무시한다. 즉, CAN 2.0A 제어기는 CAN 2.0A에서 보내온 메시지 데이터만 유효하지만, CAN 2.0B 제어기는 두 메시지 방식이 모두 가능하다.
메시지 구조를 살펴보자..
배경 조사 및 공부는 대충 여기까지 하고 다음부터는 실제로 뭘 사용하고 어떻게 프로젝트를 구상할건지 정확하게 알아봐야겠다.
① SOF(Start Of Frame) 비트: 메시지의 시작을 의미하는 주요한 비트로 버스의 노드(node)를 동기화
② Identifier(ID): 식별자로서 메시지의 내용을 식별하고 메시지의 우선순위를 부여합니다. CAN 메시지에 있는 ID의 길이에 따라서 표준 CAN과 확장 CAN 두 가지 양식(mode)으로 구분됩니다. 표준 CAN은 11 비트 식별자이고, 확장 CAN은 29비트 식별자로 구분
③ Control: 데이터의 길이(DLC)를 의미
④ Data: 전달하고자 하는 내용을 의미
⑤ CRC: 프레임의 송신 오류 및 오류 검출
⑥ ACK 비트(Bit): 오류가 없는 메시지가 전송되었다는 것을 의미하는 비트로서, CAN 제어기는 메시지를 정확하게 수신했다면 ACK(Acknowledgement) 비트를 전송합니다. 전송 노드는 버스 상에서 ACK 비트의 유무를 확인하고 만약 ACK 비트가 발견되지 않는다면 재전송을 시도
⑦ EOF(End of Frame) 비트: 프레임의 끝을 나타내고 종료를 의미CAN 통신의 동작 방법
CAN 버스에는 전체 노드를 제어하는 주인(Master)이 없어서 CAN 버스에서 데이터를 쉽게 접근할 수 있습니다.
우선 CAN 제어기는 CAN 버스 선이 사용 다른 제어기에 의해서 사용 중인지 확인을 합니다. 만약 CAN 버스 선이 사용 중이지 않다면 모든 노드는 ID 값을 통해서 자신에게 필요한 메시지를 확인합니다. 이때 불필요한 메시지를 무시하게 되고 자신에게 필요한 메시지만 수신하게 됩니다. 앞에서 자동차의 ECU들은 고유한 ID 값을 가지고 있다고 했습니다. 다중 노드가 동시에 메시지를 CAN 버스에 전송하려는 경우에는 가장 낮은 ID 값을 가진 최우선 노드가 자동으로 버스에 접근하게 됩니다. (식별자 값이 1과 7일 경우 식별자 1의 우선순위가 더 높음) 우선순위가 높은 메시지가 CAN 버스의 사용 권한을 보장받을 수 있으며 낮은 순위의 다른 노드들은 대기해야 하며 자동으로 다음 버스 사이클에서 재전송을 수행합니다.요약
CAN 통신은 자동차 분야뿐만 아니라 자동화 기기, 의료 기기 그리고 로봇 등 다양한 분야에서도 널리 쓰이고 있기 때문에 앞으로도 매우 중요하게 쓰일 통신방법이 될 것입니다.
이제 우리는 CAN 통신에 대해서 많은 것을 알게 되었네요. 그럼 우리 슈어소프트테크㈜에서는 CAN 통신을 이용해서 무엇을 하고 있을까요? 우리는 CAN 통신을 이용한 개발과 검증을 지원하는 VizCAN이라는 도구를 제공하고 있습니다. VizCAN에 대한 이야기는 다음 글에서 알아보도록 하겠습니다.반응형'자동차(Automotive)' 카테고리의 다른 글
GM New Corvette at 07.19.19 (0) 2019.04.17 인공지능 딥 러닝소개 (0) 2019.04.13 자동차 통신 방식 LIN의 원리와 통신 방식 (0) 2019.04.13 자동차 통신 방식 FlexRay의 원리와 특징 (0) 2019.04.08 CAN FD 자동차 통신 프로토콜의 특징과 동작방법 (0) 2019.04.08 댓글