Vermeidung von Problemen bei der Datenübertragung von CAN-Transceivern durch Tests auf Systemebene

Von Steven Keeping

Zur Verfügung gestellt von Nordamerikanische Fachredakteure von DigiKey

CAN (Controller Area Network) ist ein bewährter und robuster Kommunikationsstandard, der unter anderem in der industriellen Automatisierung und in der Automobiltechnik eingesetzt wird. Es gibt zwei Versionen dieser Technologie: CAN2.0 und die neuere Version, CAN-Flexible Data (FD). Ältere CAN2.0-Systeme können durch Hinzufügen von CAN-FD-Knoten erweitert werden, die einen höheren Nutzdatendurchsatz zur Unterstützung kritischer Kommunikationsereignisse bieten.

Die Technologien sind im Allgemeinen kompatibel, aber mit zunehmender Komplexität und Buslänge der Systeme kann die höhere Geschwindigkeit von CAN-FD in gemischten Systemen zu Synchronisationsproblemen und damit zu Übertragungsfehlern führen.

Ein CAN-Systemtest mit einem einzigen kurzen Bus, der zwei Controller/Transceiver-Paare verbindet, kann für einfache Systeme zufriedenstellend sein. Dieser Test versagt jedoch oft bei der Erkennung von Problemen, die in komplexeren Systemen mit mehreren Knoten und einer Kombination aus CAN2.0- und CAN-FD-Komponenten auftreten können. Das ausschließliche Testen aller potenziellen Anwendungsfälle mit einem Zwilling des Produktionssystems kann alle Probleme aufdecken, die in der Praxis auftreten könnten.

In diesem Artikel werden CAN2.0 und CAN-FD kurz vorgestellt und die Herausforderungen bei der Übertragung erläutert. Anschließend werden Testverfahren beschrieben, die sicherstellen sollen, dass Systeme, die diese Netze nutzen, nur minimale Feldausfälle aufweisen. Es werden Beispielkomponenten von Analog Devices vorgestellt, die Fehlererkennung und -meldung beinhalten, und es wird gezeigt, wie die Verwendung solcher Komponenten die Testphase und die Fehlersuche in eingesetzten Systemen beschleunigen kann. Ein zugehöriges Evaluierungsboard wird ebenfalls besprochen.

Was sind CAN2.0 und CAN-FD?

CAN ist ein Standard für verteilte Kommunikation mit integrierter Fehlerbehandlung. Die physikalische (PHY) und die Datenübertragungsschicht (DLL) sind in der Norm ISO-118981 festgelegt.

Zu den Merkmalen von CAN gehören:

  • Erlaubnis für mehrere Master auf einem Bus
  • Inhärente Prioritätsstufen für Nachrichten
  • Busarbitrierung nach Nachrichtenpriorität
  • Fehlererkennung und Wiederherstellung auf mehreren Ebenen
  • Synchronisierung des Datentimings zwischen Knoten mit separaten Taktquellen

CAN verwendet ein Datenübertragungsverfahren mit Differenzspannung, das zwei Busspannungszustände aufweist: „rezessiv“ (Treiberausgänge sind hochohmig) und „dominant“ mit Schwellenwerten wie in Tabelle 1 dargestellt.

Logik RS-485-Pegel CAN-Status CAN-Pegel
1 A - B ≥ +200 mV Rezessiv CANH - CANL ≤ 0,5 V
0 A - B ≤ -200 mV Dominant CANH - CANL ≥ 0,9 V

Tabelle 1: Rezessive und dominante Spannungspegel von CAN im Vergleich zu RS-485. Beachten Sie, dass die dominante (höhere) Spannung der logischen „0“ entspricht. (Bildquelle: Analog Devices)

Die Knoten übertragen den dominanten Zustand für die logische „0“ (in diesem Zustand führt eine Busleitung (CANH) einen High-Pegel und die andere (CANL) einen Low-Pegel) und den rezessiven Zustand für die logische „1“. Ein CAN-Bus im Leerlauf unterscheidet sich von einem CAN-Bus im rezessiven Bitübertragungsmodus durch die Erkennung mehrerer rezessiver Bits nach dem Ende des Standard-Frames oder eines Fehler-Frames (Abbildung 1).

Diagramm des CAN-ÜbertragungsschemasAbbildung 1: CAN-Übertragungsschema. Der Leerlaufmodus wird durch mehrere rezessive Bits gekennzeichnet. (Bildquelle: Analog Devices)

