Simultaneous Transmission

두 개 이상의 CAN 노드가 동시에 버스에 엑세스하려고 하면 CAN 프로토콜은 충돌을 방지하는 메커니즘(중재 단계)을 제공한다.
ID값이 낮을수록 높은 우선순위를 가지며, 중재 단계에서는 우선순위가 낮은 메시지는 중지되고 연기된다.
(해당 노드에서는 A가 우선순위가 가장 높다)
우선순위가 낮은 B와 C는 전송 요청을 취소하지 않고 나중에 메시지를 보낸다.
전송이 완료되면 버스에 다시 엑세스 할 수 있다. 필요한 경우 다른 중재 단계를 거친다.
그림에서는 B가 더 숫자가 낮으므로 우선순위가 높다.
C는 다시 CAN 버스에 엑세스 가능할때 시도한다.
추가적인 내용
CAN에서는 CSMA(버스가 비어있는지 확인) + AMP(동시에 보낼 경우 우선순위로 결정) 방식을 사용한다.
다른 방식은 아래와 같다.
TDMA: 시간을 나눠 쓰는 방식
FDMA: 주파수를 나눠 쓰는 방식
CDMA: 코드로 구분하는 방식
Arbitration Bit by Bit

중재 단계에서 모든 노드는 전송한 비트 값을 버스에서 읽은 비트 값과 비교한다.
서로 다른 경우 아래 중재 로직표에서 볼 수 있듯이 동작이 정의된다.
| Sender | Bus | Meaning |
| 0 | 0 | 문제 없음 |
| 0 | 1 | 전송 오류 |
| 1 | 0 | 중지하고 수신 모드로 변경 |
| 1 | 1 | 문제 없음 |
위 그림에서는 B노드가 1순위가 된다.
A노드는 4번째에서 1이지만 Bus에서는 0이다. 즉 중지하고 수신모드로 변경된다.
계속 진행하다 9번째에서 C노드는 1이지만 Bus는 0이다. 똑같이 중지하고 수신모드로 변경한다.
B노드는 Bus와 동일하므로 문제없이 전송된다.
Introduction to Bus Acess Rules

11비트(1MBaud CAN의 경우 11us) 동안 열성 레벨(1)을 유지한 후 버스는 유휴 상태(비어있는 상태)로 정의되어 전송이 가능하다.전송 요청이 있는 모든 노드는 버스에 동시에 엑세스하여 첫 번째 메시지 비트를 전송하기 시작한다.
이미 프레임 전송이 시작된 이후에는 다른 노드는 버스가 Idle 상태가 될 때까지 전송을 시작할 수 없다. 즉, 첫 번째 식별자 비트가 이미 시작된 후 다른 노드들은 버스가 다시 유휴상태가 될 때까지 전송을 지연해야 한다.
모든 CAN 메시지는 논리적 0(Dominant)인 SOF(Start of Frame)로 시작되며, 이를 통해 유휴 상태와 구분된다.
중재 과정에서는 노드들이 버스의 값을 지속적으로 비교하며, 자신이 보낸 값과 다른 값이 감지되면 전송을 중단하고 수신 모드로 전환한다.
Priority

앞에도 말했듯이 버스 접근은 메시지 우선순위에 의해 제어된다.
중재(Arbitration)중에 메시지 우선순위를 비교한다.
숫자 식별자 값의 역수는 메시지 우선순위를 나타낸다.
→ 값이 작을수록 우선순위는 커진다 (반비례 관계)
최우선 순위 → 식별자: 0 (0x0)
가장 낮은 우선순위 → 식별자: 2047 (0x7FF)
Example

처음 Node A는 5로 시작하므로 CAN-Bus에 들어가게 되고, B(7)와 C(3)는 A의 전송이 이미 시작된 이후에 요청이 발생했기 때문에 버스가 유휴상태가 될 때까지 대기한다. A의 전송이 끝나면 B와 C가 동시에 전송을 시도하여 중재가 발생하며, 우선순위가 높은 C(3)이 CAN-Bus에 엑세스된다. 같은 방식으로 진행하면 위의 그림과 같다.
'공부 내용 > 직무 공부' 카테고리의 다른 글
| CAN 통신 - Data Protection (0) | 2026.04.28 |
|---|---|
| CAN 통신 - frame (0) | 2026.04.27 |
| CAN 통신 구조 정리 - Broadcast 방식과 Acceptance Filter 이해 (0) | 2026.04.27 |
| CAN 통신 기초 정리 (OSI 계층, 전압 신호, 메시지 구조) (0) | 2025.11.02 |
| 자동차 애플리케이션 도메인, Serial 버스 시스템 (0) | 2025.11.01 |