Forum: Haus & Smart Home CAN: Busarbitrierung was macht TRX, was CTR


von Akashi (Gast)


Lesenswert?

Hallo,

bin gerade auf eine Frage gekommen, die hoffentlich jemand beantworten 
kann...

Wenn der Treiber des TRX im hochohmigen Zustand (Senden eines rezessiven 
Bits) eine Spannungsdifferenz (durch ein dominantes Bit) erkennt, bricht 
dieser das Senden ab und das Senden der anderen Nachricht mit der 
höheren Priorität (dominanter Zustand) wird fortgesetzt. Ein 
angebundener CAN-Controller registriert dies und bricht seinerseits das 
Versenden (serieller Bitstrom) der Nachricht ab.


Macht das wirklich der Treiber des TRX? Oder ergibt sich das Verhalten 
implizit durch die Beschaltung im Transceiver? Wenn der Transceiver eine 
1 anlegt und es kommt trotzdem eine 0 auf dem bus raus (wenn jemand 
anderes 0 sendet), muss dann der Controller abbrechen?


Herzlichen Dank für hilfreiche Antworten...

von Fabian (Gast)


Lesenswert?

Ja, der Controller muss abbrechen, weil ein späteres dominantes Bit 
sonst den Datenframe ungewünscht verändert.

von MBP-Bayern (Gast)


Lesenswert?

Hallo Akashi,

Was einige Can-Transceiver machen ist,
dass sie eine Störung des CAN-Bus durch langfristige dominante BUS-Level 
verhindern, in dem sie die maximale Zeit für ein LOW-Bit am BUS 
begrenzen.

Dies bedeutet, wenn TX auf der Controler-Seite dauerhaft dominant ist, 
dass der Transmitter nach einer geweissen Zeit deaktiviert wird.
Somit können aber unter Umständen immer noch Nachrichten am Bus zerstört 
werden, wenn auch später wieder eine Kommunikation zwischen ungestörten 
Teilnehmern möglich ist.

Weiter können diese Transceiver dann auch verhindern, dass am BUS 
dominant gesendet wird, wenn der RX auf der Controler-Seite rezessiv 
gehalten wird.
Denn der Can-Controller würde den BUS für frei halten, und somit den 
Datenverkehr der anderen stören.

Ein Nachteil dabei: Minimale Bitrate bei TJA1040 z.B.: 40Kbit/s.

Die Übertragung muss, wie Fabian schreibt, immer sofort beendet werden, 
wenn das aktuell am BUS anligende Bit nicht zum gesendeten passt.

Ich bin nicht sicher, aber ich meine gelesen zu haben, dass diese 
sofortigen Abbrüche aber eben wirklich nur während der Arbitrierung 
gemacht werden.
Im Falle der darauf folgenden Nutzdaten kann das also abweichen.

Auch wichtig ist, dass alle aktiven Empfangs-Teilnehmer am BUS eine 
Nachricht mit ACK bestätigen, egal ob sie für den einzelnen zu 
gebrauchen war oder nicht.

Ein einzelner BUS-Teilnehemer würde endlos senden, wenn nicht mindestens 
ein "Zuhörer" am Bus hängt der das ACK macht.
Der Sender geht dabei auch nicht auf "ERROR BUS-OFF".

MFG:MBP
Markus.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.