Verzenden van berichten

Identifiers

In tegenstelling tot het “node georiënteerde” of peer-to-peer berichtenverkeer, waarbij de transmissie van een bericht plaatsvindt tussen twee bepaalde nodes, is de verzending van berichten met CAN gebaseerd op het zogenaamde ‘producent-consument’- of broadcast-principe. Een bericht dat door een node wordt verstuurd, wordt door alle overige CAN-nodes ontvangen.

CAN broadcast: ieder bericht wordt door alle nodes ontvangen
CAN Broadcast
CAN broadcast: ieder bericht wordt door alle nodes ontvangen
CAN Broadcast

Om dit te bereiken worden berichten niet voorzien van een afleveradres (fysieke adressering), maar in plaats daarvan met een ondubbelzinnige berichtenidentificatie (functionele adressering). Het versturen van berichten naar alle nodes in een netwerk wordt ook wel ‘broadcasting’ (uitzenden) genoemd.

In het CAN-protocol beschikken berichten normaal gesproken over een 11-bits identifier (standaard CAN-formaat). Dit houdt in dat er 2048 verschillende soorten berichten binnen een systeem kunnen worden gedefinieerd. Dit is voor de meeste toepassingen meer dan voldoende.

CAN standaard bericht met 11-bit identifier
CAN standaard bericht
CAN standaard bericht met 11-bit identifier
CAN standaard bericht

Voor bijzondere toepassingen (zoals de SAE J1939 standaard voor vrachtwagens en bijzonder vervoer) is het gebruik van 29-bits-identifiers (extended CAN-formaat) -en daarmee de mogelijkheid om meer dan 512 miljoen verschillende berichten te definiëren- eveneens mogelijk.

CAN extended bericht met 29-bit identifier
CAN extended bericht
CAN extended bericht met 29-bit identifier
CAN extended bericht

Iedere node kan berichten verzenden en kan iedere identifier (=Id) hiervoor gebruiken. Id’s zijn dus niet het exclusieve bezit van een bepaalde node. Zoals al aangegeven ontvangen alle overige nodes dit bericht. Waarvoor het Id is volledig vrij en wordt bepaald door de applicatie zelf, en dus de achterliggende software. Indien gewenst zouden bijvoorbeeld bepaalde Id’s enkel door één node geïnterpreteerd kunnen worden; de overige nodes ontvangen het bericht natuurlijk ook, maar doen er niets mee. Zo kan bijvoorbeeld fysieke adressering softwarematig nagebootst worden. Een node kan overigens de CAN-controller dusdanig programmeren dat slechts bepaalde, en gewenste, Id’s aan de microcontroller doorgegeven worden. Zodoende kan een node relevante berichten filteren uit de berichtenstroom op de bus. Hiervoor bieden de CAN-controllerchips mechanismen, zogenaamde acceptatiefilters, die in hardware zijn geïmplementeerd. Deze mechanismen zijn vooral bedoeld om kleine (8-bit) microcontrollersystemen, met beperkte verwerkingsmogelijkheden, niet te belasten met te veel onnodige berichten.

Multimaster

Elke node binnen een CAN-netwerk kan beginnen met het versturen van een bericht zodra de bus vrij is. De node die een bericht verstuurd wordt, gedurende de verzending, Master genoemd. De overige nodes, die dit bericht ontvangen, zijn op dat moment de Slaves. Er kan op enig moment slechts één Master zijn. In het geval meer dan één knooppunt binnen het netwerk gelijktijdig de transmissie van een bericht in gang wil zetten is een arbitrageproces noodzakelijk; dit proces zorgt ervoor dat slechts één node daadwerkelijk de Master wordt en een bericht verstuurd.

Voorbeeld van een CAN-master en meerdre slaves
CAN Master/Slave 1
Voorbeeld van een CAN-master en meerdre slaves
CAN Master/Slave 1
Voorbeeld van een CAN-master en meerdre slaves
CAN Master/Slave 2
Voorbeeld van een CAN-master en meerdre slaves
CAN Master/Slave 2

Zodra een andere node daarna een bericht wil versturen, wordt deze de Master. De oorspronkelijke Master wordt dan weer één van de (luisterende) slaves. Omdat elk node berichten kan versturen is ook een directe berichtentransmissie tussen alle nodes binnen het netwerk mogelijk, zonder dat dit centraal aangestuurd of geregeld dient te worden. Zodoende is het eveneens mogelijk om alleen dan berichten te verzenden wanneer dit noodzakelijk is, dat wil zeggen wanneer een bijbehorende gebeurtenis heeft plaatsgevonden. Vergeleken met een cyclische berichtendoorvoer heeft dit een aanzienlijk lagere bus belasting óf een besparing op de vereiste data-transmissieverhouding tot gevolg.