CAN 중재(Arbitration) — 둘 이상의 ECU가 동시에 CAN 버스에 접근하려 할 때 충돌을 회피하고 우선순위가 가장 높은 메시지만 살아남도록 하는 비트 단위(Bit-by-Bit) 결정 메커니즘. CSMA/CA의 핵심 동작.
기본 규칙
- 모든 네트워크 노드는 버스가 idle일 때 언제든 전송을 시작할 수 있다.
- Bus idle 판정: recessive 레벨이 11비트 시간 연속되면 idle. 1 MBaud CAN 기준 11µs.
- 둘 이상의 송신 노드가 있으면 비트 동기(bit-synchronous) 전송과 중재가 동시에 진행된다.
- 중재가 끝난 시점에 단 하나의 노드만 전송을 계속할 권리를 갖는다.
Arbitration Phase
- 충돌 가능성이 있는 메시지들의 Identifier를 전송하는 구간이 Arbitration Phase.
- 각 Identifier는 숫자 값의 역순으로 우선순위를 가진다.
- Phase 동안 낮은 우선순위 메시지는 중단·연기되고, 최고 우선순위 메시지가 전송을 이어간다.
- 중재에서 진 노드는 전송 요청을 취소하지 않고 다음 idle 시점에 재시도.
Bit-by-Bit 중재 로직
모든 송신 노드는 자신이 보낸 비트 값과 버스에서 읽은 비트 값을 비교한다.
Arbitration Logic
| Sender 비트 | 버스 비트 | 동작 |
|---|---|---|
| 0 | 0 | Continue |
| 0 | 1 | Transmission Error |
| 1 | 0 | Stop and change to reception mode (중재 패배) |
| 1 | 1 | Continue |
- 1을 전송했는데 버스에서 0이 읽히면 → 해당 노드는 송신 중단 후 수신 모드 전환. 버스가 다시 idle해지면 재시도.
- 0을 전송했는데 버스에서 1이 읽히면 → Transmission Error (물리 오류).
Bus Logic (Wired-AND)
| Sender A | Sender B | 버스 결과 |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
- 한 노드라도 0(dominant)을 송신하면 버스는 0이 된다 → 소위 dominant/recessive 전기적 관계.
- 따라서 숫자 값이 낮은 Identifier(더 많은 선행 0비트)가 우선순위 승리.
우선순위 규칙
메시지 우선순위 = Identifier의 수치적 역수:
| Identifier (Standard Frame) | 우선순위 |
|---|---|
0x000 (0) | 최고 |
0x7FF (2047) | 최저 |
- 11비트 Standard Identifier 기준 0x0 ~ 0x7FF (0 ~ 2047).
- 설계자는 긴급한 메시지에 낮은 Identifier를 할당해 버스 점유 우선권을 부여.
Start of Frame과 시작 신호
- 모든 CAN 메시지는 논리 0(dominant)으로 시작 → bus idle의 논리 1(recessive)과 구분.
- Start of Frame(SOF) 후 첫 Identifier 비트, 두 번째 Identifier 비트 순으로 전송.
- 중재에서 이긴 노드는 다른 노드의 존재를 인식하지 못한 채 전송을 이어가며, 전송 지연이 발생하지 않는다.
RTR과 IDE의 중재
Identifier만으로 우선순위가 결정되지 않는 경우에 대비해 Arbitration Field에 RTR과 IDE 비트가 포함된다 (CAN 프레임 참조).
RTR 중재 — Data Frame vs Remote Frame
- RTR 비트: Data Frame에서 dominant(0), Remote Frame에서 recessive(1).
- 동일 Identifier의 Data Frame과 Remote Frame이 동시에 중재에 진입하면 Data Frame이 승리 (0 < 1).
- Remote Frame의 전송 요청은 취소·철회되고, 곧이어 Data Frame이 응답 역할을 이어받는다.
IDE 중재 — Standard vs Extended
- IDE 비트: Standard Format에서 dominant(0), Extended Format에서 recessive(1).
- 동일한 Base Identifier(앞 11비트)를 가진 Standard와 Extended 프레임이 동시에 중재에 진입하면 Standard가 승리.
- 앞 11비트가 다르면 그 시점에 이미 승부가 결정.
Standard Frame과 Extended Frame이 같은 버스에서 공존하더라도 중재가 일관되게 동작한다.
접근 순서 예시
한 번의 중재로 결정되는 것은 한 메시지뿐. 전송이 끝난 뒤 버스가 idle해지면 다시 중재. 예시(노드 A·B·C가 동시 전송 요청):
- 1차 중재 → A 승리 → A 전송 완료
- 2차 중재 → B 승리 → B 전송 완료
- 3차 → C가 유일 송신자 → 바로 전송
짧은 버스 점유
CAN 메시지는 최대 페이로드 8바이트로 제한되어 버스를 오래 점유하지 않는다. 따라서 낮은 우선순위 메시지의 대기 시간도 제한된다.