Erschienen am: 08.02.2018, Ausgabe SPS-MAGAZIN 1+2 2018

Next Generation CAN

CAN FD - Maschinen und Anlagen einfach migrieren

Der CAN-Bus hat sich aufgrund seiner hohen Datensicherheit auch außerhalb von Automotive-Anwendungen etabliert und wird seit langem sowohl in der industriellen Automatisierung als auch in sicherheitsrelevanten Bereichen eingesetzt. Mit der Weiterentwicklung zum CAN FD (Flexible Data Rate) und der Standardisierung in der ISO11898-1:2015 ist der Weg frei für leistungsfähige CAN-FD-Applikationen. Gerade dort, wo abgeschlossene Maschineneinheiten eine bessere Performance mit wenig Aufwand erhalten sollen, ist CAN FD eine Option: Bis zu 8-fach höherer Datendurchsatz bei gleichbleibender Verkabelung und Infrastruktur ist erreichbar.


Der Advanced CAN Controller (esdACC) unterstützt einen 64Bit Timestamp und kann einen 100-prozentigen Busload generieren.
Bild: Esd Electronics GmbH

Der altbewährte CAN-Bus ist nicht nur in der Automobilindustrie zum Standard geworden, sondern hat sich auch in der Automatisierungstechnik, Aufzugstechnik, bei Fahrzeugaufbauten, in der Medizintechnik sowie in der Schiffselektronik bewährt. Die gestiegenen Anforderungen in der Automobilindustrie veranlassten Bosch bereits 2011 dazu, in enger Zusammenarbeit mit anderen CAN-Experten das CAN-Protokoll weiterzuentwickeln und als CAN FD mit flexibler Datenrate auszustatten. Aber nicht nur die niedrige Datenrate von 1 Mbit/s bei Netzwerklängen um 40m, sondern auch die Begrenzung der Nutzdaten auf acht Byte entsprachen nicht mehr den gewünschten Leistungsmerkmalen für CAN-Anwendungen. Besonders bei komplexen elektronischen Steuergeräten, beim Herunterladen von Software oder bei Servomotor-Steuerungen ist eine größere Bandbreite gefordert. CAN FD erlaubt Geschwindigkeiten bis zu 10Mbit/s und überträgt bis zu 64 Byte Nutzdaten. Das vergrößerte Datenfeld von 64 Byte entspricht zudem der kleinsten Nachricht im Ethernet-Protokoll. Hierdurch lassen sich Gateways zwischen CAN FD und Ethernet einfacher realisieren. Auch können zusammengehörige Daten in einem Datenpaket transparent übertragen werden und müssen nicht per Software synchronisiert werden. Das führt zu Vereinfachungen bei den Anwendungsprogrammen und beim Systemdesign. Das weiterhin einfache Daten-Link-Layer-Protokoll, die kostengünstigen Controller- und Transceiver-Chips sowie deren niedriger Energiebedarf machen den CAN FD-Bus attraktiv. Weitere Merkmale wie seine Robustheit und Zuverlässigkeit führten zu einer schnellen Akzeptanz in der Automobilindustrie. Hier werden CAN FD-Produkte für Testaufbauten und Prüfsysteme erfolgreich eingesetzt. Außerhalb des Automotivbereichs beispielsweise bei Maschinen und Anlagenteilen, die schon CAN verwenden, lassen sich einfach auf CAN FD umstellen, da aufgrund des gleichen CAN-Frameaufbau die vorhandene Verkabelung genutzt werden kann. Auch bei Weiterentwicklungen auf Basis von CAN lässt sich eine Migration von CAN zu CAN FD einfach realisieren.

Funktionsweise CAN FD

