EP Basics Oszilloskop: CAN- und CAN-FD-Busse auf Fehler untersuchen

Ein Gastbeitrag von Mike Hertz*

Anbieter zum Thema

Sowohl CAN als auch CAN-FD sind zwei Standard-Busse von vernetzten Fahrzeugen. Mit einem Oszilloskop lassen sich Daten auf dem CAN-Bus erfassen und dekodieren. Ein Überblick.

Datenbusse im Fahrzeug: Mit dem Oszilloskop kann man sowohl CAN- als auch CAN-FD-Busse analysieren und auslesen.
Datenbusse im Fahrzeug: Mit dem Oszilloskop kann man sowohl CAN- als auch CAN-FD-Busse analysieren und auslesen.
(Bild: © Open Studio - stock.adobe.com)

Der CAN-Bus ist der Standard für vernetzte Fahrzeuge weltweit. Über den CAN-Bus können elektronische Steuergeräte (ECUs) in einem Fahrzeug mit verschiedenen Subsystemen kommunizieren. Dazu gehören beispielsweise das Motorsteuergerät, elektronische Getriebe, Sicherheitssystemen wie Airbags oder das Infotainmentsystem. Moderne Fahrzeuge besitzen mehrere Steuergeräte, die auf dem CAN-Bus als Knoten erscheinen.

Jeder Knoten kann mit dem gesamten Netzwerk kommunizieren, ohne dass eine komplexe dedizierte Verkabelung zwischen allen Knoten erforderlich ist. Mit der zunehmenden Komplexität der Automobilelektronik erschien 2011 eine Variante des CAN-Busses, das Controller Area Network mit flexibler Datenrate (CAN FD). Der Bus erlaubt höhere Datenraten.

Einige Grundlagen zum Kommunikationsprotokoll CAN-Bus

Bild 1: Der CAN-Bus verwendet zwei dedizierte Drähte, CAN High und CAN Low.
Bild 1: Der CAN-Bus verwendet zwei dedizierte Drähte, CAN High und CAN Low.
(Bild: Teledyne LeCroy)

Der CAN-Bus ist ein differenzielles Signalisierungsprotokoll, das für die Kommunikation zwei dedizierte Leitungen verwendet. Das sind CAN High und CAN Low. Ist der CAN-Bus im Ruhezustand, führen beide Leitungen 2,5 V. Werden Daten übertragen, erhöht sich die CAN-High-Leitung auf 3,75 V und die CAN-Low-Leitung sinkt auf 1,25 V. Die Differenz von 2,5 V zwischen den beiden Leitungen führt (Bild 1). Die Spannungsdifferenz zwischen CAN High und CAN Low bildet das CAN-Bussignal. Der CAN-Bus überträgt Daten mit einer Rate von 250 kBit/s über eine Distanz von über 250 m. Die maximale Buslänge bei einer Bitrate von 10 kBit/s beträgt 1 km; die minimale Buslänge bei einer Datenrate von 1 MBit/s beträgt 40 Meter.

Bild 2: Hier ist eine typische Nachrichtenstruktur eines Standard-CAN-Busses 
dargestellt.
Bild 2: Hier ist eine typische Nachrichtenstruktur eines Standard-CAN-Busses 
dargestellt.
(Bild: Teledyne LeCroy)

Bild 2 zeigt die Standardnachrichtenstruktur mit einem Datenfeld von 0 bis 64 Bit. Das ID-Feld enthält bis zu 11 Bits (Teil A der CAN 2.0-Spezifikation von 1991) oder bis zu 29 Bits (Teil B der gleichen Spezifikation). Die CAN-FD-Struktur hat einen optionalen Teil des Datenfeldes mit hoher Bitrate. Damit können Anwender mehr Daten auf demselben Platz unterzubringen. CAN FD erlaubt Geschwindigkeiten bis zu 8 MBit/s, während CAN nur bis zu 1 MBit/s erreicht.

Signale auf dem CAN-Bus erfassen und dekodieren

