ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • CAN통신 이란
    임베디드/Can통신 2008. 11. 17. 11:02

    CAN의 역사


    컨트롤러 영역 네트워크 (CAN : Controller Area Network)는 1985년 Bosch사에서 차량 네트워크용으로 최초로 개발되었습니다. 과거에는 자동차 제조업체들은 포인트 투 포인트 PPP(Point-to-point Protocol)[각주:1]

     와이어링 시스템을 사용하여 차량 내 전자 기기를 연결하였습니다. 그러나 더욱 더 많은 전자 기기를 차량 내에 탑재하게 됨에 따라, 배선 장치 (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은 차량용으로 개발되었으므로 가장 보편적인 어플리케이션은 차량 내 전자적 네트워크연결입니다. 그러나, 지난 15년간 CAN의 신뢰성 및 장점이 입증되어 타 업계에서도 광범위한 어플리케이션에 CAN 버스를 도입하였습니다. 철도용 어플리케이션 (트램, 지하철, 경전철, 장거리 열차 등)에 CAN이 통합되었습니다. 이와 같은 차량 내 여러 네트워크의 다른 레벨에서 CAN을 찾아볼 수 있습니다. 그 예로는 Door unit 연결 또는 브레이크 제어기, 승객 카운팅 등이 있습니다. 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), 엔진 컨트롤 모듈 및 방출 시스템 등이 있습니다.


    저속/무정지형 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 관련 용어


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

    CAN 프레임 -- 전체 CAN 전송: 중재 ID, 데이터 바이트, ACK (acknowledge) 비트 등. 프레임은 또한 메시지를 의미합니다.

    사용자 삽입 이미지

    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 채널 정의를 위해 확장 정보를 포함한 텍스트 파일입니다. 내쇼날인스트루먼트의 CAN 소프트웨어는 Vector 및 NI CAN 데이터베이스 파일을 인식합니다. Vector 파일은 CANdb 파일로 불리며, *.dbc 확장명을 갖습니다. NI가 생성한 CAN 데이터베이스 파일은 National Instruments CAN 데이터베이스 파일이라고 불리며, *.ncd 확장명을 갖습니다.

    각 채널당, CAN 데이터베이스는 엔지니어링 유닛으로 변환하기 위해 규칙을 정의합니다. 다음의 데이터가 데이터베이스에 저장됩니다.


    채널명


    해당 메시지 내에서 채널의 위치 (시작 비트) 및 크기 (비트 수)


    바이트 순서 (인텔/모토롤라)


    데이터 타입 (signed/unsigned/IEEE float)


    스케일링 및 유닛 스트링


    범위


    기본값


    주석


    CAN 데이터베이스 파일은 차량 전체에 대한 채널 정의를 포함합니다. 각 네트워크에는 고유의 데이터베이스 파일이 있습니다. 또한, 본 데이터베이스 파일은 벡터 전용이며, 보통 접근 금지 (confidential)입니다.



    CAN 통신 작동 원리


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

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

    1. 보통 전화 회선과 고속 모뎀을 사용해 컴퓨터가 TCP/IP를 접속할 수 있게 하는 인터넷의 프로토콜. PC에서 인터넷에 접속하기 위한 대표적인 프로토콜 [본문으로]

    댓글

Designed by Tistory.