[아나로그디바이스(ADI)=마드후라 탑세(Madhura Tapse) 스태프 엔지니어] 이 글에서는 CAN(Controller Area Network) 송수신기를 평가하기 위한 시스템 차원의 테스트 접근법에 대해서 설명한다.

여러 개의 CAN 노드들로 이뤄진 시스템에서 한 CAN 노드에서 다른 CAN 노드로 데이터를 전송할 때 데이터 전송 문제가 발생하지 않도록 하기 위해서는 이 같은 테스트 접근법이 필요하다. 이 글은 CAN 시스템에 대해서 더 잘 이해하고 특정한 다중노드 CAN 시스템에 적합한 CAN 송수신기를 선택하는 방법에 대한 참고 자료가 될 것이다.

 

머리말
CAN은 견고한 통신 표준이다. CAN을 사용해서 서로 다른 센서, 기계 장비, 컨트롤러가 서로 통신할 수 있다. CAN 인터페이스는 견고할 뿐 아니라 버스 간의 경쟁을 효과적으로 처리한다는 점에서 산업 자동화, 홈 오토메이션, 자동차 분야에 널리 사용되고 있다.

기존 CAN2.0은 8바이트 페이로드를 사용하고 최대 2Mbps 데이터 속도를 지원한다. 경우에 따라서는 중요도 높은 통신 이벤트를 위해서 2Mbps 데이터 속도가 충분하지 않을 수 있다. 그래서 CAN.org는 CAN-FD라고 하는 새로운 통신 프로토콜을 내놓게 되었다. CAN-FD는 최대 10Mbps의 높은 데이터 속도로 통신할 수 있다.

 

CAN-FD의 유연한 데이터 속도
CAN과 CAN-FD의 가장 큰 차이는 유연한 데이터 속도에 있다. CAN-FD는 데이터 속도를 기존 CAN의 5배로 높였다(데이터 페이로드만 10Mbps이고 호환성 이유에서 중재 비트 레이트는 여전히 1Mbps로 제한). 메시지 페이로드 크기는 기존 CAN의 8바이트에서 64바이트로 높였다.

CAN-FD를 사용하면 센서가 더 크거나 더 작은 페이로드를 사용해서 데이터 속도를 변경할 수 있다. 현대식 공장에서 더 빠른 데이터 속도와 더 큰 페이로드 용량은 기존 CAN에 비해 시스템 차원의 많은 이점을 가져온다.

 

CAN 통신의 개요
CAN 통신은 <그림 1>에서 보듯이 두 가지 요소로 이루어진다. (a) CAN 컨트롤러와 (b) CAN 송수신기가 그것이다.

그림 1. 단일 CAN 노드 [자료=ADI]
그림 1. 단일 CAN 노드 [자료=ADI]

CAN 컨트롤러는 CAN 통신의 데이터 링크 계층을 다루고 CAN 송수신기는 물리 계층을 다룬다. 그러면 먼저 CAN 송수신기 물리 계층에 대해서 살펴보자.

CAN 프로토콜은 로직 0이 우성 비트(dominant bit)고 로직 1이 열성 비트(recessive bit)다. CAN은 차동 프로토콜이기 때문에 CANH와 CANL 사이의 전압 차이가 송신 신호 및 수신 신호의 로직 레벨을 결정한다. CANH-CANL 전압이 1.5V보다 높으면 CAN 수신기가 이 비트를 로직 0으로 인식한다.

CANH-CANL 전압이 200mV보다 낮으면 CAN 수신기가 이 비트를 로직 1로 인식한다. <그림 2>는 CAN 송수신기의 TXD 핀으로 디지털 로직 1과 로직 0 비트들을 연속적으로 전송할 때 CANH 핀과 CANL 핀에서의 CAN 버스 레벨을 보여준다. 수신기는 CANH와 CANL 사이의 전압 차이를 근거로 해서 RXD 핀에 신호를 전달한다.

그림 2. CAN 프로토콜 물리 계층 [자료=ADI]
그림 2. CAN 프로토콜 물리 계층 [자료=ADI]

이번에는 CAN 데이터 링크 계층을 보자. 데이터 링크 계층은 이 비트 스트림이 통제된 방식으로 전송되도록 하기 위해서 데이터 프레임을 형성한다. 이것은 오류를 감지하고 버스 경쟁을 해결하는 데 도움이 된다. <그림 3>은 표준 CAN 프레임 형식을 보여준다.

모든 노드는 SOF(Start Of Frame)를 사용해서 데이터 프레임을 시작한다. 이것은 첫 번째 우성 비트다. 11비트 식별자는 각 노드의 고유 주소다. IDE는 프레임 형식을 나타낸다. 이 비트필드가 로직 0이면 표준 CAN 형식이고 이 비트필드가 로직 1이면 확장 CAN 형식이다. r0은 예비용 비트다. DLC 필드는 전송하고자 하는 데이터 바이트 수를 나타낸다.