Bild 3: Nach der Erfassung der CAN-High- und -Low-Leitungen auf Kanal 1 und 2 erzeugt der Difference-Math-Operator des Oszilloskops das differentielle CAN-
Bussignal (F1).
Bild 3: Nach der Erfassung der CAN-High- und -Low-Leitungen auf Kanal 1 und 2 erzeugt der Difference-Math-Operator des Oszilloskops das differentielle CAN-
Bussignal (F1).
(Bild: Teledyne LeCroy)

Damit die Daten auf dem CAN-Bus dekodiert und erfasst werden können, können Anwender mit einem Oszilloskop die CAN-High- und CAN-Low-Leitungen mit unsymmetrischen Tastköpfen an separaten Oszilloskop-Eingangskanälen abgreifen. Mit dem mathematischen Operator Differenz des Oszilloskops lässt sich CAN Low von CAN High subtrahieren und als Ergebnis erhält man die differentielle Wellenform (Bild 3).

Das ist eine Möglichkeit, das CAN-Bus-Differenzsignal zu ermitteln. Eine andere Möglichkeit ist die Verwendung einer Differenzsonde. Beide Ansätze haben jedoch Vor- und Nachteile. Zum einen sind unsymmetrische Sonden viel preiswerter als differentielle Sonden. Außerdem bieten sie unabhängige Ansichten der CAN-Bus-Leitungen, was Ihnen eine visuelle Bestätigung gibt, dass Sie die richtigen Signale abtasten.

Andererseits bieten differentielle Tastköpfe ein besseres Gleichtaktunterdrückungsverhältnis (CMRR), als es durch Kanalsubtraktion erreicht werden kann. Außerdem belegen sie nur einen Oszilloskopeingangskanal, so dass mehr Kanäle für die Erfassung anderer Signale zur Verfügung stehen.

Bild 4: Eine hexadezimale Dekodierung einer CAN-Bus-Wellenform.
Bild 4: Eine hexadezimale Dekodierung einer CAN-Bus-Wellenform.
(Bild: Teledyne LeCroy)

Teledyne LeCroy bietet Trigger/Decode (TD) und Trigger, Decode, Measure/Graph, and Eye Diagram (TDME) Softwarepakete für viele serielle Protokolle an, darunter CAN und CAN FD. Bild 4 zeigt eine Bildschirmaufnahme einer CAN-Bus-Wellenform mit angewandter Hexadezimal-Dekodierung.

Bild 5: Eine symbolische Dekodierung des CAN-Bus-Verkehrs vermittelt viel mehr Informationen als eine hexadezimale Dekodierung in Bild 4.
Bild 5: Eine symbolische Dekodierung des CAN-Bus-Verkehrs vermittelt viel mehr Informationen als eine hexadezimale Dekodierung in Bild 4.
(Bild: Teledyne LeCroy)

Ein informativerer Ansatz ist die symbolische Dekodierung, die wesentlich mehr Informationen über den tatsächlichen Inhalt des CAN-Busverkehrs liefert. Die symbolische Dekodierung wird in einer DBC-Datei übertragen, die das Standarddateiformat der Industrie ist. In Bild 5 sehen wir eine symbolische Dekodierung der Hex-Werte aus Bild 4. Jetzt können wir feststellen, dass wir eine Meldung mit der Leistung in Kilowatt und der Nockendrehzahl in Umdrehungen pro Minute haben. Eine andere Meldung zeigt die Kühlmitteltemperatur und den Druck an.

Mehr Informationen über den Inhalt des CAN-Busverkehrs

Eine andere Möglichkeit ist es, einen Differenzsonde zu verwenden. Beide Ansätze haben Vor- und Nachteile. Unsymmetrische Sonden sind preiswerter als differentielle Sonden und sie bieten unabhängige Ansichten der CAN-Bus-Leitungen. Differentielle Tastköpfe bieten ein besseres Gleichtaktunterdrückungsverhältnis (CMRR). Sie belegen außerdem nur einen Eingang am Oszilloskop.

