레이블이 임베디드시스템인 게시물을 표시합니다. 모든 게시물 표시
레이블이 임베디드시스템인 게시물을 표시합니다. 모든 게시물 표시

2009년 6월 23일 화요일

CAN 개요

1) 정의

CAN은 초기에 자동차 산업(Automotive Industry) 분야에 적용하기 위해 고안된 시리얼 네트웍 통신방식이다. 근래에는 자동차 분야뿐만 아니라 산업 전 분야에 폭 넓게 적용되고 있으며 기본적인 시스템 구성은 아래와 같다.

 

1%281%29.jpg

 

2) 특징

임베디드 시스템(또는 마이크로 컨트롤러)에서 일반적으로 사용되는 CAN 버스는 마이크로 컨트롤러(마이컴) 사이에서 통신망을 형성하며, 2가닥의 꼬임선(Twist Pair Wire)으로 연결되어 반이중 통신(Half Duplex) 방식으로 짧은 메시지를 사용하는 고속 응용 시스템에 적당하다. 더불어 외부의 요인(노이즈 등) 등에 강인성을 가져 통신 에러율을 최소화 하여 높은 신뢰성을 가지고 있다. 이론적으로는 2032 개의 서로 다른 디바이스(임베디드 컨트롤러)를 하나의 네트웍 상에 연결하여 통신을 수행할 수 있으나 CAN 트랜시버(송신기)의 한계로 인하여 110 개까지의 Node(통신 주체)를 연결하여 사용할 수 있다(필립스 트랜시버 82C250의 경우).

 

통신 속도는 실시간 제어가 가능한 1Mbps(ISO 11898 규격)의 고속 통신을 제공하며 더불어 자동차 환경(자동차 엔진룸의 경우 다양하고 심각한 전기적인 노이즈 상존)과 같은 심각한 노이즈 환경에 적합하도록 에러 검출 및 에러 보정의 기능이 있다.

 

 

3) 연혁

1986년 자동차 내의 서로 다른 세 개의 전자장치(ECU-Electronic Control Unit)간의 통신을 위한 통신 장치 개발을 자동차 업체인 벤츠의 요구에 의하여 자동차 부품 업체인 독일의 보쉬에 의해 최초로 개발되었다. 초기에는 UART 방식을 고려하였으나 일대일(Point To Point) 통신 방식이기에 서로 다른 세 개의 ECU 간의 통신 방식으로는 적합하지 않아 다중통신(Multi Master Communication) 방식이 필요하게 되어 CAN이 탄생하게 되었다. 그후 최초의 집적화된 CAN 부품은 1987년 인텔에 의해 생산되어졌다.

 

 

 3.jpg

 

 

4) 규격

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

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

 

ISO 규격에 따라 두가지로 구분되며 이 경우에는 물리계층에서 차이가 있다.

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

 

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

 

 

4.jpg

 

 

5) 동작 원리

  • CAN은 다중통신망(Multi Master Network)이며 CSMA/CD+AMP(Carrier Sense Multiple Access / Collision Detection with Arbitration on Message Priority) 방식을 이용한다.
  • 먼저 CAN Node에 메시지를 보내기 전에 CAN 버스라인이 사용중 인지를 파악한다.
  • 또한 메시지간 충돌 검출을 수행합니다. 이러한 방식은 이더넷 통신 방식과 유사합니다.
  • 어떠한 Node(시스템)로부터 보내어진 데이터 메시지는 송신측이나 수신측의 주소를 포함하지 않는다.
  • 대신에 각 노드의 데이터 메시지 항목에 CAN 네트웍상에서 각각의 노드(시스템)를 식별할 수 있도록 각 노드(시스템) 마다 유일한 식별자(ID-11bit 또는 29bit)를 가지고 있다.

 

