CAN 통신이란?

CAN(Controller Area Network) 통신은 자동차 및 산업용 장비에서 사용되는 고속, 신뢰성 높은 네트워크 프로토콜입니다.

1980년대 독일의 Bosch에서 개발되었으며, 자동차의 ECU(전자 제어 장치) 간 데이터를 효율적으로 교환하기 위해 설계되었습니다. 오늘날 자동차뿐만 아니라 의료 장비, 항공, 산업 자동화 등 다양한 분야에서 사용됩니다.


1. CAN 통신의 주요 특징

  1. 멀티 마스터 구조:
    • 네트워크 내의 모든 노드가 주(master) 역할을 할 수 있어, 특정 노드의 장애로 인해 네트워크 전체가 영향을 받지 않습니다.
    • 각 노드는 데이터 요청 및 송신을 자유롭게 수행.
  2. 우선순위 기반 메시지 전송:
    • CAN 프레임의 **식별자(identifier)**를 사용해 메시지의 우선순위를 설정.
    • 우선순위가 높은 메시지가 먼저 버스에 접근.
  3. 고속 데이터 전송:
    • 표준 CAN: 최대 1 Mbps
    • CAN FD(CAN Flexible Data-rate): 최대 8 Mbps
  4. 높은 신뢰성:
    • 데이터 전송 중 오류 검출 및 복구 기능 제공.
    • CRC(순환 중복 검사), ACK(응답 슬롯), 에러 플래그 등 다양한 메커니즘으로 데이터 무결성 보장.
  5. 버스 토폴로지:
    • CAN 통신은 버스(bus) 형태로 구성되며, 노드들이 동일한 물리적 선로를 공유.
    • 네트워크 내의 노드 추가/삭제가 용이.
  6. 비용 효율성:
    • 단순한 배선 구조로 시스템 비용 절감.

2. CAN 통신의 구성 요소

1. 물리적 계층

  • 케이블:
    • 트위스트 페어(Twisted Pair) 케이블 사용.
    • CAN_H(고속선), CAN_L(저속선)의 두 선으로 구성.
  • 터미네이션 저항:
    • 버스 양 끝에 120Ω 저항을 배치해 신호 반사를 방지.

2. 데이터 링크 계층

  • CAN 컨트롤러:
    • 데이터 프레임 생성, 수신, 오류 검출을 수행.
  • CAN 트랜시버:
    • 물리적 신호(CAN_H, CAN_L)를 전기적 신호로 변환.

3. 어플리케이션 계층

  • 상위 프로토콜:
    • CAN 통신은 어플리케이션 계층을 정의하지 않음.
    • 예: ISO-TP, SAE J1939, CANopen 등이 상위 계층 프로토콜로 사용.

3. CAN 통신 프레임 구조

CAN 통신의 데이터 전송은 프레임(frame) 단위로 이루어집니다. 주요 프레임 구조는 다음과 같습니다:

1. 표준 CAN(11비트 식별자)

필드설명

Start of Frame (SOF) 프레임 시작을 알리는 비트.
Identifier 메시지 우선순위를 결정하는 11비트 식별자.
Control 데이터 길이(DLC: Data Length Code)를 포함한 제어 필드.
Data 실제 데이터(최대 8바이트).
CRC 오류 검출을 위한 15비트 CRC.
ACK 수신 측 노드가 프레임 수신을 확인하는 슬롯.
End of Frame (EOF) 프레임 종료를 알리는 비트.

1.1 예제: 요청 메시지 (진단 도구 → ECU)

바이트값 (16진수)설명

1 7D F Identifier (진단 요청).
2 08 DLC (데이터 길이: 8바이트).
3 02 UDS 헤더 (데이터 길이: 2바이트).
4 01 UDS 서비스 ID (0x01, OBD-II 요청).
5 0D PID (차량 속도 요청).
6~8 00 00 00 00 패딩 데이터 (사용되지 않음).

요청 메시지 (전체):

7D F 08 02 01 0D 00 00 00 00
  • Identifier: 0x7DF (broadcast 요청 식별자).
  • Data:
    • 02: UDS 메시지 데이터 길이.
    • 01: OBD-II 요청 서비스 (Read Data by PID).
    • 0D: PID (차량 속도 요청).

2. CAN FD(확장된 데이터 전송)

추가 필드설명

BRS (Bit Rate Switch) 데이터 전송 속도 변경 여부를 지정.
Data Field 최대 64바이트 데이터 전송 가능.

