Busarbitrage
Toekennen van een master zonder dataverlies of vertraging
Omdat elke node binnen een CAN-netwerk kan beginnen met het versturen van een bericht zodra de bus vrij is, is het mogelijk dat verschillende nodes gelijktijdig aan dit transmissieproces beginnen. Om te voorkomen dat de nodes elkaars verzonden data vernietigen wordt in de arbitragefase bepaald welk bericht van de gelijktijdig verstuurde, maar conflicterende berichten de hoogste prioriteit heeft. Alleen de node die het bericht met de op dat moment hoogste prioriteit wil versturen, mag het transmissieproces vervolgen. Het bericht met de laagste (!) Identifier heeft de hoogste prioriteit. In het onderstaande figuur is te zien hoe dit principe voor busarbitrage wordt toegepast. De arbitragefase bestaat uit de transmissie van de Identifier en het zogenaamd RTR-bit.
Wanneer een node, hoewel zelf overgegaan naar een recessief niveau (recessieve bit, de ‘1’), in het netwerk een dominant busniveau (dominante bit, de ‘0’) waarneemt zal het, het transmissieproces onmiddellijk afbreken en terugkeren naar de ontvangerspositie omdat er in dit geval klaarblijkelijk gelijktijdig een bericht met een hogere prioriteit wordt verstuurd. Tegelijkertijd beseft deze node dat het de reeds verzonden bits eigenlijk ook al ontvangen heeft van de node waaraan deze de arbitrage verloor.
Node 1, 2, 3 willen tegelijkertijd een bericht verzenden: Node 1 en 2 haken af tijdens de arbitrage omdat ze bij resp. bit 2 en bit 5 een recessief bit ('1') willen zenden maar een dominant bit ('0') op de bus lezen. Node 3 wint de arbitrage en dat bericht is ook (voor alle nodes) op de bus te lezen.
De winnende node wordt de master en verzendt het voolledige CAN-bericht. De verliezende node(s) zijn, samen met alle overige nodes, de slaves. Omdat met elke busarbitrage een bericht wordt verstuurd garandeert dit proces toegang tot de bus zonder dataverlies of -vertraging.
CAN Standaard versus Extended
Indien de arbitrage tussen een standaard- en extended-bericht plaats vindt met dezelfde identifiers, dan zal het standaard bericht prioriteit hebben. Dit komt doordat het eerste bit, dat het verschil tussen beide formaat bepaald, dominant ‘0’ voor een standaard bericht is.
Prioriteit georiënteerde berichtendoorvoer
Het in het bovenstaande beschreven arbitrageproces garandeert dat het bericht met de hoogste prioriteit te allen tijde wordt verstuurd zodra de bus vrij is. De prioriteit van het bericht wordt bepaald door de waarde van de berichtidentificatie. Hoe lager deze waarde is, hoe hoger de prioriteit van het bericht. Het bericht met ID 0 heeft dus de hoogste prioriteit. Het principe van de prioriteit georiënteerde berichten maakt het mogelijk om op uiterst efficiënte wijze gebruik te maken van de voor datatransmissie beschikbare bandbreedte. Zodoende is het mogelijk dat berichten met een lage prioriteit de bus bezetten zonder hiermee de doorvoer van berichten met een hogere prioriteit substantieel te vertragen. Voor berichten met de hoogste prioriteit (dat is Id = 0) geldt bijvoorbeeld een maximale latentietijd van 130 µs bij een transmissiesnelheid van 1 Mbit/s. Aan de andere kant moet er bij het ontwerpen van een CAN-systeem rekening mee worden gehouden dat de berichten met een hoge prioriteit niet voortdurend de bus bezetten. Dit kan bijvoorbeeld worden voorkomen door softwarematig een transmissie time-out in te voeren. In bijvoorbeeld CANopen is dit de zogenaamde “blokkeertijd".
Voor een evenwichtige bus wordt een busbelasting van maximaal 80% geadviseerd. Een hogere busbelasting is enkel aan te raden als met de timing-consequenties in het communicatie model rekening is gehouden.