Das Prinzip von CAN FD beruht auf der Idee, die Taktrate zwischen der Bus-Arbitrierung und dem Acknowledgement-Feld eines CAN-Frames zu erhöhen. Da in dieser Phase nur ein Teilnehmer senden darf, bemisst sich die maximale Übertragungsgeschwindigkeit lediglich an der internen Verzögerungszeit des CAN-Transceiver und der Datenleitung (ca. 5ns/m). Auf diese Weise lassen sich theoretische Datenraten von bis zu 15Mbit/s bei Netzwerklängen bis 40m erreichen. Der Aufbau des rückwärtskompatiblen CAN FD Frame unterscheidet sich nur gering vom klassischen CAN-Frame. Neu sind die Bits BRS (Bit-Rate Switch) im Arbitration-Feld zur Erkennung der höheren Datenrate und das zum Kontroll-Feld gehörende ESI (Error State Indicator) zum Anzeigen des Error-Modus. Außerdem wurden das Bit FDF (FD Format) zu Erkennung der Datenfeldfeldlänge definiert sowie ein drei Bit tiefer Stuffbit-Zähler hinzugefügt. Hierbei zählt der Sender die Stuffbits und überträgt das Ergebnis gray-kodiert als 3-bit-Wert. Der Empfänger zählt ebenfalls die eingehenden Stuffbits und vergleicht die Werte. Ein der Sequenz angehängtes Paritätsbit sowie ein festes Stuffbit im CRC-Feld erhöhen zusätzlich die Zuverlässigkeit der Übertragung. Das RTR-Bit hingegen wird ignoriert, da das CAN FD-Protokoll keine Remote-Frames unterstützt. Nach der Korrektur der Fehlererkennungsmechanismen im CAN FD Standard (ISO 11898-1:2015), unter anderem durch Einfügen des Stuffbit-Zählers, erreicht das Protokoll die Hamming-Distanz von sechs. Bis zu fünf beliebig verteilte Bitfehler werden erkannt und führen zu einer automatischen Wiederholung der Nachricht. Damit ist das Protokoll auch für sicherheitsrelevante Bereiche interessant.

Anzeige

CAN-FD-Controller für FPGA (esdACC)

Bei der Entwicklung von CAN-Baugruppen kann auf Standard CAN FD-Controller und auf CAN FD Controllern in FPGAs zurückgegriffen werden. Letztere haben eine höhere Flexibilität hinsichtlich der Leistungsfähigkeit und der Funktionsdichte. Gängige CAN-Controller wurden in der Vergangenheit über acht oder 16Bit breite Busse an das Hostsystem angeschlossen. Da der Schreib- und besonders der Lesezugriff auf diese Controller, im Vergleich zur Zykluszeit moderner CPUs, eher langsam ist, hat esd electronics (esd) einen eigenen FPGA-basierten CAN-Controller entwickelt, den Advanced CAN Controller (esdACC). Er hat beispielsweise ein bis zu 32 Bit breites Interface, unterstützt einen 64 Bit Timestamp und kann einen 100-prozentigen Busload generieren. Eine Variante davon ist der CAN FD Controller für FPGA, der das CAN FD-Protokoll gemäß ISO11898-1:2015 unterstützt. Er ist in der Lage, ein ISO-konformes CAN FD-Protokoll zu senden und zu empfangen oder CAN 2.0 A/B Nachrichten zu übermitteln. Die CAN FD-Übertragungsrate liegt dabei zwischen 10kbit/s und 5Mbit/s. Mit der FPGA-Technologie ist es außerdem möglich, auch kundenspezifische Leistungsmerkmale zu integrieren.

PC-Board mit CAN FD

Das Herzstück beim CAN-Interface 'CAN-PCIe/402-FD' mit CAN FD-Transceiver und Anschluss zum PCI-Express-Bus ist ein solcher esdACC. Er hat einen 16 CAN-Frames tiefen TX FIFO. Dieser erlaubt das Generieren einer 100-prozentigen Buslast mit echter Back-to-Back-Übertragung, auch mit Nicht-Echtzeit-Betriebssystemen. Durch das 32-bit Register-Interface können CAN-Frames mit minimalen Registerzugriffen gesendet und empfangen werden. Weitere Leistungsmerkmale sind bitgenaue CAN-Übertragung und nachrichtengenauer Abbruch der Übertragung bei minimaler Verzögerung beispielsweise für Timeouts. Abgebrochene CAN FD Nachrichten werden im FIFO nicht durch das niedrig priorisierte TX-Signal blockiert. Außerdem entlasten das Bus-Mastering in RX-Richtung sowie die optionale Integration eines 32Bit-Microcontrollers die Host-CPU. Der große FIFO für Lese- und Schreibvorgänge sowie ein präzises Timestamping ermöglichen weitere Anwendungen z. B. für höhere CAN-Protokolle. Der esdACC IP-Core ist für Xilinx Spartan und Altera Cyclone FPGAs verifiziert. Das CAN-Interfaces 'CAN-PCIe/402-FD' ist ein universell einsetzbares PC-Board, dass für den PCIe-Bus entwickelt wurde und ein oder zwei CAN FD-Interfaces gemäß ISO 11898-2 enthält. Für die Datenübertragung zum Host-Speicher nutzt es das Bus-Mastering. Dadurch wird eine Verringerung der Latenzzeit während der I/O-Transaktionen, insbesondere durch die höhere Datenrate und der Reduzierung des CPU-Loads, erreicht. Durch die Verwendung von MSI (Message Signaled Interrupts) kann das PC-Board beispielsweise in Hypervisor-Umgebungen arbeiten. Zudem unterstützt es hochauflösende Hardware-Timestamps. Das Monitoring- und Diagnose-Tool CANreal vereinfacht das CAN FD- Handling.

