html Bit-Stuffing bei klassischem CAN und Decodierung im Empfänger – FCTELE
                                   +8618758069661 [email protected]
Produktsuche Hinweis: Leerzeichen = UND, | = ODER, ! = NICHT

Warum klassisches CAN Stuff-Bits einfügt und wie Empfänger sie entfernen

Haben Sie Fragen? Rufen Sie uns noch heute an!

+8618758069661

Oder hinterlassen Sie uns eine Nachricht

Online-Nachricht

Warum klassisches CAN Stuff-Bits einfügt und wie Empfänger sie entfernen

Aufrufe: 32 +32Original von FCTELEAutor: Technisches Team von FCTELE

BIT-STUFFING BEI KLASSISCHEM CAN

Wie der Empfänger Nutzdaten von Stuff-Bits trennt

Im Stuffing-Bereich fügt der Sender nach fünf gleichwertigen Bits auf dem Bus ein Bit mit entgegengesetztem Wert ein. Der Empfänger prüft und entfernt dieses Bit, bevor er die Felder auswertet. Bestimmen Sie zuerst die Framegrenze und vergleichen Sie dann die Busaufzeichnung mit dem decodierten Frame.

01

Bit einfügen

The transmitter inserts an opposite bit after five equal wire bits.0 0 0 0 0Stuff 1

Der Sender fügt nach fünf gleichwertigen Bits auf dem Bus ein Bit mit entgegengesetztem Wert ein.

02

Grenze finden

The receiver stops applying dynamic stuffing after the CRC sequence.SOF → CRC bitsFixed form

Nach der CRC-Sequenz wendet der Empfänger die dynamische Stuffing-Regel nicht mehr an.

03

An beiden Enden messen

Compare the same test frame on the two copper segments.ABCAN fiber link

Vergleichen Sie denselben Testframe auf beiden Kupfersegmenten.

01 Format bestätigen

Prüfen Sie, ob klassisches CAN vorliegt, und bestimmen Sie den Frametyp und die nominale Bitrate.

02 Feld lokalisieren

Prüfen Sie, ob die Folge gleichwertiger Bits im Stuffing-Bereich liegt.

03 Messungen abgleichen

Ordnen Sie die Flanken im Rohsignal dem vom Analysator angezeigten Frame und den Controllerfehlern zu.

Checkliste zur Überprüfung der Aufzeichnung – aufklappen
Prüfpunkt Was zu bestätigen ist So wird geprüft
Bits auf dem Bus Folge gleicher Zustände Ab Beginn des maßgeblichen Bereichs zählen
Feldgrenze Ende der CRC-Sequenz Trennbit, ACK und EOF identifizieren
Reichweitenverlängerung über Glasfaser Messpunkt Aufzeichnungen beider Kupfersegmente abgleichen

Nachdem Sie CAN-Daten in einen Controller geschrieben haben, sehen Sie auf dem Oszilloskop möglicherweise mehr Bits, als sich aus der Summe der logischen Framefelder ergibt. Diese zusätzlichen Bits entstehen durch Bit-Stuffing. Im dafür vorgesehenen Bereich eines klassischen CAN-Frames fügt der Sender nach fünf aufeinanderfolgenden Bits desselben Werts ein Bit mit entgegengesetztem Wert ein. Der Empfänger erkennt und entfernt dieses Bit nach derselben Regel und wertet anschließend die ursprünglichen Felder aus. Das Verfahren hilft den Empfängern, ihr Bit-Timing zu korrigieren, und erklärt, warum gleich lange Nachrichten den Bus unterschiedlich lange belegen können.

Auch ein konstanter Signalpegel überträgt Bits

Auf einem High-Speed-CAN-Bus mit Kupferleitungen setzt der Transceiver die Bits des Controllers in differenzielle Signalzustände zwischen CAN_H und CAN_L um. Ein dominantes Bit entspricht dem logischen Wert 0, ein rezessives Bit dem logischen Wert 1. Wenn ein Knoten den dominanten Zustand anlegt, kann er damit die von anderen Knoten gesendeten rezessiven Zustände überlagern. Auch bei unverändertem elektrischem Zustand bestimmt der empfangende Controller in jeder Bitzeit am Abtastpunkt den Bitwert. Ein dominantes Plateau kann mehrere Nullen umfassen, von denen jede eine Bitzeit belegt.