CAN-Transceiver stellen die differentielle PHY-Schnittstelle zwischen der DLL, dem CAN-Controller (der oft in ein anderes Gerät wie einen Mikrocontroller eingebettet ist) und der physikalischen Verdrahtung des CAN-Busses dar. Die verschiedenen Elemente, die zur Implementierung einer CAN-Anwendung erforderlich sind, sind in Abbildung 2 dargestellt, zusammen mit ihrer Beziehung zu den OSI-Schichten (Open Systems Interconnection) und den von jedem Element implementierten Funktionen.

Diagramm: Der CAN-Transceiver bildet die differenzielle PHY-Schnittstelle (zum Vergrößern anklicken)Abbildung 2: Der CAN-Transceiver bildet die differenzielle PHY-Schnittstelle zwischen dem CAN-Controller und dem CAN-Bus. (Bildquelle: Analog Devices)

CAN2.0 wurde 1991 eingeführt und bietet einen nominalen Durchsatz von 500 Kilobit pro Sekunde (Kbit/s). Da sich diese Datenrate bei kritischen Kommunikationsereignissen manchmal als unzureichend erwies, wurde 2012 CAN-FD eingeführt. CAN-FD bietet einen nominalen Durchsatz von bis zu 2 Megabit pro Sekunde (Mbit/s) für normale Betriebsbedingungen und bis zu 5 Mbit/s für Diagnose oder Programmierung. Beachten Sie, dass die höhere Kommunikationsgeschwindigkeit nur für die Nutzlast der Nachricht gilt; andere Elemente der Nachricht, wie der 11-Bit-Identifier, die zyklische Redundanzprüfung (CRC) und die Bestätigung (ACK), werden mit der CAN2.0-Rate von 500 Kbit/s gesendet.

Ein weiterer Unterschied zwischen CAN2.0 und CAN-FD besteht in der Nutzlast des Standard-Frames, die von 8 Byte (B) für CAN2.0 auf 64 B für CAN-FD erhöht wurde. Diese Erhöhung der Nutzlast macht die CAN-FD-Kommunikation effizienter, da das Verhältnis zwischen Overhead und Daten verbessert wird. Darüber hinaus können Nachrichten, die bisher aufgrund der 8-Bit-Nutzlastgrenze von CAN2.0 aufgeteilt werden mussten, nun mit CAN-FD zu einer Nachricht zusammengefasst werden. Zusätzlich kann die Sicherheit durch die Verschlüsselung von CAN-FD-Nachrichten aufgrund der höheren Datenrate und der größeren Nutzlast erhöht werden.

Es ist üblich, CAN2.0- und CAN-FD-Knoten im selben Netzwerk zu mischen, da CAN-FD-Controller sowohl CAN2.0- als auch CAN-FD-Protokolle unterstützen. Das Mischen von Knoten ist beliebt, weil es älteren Netzen ermöglicht, über einen längeren Zeitraum auf das schnellere Protokoll umzusteigen. Ein Nachteil gemischter Systeme sind zusätzliche Kosten und Komplexität, da Transceiver in der Lage sein müssen, eine CAN-FD-Filterungsmethode auf CAN2.0-Knoten zu unterstützen, um sicherzustellen, dass während der CAN-FD-Kommunikation keine Fehler-Frames erzeugt werden.

Arbitrierungs- und Fehlermechanismen von CAN

Jeder angeschlossene CAN-Knoten kann Daten auf den Bus übertragen. Um Kommunikationskonflikte zu vermeiden, entscheiden die Knoten über die Nutzung des Busses, so dass die Nachrichten entsprechend ihrer Priorität nacheinander übertragen werden. CAN verwendet eine zerstörungsfreie und transparente Arbitrierung; der Knoten, der während der Arbitrierung erfolgreich ist, sendet seine Nachricht mit höherer Priorität weiter, ohne dass ein anderer Knoten die Informationen stört oder verfälscht. Eine solche Arbitrierung ist möglich, weil die Übertragung eines dominanten Bits den rezessiven Buszustand überschreibt.

Der Standard-Frame enthält einen Nachrichtenidentifikator und mehrere Flaggenbits. Diese Information wird als „Arbitrierungsfeld“ bezeichnet Sie bestimmt die Arbitrierung und damit die Priorität der Nachricht. Nachrichten mit einer niedrigeren ID (mehr anfängliche „0“-Werte) haben eine höhere Priorität (Abbildung 3).