5.jpg

 

 

  • 네트웍상에 연결된 모든 노드(CAN Controller 시스템)는 네트웍상에 있는 메시지를 수신한 후 자신에게 필요한 메시지인지를 식별자를 통하여 평가한 후 자신이 필요로 하는 식별자의 메시지인 경우만 취하고 그렇지 않은 경우의 메시지는 무시한다.
  • 네트웍상(CAN 통신 라인)에 흘러 다니는 여러 노드의 데이터들이 동시에 사용자가 필요로하는 노드로 유입되는 경우에 식별자의 숫자를 비교하여 먼저 취할 메시지의 우선순위를 정한다. 식별자의 숫자가 낮은 경우가 우선순위가 가장 높다. (식별자가 1 인 경우가 10 인 경우보다 우선순위가 높음)
  • 우선순위가 높은 메시지가 CAN 버스의 사용 권한을 보장 받으며 이때 낮은 순위의 메시지는 자동적으로 다음 버스 사이클에 재전송을 수행한다. 이때 까지도 높은 우선순위를 가진 메시지가 완료되지 않은 상태이면 전송을 완료할 때까지 대기하고 있는다.
  • 각 CAN 메시지는 11 비트의 식별자(CAN 2.0A) 또는 29 비트의 식별자(CAN 2.0B)를 가지며 CAN 메시지의 맨 처음 시작부분에 위치한다.
  • 더불어 식별자는 메시지의 형태를 식별시켜 주는 역할과 메시지의 우선 순위를 부여하는 역할을 한다.

 

6) 메시지 구조 (Message Format)

(1) 개요

CAN 시스템(통신)에서 데이터는 메시지 프레임을 사용하여 송수신이 이루어진다. 메시지 프레임은 하나 또는 그 이상의 송신 노드로부터 데이터를 수신노드로 운반한다.
CAN Protocol(통신 규약)은 다음과 같은 두가지 형태의 메시지 프레임을 지원한다.

  • 표준 CAN (버전 2.0A)
  • 확장 CAN (버전 2.0B)

대부분의 2.0A CAN Controller는 표준 CAN 방식을 사용하나 2.0B CAN Controller는 표준 또는 확장 방식 모두를 사용하여 데이터의 송수신을 행할 수 있다.

 

(2) 표준 CAN 메시지 구조 (2.0A)

  • 7 개의 서로 다른 필드로 구성된다. (그림 참조)

6%281%29.jpg

< CAN 2.0A 메시지 구조>

  • 프레임의 시작(SOF : Start Of Frame) 필드 ; 메시지 프레임의 시작을 표시하며 메시지 프레임의 최우선에 위치하며 디폴트 "0" 값을 가진다.
  • 중재 필드(Arbitration Field) ; 11 비트의 식별자와 원격 전송 요구(RTR) 비트를 가지며 디폴트 "0"을 가지는 RTR 비트는 비트값이 "0" 일 때 CAN 메시지가 데이터 프레임 이라는 것을 가리킨다. 역으로 RTR 비트 값이 "1"이면 CAN 메시지가 원격전송요청(RTR : Remote Transmission Request)을 의미한다. 다시 말해 CAN 메시지가 데이터 프레임이 아닌 원격프레임(Remote Frame) 상태임을 나타낸다.
    원격 프레임은 데이터 버스상의 어떤 한 노드로부터 다른 노드로 데이터를 전송 요청할 때 사용되어진다. 데이터를 보내기 전에 사용되는 메시지 프레임이기에 데이터 필드를 포함하지 않는다.
  • 제어 필드(Control Field) ; 6 비트로 구성되며 향후에 사용되기 위해 예약된 두 개의 "0"의 값을 가지는 R0, R1과 데이터 필드의 바이트 수를 가리키는 4 비트의 데이터 길이 코드 (DLC : Data Length Code)로 구성된다.
  • 데이터 필드(Data Field) ; 한 노드로부터 다른 노드로 전하고자 하는 데이터를 포함하며 0~8 바이트로 구성된다.
  • CRC 필드(CRC : Cyclic Redundancy Check) ; 15 비트의 주기적 중복확인(CRC) 코드를 가지며 데이터필드의 끝을 알리는 "1"의 값을 가지는 비트가 이어진다.
  • ACK 필드 (ACKnowledge Field) ; 2 비트로 구성되며 첫 번째 비트는 "0" 값을 가지는 Slot 비트입니다. 그러나 메시지를 성공적으로 수신한 다른 노드로부터 전송된 "1"의 값으로 기록될 수 있다. 두 번째 비트는 "1"의 값을 가진다.
  • 프레임 종료 필드 (EOF : End Of Frame Filed) ; 7 비트로 구성되며 모두 "1"의 값을 가집니다. EOF 뒤이어 모두 "1"의 값을 가진 3 비트의 프레임 중단 필드 (INTermission Field)가 이어진다. 3 비트의 INT 주기 이후에 CAN 버스라인은 자유상태로 인식된다. 이후 버스 Idle Time은 "0"을 포함한 임의의 길이이다.

 

