CAN Arbitration

한 줄 요약

여러 노드가 동시에 전송할 때 메시지 ID로 우선순위를 정하는 비파괴(non-destructive) 중재.

Definition

CAN arbitration은 여러 노드가 동시에 버스 전송을 시작할 때, 충돌 없이 우선순위가 가장 높은 메시지가 전송을 이어가게 하는 메커니즘이다.1

How It Works

각 노드는 전송 중에도 버스를 모니터링한다. dominant 비트(0)가 recessive 비트(1)를 덮어쓰므로, 자신이 보낸 recessive 비트가 dominant로 읽히면 더 높은 우선순위 메시지가 있다고 판단하고 전송을 중단한다. 즉 ID가 낮을수록 우선순위가 높다.2

sequenceDiagram
    participant A as Node A (ID 0x100)
    participant B as Node B (ID 0x080)
    A->>Bus: 전송 시작
    B->>Bus: 전송 시작
    Note over A,B: 비트 단위 비교
    B-->>Bus: 우선순위 승리 (낮은 ID)
    A--xBus: 전송 중단

흔한 오해

높은 ID가 우선순위가 높다고 착각하기 쉽다. 실제로는 낮은 ID가 우선한다.

Why It Matters

실시간 제어에서 메시지 지연과 우선순위를 결정하므로, 안전 관련 메시지에 낮은 ID를 할당하는 설계가 중요하다.

Examples

  • 파워트레인 제어 메시지에 낮은 ID(높은 우선순위)를 할당.

Connections

Footnotes

  1. R. Bosch GmbH, CAN Specification 2.0, 1991.

  2. ISO 11898-1:2015, Road vehicles — Controller Area Network (CAN) — Part 1.