Bild: Der CAN-Standard-Frame enthält einen Nachrichtenidentifikator sowie RTR- und IDE-Flag-Bits (zum Vergrößern anklicken)Abbildung 3: Der CAN-Standard-Datenframe enthält einen Nachrichten-Identifier sowie RTR- und IDE-Flag-Bits. Dieses Arbitrierungsfeld bestimmt die Arbitrierungs- und Nachrichtenpriorität. (Bildquelle: Analog Devices)

Aber selbst mit der Arbitrierungsregelung kann etwas schief gehen. Um mit Problemen fertig zu werden, verfügt das CAN-Protokoll über Mechanismen zur Unterstützung der Fehlerprüfung und -behandlung. Zu diesen Mechanismen gehören:

  • Überprüfung der Übertragungsbits
  • CRC-Prüfung
  • Bitfeldprüfungen in fester Form
  • Obligatorische ACK-Meldung

Die Fehler werden mit Hilfe der folgenden Mechanismen behandelt:

  • Fehler-Frames
  • Fehlerzähler
  • Fehlerzustände von Knoten

Jeder CAN-Controller kann Fehler erkennen und darauf reagieren, indem er Error-Frames und Error-Node-Zähler auslöst. Ein Fehler-Frame zeichnet sich durch die Verwendung von sechs aufeinanderfolgenden dominanten oder rezessiven Bits aus. Eine solche Sequenz verstößt gegen die normalen Übertragungsregeln, so dass sie von anderen Knoten entdeckt werden kann. Knoten, die Fehler-Frames senden, senden anschließend rezessive Bits, bis der Bus als rezessiv erkannt wird. Nach einer weiteren Übertragung von sieben rezessiven Bits kann der Knoten versuchen, reguläre CAN-Frames zu senden (Abbildung 4).

Bild eines Beispiels einer fehlerhaften ÜbertragungAbbildung 4: In diesem Beispiel einer fehlerhaften Übertragung (aufgrund zusätzlicher Bits [1], die zu einem CRC-Bitfehler führen) ist ganz rechts der Frame mit sechs aufeinanderfolgenden Bitfehlern zu sehen. (Bildquelle: Analog Devices)

Zusätzlich zur Fehler-Frame-Übertragung implementiert jeder CAN-Knoten Sende- und Empfangsfehlerzähler. Ein Fehler erhöht den Zähler um eins, während eine erfolgreiche Übertragung oder ein erfolgreicher Empfang einer Nachricht den Zähler um eins verringert. Anhand der Fehlerzähler kann sich ein Knoten im Zustand „Fehler aktiv“, „Fehler passiv“ oder „Bus aus“ befinden. Im Zustand „Fehler aktiv“ kann der Knoten über den Bus kommunizieren und aktive Fehlerflags senden, wenn Fehler erkannt werden. Ein passiver Fehlerzustand tritt ein, wenn der Zähler 127 überschreitet; in diesem Zustand kann der Knoten nur passive Fehlerflags senden. Der Knoten wird wieder fehleraktiv, wenn der Zähler unter 127 liegt. Wenn der Zähler 256 überschreitet, geht der Knoten in den Zustand „Bus aus“ über und kann nicht mehr über den Bus kommunizieren. Die Knotenzähler können auf 0 zurückgesetzt werden, nachdem sie 128 Folgen von 11 aufeinanderfolgenden rezessiven Bits empfangen haben.

Die Bedeutung einer umfassenden Prüfung

Die Arbitrierungs- und Fehlermechanismen von CAN tragen dazu bei, dass Systeme im Feld weiterlaufen, wenn Fehler auftreten. Ein effizienterer Betrieb ist jedoch möglich, wenn Systeme zur Begrenzung von Sende- und Empfangsfehlern entwickelt werden. Die Erprobung des vorgeschlagenen Systems in verschiedenen Betriebsszenarien ist eine Möglichkeit, Schwachstellen vor der Einführung zu ermitteln und zu beheben.

Eine gängige Methode ist es, den ausgewählten CAN-Transceiver zu testen, indem mit einem Funktionsgenerator typische betriebliche Standarddaten-Frames an den TxD-Pin des Transceivers gesendet werden und geprüft wird, ob Fehler auftreten. Dies ist zwar ein sinnvoller Test für einen einzelnen Knoten, aber keine gute Darstellung dessen, wie ein System mit mehreren Knoten und einem langen Bus in der Praxis funktionieren wird. Zu den Problemen, die bei komplexen Systemen auftreten können, gehören beispielsweise Reflexionen und andere Artefakte, die bei Hochfrequenzbetrieb von Schaltkreisabzweigungen erzeugt werden. Diese können eine Phasenverschiebung zwischen den Bits verursachen.

