CAN(Controller Area Network) 통신 개요

내용

CAN의 역사

CAN (Controller Area Network)은 1985년 Bosch사에서 차량 네트워크용으로 최초로 개발되었습니다. 과거에 자동차 제조업체들은 포인트 투 포인트 와이어링 시스템을 사용하여 차량 내 전자장치를 연결하였습니다. 그러나 더욱 더 많은 전자장치를 차량 내에 탑재하게 됨에 따라, 배선 장치 (wire harnesses)는 공간을 많이 차지할 뿐 아니라 무게가 많이 나가며 비용이 많이 들게 되었습니다. 이에 업체들은 전용 와이어링을 사용함으로써 배선 비용, 복잡성 그리고 무게를 경감시킬 수 있었습니다. CAN은 지능형 디바이스 네트워크 구축을 위한 높은 무결성의 시리얼 버스 시스템으로서 차량용 네트워크의 표준으로 부상하였습니다. 자동차 업계에서는 신속하게 CAN을 도입하였으며 1993년에는 ISO에서 국제 표준 규격 (ISO 11898)으로 제정하였습니다. 1994부터 CANopen, DeviceNet 등 CAN에 대한 여러 가지 상위 레벨 프로토콜이 표준화되었습니다. 다른 업계에서도 이 같은 프로토콜을 광범위하게 채택함에 따라 CAN은 현재 산업 통신에 있어 표준으로 자리매김하게 되었습니다. 본 기술백서에서는 차량용 통신인 CAN에 대해 집중적으로 살펴보겠습니다.

CAN의 장점

CAN은 여러 개의 CAN 디바이스가 서로 통신할 수 있는 경제적이며 안정적인 네트워크를 제공합니다. 이 같은 네트워크의 장점은 ECU (electronic control units)가 시스템 내 각 디바이스마다 아날로그 및 디지털 입력을 갖는 것이 아니라 단일의 CAN 인터페이스만 보유한다는 점입니다. 따라서 자동차의 전체 비용과 중량도 줄일 수 있습니다. 네트워크 상의 각 디바이스에는 CAN 컨트롤러 칩이 있어 매우 지능적입니다. 네트워크 상의 모든 디바이스는 전송되는 모든 메시지를 확인합니다. 각 디바이스는 해당 메시지가 관련된 것인지 필터링되어야 할 지 여부를 결정합니다. 또한, 모든 메시지는 우선 순위가 있으므로 두 개의 노드가 동시에 메시지를 전송할 경우, 우선 순위가 높은 메시지가 먼저 전송되고 낮은 우선 순위의 메시지는 전송이 연기됩니다.


CAN 어플리케이션

CAN은 차량용으로 개발되었으므로 가장 보편적인 어플리케이션은 in-vehicle 전자 네트워킹입니다. 차량용 외에도 지난 15년간 CAN의 안정성과 장점이 입증되면서 타 업계에서도 광범위한 어플리케이션에 CAN 버스를 도입하였습니다. 그 일례로 철도용 어플리케이션 (트램, 지하철, 경전철, 장거리 열차 등)에 CAN이 도입되었습니다. 이와 같은 차량 내 여러 네트워크의 다른 레벨에서도 CAN을 찾아볼 수 있습니다. 또한 CAN은 항공기 상태 센서, 네비게이션 시스템, 조종실 내 리서치 PC 등 항공기 어플리케이션에도 적용되었습니다. 뿐만 아니라, 기내 데이터 분석에서부터 엔진 컨트롤 시스템 (연료 시스템, 펌프, 선형 액추에이터 등)에 이르는 다양한 우주 항공 어플리케이션에서도 CAN 버스가 사용됩니다.

의료기기 제조업체들은 의료기기의 임베디드 네트워크로 CAN을 사용합니다. 실제로 일부 병원에서는 CAN을 사용하여 수술실 전체를 관리하기도 합니다. 즉, CAN 기반 시스템으로 조명, 테이블, X-레이 머신, 환자 침대 등 수술실에 배치된 모든 것을 컨트롤합니다. 승강기와 에스컬레이터는 임베디드 CAN 네트워크를 사용하며, 병원에서는 CANopen 프로토콜을 사용하여 패널, 컨트롤러, 도어 안전 장치 등의 디바이스를 서로 연결하며 컨트롤합니다. 또한 CANopen은 실험실 장비, 스포츠 카메라, 망원경, 자동문, 커피 메이커 등의 비 산업용 어플리케이션에도 사용됩니다.

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 하드웨어
내쇼날인스트루먼트의 CAN 하드웨어 제품을 이용하면 소프트웨어 선택가능한 CAN 인터페이스를 구성할 수 있으므로 모든 온보드 트랜시버 (고속, 저속/내고장 또는 단일 와이어 CAN)를 사용할 수 있습니다. 다중 트랜시버 하드웨어는 통신 표준의 통합이 요구되는 어플리케이션에 있어 최상의 솔루션을 제공합니다. 소프트웨어 선택가능한 CAN 하드웨어를 사용하면, 사용자 고유의 외부 CAN 트랜시버를 선택할 수 있습니다.

