CAN – ISO 11898, Raw CAN und CANopen
CAN (Controller Area Network) ist ein leistungsstarkes, serielles Bussystem zum schnellen Datenaustausch zwischen elektronischen Steuergeräten. Es verfügt über eine Multi-Master-Funktionalität, wodurch alle CAN Knoten Daten senden und verschiedene CAN Knoten den Bus simultan abfragen können. Es wurde im Jahr 1983 von der Robert Bosch GmbH zunächst für die Kraftfahrzeugtechnologie entwickelt. Neben dem Einsatz in Personen- und Nutzkraftwagen werden CAN Netzwerke aber immer mehr auch in Schiffen, Bahnen und Flugzeugen sowie zunehmend in der Automatisierungstechnik und im Maschinenbau eingesetzt. Heute sind nahezu alle Mikrocontroller mit einer CAN Schnittstelle versehen.
In der CAN Spezifikation ist der Data Link Layer definiert, eine Datensicherungs- und physikalische Schicht, die den Telegrammaufbau beschreibt. Daneben werden über CAL (CAN Application Layer) die übertragenen Daten beschrieben. CAL ist somit eine allgemeine Beschreibungssprache für CAN Netzwerke und stellt eine Vielzahl von Kommunikationsdiensten zur Verfügung. Das serielle Bussystem mit der Echtzeitfähigkeit ist international unter der ISO 11898 Norm standardisiert und beinhaltet die untersten beiden Schichten des ISO/OSI-Schichtenmodells. Das CAN Protokoll wurde 1993 standardisiert und ist unter der Norm ISO 11898-1 beschrieben.
Anwendung
CAN Netzwerke werden als Kommunikationssystem für Mikrocontroller im Embedded-Bereich und als offenes Kommunikationssystem für intelligente Geräte wie IO-Module verwendet. Das serielle Bussystem wird sowohl in der Fahrzeugelektronik als auch in der Automatisierung von Maschinen eingesetzt. CAN zeichnet sich dabei durch geringe Kosten, mögliche Funktion in verschiedenen Elektronikumgebungen, eine hochgenaue Echtzeitfähigkeit sowie eine einfache Nutzung aus.
OSI-7-Schichten-Modell
Das OSI-7-Schichten-Modell wird vom CAN Protokoll beschrieben und beinhaltet die Datenkommunikations- und physischen Schichten. Die ISO-Norm definiert einen Standard, der die CAN Spezifikation und Teile der physischen Schichten einschließt: Das physische Signal mit Bit-Codierung und -Decodierung (Non-Return-to-Zero, NRZ) und das Bit Timing sowie Bitsynchronisation.
1. Physical Layer: Die Bitübertragungsschicht beschreibt die Hardware und deren Übertragung inklusive aller dazu notwendigen Parameter wie elektrische, optische oder mechanische Spezifikationen. In dieser Schicht werden einzelne Bits zwischen Computern übertragen und Daten kodiert.
2. Data Link Layer: Die Sicherungsschicht beschreibt die Datenkommunikation auf Basis der CAN Spezifikation 2.0 B. Sie zerlegt dabei die Daten in Pakete oder Datenrahmen, die über ein Interface übertragen werden sollen. Die Art der Datenrahmen hängt von der Netzwerktopologie ab. Durch höher gelegene Netzwerkschichten soll eine fehlerfreie Übertragung über die Netzwerkleitung garantiert werden. Dabei wiederholt sie die Sendung so lang, bis sie eine Empfangsbestätigung für die gesendeten Daten erhält.
3. Network Layer: Die Netzwerkschicht beschreibt die Funktionalität der Übertragung von Nachrichten zwischen zwei Netzwerksegmenten. Zu dieser Schicht gibt es eine entsprechende Schicht in TCP/IP-Protokollen. Sie empfängt Nachrichten aus dem Data Link Layer und sendet diese an die richtige Adresse im Netzwerk weiter.
4. Transport Layer: Die Transportschicht beschreibt die verschiedenen Dienste im Netzwerk. Sie muss dabei auf die fehlerfreie und korrekte Übermittlung von Daten achten.
5. Session Layer: Die Sitzungsschicht regelt die Einrichtung und Verwaltung einer Verbindung von zwei Computern. Dadurch können Daten gesendet und Übertragungsfehler sowie Unterbrechungen ausgewertet werden.
6. Presentation Layer: In der Darstellungsschicht werden Dateiformate bestimmt und definiert, sodass dadurch die Kommunikation zwischen zwei verschiedenen Plattformen gewährleistet wird.
7. Application Layer: Die Anwendungsschicht beschreibt die eigentlichen Daten im Netzwerk und stellt dazu die direkte Verbindung zum Anwender her. Sie definiert Programme wie Browser, FTP-Client oder ähnliches
RAW CAN
RAW CAN bezeichnet das reine CAN Protokoll, das ohne ein zusätzliches Kommunikationsprotokoll auf dem CAN Bus arbeitet. Das CAN Protokoll ist international nach dem ISO 11898-1 Standard definiert und garantiert zusätzlich in ISO 16845 die Austauschbarkeit von CAN Chips.
Funktion
CAN basiert auf einem Kommunikationsmechanismus, der eine Nachricht an alle Benutzer versendet.
Die Versendung des Protokolls erfolgt dabei nachrichtengesteuert.
CANopen
CANopen ist ein CAN-basiertes Protokoll für höhere Schichten, das als eingebettetes Netzwerk mit flexibler Konfigurationsstabilität von Bosch entwickelt wurde und im Jahr 1995 an die CAN in Automation (CiA) Vereinigung übergeben wurde. Ursprünglich wurde CANopen speziell für bewegungsorientierte Maschinensteuerungsnetzwerke entworfen, jedoch wird es heute auch in vielen Bereichen der Medizin, der Nutzfahrzeuge, der Schifffahrtselektronik oder der Gebäudeautomatisierung eingesetzt.
Funktion
CANopen ist ein Vernetzungskonzept, das auf dem seriellen Bussystem CAN und der Anwendungsschicht CAL basiert. Durch CANopen wird im Gegensatz zu CAL festgelegt, welche Daten mit welchen Diensten übertragen werden sollen und was die Daten auf den jeweiligen Geräteklassen bedeuten. Dazu wird nur eine Teilmenge der von CAL angebotenen Kommunikationsdienste genutzt. Dadurch verringert sich die benötigte Rechnerleistung und Speicherkapazität. Die CANopen Spezifikationen beinhalten die Applikationsschicht, das CANopen Kommunikationsprofil (CiA DS 301), das auf dem CAL Protokoll basiert, und ein Framework für programmierbare Maschinen (CiA 302).
Die Applikationsschicht und die CAN-basierten Profile werden in die Software implementiert. Durch standardisierte Profile wie z. B. Maschinen-, Interface- und Applikationsprofil können CANopen Netzwerksysteme leicht integriert werden. CANopen vereinfacht dabei das Arbeiten mit CAN-spezifischen Details wie Bittiming und implementierungsspezifischen Funktionen. Dadurch bietet es standardisierte Kommunikationsobjekte für Echtzeitdaten (Process Data Objects – PDOs), Konfigurationsdaten (Service Data Objects – SDOs), spezielle Funktionen wie Zeitstempel oder auch Netzwerkmanagementdaten wie Boot-Up-Nachrichten, NMT-Nachrichten oder Fehlersteuerungen.
CANopen-Protokoll
Die CANopen Anwendungsschicht und das CANopen Kommunikationsprofil unterstützen den direkten Zugriff auf Geräteparameter und das Senden von zeitkritischen Prozessdaten. Das CANopen Netzwerkmanagement hilft bei der Projektgestaltung, bei der Systemintegration und bei der Diagnose. In jeder dezentral gesteuerten Applikation können somit verschiedene Kommunikationsservice und -protokolle abgefragt werden. Dabei definiert CANopen die gesamten Services und Protokolle sowie die dazu nötigen Kommunikationsobjekte. Der gesamte Funktionsumfang einer Maschine wird durch Kommunikationsobjekte im Objektverzeichnis beschrieben, das als Bindeglied zwischen der Kommunikationsschnittstelle und dem Applikationsprogramm ist.
CANopen Anwendung
CANopen wird neben dem Einsatz in kleinen und mittelgroßen Embedded-Netzwerken auch in Steuerungssystemen in der Automatisierung verwendet.
Funktion
CAN bietet zwei Datenkommunikationsservices: Das Senden einer Nachricht (Data-Frame-Übertragung) und das Abfragen einer Nachricht (Remote Transmission Request – RTR).
Die Datenübertragung erfolgt dadurch, dass ein Bit je nach Zustand entweder dominant oder rezessiv auf den Busleitungen wirkt. Dabei wird zwischen CAN-High-Speed mit einer maximalen Übertragungsrate von 1 Mbit/s und CAN-Low-Speed mit 125 Kbit/s unterschieden. Ein CAN Netzwerk wird in einer Linienstruktur aufgebaut, bei der die Enden mit einem Abschlusswiderstand von 120 Ohm versehen sind. Bei der Busvernetzung im Auto wird auch der „Ein-Draht-CAN-Bus“ verwendet. Beim CAN Bus kann jeder Teilnehmer Daten senden, wenn der Bus frei ist. Zum schnellen Senden von Nachrichten mit hoher Priorität und zur Vermeidung von Kollisionen wird das CSMA/CA-Verfahren verwendet.
Jeder CAN Busteilnehmer sendet seine Nachricht an alle anderen. Durch Hinzufügen einer Identifikation wissen die anderen Busteilnehmer, um was für eine Nachricht es sich handelt, und können dann die Daten verarbeiten. Das Herausfiltern der Nachricht wird durch die Bus-Hardware im Teilnehmer übernommen.
Maximal können je nach verwendetem Bustreiber-Baustein bis zu 128 CAN Busteilnehmer pro Leitung integriert werden. Ein Object-Identifier kennzeichnet den Inhalt einer Nachricht. Dadurch können die Empfänger entscheiden, ob eine Nachricht für sie relevant ist oder nicht. Zudem wird mit dem Object-Identifier die CAN Nachricht positioniert. Dabei werden 11-Bit-Identifier und 29-Bit-Identifier von der Spezifikation definiert. Somit kann ein Busteilnehmer sowohl Empfänger als Sender von Nachrichten mit beliebig vielen Identifiern sein.