4. CAN 통신의 동작 원리

  1. 프레임 전송:
    • CAN 노드가 데이터를 전송하려면 네트워크가 유휴 상태인지 확인합니다.
    • 네트워크가 유휴 상태이면 식별자를 사용해 데이터를 전송.
  2. 충돌 해결 (Arbitration):
    • 여러 노드가 동시에 데이터를 전송하려고 하면 식별자 값으로 우선순위를 판단.
    • 더 낮은 값(높은 우선순위)의 식별자를 가진 노드가 전송 권한을 가짐.
  3. 프레임 수신 및 ACK:
    • 수신 측 노드는 프레임을 수신한 후 ACK 슬롯에 도미넌트 신호를 기록해 성공적인 수신을 알림.
  4. 오류 검출 및 복구:
    • CAN은 CRC, ACK, 에러 플래그 등을 통해 오류를 검출하고, 오류 발생 시 자동 복구.

5. CAN 통신의 오류 처리 메커니즘

CAN은 네트워크 신뢰성을 높이기 위해 다양한 오류 처리 메커니즘을 제공합니다:

  1. 비트 오류 (Bit Error):
    • 전송한 비트와 수신된 비트가 불일치할 경우 발생.
  2. CRC 오류 (CRC Error):
    • 수신된 데이터의 CRC 값이 계산된 CRC 값과 다를 경우 발생.
  3. ACK 오류 (ACK Error):
    • 송신된 프레임에 대한 ACK 슬롯 응답이 없을 경우 발생.
  4. 형식 오류 (Form Error):
    • 프레임 구조가 CAN 규격에 맞지 않을 경우 발생.
  5. 복구:
    • 오류 발생 시 에러 플래그를 전송하고, 전송 중이던 프레임을 다시 전송.

6. CAN 통신의 확장

  1. CAN FD (Flexible Data-rate)
    • CAN의 개선된 버전으로, 데이터 전송 속도와 용량을 증가.
    • 최대 64바이트 데이터 전송 및 8 Mbps 속도 지원.
  2. CANopen
    • 산업 자동화를 위해 개발된 상위 프로토콜.
    • 장치 간의 표준화된 통신을 지원.
  3. SAE J1939
    • 상용차 및 중장비에서 사용하는 상위 프로토콜.
    • 엔진, 트랜스미션, ABS 등의 데이터를 교환.
  4. ISO-TP (ISO 15765-2)
    • CAN에서 데이터 패킷을 여러 프레임으로 나누어 전송.

7. CAN 통신의 장점과 단점

장점

  1. 신뢰성:
    • 오류 검출 및 복구 메커니즘으로 데이터 무결성 보장.
  2. 효율성:
    • 우선순위 기반 메시지 전송으로 네트워크 활용 최적화.
  3. 유연성:
    • 멀티 마스터 구조로 네트워크 확장이 용이.
  4. 비용 절감:
    • 단순한 배선 구조로 시스템 비용 절감.

단점

  1. 전송 속도 제한:
    • 표준 CAN은 1 Mbps로 고속 통신에 한계.
  2. 데이터 크기 제한:
    • 표준 CAN은 최대 8바이트 데이터만 전송 가능(CAN FD로 개선).
  3. 복잡한 네트워크 설계:
    • 대규모 네트워크 설계 시 식별자 및 우선순위 관리가 필요.

8. CAN 통신의 활용 분야

  1. 자동차
    • ECU 간 통신(엔진 제어, ABS, 에어백 등).
    • 전기차 및 자율주행 차량의 데이터 교환.
  2. 산업 자동화
    • 센서, 액추에이터 간의 통신.
  3. 의료 장비
    • MRI, CT 등의 장치 제어 및 데이터 교환.
  4. 항공 및 철도
    • 실시간 데이터 교환 및 시스템 모니터링.

결론

CAN 통신은 신뢰성, 효율성, 유연성을 갖춘 네트워크 프로토콜로, 다양한 산업에서 필수적으로 사용되고 있습니다.

특히 자동차 산업에서 ECU 간 데이터 교환의 핵심 역할을 수행하며, CAN FD와 같은 확장 기술로 고속 통신 및 데이터 용량 증가 요구를 충족하고 있습니다. 🚗✨

'Programming > CANoe' 카테고리의 다른 글

CANoe CAN/CANFD 진단통신 전송 1: 환경 구성  (0) 2025.02.08
CANoe의 ACK설정에 대해서  (0) 2025.02.08
CANoe의 Grade에 대해서  (0) 2025.02.08
CANoe란?  (0) 2025.02.08
블로그 이미지

RIsN

,