Jeder Knoten hat einen eigenen Oszillator. Die nominale Bitzeit lässt sich auf denselben Wert einstellen, in der Praxis bleiben jedoch kleine Abweichungen. Der Empfänger synchronisiert sein Timing zu Beginn des Frames und nutzt geeignete Flanken zur Phasenkorrektur innerhalb des Frames. Bleibt eine geeignete Flanke längere Zeit aus, wächst der zeitliche Versatz zwischen den Abtastpunkten des Empfängers und den Bitgrenzen des Senders. Bit-Stuffing erzeugt Flanken in langen Folgen gleichwertiger Bits und ermöglicht so die Synchronisation. Eine korrekte Abtastung hängt außerdem von der Signallaufzeit, der Einstellung des Abtastpunkts und der Signalqualität ab.

Die Pegel von CAN_H und CAN_L liegen während fünf dominanter Nullen auseinander und nähern sich bei der eingefügten rezessiven Eins an
Abbildung 1. Die orangefarbene Spalte zeigt die eingefügte rezessive Eins. Die Leitungen bleiben bei der darauffolgenden ursprünglichen Eins im selben logischen Zustand. Der Empfänger entfernt nur das orangefarbene Bit. Eigens erstellter schematischer Signalverlauf, keine Messung. Die Abbildung des Messgeräts wurde mit KI-Unterstützung erstellt.

Der Sender zählt die bereits auf dem Bus gesendeten Bits

Betrachten wir eine vereinfachte Bitfolge innerhalb des dynamischen Stuffing-Bereichs, wobei der Zähler für gleichwertige Bits bei null beginnt. Die logische Folge besteht aus fünf Nullen, gefolgt von einer Eins. Nach der fünften Null fügt der Sender eine Eins ein und sendet dann die ursprüngliche Eins. Auf dem Bus erscheinen fünf Nullen, eine eingefügte Eins und die ursprüngliche Eins. Das Stuff-Bit kann innerhalb eines Bytes oder unmittelbar nach dem Ende eines Felds eingefügt werden. Der Controller verfolgt einen durchgehenden Bitstrom und zählt über Bytegrenzen hinweg weiter.

Das eingefügte Bit ist selbst Teil der gesendeten Bitfolge und beginnt eine neue Folge gleichwertiger Bits. Angenommen, in der ursprünglichen Folge stehen nach den fünf Nullen vier Einsen. Zusammen mit der eingefügten Eins ergeben diese vier Einsen fünf aufeinanderfolgende Einsen, sodass der Sender anschließend eine Null einfügt. Die Regel lässt sich also nicht auf ein Stuff-Bit pro fünf ursprüngliche Bits reduzieren. Benachbarte Felder und zuvor eingefügte Bits beeinflussen, wann das nächste Stuff-Bit eingefügt wird.

Nach fünf identischen Bits erwartet der Empfänger, dass das nächste Bit den entgegengesetzten Zustand hat. Tastet er den erwarteten Wert ab, erkennt er das Stuff-Bit und berücksichtigt es beim Zählen der empfangenen Folge, lässt es aber bei der Feldauswertung weg. Die darauffolgende ursprüngliche Eins bleibt erhalten. Die beiden Einsen können auf dem Bus als ein durchgehendes Plateau erscheinen. Der Empfänger unterscheidet ihre Funktion anhand ihrer Position und der zuvor empfangenen Bitfolge.

Klassischer CAN-Datenframe: dynamisches Bit-Stuffing von SOF bis einschließlich der CRC-Sequenz, gefolgt von Feldern mit fester Form
Abbildung 2. Die Felder sind in der Übertragungsreihenfolge dargestellt. Das dynamische Bit-Stuffing schließt die CRC-Sequenz ein. Der CRC-Delimiter, ACK und EOF haben eine feste Form. Im EOF sind sieben rezessive Bits zulässig. Die Feldbreiten sind nicht maßstabsgetreu.

Wo das Zählen gleichwertiger Bits endet

Dynamisches Bit-Stuffing gilt auch für die dafür vorgesehenen Felder eines klassischen CAN-Remote-Frames. Sein DLC kann die angeforderte Datenlänge angeben, der Frame selbst hat jedoch kein Datenfeld. Wenn Sie eine Aufzeichnung von Hand prüfen, bestimmen Sie zuerst den Frametyp und suchen Sie erst dann die CRC-Sequenz. Würden Sie den DLC des Remote-Frames als Anzahl der nachfolgenden Datenbytes interpretieren, würden sich alle nachfolgenden Feldgrenzen verschieben.

Bei einem klassischen CAN-Datenframe beginnt das dynamische Bit-Stuffing am Frameanfang und erstreckt sich über das Arbitrierungs-, Steuer- und Datenfeld bis zum Ende der CRC-Sequenz. Der Empfänger verfolgt die Feldlängen, während er diesen Bereich verarbeitet. Stuff-Bits verlängern die Übertragungszeit auf dem Bus. Der Datenlängencode (DLC) behält seine ursprüngliche Bedeutung. Die logische Anordnung der Felder kann von der zeitlichen Unterteilung abweichen, die auf dem Oszilloskop zu sehen ist.