(3) 확장 CAN 메시지 구조 (2.0B)

  • 2.0A와 구분되기 위해 29 비트의 메시지 프레임 식별자를 가진다.
  • 기존에 사용중인 2.0A와 호환되는 2.0B로 발전되었다.
  • 2.0A와 차이점은 중재 필드가 두 개의 CAN 메시지 식별자로 구분되어 포함되며 첫 번째(기본 ID)는 11 비트 길이로 2.0A와 호환되게 하며 두 번째 필드(확장 ID)는 18 비트 길이로 ID는 총 29 비트로 구성된다. 두 개의 ID 필드 사이에 ID 확장자(IDE : IDentifier Extension)가 있어 두 개의 ID 필드를 구분한다. (그림 참조)

7.jpg

 

  • SRR(Substitute Remote Request) 비트는 중재 필드에 속해 있으며 표준 데이터 프레임과 확장 데이터 프레임을 중재해야 하는 경우에 대비하기 위해 항상 "1"의 값을 전송한다. 만약 표준 데이터 프레임과 확장 데이터 프레임이 같은 기본 ID(11 비트)를 가지고 있으면 표준 데이터 프레임이 우선 순위를 가진다. 그리고 2.0B 메시지 프레임에 있는 다른 필드들은 표준 메시지 포맷으로 식별된다.

 

(4) CAN 2.0A와 2.0B의 호환성

  • 2.0B Controller 입장에서는 2.0A와 송수신에 있어 완벽하게 호환이 된다.
  • 2.0A Controller는 두가지 경우가 있다.
    1) 첫번째는 2.0A Format의 메시지만 송수신이 가능한 경우이며 2.0B의 메시지는 에러를 발생시킨다.
    2) 두번째는 2.0B Passive로 알려져 있으며 2.0A의 메시지는 송수신 가능하고 더불어 2.0B의 메시지는 식별을 하여 무시해버린다. 그 결과 2.0A와 2.0B는 하나의 CAN 네트웍상에서 함께 사용할 수 있게 된다.
  • 사용자가 사용할 수 있는 CAN ID는 2.0A는 2,032 개이고 2.0B는 5억개를 초과 사용할 수 있다.

 

출처: http://www.eskorea.net


CAN (Controller Area Network) 소개


1) CAN은 누가 개발했는가?

BOSCH(독일) : 자동차 전장품 개발 업체 (Injector, ABS 등)

 

2) CAN의 필요성

  • 자동차 ECU (엔진 ECU, 미션 ECU, ABS, Air-Bag, ETACS 등) 간의 정보 공유 필요
  • 늘어나는 차량 Sensors의 공용화 필요
  • Noise가 많은 차량 환경(주 원인은 Spark)에 강인한 통신 필요
  • 독립적인 성향의 ECU들의 Network의 요구

 

3) CAN 응용 분야

  • 자동차 분야 : 센서 및 정보 공유
  • 기계 설비 분야 : 다수의 Processor 사용 분야

 

4) CAN-Bus 특징

-          Multi-Master, Multi-Slave : 각각의 Processor / Controller는 Priority(우선 순위)는 존재하지만, Master가 될 수도 있고 Slave도 될 수 있다. 다시 말해, 한 Processor / Controller가 보낸 Data는 필요에 따라 여러(Group) Processor / Controller가 공유할 수 있다.

-          Shared Serial Bus Type : 최소의 Line(2 line)의 통신인 Serial Type이며, ± line으로 구성되(485통신과 동일) 있으며, 이와 같은 방식의 장점은 외부 전자파나 노이즈에 강인한 특징을 갖는다(이유는 외부 전자파나 노이즈가 ±Line에 동일하게 영향을 끼쳐도 ±Line의 위상차는 영향이 없기 때문이다).

