- CANopen
-
CANopen ist ein auf CAN basierendes Kommunikationsprotokoll, welches hauptsächlich in der Automatisierungstechnik und zur Vernetzung innerhalb komplexer Geräte verwendet wird.
Das Hauptverbreitungsgebiet von CANopen ist Europa. Jedoch steigen sowohl in Nordamerika als auch in Asien die Nutzerzahlen. Es wurde vorwiegend von deutschen mittelständischen Unternehmen initiiert und im Rahmen des ESPRIT-Projekts ASPIC unter Leitung von Bosch als Prototyp von 1993 bis 1995 erarbeitet[1]. Seit 1995 wird es von der Organisation CAN in Automation (CiA) gepflegt und ist als Europäische Norm EN 50325-4 standardisiert.
Inhaltsverzeichnis
Grunddienste von CANopen
In CANopen sind mehrere Grunddienste (Dienstprimitive) definiert. Diese Grunddienste sind:
- Request: Anforderung eines CANopen-Dienstes durch die Anwendung
- Indication: Meldung an die Anwendung, dass ein Ergebnis oder eine bestimmte Nachricht vorliegt
- Response: Antwort der Anwendung auf eine Indication
- Confirmation: Bestätigung an die Anwendung, dass ein CANopen-Dienst ausgeführt wurde
In CANopen werden neben diesen Client-Server-Diensten auch weitere Kommunikationskonzepte wie das Producer-Consumer-Konzept genutzt. Darin zeigt sich, dass CANopen kein klassisches Master-Slave-System ist. Ursprünglich deckt CANopen im OSI-Modell die Anwendungschicht (Schicht 7) ab und nutzt CAN als Schicht-2-Transportmedium. Seit 2006 sind jedoch auch vermaschte Netzwerke mit Routing-Möglichkeiten standardisiert.
Kommunikationsobjekte
Kommunikationsobjekte können folgendermaßen gegliedert werden in
- Servicedatenobjekte (SDO) zur Parametrisierung von Objektverzeichniseinträgen,
- Prozessdatenobjekte (PDO) zum Transport von Echtzeitdaten,
- Netzwerkmanagement-Objekte (NMT) zur Steuerung des Zustandsautomaten des CANopen-Geräts und zur Überwachung der Knoten,
- weitere Objekte wie Synchronisationsobjekt (SYNC), Zeitstempel und Fehler-Nachrichten (EMCY).
Objektverzeichnis
Alle Kommunikationsobjekte und alle Anwenderobjekte werden im Objektverzeichnis (OV) (engl. Object Dictionary (OD)) zusammengefasst. Das OV ist im CANopen-Gerätemodell das Bindeglied zwischen der Anwendung und der CANopen-Kommunikationseinheit. Jeder Eintrag im Objektverzeichnis steht für ein Objekt und wird durch einen 16-Bit-Index gekennzeichnet. Ein Index kann wiederum bis zu 256 Subindizes enthalten. Dadurch können unabhängig von den „11-Bit-Identifiern“ bis zu 65536 × 254 Elemente unterschieden werden. (Die Subindizes 0 und 255 können nicht frei verwendet werden.) In Profilen ist die Zuordnung von Kommunikations- und Geräteprofilobjekten zu einem jeweiligen Index genau definiert; somit wird mit dem Objektverzeichnis eine eindeutige Schnittstelle zwischen der Anwendung und der Kommunikation nach außen definiert. So ist beispielsweise jedem CANopen-Knoten im Netz bekannt, dass auf Index 1017h das Heartbeat-Intervall zu finden ist, und jeder Knoten oder jedes Konfigurationsprogramm kann lesend oder schreibend darauf zugreifen.
Indexbereich Verwendung 0000 nicht genutzt 0001-009F Datentypen (Sonderfall) 00A0-0FFF reserviert 1000-1FFF Kommunikationsprofil 2000-5FFF herstellerspezifischer Bereich 6000-9FFF bis zu 8 standardisierte Geräteprofile A000-AFFF Prozessabbilder von IEC61131-Geräten B000-BFFF Prozessabbilder von CANopen-Gateways nach CiA 302-7 C000-FFFF reserviert Für jedes Kommunikationsobjekt existiert eine eindeutige COB-ID (Communication Object Identifier) im Netzwerk. Die COB-ID besteht aus 32-Bit-Werten, wobei die ersten beiden Bits jeweils eine objektspezifische Bedeutung haben. In einem 11-Bit-CAN-Netz haben die folgenden 19 Bits (29 bis 11) den Wert 0 und die letzten Bits (10 bis 0) entsprechen dem CAN-Identifier.
Servicedatenobjekte stellen einen Dienst zum Zugriff auf das Objektverzeichnis bereit. Jedes CANopen-Gerät benötigt mindestens einen SDO-Server, welcher SDO-Anforderungen von anderen Geräten entgegen nimmt und bearbeitet. Per Default-Einstellung nutzen Nachrichten zum SDO-Server eines Geräts die Knotennummer des Empfängers + 1536 als COB-ID bzw. als „Identifier“ für die CAN-Nachricht. Für die Antwort des SDO-Servers wird als „Identifier“ die Knotennummer des Senders + 1408 verwendet. Mit diesen relativ hohen und somit niederpriorisierten IDs werden Einträge im OV übertragen. Für diesen SDO-Transfer existiert ein Protokoll, welches 4 Byte benötigt um die Senderichtung, den Index und den Subindex zu kodieren. Somit bleiben nur noch 4 Byte von den 8 Byte eines CAN-Datenfeldes für den Dateninhalt übrig. Für Objekte, deren Dateninhalt größer als 4 Byte ist, gibt es noch zwei weitere Protokolle zum fragmentierten SDO-Transfer.
Im Gegensatz zu dem niederpriorisierten und mit Protokolldaten überladenen SDO-Transfer stellen die Prozessdatenobjekte eine schnellere Möglichkeit zum Transport von Prozessdaten zur Verfügung. Die zum PDO-Transfer genutzten „Identifier“ liegen bei Defaulteinstellungen im COB-ID-Bereich von 385 bis 1407 und sind somit höherpriorisiert als die SDO-Nachrichten. Weiterhin enthalten sie nur Nutzdaten, und somit stehen 8 Byte zur Verfügung. Der Inhalt der Nutzdaten wird über PDO-Mapping-Einträge bestimmt. Dies sind Objekte im OV, die wie eine Zuordnungstabelle festlegen, welche Daten über ein PDO übertragen werden. Diese Daten sind wiederum Inhalte anderer Objekte des OV. In einem PDO können auch die Werte mehrerer Objekte übertragen werden, und die Empfänger des PDOs können entsprechend ihrer PDO-Mapping-Einträge nur Teile der Daten nutzen. Beim Empfang eines PDOs werden wiederum die Daten entsprechend den Mapping-Einträgen in jeweils andere Objekte des OV, z. B. in ein digitales Ausgangsobjekt, geschrieben. Die Übertragung von PDOs kann zyklisch, ereignisorientiert, abgefragt oder synchronisiert geschehen.
Netzwerkverwaltungsobjekte dienen der Verwaltung des Netzes. So gibt es u.a. Nachrichten, welche eine Zustandsänderung in einem Gerät veranlassen oder globale Fehlermeldungen verbreiten.
Das Sync-Objekt sendet oder empfängt beispielsweise die hochpriorisierte SYNC-Nachricht, welche der Synchronisation der Knoten im Netz dient und mit dem Zeitstempel-Objekt eine einheitliche Zeit im Netz sicherstellt. Daneben gibt es im Kommunikationsprofil und insbesondere in den Geräte-Profilen noch eine Vielzahl anderer Objekte.
Geräteprofile
Für eine Reihe von Geräteklassen wurden CANopen-Geräteprofile definiert. Diese Geräteprofile definieren die Funktionalität und den Aufbau des Objektverzeichnisses für die jeweiligen Geräte. Durch die Nutzung von CANopen-Geräten, welche einem bestimmten Profil entsprechen, wird eine höhere Unabhängigkeit von Geräteherstellern erreicht.
Die wichtigsten Geräteprofile sind:
Standard Geräteklasse CiA 401 IO-Module CiA 402 elektrische Antriebe CiA 404 Sensoren und Regler CiA 405 Programmierbare Geräte (SPS) nach IEC 61131-3 CiA 406 Geber CiA 408 hydraulische Antriebe CiA 445 RFID-Schreib-Lesegeräte[2] Anwendungsprofile
Im Gegensatz zu den Geräteprofilen wird bei den Anwendungsprofilen nicht die Funktionalität einer Gruppe von Geräten (Antriebe, Encoder, Ein-/Ausgänge) beschrieben, sondern die Funktionen einer Anwendung. So gibt es z. B. Anwendungsprofile für Aufzugsanlagen (CiA 417), Schienenfahrzeuge (CiA 421) oder Müllfahrzeuge (CiA 422).
Die wichtigsten Anwendungsprofile sind:
Standard Anwendung CiA 410 Neigungsmesser CiA 412 Medizinische Geräte CiA 413 Gateways zu LKW-Aufbauten CiA 415 Sensoren für Straßenbaumaschinen CiA 416 Türsteuerungen CiA 417 Aufzugssteuerungen CiA 418/9 Batterien und Ladegeräte CiA 420 Extruder-Nachfolgegeräte CiA 444 Kran/Spreader Electronic Datasheets
Für die Nutzung von CANopen-Geräten sind weiterhin elektronische Datenblätter, sogenannte EDS-Dateien, nötig. Diese Dateien in einem standardisierten Textformat beschreiben sowohl die wichtigsten Parameter der Objekte der Objektverzeichnisse eines Gerätes als auch physikalische Parameter wie z. B. die unterstützten Baudraten. Konfigurationstools können EDS-Dateien einlesen und mit ihrer Hilfe mit dem jeweiligen Gerät kommunizieren und es ggf. parametrisieren. Zur Prüfung der syntaktischen Korrektheit eines EDS gibt es das freie Tool CANchkEDS[3].
Beispiel: Auszug aus einer EDS-Datei
[FileInfo] FileName=newProject_line0.eds FileVersion=1 FileRevision=0 EDSVersion=4.0 Description=xxx CreationTime=10:15AM CreationDate=03-06-2005 CreatedBy=me ModificationTime=10:15AM ModificationDate=03-06-2005 ModifiedBy=me
[DeviceInfo] VendorName=xxx VendorNumber=0x0 ProductName=test ProductNumber=0x0 RevisionNumber=0x0 OrderCode= BaudRate_10=0 BaudRate_20=0 BaudRate_50=1 BaudRate_125=1 BaudRate_250=1 BaudRate_500=0 BaudRate_800=0 BaudRate_1000=0 DynamicChannelsSupported=0 GroupMessaging=0 LSS_Supported=0 Granularity=0 SimpleBootUpSlave=1 SimpleBootUpMaster=0 NrOfRXPDO=0 NrOfTXPDO=0
[MandatoryObjects] SupportedObjects=3 1=0x1000 2=0x1001 3=0x1018
[1000] ParameterName=Device Type ObjectType=0x07 DataType=0x0007 AccessType=const DefaultValue=0x00000000 PDOMapping=0
[1001] ParameterName=Error Register ObjectType=0x07 DataType=0x0005 AccessType=ro DefaultValue=0x00 PDOMapping=0
Seit Anfang 2007 ist ein auf XML-basierendes Beschreibungsformat XDD standardisiert. Dieses Format basiert auf dem ISO-Standard 15745 und erlaubt eine detaillierte Beschreibung der Gerätefunktionalität. Dabei wird die Applikation unabhängig von CANopen beschrieben und die Parameter der Applikation den CANopen-Objekten zugeordnet.
Für dieses neue XML-basierte Format, als auch das davor gültige EDS-Format gibt es einen freien Editor namens CANeds[4].
Einzelnachweise
- ↑ http://www.can-cia.org/index.php?id=522
- ↑ CiA 445: Device profile for RFID reader
- ↑ Quelle für den Download des freien EDS-checkers CANchkEDS
- ↑ Quelle für den Download des freien Editors CANeds
Weblinks
- Webseite der CiA
- Geschichte der Entwicklung von CAN bis CANopen
- CANopen-Seite im CAN-wiki (englisch)
- Wiki der CANopen-Lift Community
- Einführung in CANopen (englisch)
- Einführung in CANopen (deutsch)
- CANopen Geräteprofil für Sensoren und Regler (DS-404)
- Verwendung der CANopen-Identifier (englisch)
- Suchergebnis zu dem ESPRIT Project ASPIC
Wikimedia Foundation.