Für das CRC-Trennbit, das ACK-Feld und das Frameende gelten nach der CRC-Sequenz eigene Regeln. Der bisherige Zähler für das dynamische Bit-Stuffing gilt dort nicht mehr. So enthält das Frameende bei klassischem CAN beispielsweise sieben aufeinanderfolgende rezessive Bits. Diese Folge allein weist nicht auf einen Stuff-Fehler hin. Bestimmen Sie die Framegrenze und etwaige Error-Flags, bevor Sie ein Signalplateau einem Bereich zuordnen.

Bei klassischem CAN berechnet der Sender die CRC-Sequenz aus den logischen Bits ohne Stuff-Bits vom Frameanfang bis zum Ende des Datenfelds. Bei der Übertragung bezieht er dann die CRC-Sequenz in den Stuffing-Bereich ein. Der Empfänger entfernt die dynamisch eingefügten Stuff-Bits und führt die entsprechende CRC-Prüfung durch. Die zusätzlichen Bits der Codierung und die Prüfung der Feldintegrität erfüllen also unterschiedliche Zwecke. Bei CAN FD gelten im CRC-Feld andere Regeln. Prüfen Sie das Frameformat und die Controllerkonfiguration anhand der maßgeblichen Spezifikation.

Gleiche Datenlängen können zu unterschiedlichen Übertragungszeiten führen

Unterscheiden Sie die Übertragungszeit des Frames von der Wartezeit der Nachricht bis zur Übertragung. Bit-Stuffing beeinflusst die Zeit, die der Frame selbst auf dem Bus belegt. Die Verzögerung durch die Arbitrierung hängt davon ab, was andere Knoten zu diesem Zeitpunkt senden. Erfassen Sie bei einer periodischen Nachricht das Intervall zwischen aufeinanderfolgenden Start-of-Frame-Bits getrennt von der Dauer zwischen Anfang und Ende eines einzelnen Frames. Änderungen dieser beiden Messgrößen weisen auf unterschiedliche Ursachen hin.

Betrachten Sie zwei erfolgreich übertragene klassische CAN-Datenframes mit derselben Anzahl von Datenbytes. Ihre Identifier oder Datenmuster können sich unterscheiden. Ein Frame kann mehrere lange Folgen gleichwertiger Bits enthalten, während im anderen Nullen und Einsen häufig aufeinander abwechseln. Der erste Frame kann mehr Stuff-Bits benötigen; auch die konkreten Bitwerte der CRC-Sequenz beeinflussen deren Anzahl. Bei gleicher nominaler Bitrate verlängert jedes Stuff-Bit die Übertragung um eine Bitzeit. Verwenden Sie zur Abschätzung der Buslast eine gemessene oder konservativ angesetzte Framelänge auf dem Bus.

Ein Protokollanalysator zeigt in seiner decodierten Ansicht üblicherweise den Identifier, den DLC und die rekonstruierten Daten an. Legen Sie zur Prüfung der Busbelegung fest, wo die Messung beginnt und endet. Die Übertragungszeit eines Frames, die Wartezeit vom Einreihen in die Sendewarteschlange bis zur erfolgreichen Arbitrierung und die Zeit für die erneute Übertragung nach einem Fehler sind unterschiedliche Größen. Wenn Sie die Messgrenzen dokumentieren, können Sie eine längere Frameübertragung von Verzögerungen durch konkurrierende Buszugriffe unterscheiden.

Den Bereich lokalisieren, in dem ein Stuff-Fehler auftritt

Innerhalb eines Felds mit dynamischem Bit-Stuffing meldet der Empfänger einen Stuff-Fehler, wenn er an der Stelle, an der ein Bit mit entgegengesetztem Wert erscheinen sollte, ein sechstes Bit mit demselben Wert abtastet. Ein langes Plateau kann durch ungewöhnliches Verhalten auf der Sendeseite oder durch lokale Einstellungen des Abtastpunkts, die Bitrate oder Signalverzerrungen entstehen. Sendet ein fehleraktiver Knoten ein aktives Error-Flag, können andere Knoten anschließend eine lange dominante Bitfolge erkennen, die gegen die Regel verstößt. Ein protokollierter Stuff-Fehler kann daher die Folge eines früheren Fehlers sein.