CAN 관련 용어

CAN 디바이스는 CAN 네트워크 상에서 프레임이라고 하는 패킷으로 데이터를 전송합니다. CAN 프레임은 아래와 같은 섹션으로 구성됩니다.

    • CAN 프레임 -- 전체 CAN 전송: 중재 ID, 데이터 바이트, ACK (acknowledge) 비트 등. 또한 프레임은 메시지를 의미합니다.
  • SOF (
  • SOF (start-of-frame) 비트 -- 주요한 (logic 0) 비트로 메시지의 시작을 표시합니다.
  • 중재 ID-- 메시지를 식별하고 메시지의 우선 순위를 지정합니다. 프레임에는 두 가지 포맷인 11 비트 중재 ID를 사용하는 표준과 29 비트 중재 ID를 사용하는 확장이 있습니다.
  • IDE (identifier extension) 비트-- 표준과 확장 프레임을 구분합니다.
  • RTR (remote transmission request) 비트 -- 원격 프레임과 데이터 프레임을 구별하는 역할을 합니다. 주요한 (logic 0) RTR 비트는 데이터 프레임을 나타냅니다. 역행 (logic 1) RTR 비트는 원격 프레임을 나타냅니다.
  • DLC (data length code)-- 데이터 필드의 바이트 수를 나타냅니다.
  • 데이터 필드 -- 데이터의 0 ~ 8 바이트로 구성됩니다.
  • CRC (cyclic redundancy check) -- 15 비트의 주기적인 중복 체크 코드 + 역행 delimiter 비트로 구성됩니다. CRC 필드는 오류 검출에 사용됩니다.
  • ACK (ACKnowledgement) 슬롯 -- 메시지를 정확하게 수신한 모든 CAN 컨트롤러는 메시지의 말미에 ACK 비트를 전송합니다. 전송 노드는 버스 상에 ACK 비트 유무를 확인하고, ACK가 발견되지 않을 경우 전송을 재시도합니다. NI Series 2 CAN 인터페이스에는 수신 전용 모드 기능이 있습니다. 이 때문에, 모니터링 하드웨어가 ACK 비트 전송을 금지하여 버스의 작동에 영향을 주지 않게 됩니다.
  • CAN 신호 – CAN 프레임 데이터 필드 내에 포함된 개별 데이터를 의미합니다. 또한 CAN 신호는 채널을 의미합니다. 데이터 필드는 최대 8 바이트의 데이터를 보유하므로 단일 CAN 프레임은 0 ~ 64개의 개별 신호를 보유할 수 있습니다. (64 채널의 경우, 모든 채널은 바이너리입니다.)
아래 그림을 보면 단일 CAN 프레임의 데이터 필드에는 6개의 채널이 있습니다. 각 신호에는 8 비트의 데이터가 포함됩니다.


CAN 데이터베이스 파일

CAN 데이터베이스 파일은 CAN 프레임과 신호 정의를 위해 확장 정보를 포함한 텍스트 파일입니다. 내쇼날인스트루먼트 NI-XNET 데이터베이스 편집기 소프트웨어는 FIBEX 데이터베이스 파일 (.xml), Vector Database 파일 (*.dbc) 그리고 내쇼날인스트루먼트 CAN 데이터베이스 파일 (*.ncd)을 인식합니다.

각 신호당, CAN 데이터베이스는 공학단위로 변환하기 위한 스케일링 팩터를 정의합니다.

  • 채널명
  • 해당 메시지 내에서 채널의 위치 (시작 비트)와 크기 (비트 수)
  • 바이트 순서 (Intel/Motorola)
  • 데이터 유형 (부호/비부호/IEEE float)
  • 스케일링 및 유닛 스트링
  • 범위
  • 기본값
  • 주석

본 정보는 "원시" 프레임 정보 (보통 바이트)를 "실제" 값으로 편리하게 변환하는 데에 사용됩니다. 아래 그림은 이 같은 변환의 예입니다.

CAN 데이터베이스 파일은 전체 차량에 대한 프레임과 신호 정의를 포함합니다. 각 네트워크에는 고유의 데이터베이스 파일이 있습니다. 또한, 본 데이터베이스 파일은 벡터 전용이며, 보통 기밀 (confidential)입니다.

CAN 네트워크에서 여러 프레임에 데이터베이스 파일을 사용함으로써 여러 CAN API (NI-XNET 등)는 프레임 정보를 실제값으로 자동 변환합니다. 이를 통해 실제 프레임 값을 신경쓸 필요가 없으므로 어플리케이션 개발이 간단해집니다.

CAN 통신 방법

이전에 언급된 바와 같이 CAN은 피어 투 피어 (peer-to-peer) 네트워크입니다. 다시 말하면, 개별 노드가 CAN 버스에서 데이터를 읽거나 쓰기 위해 액세스할 때 컨트롤하는 마스터가 없습니다. CAN 노드가 데이터 전송 준비 완료되면, 버스의 준비 여부를 확인하고 그 후 CAN 프레임을 네트워크에 작성합니다. 전송되는 CAN 프레임은 전송 노드나 수신 노드 중 어느 쪽의 주소도 포함하고 있지 않습니다. 대신, 고유한 중재 ID가 네트워크에서 프레임을 분류합니다. CAN 네트워크 상의 모든 노드는 CAN 프레임을 수신하며, 전송되는 프레임의 중재 ID에 따라 네트워크 상의 각 CAN 노드는 프레임 수용 여부를 결정합니다.

다중 노드가 동시에 메시지를 CAN 버스로 전송하려는 경우 최우선 순위를 가진 노드 (가장 낮은 중재 ID)가 자동적으로 버스에 액세스됩니다. 최저 우선 순위를 가진 노드는 버스가 사용 가능할 때까지 반드시 대기해야 합니다. 이러한 방식으로 CAN 네트워크를 실행하면 CAN 노드 사이에 결정성있는 통신을 구현할 수 있습니다.


NI CAN 툴

내쇼날인스트루먼트는 CAN 어플리케이션 개발을 위한 다양한 하드웨어와 소프트웨어 툴을 제공합니다. NI는 PCI, PXI, PCMCIA 및 NI CompactRIO 등 서로 다른 플랫폼에 적합한 CAN 인터페이스를 제공합니다. PCI, PXI 및 PCMCIA를 위한 고속, 저속/내고장, 단일 와이어 물리 계층이 사용 가능합니다. 내쇼날인스트루먼트는 고속, 저속/내고장 및 단일 와이어 트랜시버를 포함한 업계 최초의 소프트웨어 선택가능한 CAN 인터페이스를 제공합니다. (PCI 및 PXI용) 따라서, 사용하고자 하는 모드를 소프트웨어 내에서 선택하기만 하면 됩니다.

 NI-PCI-8513 소프트웨어 선택가능한 (XS) CAN 디바이스



또한, NI는 각 디바이스와 적합한 드라이버 소프트웨어를 제공합니다. 다음은 NI CAN 인터페이스를 위한 드라이버 소프트웨어에 대한 자세한 설명입니다.


내쇼날인스트루먼트의 ECU Measurement and Calibration Toolkit은 전자제어장치 (ECU)의 설계와 검증을 위한 측정 및 교정 어플리케이션을 지원하기 위해 NI LabVIEW, NI LabWindows/CVI 및 Microsoft C/C++ 개발 환경을 강화합니다. ECU Measurement and Calibration Toolkit은 CAN Calibration Protocol (CCP)에 기반한 하이레벨의 사용하기 쉬운 함수를 제공하여 ECU 설계자, 테스터와 엔지니어들은 측정 및 교정 어플리케이션을 직접 구축할 수 있습니다. 자세한 정보는 하단에 있는 ECU Measurement and Calibration Toolkit 리소스를 참조하십시오.

또한 다음을 참조하십시오.
NI CAN 인터페이스 (PCI)
NI CAN 인터페이스 (PXI)
NI CAN 인터페이스 (PCMCIA)
NI ECU Measurement and Calibration Toolkit

NI-XNET 소프트웨어 드라이버

PCI/PXI-851x 시리즈 하드웨어에 포함된 NI-XNET 소프트웨어는 ni.com에서 무료 다운로드가능합니다. 본 새로운 드라이버는 Windows와 LabVIEW Real-Time OS에서 NI LabVIEW, NI LabWindows/CVI, C/C++로 CAN 및 FlexRay 어플리케이션을 개발하는 데 사용됩니다. NI-XNET 플랫폼의 일부인 PCI/PXI-851x 시리즈는 수 백가지의 프레임과 신호에 대한 리얼타임의 고속 조작이 요구되는 어플리케이션 (hardware-in-the-loop 시뮬레이션, 고속 컨트롤 프로토타입, 버스 모니터링 및 자동화 컨트롤 등)에 적합합니다.

NI-XNET: 하나의 API, 여러 임베디드 네트워크
NI-XNET 플랫폼은 고성능 CAN 및 FlexRay 인터페이스를 NI-XNET API (CAN 및 FlexRay 프레임과 신호를 읽고 쓰기 위한 사용이 편리한 함수 세트)와 통합합니다.

최소한의 프로그래밍으로 최고의 성능 구현
NI-XNET 인터페이스는 로우 레벨 마이크로컨트롤러 프로그래밍과 Windows/LabVIEW Real-Time OS 개발의 속도와 기능을 통해 최상의 성능을 구현합니다. 특허 출원중인 NI-XNET 디바이스 구동 DMA 엔진은 PC 기반 CAN 인터페이스의 공통적인 문제점인 시스템 지연을 밀리초에서 마이크로초로 줄입니다. 엔진은 온보드 포트별 프로세서와 작동하여 CAN 프레임 및 인터페이스와 사용자 프로그램간의 신호를 CPU 인터럽트 없이 이동하므로, 복합 모델과 어플리케이션 처리를 위한 호스트 프로세서 시간을 절약합니다.

NI-CAN 소프트웨어 드라이버

내쇼날인스트루먼트는 모든 레거시 NI CAN 인터페이스에 NI-CAN 드라이버 소프트웨어를 함께 제공하며, ni.com에서 무료 다운로드를 제공하고 있습니다. 다른 CAN 인터페이스의 경우, 함께 제공되는 소프트웨어 툴을 구입하지 않았다면 보드 기능 일부만 사용할 수 있습니다. 그러나 NI CAN 보드의 모든 기능은 전적으로 사용 가능하므로 선택한 프로그래밍 언어에서 직접 정의된 어플리케이션을 개발할 수 있습니다. NI-CAN 드라이버는 하이 레벨의 사용하기 쉬운 함수를 제공하여 전체 CAN 어플리케이션을 신속하게 개발하도록 함으로써 시간과 비용 절감 효과를 가져옵니다.

NI-CAN 드라이버 소프트웨어에서 두 가지의 API (application programming interfaces)를 사용할 수 있습니다. Frame API는 CAN 프로그래밍을 위한 최초의 API입니다. Frame API에서, 원시 데이터 바이트를 보유하는 CAN 프레임을 송수신할 수 있습니다. 사용자의 프로그램은 확장된 공학단위를 도출하기 위해 반드시 본 바이트를 분석하고 확장해야 합니다. Frame API로 프로그래밍하기 위한 자세한 정보는, NI CAN 하드웨어 및 소프트웨어 매뉴얼 (하단 참조)의 Frame API 사용하기 섹션을 보십시오.

NI는 NI-CAN 2.0 드라이버 소프트웨어에서 최초로 Channel API를 도입하였습니다. 데이터베이스 파일 (.dbc or .ncd)로 정의된 채널 명을 사용하여 CAN 채널로부터 읽고 쓸 수 있습니다. Channel API는 다음과 같은 장점을 제공합니다.

    • 하이 레벨 프로그래밍
    • 사용하기 쉬운 물리 유닛
    • 간편한 CAN/데이터 수집 동기화에 주된 사용
    • 벡터 데이터베이스 파일 통합 기능

Channel API로 프로그래밍하기 위한 보다 자세한 정보는 하단의 NI-CAN Channel API 리소스를 참조하십시오.

또한 다음을 참조하십시오.
최신 내쇼날인스트루먼트 CAN 소프트웨어 다운로드
NI-CAN Channel API
NI CAN 하드웨어 및 소프트웨어 매뉴얼

관련 링크:
내쇼날인스트루먼트 CAN 홈페이지
디바이스 검증을 위해 CAN과 아날로그 신호 동기화