그림 3. CAN 프로토콜 데이터 링크 계층 [자료=ADI]
그림 3. CAN 프로토콜 데이터 링크 계층 [자료=ADI]

표준 CAN2.0 프레임은 최대 8바이트를 전송할 수 있다. 수신 노드가 버스로 우성 비트를 전송해서 이 데이터 프레임에 응답한다. 끝으로 EOF(End Of Frame)는 하나의 열성 비트로서 한 데이터 프레임이 끝났다는 것을 나타낸다.

사용자들은 CAN 송수신기를 선택할 때 흔히 함수 발생기를 통해서 CAN 송수신기의 TXD 핀에 비트 스트림을 전송하는 방법으로 CAN 송수신기를 평가한다. 이 방법은 단일 노드 CAN을 평가할 때는 괜찮지만 노드들이 거리가 떨어져 있는 다중노드 CAN 시스템을 개발할 때는 적합하지 않다. 그러므로 이런 시스템에 적합한 CAN 송수신기를 선택하기 위해서는 새로운 CAN 컨트롤러 및 송수신기 테스트 접근법이 필요하다.

 

중재 기법
이런 시스템 차원의 접근법이 필요한 가장 큰 이유는 CAN 프로토콜의 중재 기능에 있다. CAN 프로토콜은 어떤 두 노드가 동시에 버스를 차지하려고 할 때 비파괴적인 비트 차원 중재를 사용해서 액세스를 구현한다. 다른 노드들이 1(열성 비트)을 전송하는 동안 식별자 비트로 가장 먼저 0(우성 비트)을 전송하는 노드가 CAN 버스에 대한 제어 권한을 갖고 자신의 메시지를 전송한다. <그림 4>는 두 노드 사이에 중재가 어떻게 이루어지는지 보여준다.

그림 4. 2개의 노드 시스템에서 CAN 중재 [자료=ADI]
그림 4. 2개의 노드 시스템에서 CAN 중재 [자료=ADI]

이 그림에서 노드 1과 노드 2는 CAN 버스를 통해서 서로 연결돼 있다. 그러므로 CANH와 CANL 신호가 두 노드들 사이에 공통적이다. TXD1과 RXD1은 노드 1의 신호들이고, TXD2와 RXD2는 노드 2의 신호들이다.

그림에서 보듯 처음 3개 비트는 노드 1과 노드 2가 동일하게 1, 0, 1이다. 그런데 네 번째 비트는 노드 2는 1이고 노드 1은 0이다. 노드 1이 우성 비트다. 따라서 이 노드가 우선권을 갖고 자신의 메시지를 전송한다. 노드 2가 이 메시지에 대해서 응답한다.

노드 1이 전송을 마치면 노드 2가 자신의 메시지를 전송한다. 노드 1이 이 메시지에 대해서 응답한다. 각 노드는 고유의 식별자 ID를 갖는다. 중재 과정에서 이 11비트 식별자 ID가 사용된다. 컨트롤러가 이 비트들을 읽어서 메시지 전송의 우선순위를 판단한다. CAN-FD는 중재 비트 레이트를 데이터 비트 레이트와 같게 하거나 다르게 할 수 있다. CAN2.0은 중재 비트 레이트와 데이터 비트 레이트가 같다.

기존 CAN2.0 시스템은 경우에 따라 비트 레이트를 CAN2.0의 표준 권장 1Mbps에서 높여서 더 빠른 데이터 전송이 가능하다. CAN-FD 시스템은 중재 비트 레이트를 1Mbps 데이터 속도로 제한하고 데이터 비트 레이트는 최대 10Mbps가 가능하다. 중재 단계(11비트 식별자와 SOF 비트)에서는 동기화를 위해 전송되는 모든 비트들을 읽는다.

CAN 노드들이 CAN 버스 상에서 관찰되는 에지들을 통해서 동기화를 이룬다. 그런데 버스 라인 상에서 신호전달 시간이 노드들 간에 위상 편이를 야기한다. MAC(Media Access Control) 차원에서 CAN의 비파괴적 중재 메커니즘은 어떠한 두 노드 사이에 위상 편이가 한 비트 시간의 절반 이하일 것을 요구한다.

공칭 비트 시간에 있어서 이 하한 한계가 공칭 비트 레이트의 상한 한계를 결정하고 버스 길이를 결정한다. 그러므로 RXD의 상승 및 하강 시간, CAN 송수신기의 루프 지연, 케이블이 중요하다. 예를 들어 비트 레이트가 10Mbps라고 한다면 전달 지연과 상승 시간/하강 시간은 50ns 미만이어야 한다.

