Alles over CAN
-Hidden- -Hidden-
Nederlandse taal English language
Overslaan en naar de inhoud gaan

De CAN Bussnelheid en -lengte

Bit timing

De bus snelheid is afhankelijk van de bus timing, die in de CAN-controller van de systeem kloksnelheid wordt afgeleid. Met behulp van een ‘baudrate pre-sclaler’ wordt deze systeem kloksnelheid teruggebracht tot een basis CAN kloksnelheid, ook Time Quatum genoemd. Dat is nog niet de CAN bus snelheid want in CAN wordt, op deze basis, de timing van een bit opgebouwd:

  • SYNC_SEG is 1 Time Quantum lang. Wordt gebruik om de verschillende nodes te synchroniseren. CAN-logica synchroniseerd op de bitflanken;
  • PROP_SEG is programmeerbaar 1 - 8 Time Quanta groot. Het wordt gebruik om signaalvertraging over het netwerk op te vangen;
  • PHASE_SEG1 is programmeerbaar 1- 8 Time Quanta groot. Het wordt gebruikt om op- en neergaande flankfouten te compenseren en kan tijdens synchronisatie dynamisch verlengd worden. Deze dynamische synchronisatie kan tussen 1 en 4 Time Quanta ingesteld worden. Dit wordt met Synchronisation Jump Width (SJW) aangeduid;
  • PHASE_SEG2 is ook programmeerbaar 1- 8 Time Quanta groot. Het wordt ook gebruikt om op- en neergaande flankfouten te compenseren en kan tijdens synchronisatie juist dynamisch verkort worden (negatieve SJW).
  • Op het sample punt worden 3 samples genomen (halve Time Quantum afstand), waarvan de meerderheid de waarde bepaald;
  • De totale bit timing mag tussen de 8 tot 25 Time Quanta groot zijn.

Met deze waarden kan het exacte sample punt nauwkeurig bepaald worden: een laat sample punt maakt een maximale bus lengte mogelijk, een vroeg sample punt maakt tragere op- en neergaande bit flanken mogelijk en daardoor minder uitstraling en verstoringen. In het algemeen gesproken is een bus timing die zoveel mogelijk Time Quatum bevat én waarbij het sample punt op circa 80 1an de totale bit tijd ligt, het beste. De uiteindelijke gewenste bus timing wordt in de standaard Timing Registers 0 en 1 van de CAN-controller geprogrammeerd.

Bitstuffing

De CAN-bitstroom is gecodeerd volgens de Non-Return-to-Zero (NRZ) methode. Dit komt er op neer dat tijdens een bit tijd een bit constant dominant (‘0’) of recessief (‘1’) is en dus niet wijzigt. De CAN-logica maakt echter gebruik van flanken om de datastroom te synchroniseren, zie de bovenstaande bit opbouw. Hierbij is het wel noodzakelijk dat er voldoende flanken in de stroom voor komen. Om die reden zal de CAN-controller na vijf opeenvolgende dezelfde ‘0’-en of ‘1’-en automatisch een tegengesteld bit aan de datastroom toevoegen. De ontvangende CAN-controllers weten dat en zullen dus na vijf dezelfde bits het volgende bit weer uit de stroom verwijderen. Dit mechanisme wordt bitstuffing genoemd. De gebruiker merkt hier verder niets van, maar bitstuffing heeft wel een (erg beperkte) invloed op de datasnelheid.

CAN toebehoren
CAN toebehoren

Bus lengte

Bij klassieke seriële verbindingen is de lengte van de bus niet zo van belang: wat aan de ene kant verzonden wordt komt (vroeg of laat) aan de andere kant wel aan. Het principe van arbitrage per bit, dat door CAN wordt gebruikt, vereist echter een vergelijking tussen de locale bitniveaus van alle nodes die binnen een bepaalde tijdsinterval per bit over de bus zijn verdeeld. Ook de Acknowledge werkt zo. Dat betekent dat een CAN-bit én de reactie van de nodes binnen een bit-tijd op en neer gezonden moet worden.
De signaaldistributie op de bus vereiste is afhankelijk van de signaalvoortplantingstijd. Deze is circa 5 ns/m en het maakt in principe niet uit of daarbij het medium - de bus - koper of glasvezel is. Zodoende wordt ook de benodigde duur van een bit-interval verlengd conform de mate waarin de lengte van de bus toeneemt. Een andere node moet immers, tijdens arbitrage en later bij de acknowledge, binnen de bittijd reageren. Hierdoor is de lengte van de bus beperkt en deze beperking is afhankelijk van de gekozen snelheid. Immers een hogere snelheid verkort de bittijd.
Niet alleen de bus op zich bepaalt de totale vertraging. Ook de electronica tussen een CAN-controller en het koper of glasvezel - de physical layer - veroorzaakt vertraging. De onderstaande grafiek gaat uit van de standaard physical layer die de meeste nodes gebruiken.

De maximale buslengte en de maximale bitsnelheid zijn dus omgekeerd evenredig. Houdt er rekening mee dat (afwijkende) fysical layers, repeaters en dergelijke de totale vertragingstijd soms fors vergroten en daarmee de maximale buslengte verder beperken.

Standaard bus timing en lengte

Het zal duidelijk zijn dat het bepalen van de juiste bit timing een hele opgave kan zijn. Voor specilaisten is het daarmee mogelijk om ook betrouwbare CAn-communicatie te creëren in uitdagende omgevingen. Echter, voor de algemene gebruiker is dat niet nodig. Uitgaande van standaard physical layers en standaard bus lengtes heeft CiA® (CAN in Automation) standaard bus snelheden, en bijbehorende bus timing, vastgelegd. Deze worden door nagenoeg alle CAN-apparatuur ondersteund.

 
Baudrate Maximale bus lengte BTR0 BTR1
BTR0/1 = Bus Timing registerwaarden voor NXP 82C200 @16Mhz. Veel CAN-controllers gebruiken dezelfde timing als deze chip, maar er zijn ook uitzonderingen.
1000 kBit/s 25 m 00h 14h
800 kBit/s 50 m 00h 16h
500 kBit/s 100 m 00h 1Ch
250 kBit/s 250 m 01h 1Ch
125 kBit/s 500 m 03h 1Ch
Gereserveerd
50 kBit/s 1000 m 09h 1Ch
20 kBit/s 2500 m 18h 1Ch
10 kBit/s 5000 m 31h 1Ch

In verreweg de meeste gevallen zullen deze waarden uitstekend functioneren. Bij maximale bus lengte, bussen met grote aftakkingen of toepassing van (meerdere) repeaters kunnen deze waarden wellicht niet toereikend zijn.

Autobaud

Regelmatig vermelden fabrikanten dat CAN-apparatuur over een Autobaud-functie beschikt. Om het direct maar duidelijk te maken: CAN-controllers kennen géén Autobaud.
Wat fabrikanten met deze term bedoelen is dat met behulp van software de timing van de CAN-controller op de bovenstaande standaard CiA®-waarden ingesteld wordt. Zodra er bij een bepaalde waarde ook daadwerkelijke communicatie plaatsvindt, is de juiste bus snelheid gevonden. Deze ‘autobaud’ software werkt in de praktijk redelijk goed, maar werkt zeker niet volledig foutvrij.

CAN Analyser - PEAK PCAN-Explorer 7
CAN Analyser - PEAK PCAN-Explorer 7