Anzeige

CiA-Stresstest bestanden

Die Nutzerorganisation CiA (CAN in Automation) organisiert sogenannte Plugfeste, um das Zusammenwirken von CAN FD-Implementierungen sowie die physikalischen Grenzen der Übertragung hinsichtlich Topologie und Datenraten zu testen. Bei solchen 'Stresstests' haben sich Datenraten von bis zu 10Mbit/s als fehlerfrei erwiesen und das auch bei 100-prozentiger Buslast über einen längeren Zeitraum. ESD nahm mit dem PCI-Express CAN-Interface CAN-PCIe/402 mit CAN FD-Transceivern teil. "Die Interoperabilität mit den anderen CAN-Teilnehmern funktionierte hervorragend. Die Kommunikation auf dem CAN FD-Netzwerk funktionierte sogar mit Bitraten von mehr als 6 MBit/s. Der reine Datenempfang war bis zu einer Bitrate von 10 MBit/s fehlerfrei möglich", berichtet Oliver Thimm, Entwickler bei ESD Electronics.

Exakter Zeitstempel in jedem CAN-Frame

Der esdACC verfügt über einen 64-Bit Timestamp-Zähler, der eine hochpräzise CAN-Frame-Übertragung ermöglicht. Er ist die Basis für die 'Timestamped TX'-Technologie, die parallel zum CAN-FIFO einen hoch priorisierbaren TX-TS-FIFO mit einer Tiefe von 16 CAN-Frames zur Verfügung stellt. Dadurch können CAN-Frames mit Zeitstempel in den zusätzlichen Ringspeicher, TX-TS-Queue, im CAN-Treiber geschrieben werden. Anschließend übergibt dieser die CAN-Frames innerhalb eines festgelegten Zeitfensters (TS-Window), sortiert nach der Sendezeit, dem TX-TS-FIFO des esdACCs. Bevor der Frame dem CAN-Bus übergeben wird, werden die Zeitstempel überprüft und abgelaufene Frames vorrangig gesendet. Dadurch ermöglicht der Hardware-Timestamp nahezu Echtzeit-Verhalten in 'Nicht-Echtzeit'-Betriebssystemen. Zusätzlich ist eine präzise Rückmeldung, die die Sendezeit jedes CAN-Frames enthält, verfügbar. Diese lässt sich für Higher-Level Protokolle nutzen. Dementsprechend bieten alle esdACC-basierten CAN-Interfaces einen bit-genauen, 64-bit breiten Zeitstempel für die RX- und TX-Richtung. Des Weiteren unterstützt ein Hardware-Timer akkurate Software-Timeouts in Abhängigkeit vom Betriebssystem. Durch ein optionales IRIG-B-Interface auf der Hardware lässt sich alternativ auch die IRIG-B-Zeit als externer Takt für das Timestamping nutzen.

Anzeige

Prüfsysteme profitieren durch Error-Injektion

Der CAN-Bus wird nicht nur in der Automobilindustrie und der Industrieautomatisierung eingesetzt, sondern zunehmend auch in sicherheitsrelevanten Bereichen wie der Medizintechnik oder der Luft- und Raumfahrt. Mit den erhöhten Sicherheitsanforderungen dort steigt auch der Bedarf an Verifikation, Simulation und Test. Jedoch sind auf dem Markt verfügbare CAN-Controller nicht in der Lage, fehlerbehaftete CAN-Frames zu versenden oder allgemein gegen den CAN ISO 11898 Standard zu verstoßen, um so auch das Verhalten bei fehlerhaften Nachrichten zu überprüfen. Wird aber der esdACC IP-Core um eine Error-Injection-Einheit ergänzt, lassen sich bei den FPGA-basierten CAN Interface-Boards wie dem CAN USB/400-FD nicht nur CAN-Fehler generieren bzw. simulieren, sondern es kann auch interaktiv in die laufende CAN-Kommunikation eingegriffen werden. Dies ist mit nur geringen Mehrkosten gegenüber Standard CAN-Hardware möglich. Die Error-Injection-Einheiten verfügen über diverse Injektionsmodi, wie z.B. CAN-Arbitration, Time-Triggered oder Pattern-Matching, deren Kombination auch komplexe Szenarien ermöglichen. Mit dem esdACC Error-Injection-GUI-Tool bietet esd eine kostenlose grafische Bedienoberfläche für die Error-Injection-Einheiten.