그러므로 CAN-FD는 중재 비트 레이트를 1Mbps로 제한하고 있다. 그럼으로써 여러 노드들이 동기화를 할 수 있도록 더 높은 수준의 여유를 가질 수 있게 한다. CAN-FD는 비교적 새로운 표준이라서 아직 모든 CAN 시스템에 구현되어 있지 않다. 어떤 경우에는 CAN-FD 컨트롤러가 비싸다고 판단되어서 사용자가 표준 CAN 컨트롤러를 선택할 수도 있다.

이런 시스템은 중요한 센서 정보를 전송하기 위해서 또는 노드들 사이에 짧은 케이블 거리 때문에 CAN 노드들이 더 높은 비트 레이트(2Mbps 이상)로 통신해야 할 수 있다. 이 경우 상승 시간/하강 시간 대칭성과 송수신기 전달 지연이 허용 가능한 데이터 통신을 달성하기 위한 상한 한계를 제한할 수 있다.

 

CAN 송수신기에 대한 시스템 차원의 테스트 필요성
CAN 송수신기로서 MAX33012E를 20미터 케이블로 13.3Mbps로 테스트했다. <그림 5>에서 보듯이 TXD2 비트 폭은 75ns(13.3Mbps에 해당)이고 RXD2 비트 폭은 72ns다. 컨트롤러가 TXD 비트 폭의 80%로 샘플링해 RXD의 상승 시간/하강 시간과 루프 지연을 포함해서 필요한 최소 RXD 비트 폭은 60ns이다.

그림 5. MAX33012E의 CAN 데이터 통신 [자료=ADI]
그림 5. MAX33012E의 CAN 데이터 통신 [자료=ADI]

<그림 5>에서는 수신 비트 폭이 72ns라는 것을 알 수 있다. 그러므로 MAX33012E는 이 조건을 만족하고 높은 비트 레이트로 실행하기에 충분히 견고하다고 할 수 있다. 이런 조건에서는 CAN 컨트롤러가 어떠한 오류를 감지하지 않고 데이터 통신을 계속해서 이어간다.

<그림 6>은 경쟁사 제품의 스코프 측정 화면을 보여준다. 이 제품도 13.3Mbps로 테스트했다. 송신 비트 폭은 75ns(13.3Mbps에 해당)고 수신 비트 폭은 송신 비트 폭의 80% 이하(48ns)다. 그러므로 중재 단계 비트 전송이 실패하고 통신 오류가 발생하며 결국 시스템이 작동을 멈췄다.

그림 6. 경쟁사 제품의 CAN 데이터 통신 [자료=ADI]
그림 6. 경쟁사 제품의 CAN 데이터 통신 [자료=ADI]

이와 같은 데이터 전송 오류는 여러 개의 CAN 컨트롤러, 여러 개의 CAN 송수신기, 긴 케이블에 걸쳐서 전체 시스템 차원의 테스트를 실시해서만 찾아낼 수 있다.

 

맺음말
CAN 송수신기에 대해서 시스템 차원의 테스트를 실시함으로써 시스템 차원에서 발생할 가능성이 있는 데이터 전송 문제를 찾아낼 수 있다. 요구되는 타이밍 및 전압 사양을 만족하는 CAN 컨트롤러와 케이블을 사용해서 CAN 송수신기를 테스트함으로써 시스템을 실제로 개발했을 때 이런 문제들이 발생하는 것을 피할 수 있다.

CAN 시스템의 견고성은 CAN 시스템을 형성하는 모든 부품들의 성능이 합쳐진 결과다. 한 가지 부품, 즉 CAN 송수신기만 테스트하는 것으로는 시스템 성능을 정확하게 파악하기 어렵다. 사전에 시스템 차원의 검증을 실시하는 것이 나중에 문제가 있는 부품을 교체하는 것보다 훨씬 비용적으로 효과적이다. 그러므로 자신의 시스템에 적합한 CAN 송수신기를 선택하기에 앞서서 시스템 차원의 테스트를 실시할 것을 권장한다.

회원가입 후 이용바랍니다.
개의 댓글
0 / 400
댓글 정렬
BEST댓글
BEST 댓글 답글과 추천수를 합산하여 자동으로 노출됩니다.
댓글삭제
삭제한 댓글은 다시 복구할 수 없습니다.
그래도 삭제하시겠습니까?
댓글수정
댓글 수정은 작성 후 1분내에만 가능합니다.
/ 400
내 댓글 모음
저작권자 © 테크월드뉴스 무단전재 및 재배포 금지