Erfassen Sie die Fehlertypen, das früheste Ereignis und, sofern verfügbar, den Signalverlauf. Ein CRC-Fehler zeigt an, dass das vom Empfänger berechnete Ergebnis nicht mit der empfangenen CRC-Sequenz übereinstimmt. Ein Formfehler betrifft ein Feld mit vorgeschriebenem Format. Ein ACK-Fehler bedeutet, dass der Sender im ACK-Slot die erwartete dominante Bestätigung nicht erkannt hat. Diese Fehler können bei demselben Vorfall nacheinander auftreten. Die zeitliche Sortierung der Ereignisse und die Prüfung des betroffenen Felds helfen, die Fehlersuche einzugrenzen.

Zwei optisch miteinander verbundene CAN-Glasfasergeräte mit den Messpunkten A und B auf den beiden Kupfersegmenten
Abbildung 3. Erfassen Sie denselben Testframe an A und B und richten Sie anschließend die Frames und die Fehlerzeitstempel zeitlich aufeinander aus. Die Verbindungen sind schematisch dargestellt. Entnehmen Sie die Angaben zu den optischen Anschlüssen und zur Verdrahtung der Dokumentation des jeweiligen Modells. Die Geräteabbildung wurde mit KI-Unterstützung erstellt.

Bei der Verlängerung von CAN über Glasfaser jedes Kupfersegment und die Funktion jedes Geräts prüfen

Die Produktdokumentation von FCTELE nennt für das achtkanalige CAN-Glasfasermodem zur Hutschienenmontage eine Repeater-Funktion von CAN auf Glasfaser und den Punkt-zu-Punkt-Betrieb. Führen Sie bei einem technischen Test die CAN-Kupfersegmente, die Glasfaserstrecke und die Endgeräte als separate Beobachtungspunkte auf. Prüfen Sie Frameformat, Bitrate, Terminierung und Verdrahtung anhand der Dokumentation der tatsächlich eingesetzten Geräte. Prüfen Sie dann in einem isolierten Testaufbau mit einer bekannten Nachricht den Empfang an beiden Enden. Die Abbildungen zeigen die Beobachtungspunkte. Entnehmen Sie der Dokumentation des jeweiligen Modells, wie es Signale über die Glasfaserstrecke überträgt.

Wenn das Signal und die decodierten Frames auf dem sendeseitigen Kupfersegment stabil bleiben, in der Nähe des Empfängers aber sporadische Fehler auftreten, ziehen Sie zum Vergleich den Signalzustand und die Zeitstempel am anderen Ende heran. Prüfen Sie, ob der Fehler an ein bestimmtes Kabel, ein Endgerät oder eine bestimmte Last gebunden ist. Dokumentieren Sie das Sendeintervall der Nachricht und die übrigen Bedingungen nachvollziehbar und ändern Sie jeweils nur eine Variable. Halten Sie abschließend fest, ob die Felder korrekt rekonstruiert wurden, ob die Fehler erneut auftraten und ob der reale Anwendungsdatenverkehr nach der Änderung des Übertragungswegs wieder funktionierte. So lässt sich der normale Zusatzaufwand durch Bit-Stuffing von tatsächlichen Übertragungsfehlern unterscheiden.

Quellen und Geltungsbereich

Bosch: Fehlererkennung bei CAN und CAN FD · Microchip: Bit-Stuffing und Frameformat bei CAN · FCTEL: Achtkanaliges CAN-Glasfasergerät zur Hutschienenmontage (Chinesisch)

Übersetzt aus dem chinesischen Fachartikel: Chinesischen Originalartikel lesen.

Häufige Fragen

Warum wird nach fünf gleichwertigen Bits ein Bit eingefügt?

Das Bit mit entgegengesetztem Wert erzeugt eine Flanke auf dem Bus. Flanken, die die Synchronisationsbedingungen erfüllen, können zur Korrektur des Bit-Timings genutzt werden. Dadurch wird die Dauer einer Folge ohne Signalwechsel begrenzt.

Verursachen die sieben rezessiven EOF-Bits einen Stuff-Fehler?

Das EOF bei klassischem CAN hat eine feste Form. Seine sieben rezessiven Bits liegen außerhalb des Bereichs mit dynamischem Bit-Stuffing.

Wie lässt sich ein Stuff-Fehler über eine Glasfaserstrecke hinweg verfolgen?

Zeichnen Sie denselben Testframe auf beiden Kupfersegmenten auf, prüfen Sie Bitrate, Abtastung und Terminierung, gleichen Sie die Zeitstempel der Controllerfehler ab und prüfen Sie, wie die Glasfasergeräte den Datenverkehr weiterleiten.

Weiterführende Informationen

Einen CAN-Bus über Glasfaser verlängern · Elektrische Schnittstellen und CAN-Arbitrierung

Diesen Artikel teilen