Dekodiert man die einzelnen Symbole, so bekommt man mehr Informationen über den tatsächlichen Inhalt des CAN-Busverkehrs. Das Standarddateiformat in der Industrie ist DBC. Die dekodierten CAN-Bus-Symbole können sehr komplex sein, da Nachrichten der Airbag-Sensoren, Tempomat, Bremskreislauf, Motorsteuerung oder Reifendruck übertragen werden. Einige Geräte senden gleichzeitig CAN- und CAN-FD-Botschaften. Sie werden gleichzeitig dekodiert. Darüber hinaus ist es möglich, dass Fahrzeuge mehrere CAN-Busse oder andere Busse als den CAN-Bus enthalten. Das können LIN, FlexRay, SPI, I²C oder UART-Protokolle sein.

Jetzt Newsletter abonnieren

Verpassen Sie nicht unsere besten Inhalte

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung.

Aufklappen für Details zu Ihrer Einwilligung

Bild 6: Nach jeweils fünf aufeinanderfolgenden Bits gleicher Polarität wird ein Füllbit entgegengesetzter Polarität in die CAN-Bus-Nachricht eingefügt.
Bild 6: Nach jeweils fünf aufeinanderfolgenden Bits gleicher Polarität wird ein Füllbit entgegengesetzter Polarität in die CAN-Bus-Nachricht eingefügt.
(Bild: Teledyne LeCroy)

Die CAN-Standardspezifikation enthält das Bitstuffing. Damit wird verhindert, dass sich das Signal auf dem DC-Bus verzerrt. Der CAN-Bus ist kein getaktetes System, sondern verwendet eine Phasenregelschleife (PLL), um die Grenzen zwischen logischen 1 und 0 zu bestimmen. Der Transceiver muss ein gewisses Maß an Übergängen sehen, damit er den Takt aus den Daten selbst zurückgewinnen kann. Damit die PLL bei langen Folgen von 1 und 0 nicht den Anschluss verliert, zwingt die Norm das CAN-Bussignal, regelmäßig ein Bit zu füllen (Stuff Bit) oder ein Bit mit entgegengesetzter Polarität aus der laufenden Folge einzufügen. Nach fünf aufeinanderfolgenden Bits gleicher Polarität wird ein Füll-Bit eingefügt, um die Kette zu unterbrechen.

Dekodierte CAN- oder CAN-FD-Signale zusätzlich filtern

Bild 7: Gefilterte Ergebnisse von dekodierten Signalen einer bestimmten Nachrichten-ID. Im Beispiel der hexadezimale Wert 210.
Bild 7: Gefilterte Ergebnisse von dekodierten Signalen einer bestimmten Nachrichten-ID. Im Beispiel der hexadezimale Wert 210.
(Bild: Teledyne LeCroy)

Nachdem ein CAN- oder CAN-FD-Bussignal erfasst und dekodiert wurde, wird anschließend mit der Filterfunktion des Oszilloskops nach bestimmten Kriterien bezüglich des Busverkehrs gesucht. Aus der Dekodierung lassen sich Daten gewinnen wie Nachrichten-IDs und Datenfelder. Bestimmte CAN-Nachrichten können identifiziert werden, wenn die dekodierten Wellenform vergrößert werden und mit der Suchfunktion des Oszilloskops nach einem bestimmten IC oder Datenwert gesucht wird.

Eine andere Möglichkeit, nach bestimmten Daten zu suchen, ist, die Dekodierungsergebnisse zu filtern. Interessiert man sich speziell für die Daten der Motortemperatur, dann sucht man über die Filterfunktion der Dekodiersoftware nach der entsprechenden Nachrichten-ID. Selbst bei vielen verschieden CAN-Nachrichten auf dem Bus werden bei der Filterung nach dem Hexadezimalwert 210 im Nachrichten-ID-Feld alle anderen Nachrichten entfernt.

(ID:48675944)