Der Arbitrierungsmechanismus von CAN funktioniert nur, wenn die Bits synchronisiert sind. Wenn die Bit-zu-Bit-Phasenverschiebung mehr als die Hälfte einer Einzelbit-Übertragungszeit beträgt, schlägt die Synchronisierung fehl, und eine Arbitrierung ist unmöglich.

In CAN2.0-Legacy-Systemen, die mit 500 Kbit/s bis 1 Mbit/s betrieben werden, ist die Einzelbit-Übertragungszeit so lang, dass induzierte Phasenverschiebungen selten ein Problem darstellen. Aufgrund der höheren Durchsatzgeschwindigkeit von CAN-FD verkürzen sich jedoch die Bitübertragungszeiten, und die Phasenverschiebungen können schnell erheblich werden.

Solche Herausforderungen müssen dadurch gemildert werden, dass man vom einfachen Testen einzelner Knotenpunkte abrückt und stattdessen ein Design verifiziert, indem man das komplette Endsystem dupliziert und es unter verschiedenen Betriebsbedingungen testet. Dies ist zwar zeitaufwändiger und teurer als der Basistest, aber weitaus weniger kostspielig als der Umgang mit Fehlern im Feld und verärgerten Kunden.

Ein praktisches Beispiel

Um zu sehen, wie Phasenverschiebungstests in der Praxis funktionieren, betrachten wir ein System, das mit einem CAN-Transceiver und einem CAN-Controller eines in die engere Wahl gekommenen Anbieters entwickelt wurde. Der Knoten ist an einen 20 Meter langen Bus angeschlossen, der auch viele andere Knoten unterstützt, darunter CAN2.0- und CAN-FD-Komponenten. Zu Testzwecken überträgt der Knoten mit 13,3 Mbit/s, was einer Bitbreite von 75 Nanosekunden (ns) entspricht. Zur Synchronisierung und Arbitrierung tastet der Controller 80 % der TxD-Bitbreite ab, so dass er eine minimale RxD-Bitbreite von 0,8 x 75 = 60 ns benötigt, einschließlich Anstiegszeit, Abfallzeit und Schleifenverzögerung. Die getestete Komponente erzeugte eine TxD-Bitbreite von 48 ns, was zu einem Systemausfall führte.

Der gleiche Test wurde mit einem alternativen CAN-Transceiver, dem MAX33012EASA+ von Analog Devices, durchgeführt. Bei diesem Test wurde die TxD-Bitbreite mit 75 ns und die RxD-Bitbreite mit 72 ns gemessen. Die Bitbreite von 72 ns übersteigt die geforderte Abtastzeit von 80 % (60 ns), so dass die Systemsynchronisation und Arbitrierung zufriedenstellend funktionieren. Der Durchsatz von 13,3 Mbit/s ist schneller als das System in den Zielanwendungen nutzen wird, was zeigt, dass es robust genug ist, um unter allen zu erwartenden Betriebsbedingungen zu funktionieren (Abbildung 5).

Bild des Tests mit einem CAN-Transceiver MAX33012EASA+ (zum Vergrößern anklicken)Abbildung 5: Ergebnisse eines Tests mit einem CAN-Transceiver MAX33012EASA+ bei 13,3 Mbit/s (75 ns TxD-Bitbreite) auf einem 20 m langen Bus. Die RxD-Bitbreite beträgt 72 ns, was ausreicht, um sicherzustellen, dass die 80%ige Abtastzeit des Controllers (60 ns) eingehalten wird und die Synchronisation erreicht wird. (Bildquelle: Analog Devices)

Integrierte Fehlersuche

Der Testzyklus kann durch den Einsatz von Komponenten, die eine Fehlererkennung und -meldung beinhalten, einfacher und kostengünstiger gestaltet werden. Komponenten wie der CAN-Transceiver MAX33012EASA+ zeigen nicht nur schnell Probleme mit Prototypen und Vorproduktions-CAN-Schaltungen auf, sondern sind auch für Anwendungen nützlich, bei denen eine schnelle Fehlersuche für den Einsatz von Steuerungssystemen wichtig ist.

