팜테크(FAMTECH)

[CAN통신] CAN Communication Error 란? (Delimiter, 에러, Data Frame, Bit Stuffing) 본문

기초이론/캔통신(CAN Communication)

[CAN통신] CAN Communication Error 란? (Delimiter, 에러, Data Frame, Bit Stuffing)

FAMTECH 2024. 1. 24. 08:54

 

목차

     

    "관련제품 문의는 로고 클릭 또는 공지사항의 연락처를 통해 하실 수 있습니다."

     

     

     

     

    CAN 에러 Basics

     

    이전 포스트들의 내용으로 CAN 버스 프로토콜과 그 작동 원리를 배운 지금, 이 시스템이 어떻게 오류에 직면하고 이를 처리하는지 이해하기가 훨씬 쉬워졌습니다. 물론, 완벽한 시스템은 없습니다. 오류는 항상 발생할 가능성이 있지만, 잘 설계된 시스템은 오류를 감지하고, 제거한 후 수정된 데이터를 재전송하는 방법을 알고 있어야 합니다. CAN 버스도 비슷한 방식으로 오류를 경험하지만, 이를 효과적으로 해결합니다.

     

    우선 CAN Bus의 데이터 프레임의 구조를 알아 보겠습니다.

     

    CAN Standard 프레임

     

     

    CAN Standard 프레임 상세 구조

     

     

     

     

    CAN 버스 프로토콜에서는 데이터 전송과 오류 검출, 그리고 시간 동기화를 위해 특별한 비트를 사용합니다. 이러한 비트들은 데이터의 안정적인 전송을 돕고, 오류가 발생했을 때 이를 탐지하는 데 중요한 역할을 합니다. 여기서 설명하는 몇 가지 특별한 비트들에 대해 간단하게 설명하겠습니다.

     

    구분 비트(Delimiter Bits)

    구분 비트는 특정 작업을 완료하기 위한 시간이나 공간을 제공하는 역할을 합니다. 이 비트들은 비트 스터핑(bit-stuffing)이 적용되지 않는 필드에서 비트 전환을 보장하여, 비반전 직렬(NRZ) 부호화로 인해 타이밍 동기화를 회복하는 데 필요한 비트 전환을 확실하게 합니다. 구분 비트는 오류 검출에 있어서도 특정 목적을 제공합니다. CAN 프레임의 형태를 유지하기 위해 미리 정의된 위치에 있어야 합니다.

     

     

    CRC 구분 비트(CRC Delimiter)

    CRC 구분 비트는 ECU(전자 제어 장치)가 CRC(순환 중복 검사)를 계산할 수 있는 시간 또는 공간을 제공합니다. CRC는 데이터 전송 중에 오류를 탐지하는 데 사용되는 한 방법입니다.

     

     

    ACK 구분 비트(ACK Delimiter)

    데이터를 수신한 후, 수신측은 전송 노드에게 수신 확인을 보내며, 이를 위해 어느 정도의 시간이 필요하므로 ACK 구분 비트가 사용됩니다. 이 비트는 수신측이 데이터를 성공적으로 받았음을 알리는 데 사용됩니다.

     

     

    비트 스터핑(Bit Stuffing)

    노드가 동일한 레벨의 비트를 다섯 개 연속으로 전송하면, 여섯 번째 비트에 반대 레벨의 비트를 추가하여 비트 스트림에 삽입합니다. 수신기는 이 추가된 비트를 제거합니다. 이 방법은 버스에 과도한 직류 성분이 발생하는 것을 방지하고, 수신기가 오류를 탐지할 수 있도록 합니다. 비트 스터핑은 전송 오류가 데이터를 손상시키지 않도록 보장하는 것이 아니라, 전송이 올바른 위치에서 시작되고 종료되도록 보장합니다.

     

    이러한 특별한 비트와 규칙들은 CAN 버스 시스템이 데이터를 효과적으로 전송하고, 오류를 탐지하며, 동기화를 유지할 수 있도록 돕습니다.

     

     

     

     

     

    CAN BUS Error 종류 및 정의

     

     

    CAN 버스를 통한 비트 전송에 영향을 줄 수 있는 다섯 가지 다른 유형의 오류가 있습니다. 이 오류들은 CAN 시스템의 안정성과 효율성을 보장하기 위해 인식되고 처리됩니다.

     

    1. 비트 오류 (Bit Error)

    비트 오류는 전송된 비트와 수신된 비트가 서로 다를 때 발생합니다. 모든 노드는 버스에서 데이터를 비트 단위로 읽고, 전송된 비트 값과 수신된 비트 값을 비교합니다. 만약 전송된 비트와 수신된 비트의 값이 다르면 "비트 오류"가 발생합니다.

     

     

    2. 스터프 오류 (Stuff Error)

    비트 스터핑(bit stuffing) 과정 후, 동일한 레벨의 비트가 연속으로 다섯 번 이상 발생하면 "스터프 오류"가 발생합니다. 비트 스터핑은 CAN 버스에서 데이터 전송의 동기화를 유지하기 위해 사용되는 기술입니다.

     

     

    3. 형식 오류 (Form Error)

    형식 오류는 전송된 CAN 프레임이 표준 형식을 따르지 않을 때 발생합니다. 예를 들어, CRCD(사이클 리던던시 체크 디리미터), ACKD(승인 디리미터), EOF(프레임 종료)는 모두 recessive bit여야 하며, 여기에 dominant bit가 존재하면 형식 오류로 간주됩니다. 또한, 구분자 비트(delimiter bits)가 정해진 위치에 나타나지 않으면 형식 오류가 발생할 수 있습니다.

     

     

    4. CRC 오류 (CRC Error)

    전송 노드는 15비트 CRC(사이클 리던던시 체크) 값을 버스에 전송합니다. 수신 노드는 자체적으로 받은 페이로드를 기반으로 15비트 숫자를 계산한 다음, 메시지의 일부로 받은 CRC 구분자와 비교합니다. 계산된 코드와 수신된 CRC가 일치하지 않으면, 전송 중에 페이로드의 8바이트가 손상되었거나 변경되었다고 판단하여 CRC 오류가 발생했다고 합니다.

     

     

    5. ACK 오류 (ACK Error)

    ACK(승인) 비트는 전송 노드에 의해 정의된 recessive  "1"로 전송되며, 수신자의 응답은 정의된 dominant  "0"입니다. 그러나, 이 경우가 아니고 전송자가 우세한 승인 비트를 응답으로 받지 못하면, 이를 ACK 오류로 간주합니다.

     

     

    이러한 오류들은 CAN 시스템 내에서 신뢰할 수 있는 통신을 유지하기 위해 식별하고 해결해야 하는 중요한 요소입니다. CAN 프로토콜은 이러한 오류들을 효과적으로 감지하고 대응하여 네트워크의 안정성과 데이터의 정확성을 보장합니다.

     

     

     

     

    해당 내용과 관련해서 팜테크에서 교육 프로그램, 측정/분석 용역, 장비를 제공하고 있습니다.  관심 있으시면 아래 홈페이지 또는 연락처를 통해 문의 주시면 됩니다. :)

     

    https://famtech.co.kr/sub04/01_01.php

     

    교육일정및신청(주)팜테크

    이달의 교육일정 해당월에는 교육일정이 없습니다.

    famtech.co.kr

     

     

     

     

     

     

     

     

    Comments