API/Treiber und Betriebssysteme

Das PC-Board CAN-PCIe/402-FD arbeitet unter den Betriebssystemen Windows XP/Vista/7/8/10 sowie mit Linux. Die dazu benötigten CAN Layer 2 Treiber sind bereits im Lieferumfang des Boards enthalten. Für Realtime-Betriebssysteme wie VxWorks, QNX, RTX und RTX64 sind die CAN Layer 2 Treiber optional erhältlich. Die esdACC-basierten Boards lassen sich mit dem Programmier-Interface esd-NTCAN-API einfach programmieren. Es dient zur Integration von Steuerungen in CAN- und CAN FD-basierte Netzwerke von Echtzeit- und Nicht-Echtzeit-Anwendungen. Die NTCAN-Implementierung ist üblicherweise eine Bibliothek, die die API für die Anwendung unterstützt, kombiniert mit einem für das CAN-Board spezifischen Gerätetreiber. Damit ist die Anwendungsprogrammierung quasi unabhängig vom Betriebssystem und den Gerätetreibern, da die verschiedenen CAN-Treiber im Betriebssystem-Kernel wie ein Gerätetreiber für verschiedene Geräteklassen integriert wurden. Dadurch wird die Kompatibilität und Interoperabilität zwischen Anwendung und Hardware verbessert. Beim PC-Board CAN-PCIe/402-FD beispielsweise wird ein Kernel-Mode-Treiber verwendet, der mit dem CAN-Controller (esdACC) am internen Bus (PCI, PCIe,…) in direktem Kontakt steht. Er unterstützt beispielsweise betriebssystemspezifische Leistungsmerkmale wie ereignisgetriebene und/oder abfragende CAN FD-I/Os, die CAN FD-Nachrichteninteraktion, das Firmware-Update für CAN FD-Module mit lokalem Betriebssystem, hardwareunabhängiges CAN FD-Knotennummer-Mapping, blockierende und nicht blockierende CAN FD-I/Os, Listen-Only-Mode für nicht eingreifendes CAN FD-Bus-Monitoring sowie erweiterte Fehlerinformation über den CAN FD-Busstatus. Es lassen sich aber auch die Error Injection und das Timestamped TX mit diesem Interface programmieren.

Anzeige

Fazit

Die PC-Boards CAN-PCIe/402-FD gemäß ISO11898-1:2015 bieten Geschwindigkeiten bis zu 10Mbit/s und übertragen bis zu 64 Byte Nutzdaten. Durch das einfache Daten-Link-Layer-Protokoll, kostengünstige Controller- und Transceiver-Chips sowie einen niedrigen Energiebedarf ist der CAN FD-Bus nicht nur für die Automobilindustrie attraktiv. Maschinen und Anlagenteile, die schon CAN verwenden, lassen sich einfach auf CAN FD migrieren, da aufgrund des gleichen CAN-Frameaufbaus die vorhandene Verkabelung weiterverwendet werden kann. Mit Hilfe der Hardware-Timestamp-Technologie lässt sich nahezu Echtzeit-Verhalten in 'Nicht-Echtzeit'-Betriebssystemen erzielen. Mit Error-Injection-Einheiten können Anwendungen in sicherheitsrelevanten Bereichen über diverse Injektionsmodi, wie z.B. CAN-Arbitration, Time-Triggered oder Pattern-Matching, deren Kombination sowie auch komplexe Szenarien getestet werden. Die esdACC-basierten Produkte lassen sich mit dem Programmier-Interface esd NTCAN-API einfach programmieren. Es dient zur Integration von Steuerungen in CAN- und CAN FD-basierte Netzwerke von Echtzeit- und Nicht-Echtzeit-Anwendungen und das quasi betriebssystemunabhängig.

Anzeige