Automation Glossary • CAN Bus Arbitration

What Is CAN Bus Arbitration?

Merobix Engineering • • 6 min read

If two nodes on a Controller Area Network start talking at the same instant, something has to decide who continues and who backs off, and CAN does it without ever losing a message or wasting the bus. That mechanism is arbitration, and it is the single feature that makes CAN deterministic enough to trust for engine, drive, and machine control. This page explains how dominant and recessive bits let the lowest identifier win the bus bit by bit, why the loser retransmits automatically, and what that means when you assign message priorities on a real network.

Back to Blog

CAN Bus Arbitration in one line: CAN bus arbitration is how a Controller Area Network resolves two nodes transmitting at once without a collision. Every node writes its message identifier onto the shared bus bit by bit while reading the bus back. A dominant bit (logic 0) always overrides a recessive bit (logic 1), so the node sending the numerically lowest identifier keeps the bus and the others quietly stop and retry. The winning message is never corrupted or delayed.

Dominant and Recessive Bits on a Shared Wire

CAN uses a two-wire differential bus where every node's transmitter is wired-AND onto the same pair. A logic 0 is called dominant because when any node drives a 0, the whole bus reads 0 regardless of what other nodes are doing; a logic 1 is recessive because the bus only reads 1 when every node lets it float high. That asymmetry is the whole trick. It means a dominant bit always wins over a recessive bit on the wire, and it is deliberate, not an accident of the electronics.

During transmission each node does two things at once: it drives the next bit of its message, and it reads back the actual bus level. As long as what it reads matches what it sent, it keeps going. The moment a node sends a recessive 1 but reads a dominant 0, it knows another node with a higher-priority message is also transmitting, and by the rules of the protocol it must immediately stop driving and become a listener. No node is damaged, no bits are lost, and the bus keeps carrying the winning frame with no interruption.

The Lowest Identifier Wins, Bit by Bit

Arbitration happens across the identifier field at the very start of the frame, sent most significant bit first. Because dominant beats recessive, the message whose identifier has more leading zeros keeps winning each bit comparison, which means the numerically lowest identifier has the highest priority and takes the bus. A node sending identifier 0x100 will win against one sending 0x200 at the first bit where they differ, and the 0x200 node steps back before its data is even touched.

This is why CAN is described as CSMA/CD with non-destructive arbitration. Ethernet detects a collision after it has already corrupted both frames and both stations back off for a random time; CAN resolves contention before any data is lost and the highest-priority frame proceeds without a single wasted bit. The practical payoff is bounded latency: on a correctly loaded bus you can calculate the worst-case time for a given message to reach the wire, which is exactly what a controls engineer needs from a control network.

The consequence for the loser is simple and automatic. A node that loses arbitration does not report an error or need software intervention; it waits until the bus is idle again and retransmits the same frame, re-entering arbitration on the next opportunity. That built-in retry is why a low-priority status message can be delayed by a burst of high-priority traffic yet still arrive intact once the bus quiets down.

Assigning Priorities Through Identifiers

Because priority is baked into the identifier value, choosing identifiers is a design decision, not a formality. Safety-critical and time-critical messages, for example an emergency stop or a torque command, get low identifier numbers so they always win the bus; slow diagnostic and housekeeping traffic gets high identifier numbers so it yields to real-time data. A network with its identifiers assigned backwards will still work in the lab and then miss deadlines under load, which is one of the classic field failures on a busy CAN segment.

One rule the physics enforces for you: no two nodes may ever transmit different data under the same identifier at the same time, because arbitration cannot separate them once the identifiers match and the frames would corrupt each other. Higher-layer protocols solve this by giving each producer its own identifier. In CANopen the identifier is packaged as the COB-ID that maps a message to a node and function, and in J1939 it is derived from the PGN and source address, so the priority scheme is defined by the profile rather than left to chance.

When you pull CAN data up into a monitoring or SCADA layer through a gateway, arbitration is invisible above the wire, but its effects are not. A message that keeps losing arbitration shows up as increased latency or dropped periodic updates rather than as a hard fault, so understanding the priority map on the bus is what lets you explain why a low-priority tag updates less often than the datasheet rate when the network is busy.

Frequently Asked Questions

Does a node lose data when it loses CAN arbitration?

No. Losing arbitration is not an error and no data is corrupted. A node that reads a dominant bit where it sent a recessive one simply stops transmitting, becomes a listener for the winning frame, and then automatically retransmits its own message when the bus is idle again. The retry is handled by the CAN controller hardware without any software action, which is why a low-priority message is delayed rather than lost when the bus is busy.

Why does the lowest CAN identifier have the highest priority?

Because arbitration compares identifiers bit by bit and a dominant bit (logic 0) always overrides a recessive bit (logic 1) on the shared wire. Sending an identifier with more leading zeros means winning more early bit comparisons, so the numerically lowest identifier keeps the bus. Designers exploit this by assigning low identifiers to time-critical messages so they always win contention.

Is CAN arbitration the same as Ethernet collision detection?

No. Ethernet detects a collision only after both frames are already corrupted, then both stations back off for a random time and retransmit. CAN resolves contention during the identifier field before any data is sent, so the winning frame is never corrupted or delayed. This non-destructive arbitration is what gives CAN its bounded, predictable message latency.

More in Industrial Protocols
equipment arbitration  •  Troubleshoot a CAN Bus  •  CAN Error Frame  •  CAN Baud Rate and Distance  •  CAN Bus Termination  •  All Industrial Protocols →
Free SCADA operator training
Merobix University - 70 video lessons & 261 quiz questions, from first login to compliance reporting. No demo call required.
Start free →