임베디드 용어 사전
필드버스

중재

여러 노드가 동시에 보낼 때 충돌 없이 우선순위를 가리는 과정. CAN은 ID가 작은 프레임이 이긴다.

arbitration. 충돌을 감지해 재전송하는 것이 아니라, 애초에 지지 않는 쪽만 계속 보낸다.

어떻게 가능한가

CAN 버스는 한쪽이 우세하다.

0 = dominant (우세)   누군가 0을 내면 버스는 0이 된다
1 = recessive (열세)  모두가 1을 내야 버스가 1이 된다

각 노드는 자기가 낸 비트와 버스에 실제로 나타난 비트를 비교한다.

노드 A: ID 0x100 → ... 1 ...
노드 B: ID 0x0F0 → ... 0 ...
버스   :            0        (0이 이긴다)

A 는 자기가 1을 냈는데 0이 보이므로 "졌다" 를 알고 즉시 송신을 멈춘다
B 는 그대로 이어서 프레임을 끝까지 보낸다

결과

  • 데이터가 손상되지 않는다. 진 쪽은 프레임을 망치지 않고 물러난다
  • ID 가 곧 우선순위다. 작은 ID 가 급한 메시지다
  • 진 노드는 버스가 비면 자동으로 재시도한다

이 성질 덕분에 CAN 은 최악 지연을 계산할 수 있다 — 안전 관련 통신에 쓰이는 근거다.

함께 보면 좋은 용어

노트에서 맥락과 함께 보기 — CAN — 차량이 쓰는 버스