-         Real-Time Communication : 기존의 Real-Time 통신이란, 특정 시간 안에 각각의 통신을 허용시키는 Token 방식 (통신 이용권)으로 이에 따른 문제점은 정작 중요한 Data를 보내기 위해선 자기에게 Token이 도달할 때까지 시간이 많이 걸릴 수 있거나, 통신 Line을 이용할 Processor / Controller가 충돌할 때에 중재자의 역할이 없으며, 필요없는 Data들을 선별하는 데에 에로 사항이 발생함으로, 이에 따른 문제점을 해결한 CAN이 등장하게 되었다.

 

 5) CAN Version 변천

-          ver1.0 : 1985

-         ver1.1 : 1987

-          ver1.2 : 1990

-         ver2.0 A&B : 1991

            ver1.0, 1.1, 1.2는 안정화 및 보편적인 전자 부품의 사용을 가능케 하기 위해 변한 것이며, ver2.0부터는 A와 B로 구분되어져 A는 기존과 동일하지만, B는 확장 ID를 추가함으로 보다 많은 종류 (최대2036->500만개)의 데이터를 사용할 수 있게 하였다.

 

6) CAN Spec.

1-Mbps 이상 -> ISO 11898, 125Kbps 이상 -> ISO 11519 참조

 

7) CAN 이용 반도체 제조사들

  • Cygnal : 8051 계열의 Controller
  • Fujitsu : Microcontroller
  • Hynix : ARM720T Core의 Processor
  • Infineon : Stand-alone controller, Microcontrollers, Transceiver
  • Intel : Stand-alone controller, Microcontrollers
  • Philips : Stand-alone controller, Microcontrollers, Transceiver
  • 기타 취급하는 반도체 회사는 Atmel, Bosch, CiA, Dallas, Hitachi, Inicore, Microchips, Mishibishi, Motorola, NEC, NI, STM, TI 등이 있다.

출처: 임베디드 시스템 코리아

 

CAN (controller area network) ; 계측 제어기 통신망

CAN은 실시간 제어 응용시스템 내에 있는 센서나 기동장치 등과 같은 주변장치들을 서로 연결해 주는 마이크로 제어기용 직렬 버스 네트웍을 가리킨다. CAN에서는 이더넷 등에서 사용되는 것과 같은 주소 지정 개념은 사용되지 않으며, 메시지는 해당 네트웍에서의 고유한 식별자를 사용하여 네트웍 내에 있는 모든 노드들에게 동시에 뿌려진다. 개개의 노드들은 이 식별자에 기반하여 해당 메시지를 처리할 것인지의 여부를 결정하며. 버스 접근 순서 역시 경쟁원리에 따라 메시지 우선순위를 정한다. 충돌이 감지되었을 때 이더넷에서는 전송이 중단되는 것과는 달리, CAN과 같은 방식을 사용하면 중단 없는 데이터 전송이 가능하다.

 

CAN은 원래 차량에 적용하기 위해 처음 개발되었다. 네트웍에는 일련의 센서들이 구비되어 있어 자동차가 적절하고 안전하게 달리고 있는지에 관한 시스템을 감시할 수 있다. 하지만, CAN은 차량에 적용하는 것 이외에도 지능형 주변장치를 위한 개방형 통신시스템은 물론, 마이크로 제어기용 내장 통신 시스템으로도 사용될 수 있다.

 

CAN은 1986년에 로버트 보쉬에 의해 처음 개발되었으며, 최고 속도 125 Kbps 까지의 활용을 위해 ISO 11519로, 그리고 1 Mbps 까지의 활용을 위해 ISO 19898로 각각 표준화되었다.

 

CAN 통신

CAN통신 (Controller Area Network 의 약자) 여러개의 ECU를 병렬로 연결하여 데이터를 주고 받는 통신방법이다. 즉, 각각의 ECU는 자기가 가지고 잇는 데이터를 계속해서 다른 ECU들에게 보내고, 또한 상대편 ECU에서 보내주는 데이터를 우선순위에따라 받아 처리하는 방식으로 다량의 정보를 공유할 수 있는 장점이 있다.

 

통신선은 2개인데 흔히 BUS A 와 BUS B라고 부르며, 통신선 상에 데이터를 띄워놓고 필요한 데이터를 가져다 사용하는 방식이라고 생각하면 이해하는데 도움이 될 것이다. CAN 통신은 BUS A와 BUS B 의 전압 차이로 데이터를 읽기 때문에 2개선중에서 1개라도 단선이 되면 통신이 불가하다.