CANopen Grundlagen

CANopen – Das Kommunikations-Protokoll

CANopen ist ein Kommunikations-Protokoll, welches für Embedded-Systeme in der Automatisierung von Abläufen Verwendung findet. Damit kann es für die Vernetzung innerhalb komplexer Geräte eingesetzt werden. Dieser Standard besteht aus einer Adressierung, mehreren kleinen Kommunikationsprotokollen und einer Applikationsschicht, die von einem Gerät definiert wird. Die Kommunikationsprotokolle bieten Unterstützung für das Netzwerk-Management, die Geräte-Überwachung und die Kommunikation zwischen verschiedenen Knotenpunkten. Die untere Ebene von CANopen zur Umsetzung der Datenverbindung ist in der Regel das Controller Area Network (CAN). Allerdings können auch Geräte, die auf anderen Kommunikationsprotokollen (wie Ethernet Powerlink, EtherCAT) basieren, mit dem CANopen Profil umgehen. Die CANopen Geräte und Kommunikationsprofile werden in der CiA 301 Spezifikation von "CAN in Automation" verwaltet. Das Hauptverbreitungsgebiet ist Europa, wobei es aber in Nordamerika und Asien auf dem Vormarsch ist. Profile für mehr spezialisierte Geräte werden auf diesem Grundprofil aufgebaut, und in zahlreichen anderen Standards, die von "CAN in Automation" veröffentlicht werden, angegeben.

CANopen – Gerätemodell

Jedes CANopen Gerät muss bestimmte Standardfunktionen in seiner Software unterstützen.

  • Eine Kommunikationseinheit implementiert die Protokolle für Nachrichten zu den anderen Knotenpunkten im Netzwerk
  • Starten und Zurücksetzen des Geräts erfolgt über eine gesteuerte Zustandsregeleinheit. Es muss die Zustände "Initialisierung", "Pre-operational", "eigentlicher Auftrag" und "Stopp" enthalten. Die Übergänge zwischen den Zuständen werden durch ein Netzwerk-Management (NMT) hergestellt.
  • Das Objektverzeichnis ist ein Feld von Variablen mit einem 16-Bit-Index. Darüber hinaus kann jede Variable eine 8-Bit-Untereinheit besitzen. Die Variablen können verwendet werden, um das Gerät zu konfigurieren
  • Der Anwendungsteil führt die tatsächlich gerade auszuführende Applikation durch, nachdem die Zustandsregeleinheit die Freigabe dazu erteilt hat. Die Anwendung wird durch Variablen im Objektverzeichnis definiert und die Daten werden gesendet und empfangen über den communication layer.

CANopen – Objektverzeichnis

CANopen Geräte müssen ein Objektverzeichnis besitzen, das für die Konfiguration und Kommunikation mit dem Gerät verwendet wird. Ein Eintrag im Objektverzeichnis ist definiert durch:

  • Index: eine 16-Bit-Adresse des Objekts im Verzeichnis
  • Objektname
  • Name: eine den Eintrag beschreibende Zeichenabfolge
  • Typus: gibt den Datentyp der Variablen (oder der Datentyp aller Variablen eines Arrays) an
  • Attributvariable: gibt Informationen über die Zugriffsrechte an. Dies kann lesen-und-schreiben, nur-lesen oder nur-schreiben sein
  • Mandatory/Optional (M / O): legt fest, ob das Gerät überhaupt entsprechend der Gerätespezifikation die geforderte Aufgabe ausführen kann oder nicht

CANopen – Kommunikationsobjekte

Der CAN-Bus, die physikalische Basis des CANopen, kann nur kurze Pakete übertragen. Dieses besteht aus einer 11-Bit-ID, einem Remote Transmission Request (RTR)-bit und 0 bis 8 Datenbytes. Der CANopen Standard unterteilt die 11-Bit-CAN-ID in ein 4-Bit Funktionscode und eine 7-Bit-Knotenpunkt-ID. Dies begrenzt die Anzahl der Geräte in einem CANopen-Netzwerk auf 127. Eine Erweiterung auf den CAN-Bus-Standard CAN 2.0 B ermöglicht bis zu 29 Bits, allerdings sind in der Praxis CANopen Netzwerken meist groß genug, sodass der erweiterte ID-Bereich nur selten benötigt wird.

In CANopen wird die 11-Bit-ID als Communication Object Identifier, COB-ID, benannt. Im Falle eines Übertragungsfehlers ermöglicht dies, dass das Gerät mit der kleinsten ID zuerst und ohne Verzögerung die Daten übertragen kann. Zeitkritische Informationen sollten also mit einer geringen Code-Nummer ausgestattet werden. Standardmäßig sieht das Protokoll folgendermaßen aus (Längen):

  • COB-ID: 11 bits
  • RTR: 1 bit
  • Datenlänge: 4 bits
  • Daten: 0-8 Bytes

CANopen – Kommunikationsmodelle

Verschiedene Arten der Kommunikation können in der Nachrichtenübermittlung zwischen verschiedenen Geräten verwendet werden

  • In einer Master / Slave-Technik ist ein Knotenpunkt als Master definiert, welcher vom Slave Daten anfordert oder an ihn sendet. Das NMT-Protokoll ist ein Beispiel für eine Master / Slave-Kommunikation.
  • Eine Client / Server-Beziehung wird im SDO-Protokoll verwendet, wo der SDO-Client Daten zu einem SDO-Server sendet, der mit einem oder mehreren SDO-Paketen auf die angeforderten Daten antwortet.
  • Ein Producer / Consumer-Modell wird beim "Heartbeat and Node Guarding-Protokoll" verwendet. Im Push-Modus sendet der Producer Daten an den Consumer ohne spezifische Anfrage, während im Pull-Modus der Verbraucher die Daten vom Erzeuger anfordert.

Kommunikationsobjekte CANopen

Es stehen folgende Kommunikationservices zur Verfügung:

  • Netzwerkmanagement-Objekte (NMT) zur Steuerung des Zustandsreglers und zur Knotenüberwachung
  • Servicedatenobjekte (SDO) Objektverzeichniseinträgen zu definieren
  • Prozessdatenobjekte (PDO) Echtzeitdaten zu übertragen
  • Synchronisationsobjekt (SYNC)
  • Zeitstempel und Fehler-Nachrichtensysteme (EMCY)

CANopen – Elektronische Datenblätter

CANopen Geräte benötigen für den Betrieb elektronische Datenblätter, so genannte EDS-Dateien. Diese liegen in einem standardisierten Textformat vor, die die wichtigsten Objektparameter und die physikalischen Parameter beschreiben. Damit werden zum Beispiel unterstützte Baudraten definiert. Mithilfe von Kommunikationstools können EDS-Dateien gelesen werden. Somit kann mit dem entsprechenden Gerät kommuniziert werden. Darauf kann auch eine Konfiguration erfolgen. Frei erhältliche Software kann zur Überprüfung einer korrekten Syntax verwendet werden.

Seit 2007 steht ein auf XML-basiertes Format zur Verfügung. Dieses "XDD"-Format ist in ISO 15745 standardisiert und erlaubt eine detaillierte Beschreibung der Funktionen der Geräte. Die Applikation wird dabei unabhängig vom Protokoll beschrieben. Auch für dieses neue XDD-Format ist ein freier Editor verfügbar.