차내 네트워크에는 환경과 상호 작용하고 고속 및 저속 정보를 처리하는 수많은 모듈이 통합되어 있다.
따라서 이런 네트워크를 테스트하는 것이 매우 어려운 과제가 되었다. 이는 주로 노드와 같은 네트워크 일부가 고속 데이터를 처리하여 안전 및 EMC 요구 사항을 만족시켜야 하기 때문이다.
자료제공│텍트로닉스 코리아
네트워크의 다른 부분은 조명과 스위치에 국부적으로 연결된 저속 부분이다. 자동차 산업에서는 CAN(Control-ler Area Network)과 LIN(Local Inter-connect Network)의 두 가지 주요 네트워크 기술을 사용한다. 이 기술은 이질적 네트워크에 공존하므로 디버깅과 테스트가 더 어려워지고 시간도 많이 소요된다.
이 글에서는 CAN 및 LIN 프로토콜의 기본적 사항을 간략히 설명한다. 또한 DPO7000시리즈와 내장된 CAN에 특정한 트리거 기능과 TDSVNM CAN 및 LIN 타이밍 및 프로토콜 디코드 소프트웨어를 결합하는 LSA 옵션이 차내 네트워크를 디버그 및 테스트하는데 있어 충족되지 못한 요구 사항을 어떻게 처리하는지 설명한다. 몇 가지 주요 특징은 다음과 같다.
- 발진기 허용 오차와 전파 지연 계측으로 시간 절약
- 버스 사용률과 데이터 전송률을 계측함으로써 네트워크의 효율적 이용 도모
- CAN 아이 다이어그램 분석으로 CAN 메시지 내의 노이즈 문제 발견
- CAN 프레임의 내용을 바탕으로 CAN 및 LIN 메시지 캡처 및 프로토콜 디코드된 형식으로 보기
- CAN 및 LIN 데이터를 동시에 캡처하고 그것을 프로토콜 디코드된 형식으로 봄으로써 게이트웨이에서의 대기 시간을 쉽게 찾을수 있음
- 물리적 계층 디버깅과 프로토콜 디코딩 모두에 적합한 첨단 트리거링
CAN 기본 사항
CAN은 제어 모듈 연결을 위한 직렬의 비동기식 다중 마스터 통신 프로토콜이다. CAN은 1Kbps~1Mbps 범위의 비트율을 지원한다. 125Kbps 미만의 데이터 전송률을 보통 저속 CAN이라 한다. 125Kbps~1Mbps의 데이터 전송률을 고속 CAN이라 한다. CAN 노드에는 들어오는 데이터를 샘플링하기 위한 자체 클럭 제너레이터가 있다. 각 CAN 노드에 대해 비트 시간의 타이밍 파라미터 동기 세그먼트, 전파 세그먼트, 위상 세그먼트 1 및 위상 세그먼트 2를 개별적으로 구성할 수 있으므로 CAN 노드의 발진기 클럭 속도가 다르더라도 공통적인 비트율을 만들 수 있다.
CAN은 신호처리를 위해 싱글 와이어, 듀얼 와이어 또는 장애 허용 기술을 사용한다. 싱글 와이어에서 CAN 데이터 전송률은 33.3Kbps와 83.33Kbps이고 신호처리는 단일 종단 방식이다. 듀얼 와이어 CAN 데이터 전송률은 고속 CAN 수준이고 신호처리는 차동 방식이다. 장애 허용 CAN은 저속CAN 데이터 전송률에 맞게 설계된 것이다. 배터리나 접지로 연결된 어떤 와이어든 단락이 발생하더라도 장애 허용 CAN은 계속 작동한다.
네트워크 내의 각 CAN 노드는 패킷 형태로 정보를 보내어 통신을 한다. 각 패킷에는 오버헤드와 페이로드가 포함된다. 통신 유형에 따라 각 패킷은 데이터 프레임, 원격 프레임, 오버로드 프레임 및 오류 프레임으로 불린다. 차내 네트워크의 경우 CAN 노드는 원격 프레임을 내보내어 데이터를 요청한다.
노드가 데이터를 처리하고 우선순위가 더 높은 작업을 수행하느라 사용 중인 경우 그 노드는 버스에 오버로드 프레임을 배치함으로써 현재 사용 중임을 나타낸다. CAN 노드가 체크섬에 오류가 있거나 데이터가 손상된 사실을 발견하면 오류 프레임을 내보낸다. 데이터 프레임에는 CAN 메시지에서 받은 데이터가 들어간다.
CAN에는 CAN2.0A와 CAN2.0B라는 두 가지 프로토콜 형식이 있다. 이 두 버전 간의 차이점은 주소 지정을 위한 비트 수다. CAN2.0A는 11비트 주소 지정 방식과 CAN2.0B에 대한 장애 허용 기능을 지원한다. CAN 2.0B는 29비트 주소 지정을 지원하며 확장된 주소 지정 방식으로도 알려져 있다. CAN2.0B는 CAN2.0A와 함께 작동한다. CAN2.0B에 대한 일반적인 데이터 프레임 내용이 그림 1에 표시되어 있다.
LIN 기본 사항
LIN은 공통 UART 인터페이스에 기반을 둔 싱글 와이어 직렬 통신 프로토콜이다. LIN은 단일 마스터, 다중 슬레이브 네트워킹 아키텍처를 사용한다. LIN은 자동차의 도어 제어, 조명 및 차창 작동을 위해 자동차 센서 및 액츄에이터 네트워킹 애플리케이션용으로 개발되었다. LIN 마스터 노드는 LIN 네트워크를 CAN (Controller Area Network)과 같은 상위 네트워크와 연결한다.
LIN은 전자기 간섭과 클럭 동기화에 의한 요구 사항으로부터 최대 20Kbps의 데이터 전송률을 지원한다. 슬레이브 작업은 식별자를 수신하여 필터링할 때 활성화되어 메시지 응답 송신을 시작한다. 응답은 2, 4 또는 8개의 데이터 바이트와 체크섬 바이트 1개로 구성된다. 헤더와 응답 부분이 하나의 메시지 형식을 이룬다. LIN 메시지 형식이 그림 2에 나와 있다.
비트 타이밍 문제 해결에 도움이 되는발진기 허용 오차 및 전파 지연 측정
CAN 프로토콜은 비트율, 비트 샘플 포인트 그리고 비트 주기의 샘플 수는 사용자가 프로그래밍할 수 있다. 이 프로세스 중에 사용자는 비트 타이밍 파라미터, 기준 발진기 허용 오차 및 시스템 내의 다양한 신호 전파 지연 사이의 관계를 인식하고 있어야 한다.
CAN 사양에 따르면 비트 시간은 4개의 세그먼트로 나눈다. 동기화 세그먼트, 전파 시간 세그먼트, 위상 버퍼 세그먼트 1, 위상 버퍼 세그먼트 2가 그것이다. 각 세그먼트는 구체적이고 프로그래밍 가능한 시간 할당량 수로 구성된다. 비트 시간의 기본 시간 단위인 시간 할당량(tq)의 길이는 프로그래머가 비트율 프리 스케일러를 사용하여 정의한다. 그림 3은 비트 시간에서 시간 할당량을 선택한 다음 위의 네 세그먼트에 시간 할당량을 지정하는 방법을 나타낸 것이다.
동기화 세그먼트(Sync_Seg)는 CAN 버스 레벨의 에지가 발생할 것으로 예상되는 비트 시간 부분이다. Sync_seg 외부에서 발생하는 에지 간 거리를 그 에지의 위상 오류라고 한다. 전파 시간 세그먼트(Prop_seg)는 CAN 네트워크 내의 물리적 지연 시간을 보상할 목적으로 고안 되었다. 위상 버퍼 세그먼트 Phase_ seg1과 Phase_seg2는 샘플 포인트를 둘러싼다. SJW(re-Synchronization Jump Width)는 에지 간 오류를 보상하기 위해 위상 버퍼 세그먼트에 의해 정의된 한계 내에서 재동기화로 샘플 포인트를 얼 마나 멀리 이동시킬 수 있을지 정의한다.
CAN 네트워크가 올바로 작동할 수 있도록 하기 위해서는 다른 비트 시간을 설정하여 비트율을 달성할 수 있지만 물리적 지연 시간과 발진기 허용 오차 범위를 고려해야 한다. CAN 네트워크의 각 노드는 자체 발진기로부터 비트 타이밍을 유도한다. 이 비트 시간은 발진기 허용 오차에 따라 변화한다. 실제 시스템에서는 발진기 기준 주파수인 fclk가 초기 허용 오차 오프셋과 노후화 및 주위 온도의 변동으로 인해 공칭 값에서 벗어나게 된다. 이런 편차의 합계가 총 발진기 허용 오차가 된다.
프로그래머는 타이밍 레지스터를 프로그래밍하면서 이런 편차 요소를 고려해야 한다. DPO7000 시리즈에서 실행하는 CAN 및 LIN 타이밍 및 프로토콜 디코드 소프트웨어(전문 용어로는 TDSV NM)는 발진기 허용 오차를 자동으로 측정한다. 사용자가 CAN 노드의 ID를 지정한다. 결과에는 ACK 비트가 있을 때와 없을 때의 총 발진기 허용 오차가 포함된다. 실제 상황에서는 CAN 노드가 ACK 비트를 정확하게 샘플링하여 CAN 컨트롤러가 이를 인식해야 한다. TDSVNM은 ACK 비트가 없는 데이터도 제공하며 CAN 노드의 수신이 송신 노드에 미치는 영향을 보여준다. 송신 노드와 수신 노드의 발진기 허용 오차를 결합함으로써 오류가 없는 네트워크 성능을 위해 CAN 컨트롤러 타이밍 레지스터를 프로그램 할 수 있다.
샘플 포인트를 정확히 설정하기 위해서는 발진기 허용 오차 정보와 함께 전파 지연 시간 정보가 필요하다. CAN은 네트워크 액세스 뿐만 아니라 프레임 내 승인을 위해 경쟁하는 노드들 사이에 비파괴적인 중재를 허용한다는 사실로 인해 CAN 시스템에서 전파 지연의 중요성이 부각된다.
A와 B라는 2개의 CAN 노드가 있다고 가정해봅시다. A와 B의 두 노드 사이의 단방향 전파 지연을 tprop(A, B)로 정의한다. CAN 버스 상의 비트 스트림으로 동기화된 CAN 노드는 두 노드 사이의 신호 전파 시간 때문에 트랜스미터 비트 스트림으로 위상 반전될 것이다.
그림 5의 예에서 A와 B 노드 모두 CAN 버스에 대한 중재를 수행하는 트랜스미터다. A 노드는 B 노드 보다 빠른 1비트 시간 미만의 프레임 비트 신호를 보냈으므로 B노드가 수신된 에지에 맞춰 수동에서 능동으로 스스로 동기화 했다. B 노드는 송신된 후 이 에지 지연(A_to_B)을 동기화했으므로 B의 비트 타이밍 세그먼트는 A에 관해 이동했다.
B 노드는 우선순위가 더 높은 식별자를 보내므로 B 노드가 능동 비트를 송신할 때 특정 식별자 비트에서 중재권을 얻게 된다. A 노드는 수동 비트를 송신한다. B 노드가 송신한 능동 비트는 지연(B_to_A)이 일어난 후 A 노드에 도착한다. 발진기 허용 오차로 인해 A 노드 샘플 포인트의 실제 위치는 A 노드 위상 중 더 큰 세그먼트의 공칭 범위 내의 어디든 될 수 있으므로 B 노드에서 송신된 비트는 phase_seg1이 시작되기 전에 반드시 A 노드에 도착해야 한다. 이 조건은 Prop_seg의 길이를 정의한다.
Phase_Seg2가 시작된 후 B 노드가 송신한 수동에서 능동까지의 에지가 A 노드에 도착하면 A 노드가 능동 비트 대신 수동 비트를 샘플링하는 일이 발생할 수 있다. 이것은 비트 오류와 오류 플래그에 의한 현재 프레임 파괴의 원인이 된다. 이 문제를 해결하려면 엔지니어가 CAN 컨트롤러의 타이밍 레지스터를 프로그래밍하는 동시에 정확한 데이터를 고려해야 한다. 현재 TDSVNM 소프트웨어는 자동화된 전파 지연 측정 기능을 제공한다.
TDSVNM 소프트웨어가 제공하는 자동화된 발진기 허용 오차 및 전파 지연 계측 기능을 사용하여 차내 네트워크에서 실제로 발생하는 데이터를 취함으로써 레지스터를 프로그래밍 할 수 있다.(그림 6)
버스 사용률 및 데이터 전송률 계측 기능을 통해 차내 네트워크를 효율적으로 사용 가능
자동차 업계에서는 차내 네트워크를 효율적으로 사용하려면 버스 로드의 30%에서 네트워크가 작동하는 것이 좋다고 권장한다. 30% 이상에서 작동하면 차내 노드가 오버로드 프레임을 생성하거나 낮은 우선순위의 활동이 일어나지 못하게 되어 차내 네트워크의 작동이 부정확해진다.
CAN 노드는 버스가 유휴 상태일 때 메시지를 송신한다. 유선 AND 로직 때문에 두 노드가 동시에 메시지를 송신하기 시작할 때 더 높은 우선순위의 메시지가 낮은 우선순위의 메시지보다 우선한다.
우선순위가 가장 낮은 노드는 버스가 유휴 상태일 때 버스에 다시 액세스를 시도한다. 우선순위가 낮은 노드는 버스의 오버로드로 인해 절대 송신을 위해 버스에 액세스하지 못하게 될 수도 있다. 우선순위가 낮은 노드는 대기 시간이 적절한 수준보다 길어지게 된다. 버스 사용률과 디버그 문제를 분석하려면 버스가 오버로드 되는 조건을 파악하는 것이 중요하다. 이것은 다음과 같은 것이 될 수 있다.
1. 특정 ID가 있는 메시지
2. 오류 프레임
3. 오버로드 프레임
TDSVNM 소프트웨어는 특정 ID, 데이터 내용, 오류 프레임, 오버로드 프레임일 때 버스 사용률을 측정하는 기능을 제공한다. 이 기능을 사용하여 차량의 다양한 작동 조건에서 네트워크 로딩을 디버그 할 수 있다. 그림 7은 버스 사용률 결과를 나타낸 것이다.
버스 사용률을 보다 면밀히 분석하려면 다양한 프레임 카운트를 파이 차트로 보는 기능을 선택하면 된다. 프레임 카운트 뷰는 데이터 프레임, 오류 프레임 그리고 원격 및 오버로드 프레임 카운트를 제공한다. 이 분포 상태는 CAN 버스를 오버로드하는 원인을 나타낸다. 데이터 프레임 내에서 특정 ID에 대한 데이터 프레임 카운트를 볼 수도 있다. 이것은 높은 우선순위의 노드가 버스를 점유 중인지 여부를 테스트하는데 도움이 된다. 이 결과를 사용하여 보다 허용 가능한 성능을 위한 CAN 일정을 프로그램 할 수 있고 필요하다면 CAN 버스를 보다 효율적으로 사용하기 위해 CAN 노드의 우선순위를 다시 지정한다. 그림 8은 CAN 트래픽의 프레임 분포를 나타낸 것이다.
차내 네트워크에는 노드가 많이 있다. 알다시피 각각의 CAN 노드는 다른 CAN 시스템 클럭에서 작동할 수 있다. 하지만 타이밍 레지스터 보드율 프리 스케일러를 사용하여 고정된 한 가지 데이터 전송률로 모든 CAN 노드가 작동하도록 만들 수 있다. 인간의 오류와 CAN 시스템 클럭의 변화 때문에 차내 네트워크에 CAN 버스를 통합하면 데이터 전송률이 CAN 버스 데이터 전송률과 일치하지 않을 수도 있다. 이 노드가 CAN 메시지를 송신하거나 수신할 때 노드는 네트워크의 비효율성을 초래하는 오류 메시지를 생성한다.
DPO7000시리즈와 TDSVNM CAN 및 LIN 타이밍 및 프로토콜 디코드 소프트웨어를 내장된 CAN에 특정한 트리거 기능과 결합하는 LSA 옵션을 사용하면 특정 ID에 대한 CAN 메시지를 캡처하고 데이터 전송률을 측정할 수 있다. 이 측정 기능을 사용하여 데이터 전송률이 다른 CAN 노드의 데이터 전송률과 일치하지 않는 노드를 신속히 찾아낼 수 있다.(그림 9)
<자료제공: 월간 반도체네트워크 2007년 04월호>