Der MAX33012EASA+ ist ein +5-Volt-CAN-Transceiver, der auf häufige Fehler wie Überstrom, Überspannung und Übertragungsfehler reagiert. Er ist bis zu ±65 Volt fehlersicher und eignet sich daher für Anwendungen, bei denen ein Überspannungsschutz erforderlich ist. Ein Gleichtaktspannungsbereich von ±25 Volt ermöglicht die Kommunikation in verrauschten Umgebungen, z. B. mit schweren Maschinen. Die Ausgänge CANH und CANL sind kurzschlussstrombegrenzt und durch eine thermische Abschaltung, die die Treiberausgänge in einen hochohmigen Zustand versetzt, vor übermäßiger Verlustleistung geschützt.

Der MAX33012EASA+ arbeitet mit bis zu 5 Mbit/s und verfügt über eine Option zur Verlangsamung der Flankensteilheit auf 8 Volt/Mikrosekunde (μs), um elektromagnetische Interferenzen (EMI) zu minimieren und die Verwendung von ungeschirmten verdrillten oder parallelen Kabeln zu ermöglichen (Abbildung 6).

Diagramm einer Anwendung mit dem MAX33012EASA+ von Analog Devices in einem Multimode-System (zum Vergrößern anklicken)Abbildung 6: Gezeigt wird eine Anwendung mit dem MAX33012EASA+ in einem Multimode-System. In diesem Beispiel enthält der Mikrocontroller einen eingebetteten CAN-Controller. (Bildquelle: Analog Devices)

Die Fehlererkennung des CAN-Transceivers wird beim Einschalten aktiviert, indem 100 Low-zu-High-Übergänge durch TxD durchlaufen werden (typischerweise ein oder zwei Standarddaten-Frames, je nach verwendetem Protokoll). Wird nach der Aktivierung der Fehlererkennung ein Fehler erkannt, sind weitere 16 Low-zu-High-Übergänge an TxD erforderlich, um den Fehlercode zu übertragen. Schließlich sind weitere 10 Impulse erforderlich, um den Fehler zu löschen.

Die Erkennung von Übertragungsfehlern wird ausgelöst, wenn das Signal an RxD 10 aufeinanderfolgende Zyklen lang nicht mit TxD übereinstimmt, nachdem die Fehlererkennung aktiviert wurde. Dies kann z. B. der Fall sein, wenn beide Abschlusswiderstände fehlen oder ein Kurzschluss zwischen CANH und Masse oder CANL und VDD vorliegt, was dazu führt, dass das Differenzsignal nicht den Spezifikationen entspricht.

Analog Devices liefert das Evaluierungsboard MAX33012E, die „CANbus Interface Arduino Platform“, das zur Demonstration der Funktionalität des MAX33012E verwendet werden kann. Das Board hat zwar den Formfaktor eines Arduino-Shields, kann aber auch als eigenständiges Evaluierungsboard verwendet werden.

Fazit

Um einen zuverlässigen Feldbetrieb von gemischten Multimode-CAN2.0- und CAN-FD-Systemen zu gewährleisten, ist es wichtig, das gesamte Design gründlich zu testen. Einfache Tests von Einzelknoten sind unzureichend, wenn es darum geht, Fehler aufzuspüren, die später aufgrund von Synchronisationsproblemen, die den Arbitrierungsmechanismus der Technologie beeinträchtigen können, zu Feldausfällen führen können. Diese anfängliche Prüfung und spätere Fehlersuche im Feld bei gemischten CAN-Systemen mit mehreren Knoten kann durch die Auswahl von CAN-Transceivern mit integrierter Fehlererkennung und -meldung erleichtert werden.

DigiKey logo

Haftungsausschluss: Die Meinungen, Überzeugungen und Standpunkte der verschiedenen Autoren und/oder Forumsteilnehmer dieser Website spiegeln nicht notwendigerweise die Meinungen, Überzeugungen und Standpunkte der DigiKey oder offiziellen Politik der DigiKey wider.

Über den Autor

Image of Steven Keeping

Steven Keeping

Steven Keeping is a contributing author at DigiKey. He obtained an HNC in Applied Physics from Bournemouth University, U.K., and a BEng (Hons.) from Brighton University, U.K., before embarking on a seven-year career as an electronics manufacturing engineer with Eurotherm and BOC. For the last two decades, Steven has worked as a technology journalist, editor and publisher. He moved to Sydney in 2001 so he could road- and mountain-bike all year round, and work as editor of Australian Electronics Engineering. Steven became a freelance journalist in 2006 and his specialities include RF, LEDs and power management.

Über den Verlag

Nordamerikanische Fachredakteure von DigiKey