Der Martin: Bitweise Arbitierung

Beitrag lesen

Hallo,

Es geht um ds Verständnis eines linearen Bus-Systems (hier jetzt der CAN-Bus, wie er Beispielsweise an BMW-Motorräder verbaut wird).

inzwischen wird CAN aber nicht nur im Automobil, sondern auch in der Industrieelektronik vielfach verwendet; in leichten Abwandlungen (LON) auch in der Gebäudeleittechnik. Kurz: Die Idee des CAN stammt aus der Automobilbranche, die Anwendungen gehen weit darüber hinaus.

Grob erklärt:

Geschenkt, das Prinzip ist bekannt.

Um Störungen und Fehler zu vermeiden, wird jetzt eine sog. bitweise Arbitierung verwendet.

Das ist nur ein Mechanismus, der sicherstellen soll, dass höher priorisierte Telegramme nicht von niedriger priorisierten blockiert, unterbrochen oder behindert werden.

Wenn also die Nachrichten verschieden wichtig eingestuft sind, so muss doch eine Prioritätenliste vorliegen, über die _jedes_ angeschlossene Gerät verfügt.

Viel zu kompliziert: Die PDO-Nummer (Process Data Object) selbst, auch Object ID oder Message ID genannt, *ist* gleichzeitig die Priorität der Nachricht. Je kleiner die Nummer, desto höher die Priorität der Nachricht.

Und wie kann man überhaupt von bitweiser Arbitierung sprechen, wenn ein Bit als kleinste Informationseinheit nur die Werte "Null" und "Eins" annehmen kann.

Du verwechselst Arbitrierung mit Priorität. Bitweise Arbitrierung bedeutet nur, dass bei jedem Bit aufs Neue geprüft wird, ob nicht jemand anders schon angefangen hat zu senden. Jeder CAN-Teilnehmer horcht beim Senden gleichzeitig den Bus ab. Sobald er "sieht", dass der logische Zustand der Busleitung nicht identisch mit dem Bit ist, das er selbst gerade senden will, nimmt er wieder die Finger vom Bus und bricht seine Übertragung ab.

Auch stelle ich mir vor, dass bei vielen gleichzeitigen Übertragungsversuche auf den Bus die dominante Nachricht arg zerstückelt wird, ...

Eben nicht. Das ist ja der Trick dabei. Dominante Bits (also logisch 0) werden von rezessiven Bits (logisch 1) nicht beeinträchtigt.

Das bedeutet das eine Nachricht aus Sicherheitsgründen nicht nur einmal sondern gleich mehrmals übertragen werden sollte, um sicherzustellen, dass sie durch kommt.

Deswegen werden sicherheits- oder funktionskritische Nachrichten normalerweise in kurzen Abständen wiederholt. Nicht nur, um Störungen bei der Übertragung auszubügeln, sondern auch um anzuzeigen: "Ich bin noch da, hier ist alles okay".

PS.: Es ist verrückt, was manche Hersteller für einen Aufwand betreiben, nur um ein paar Meter Kupferleitung zu sparen. Deshalb frage ich mich auch: Ist es wirklich nötig, das an modernen Motorräder die Lichtmaschine mit dem otorsteuergerät und der Motor mit dem Drehzahlmesser unbedingt über ein Bussystem miteinander kommunizieren müssen?

Das ist sicher ein Grenzfall. Aber im Automotive-Bereich werden die Anforderungen immer komplexer; in einem PKW der Mittel- oder Oberklasse quasseln manchmal bereits über 100 Steuergeräte in der Gegend rum. Einige sind sicherheitsrelevant (z.B. ABS), zum Teil nur Mitläufer (Fensterheber).
Ob das alles auch bei einem Motorrad schon nötig oder sinnvoll ist ... naja, Ansichtssache.

So long,
 Martin

--
Wenn der Computer wirklich alles kann,
dann kann er mich mal kreuzweise.