ELEKTRONIK Nr. 10/1997 vom 13. 5. 1997 Seite: 96 - 104

Automatisieren / CAN-Bus
Jürgen Förster, Holger Zeltwanger
Das offene CAN-Protokoll

Hinweise zur Implementierung von CANopen

CANopen ist die europäische, "offene" Lösung des Controller Area Network. Daneben existieren noch die US-amerikanischen, "offenen", CAN-basierenden höheren Protokollschichten DeviceNet und Smart Distributed System (SDS). Was bei der Implementierung von CANopen zu beachten ist, erläutert der folgende Beitrag.

CANopen ist eine standardisierte Anwendung des CAN Application Layer (CAL). Beide Spezifikationen sind Entwicklungen von Mitgliedern der internationalen Anwender- und Herstellervereinigung CAN in Automation (CiA) und stehen lizenzfrei zur Implementierung zur Verfügung. Das CANopen-Kommunikationsprofil ist in dem CiA-Draft-Standard 301 beschrieben und wird durch verschiedene Geräteprofile, zum Beispiel für E/A-Module, ergänzt. Bei der Implementierung müssen alle verbindlichen Funktionen realisiert werden. Falls optionale Funktionen implementiert werden sollen, müssen diese so gehalten sein, wie sie in der CANopen-Spezifikation beschrieben sind. Nur bei den herstellerspezifischen Funktionen kann der Implementierer seine Kreativität frei entfalten. CANopen setzt voraus, daß CAN-Transceiver und CAN-Protokoll-Controller entprechend ISO 11898 in der Hardware des Gerätes vorhanden sind.
CANopen - festgeschriebener minimaler Funktionsumfang
Die CANopen-Spezifikation beschreibt einen minimalen Funktionsumfang, den ein CANopen-Gerät erfüllen muß. Solche "Minimum Capability Devices" sind zwar als Standardprodukt nicht sonderlich sinnvoll, aber um eine "schlanke" Implementierung für spezielle Applikationen zu ermöglichen, sind viele Funktionen als optional eingestuft.
Jedes CANopen-Gerät muß das CANopen-Objektverzeichnis (Tabelle 1) kennen. In diesem Verzeichnis, das denen von Profibus und Interbus-S sehr ähnlich ist, sind alle für dieses Gerät relevanten CANopen-Objekte eingetragen. Lesende und schreibende Zugriffe erfolgen mit einem Service Data Object (SDO). SDOs werden für Änderungen im Objektverzeichnis und für Statusabfragen verwendet. Jedes CANopen-Gerät verfügt über mindestens ein SDO, dem zwei CAN-Identifier zugeordnet sind. SDOs nutzen das "Multiplexed Domain Transfer Protocol" der CAL-Spezifikation. Mit ihm lassen sich Daten beliebiger Länge übertragen, wobei die Daten gegebenenfalls auf mehrere CAN-Nachrichten aufgeteilt (segmentiert) werden. In der ersten CAN-Nachricht des SDO sind vier der acht Byte mit Protokollinformationen belegt. Für Zugriffe auf Objektverzeichniseinträge mit bis zu 4 Byte Länge genügt folglich eine einzige CAN-Nachricht (expedited Transfer). Bei Datenlängen größer 4 Byte erfolgt eine segmentierte Übertragung, bei der alle auf die erste CAN-Nachricht folgenden Segmente des SDO jeweils 7 Byte Nutzdaten enthalten können. Das letzte Segment enthält eine Ende-Kennung. Ein SDO wird bestätigt übertragen, das heißt, der Empfang jedes Segments wird durch eine entsprechende CAN-Nachricht quittiert.
Für die Übertragung von Prozeßdaten steht der Mechanismus des Process Data Object (PDO) zur Verfügung. Jedes Prozeßdaten produzierende oder konsumierende CANopen-Gerät verfügt deshalb über mindestens ein PDO. PDOs verwenden das "Stored Event Protocol" des CAN Application Layer. Dabei stehen dem Anwender alle acht Datenbyte eines CAN-Telegramms zur Übertragung von Anwendungsdaten zur Verfügung. PDOs werden unbestätigt übertragen, da die CAN-Verbindungsschicht die fehlerfreie Übertragung eines CAN-Frames sicherstellt. Außerdem sind bestätigte Dienste in zeitkritischen Applikationen nicht wünschenswert, weil sie die Busbandbreite signifikant reduzieren. PDOs sind also CAN "pur", ohne den geringsten Protokoll-Overhead durch CAL/CANopen. Die Dateninhalte der PDOs sind in den entsprechenden CANopen-Geräteprofilen spezifiziert (siehe Kasten).
In der CANopen-Spezifikation ist ein Basis-Set von Kommunikationsbeziehungen default-mäßig voreingestellt (Pre-Defined Master/Slave Connection Set). Die Zuordnung der CAN-Identifier erfolgt automatisch mit Hilfe der vom Systemintegrator eingestellten Knotennummer und der in der CANopen-Spezifikation definierten Voreinstellung der Objekte (Tabelle 2). PDOs haben eine höhere Priorität als SDOs. Das höchstpriore Objekt ist für das Netzwerk-Management (NMT) vorgesehen, mit ihm wird das CANopen-Netzwerk gestartet oder gestoppt. Die anderen definierten Objekte, zum Beispiel Emergency Message, Sync-Nachricht sowie Zeitstempel-Telegramm, sind optional zu implementieren. Die Verwendung dieser voreingestellten Kommunikationsbeziehungen setzt nicht nur auf der Netzwerk-Management-Seite, sondern auch auf der Seite der Prozeßdaten (PDOs) einen Master voraus, da alle PDOs unterschiedliche CAN-Identifier verwenden, also per Definition keinen Kommunikationspartner haben. Das paßt jedoch gut zu kleinen Applikationen, wo beispielsweise auf einem zentralen PC sowohl das Netzwerk-Management als auch eine Steuerungsapplikation zusammengefaßt sind. Möchte der Anwender hingegen flexiblere Kommunikationsbeziehungen für seine Prozeßdaten definieren, so muß er eins der weiter unten beschriebenen optionalen Verfahren der Identifier-Zuordnung implementieren.
Geräte mit minimalem Funktionsumfang erreichen nach dem Einschalten der Versorgungsspannung automatisch den Zustand "Initialization" und danach den Zustand "Pre-operational". In diesem Zustand kann das Gerät nur über SDOs mit dem für das Netzwerkmanagement zuständigen CANopen-Gerät (NMT-Master) kommunizieren. Erst nachdem der NMT-Master eine entsprechende CAN-Nachricht (NMT Start Remote Node) gesendet hat, geht das Minimum Capability Device (NMT-Slave) in den Zustand "Operational" und die eigentliche Kommunikation, das heißt die Übertragung von PDOs, kann beginnen. Jedes CANopen-Gerät muß alle in Bild 1 gezeigten Zustände sowie die zugehörigen Services zum Erreichen dieser Zustände beherrschen. Im Zustand "Prepared" nimmt das Gerät nicht mehr an der PDO-Kommunikation teil. Dieser Zustand kann für anwendungsspezifische Belange genutzt werden. Das konkrete Verhalten in diesem Zustand wird in den entsprechenden CANopen-Geräteprofilen festgelegt.
Die physikalische Busschnittstelle von CANopen-Geräten entspricht ISO 11898. Darüber hinaus sind mehrere Baudraten und zugehörige Bit-Timing-Einstellungen empfohlen (Tabelle 3). Jedes CANopen-Gerät muß aber eine 20-kBit/s-Übertragung unterstützen. Die Anschlußbelegung sowie die Bezeichnung für verschiedene Steckverbinder sind ebenfalls definiert. Im Prinzip läßt die CANopen-Spezifikation dem Systemintegrator weitgehende Freiheiten bei der Festlegung der mechanischen und elektromechanischen Komponenten, ohne die Interoperabilität zu gefährden.
Vordefinierte Objekte des CANopen
Zu den vordefinierten CANopen-Objekten zählt in erster Linie das Sync-Object, welches zur Synchronisation der Netzwerk-Teilnehmer verwendet werden kann. Vor allem bei Antriebsanwendungen ist diese als "CMS Basic Variable" entsprechend dem CAL-Standard implementierte Nachricht von Bedeutung und sollte deshalb in allen CANopen-Geräten unterstützt werden, die sich mit Antrieben synchronisieren müssen. Das zyklisch gesendete Sync-Telegramm veranlaßt die CANopen-Geräte, die diese Funktion unterstützen, die Istwerte der Eingänge quasi zeitgleich abzuspeichern. Diese werden in dem folgenden Zeitfenster (Bild 2) an alle interessierten Teilnehmer übertragen. Im anschließenden Zeitfenster senden die CANopen-Geräte die Ausgangswerte an die Aktuatoren. Diese Werte werden aber erst beim Empfang der nächsten Sync-Nachricht gültig. In den beiden spezifizierten Zeitfenstern und dem eventuell noch verbleibenden Zeitfenster innerhalb eines Kommunikationszyklus können asynchrone PDOs und SDOs übertragen werden, die in der Priorität niedriger angesiedelt sind.
Das ebenfalls optionale "Time Stamp Object" (CMS Stored Event nach CAL) dient als eine allgemeine Zeitbasis und eignet sich insbesondere zur zeitlichen Abstimmung in Datenerfassungssystemen.
Die dritte vordefinierte Nachricht ist das "Emergency Object". Die Implementierung dieses optionalen Objektes ist für alle Geräte sehr zu empfehlen, die in der Anwendung eine wichtige Funktion haben. Außerdem unterstützen einige CANopen-Geräteprofile dieses Objekt, um fatale Gerätefehler den anderen Teilnehmern mit hoher Priorität mitteilen zu können. Mit der Emergency-Nachricht signalisiert das Gerät einen internen Fehler.
Die optionale Überwachung der Geräte
Das CANopen-Kommunikationsinterface geht grundsätzlich davon aus, daß jedes angeschlossene Gerät korrekt funktioniert und in der Lage ist, mit den anderen Teilnehmern Nachrichten auszutauschen. Es kann jedoch vorkommen, daß ein Gerät nicht mehr einwandfrei arbeitet und in den Zustand "Disconnected" geht. Um dies zu erkennen, sollte der NMT-Master im CANopen-Netzwerk eine Datenbasis verwalten, in der alle NMT-Slaves eingetragen sind, die das sogenannte "Node/Life Guarding" unterstützen. Diese, bei asynchronem Nachrichtenaustausch dringend zu empfehlende Überwachung beginnt mit dem ersten Remote-Transmit-Request, nachdem der Guarding-Identifier vom NMT-Master übergeben wurde.
Bei der zyklischen Knotenüberwachung (Node Guarding) befragt der NMT-Master seine NMT-Slaves regelmäßig nach ihrem Zustand. Die am Überwachungsprozeß teilnehmenden NMT-Slaves überprüfen intern, ob das "Node Guarding" im definierten Zeittakt erfolgt (Life Guarding). Dies ist notwendig, um festzustellen, ob der NMT-Master noch "lebt".
Die in den verschiedenen standardisierten oder herstellerspezifischen CANopen-Geräteprofilen definierten PDOs enthalten in aller Regel mehrere Anwendungsobjekte, beispielsweise einen analogen Eingabewert, acht digitale Eingabewerte und acht digitale Ausgabewerte. Diese Belegung der PDOs mit standardisierten Objekten wird als Default-PDO-Mapping bezeichnet. Sollen diese PDOs vom Systemintegrator änderbar sein, oder soll die Definition eigener, für die Anwendung optimierter PDOs zulässig sein, so muß das Gerät variables PDO-Mapping unterstützen. Für einfache Geräte ist dies nicht erforderlich. Dann sind die PDO-Mapping-Einträge im Objektverzeichnis "read-only".
Die möglichen Arten des "Hochfahrens"
Die "natürliche" Form des Boot-Up in einem CANopen-Netwerk ist sicherlich die des Minimum-Boot-Up. Der aufwendigere CAL-Boot-Up stammt aus einer Zeit, als das mächtige Instrument des Objektverzeichnisses zur Parametrierung noch nicht zur Verfügung stand. In einigen Anwendungen wird ein erweiterter Boot-Up entsprechend der CAL-Spezifikation jedoch gefordert. Dies ist in allen CAL-Systemen ohne CANopen-Profil-Erweiterung der Fall. Weiterhin trifft das auch bei CANopen-Applikationen zu, die die Distributor-Funktion nutzen wollen. Der Distributor (DBT) teilt beim Initialisieren des Netzwerkes dynamisch die CAN-Identifier zu.
Ebenfalls optional ist die Zuordnung von CAN-Identifiern via SDO-Nachrichten. Diese Zuteilung erfolgt im Zustand "Pre-Operational". Der Konfigurations-Master hat dann Zugriff auf die Objektverzeichnisse aller CANopen-Geräte. Diese optionale Funktion ist zum Beispiel bei variablem PDO-Mapping nötig. Auf dem Markt sind inzwischen verschiedene Konfigurations-Tools zum Einstellen von PDO-Mappings und PDO-Identifiern verfügbar.
Das Elektronische Datenblatt
Das in der CANopen-Spezifikation im Anhang beschriebene "Electronic Data Sheet (EDS)" sollte vom Gerätehersteller unterstützt werden, damit CANopen-Konfigurationswerkzeuge ohne unnötigen Aufwand alle Informationen über ein Gerät einlesen können. Ein EDS ist nur ein Template. Wenn alle CANopen-Informationen (d.h. das Objektverzeichnis) in das EDS eingetragen sind, spricht man vom Device Description File (DCF). Das DCF enthält nicht nur die Objekte, sondern auch deren Werte. Es ist also die Inkarnation des EDS. Im DCF sind auch die Werte für Baudraten und Geräte-Identifizierung hinterlegt. Falls ein Hersteller kein EDS zur Verfügung stellt, kann der Systemintegrator auch ein Default-EDS verwenden, welches er allerdings selbst ausfüllen muß. hap

Literatur
[1] CAN Application Layer Spezifikation (CiA DS-201 bis DS-207), Version 1.1. Erlangen, Februar 1996.
[2] CANopen Communication Profile (CiA DS-301), Version 3.0. Erlangen, Oktober 1996.
[3] CANopen Device Profile for I/O Modules (CiA DSP-401), Version 1.4. Erlangen, Dezember 1996.
[4] Proceedings 1st, 2nd, 3rd international CAN Conference. Erlangen, September 1994, Oktober 1995, Oktober 1996.
[5] Etschberger, K.; Zeltwanger, H.: Von der Vielfalt zur Einheit - Kommunikations- und Geräteprofile für CAN. Elektronik 1996, H. 8, S. 100 bis 106.
[6] Zeltwanger, H.: Der "richtige" Einstieg in die CAN-Vernetzung. Elektronik 1997, H. 3, S. 48 bis 51.

Holger Zeltwanger initiierte 1992 die Gründung der internationalen Anwender- und Herstellervereinigung "CAN in Automation (CiA)", deren Geschäfte er seitdem als Vorstandsmitglied führt.

Dipl.-Ing. Jürgen Förster studierte Elektrotechnik mit der Fachrichtung Informationsverarbeitung an der Fachhochschule Bielefeld.

Index (hex) Objekt
0000 nicht belegt
0001-001F Statische Daten-Typen
0020-003F Komplexe Daten-Typen
0040-005F Herstellerspezifische Daten-Typen
0060-007F Geräteprofilspezifische Daten-Typen (statisch)
0080-009F Geräteprofilspezifische Daten-Typen (komplex)
00A0-0FFF Reserviert für anderweitige Nutzung
1000-1FFF Kommunikationsprofile
2000-5FFF Herstellerspezifische Profile
6000-9FFF Standardisierte Geräteprofile
A000-FFFF Reserviert für anderweitige Nutzung

Tabelle 1. Das CANopen-Objektverzeichnis: wichtigster Teil der jeweiligen Geräteprofile
Broadcast-Objekte des "Pre-defined Master/Slave Connection Set"
Objekt Funktionscode (binär) resultierende COB-ID Kommunikations-Parameter an Index CMS-Prioritäten-Gruppe

NMT 0000 0 - 0
SYNC 0001 128 (1005h) 0
TIME STAMP 0010 256 - 1
Peer-to-Peer-Objekte des "Pre-defined Master/Slave Connection Set"
Objekt Funktionscode (binär) resultierende COB-IDs Kommunikations-Parameter an Index CMS-Prioritäten-Gruppe
EMERGENCY 0001 129-255 - 0 , 1
PDO1 (tx) 0011 385-511 1800h 1 , 2
PDO1 (rx) 0100 513-639 1400h 2
PDO2 (tx) 0101 641-767 1801h 2 , 3
PDO2 (rx) 0110 769-895 1401h 3 , 4
SDO (tx) 1011 1409-1535 6
SDO (rx) 1100 1537-1663 6 , 7
Nodeguard 1110 1793-1919 (100Eh) -
Tabelle 2. Die automatische Zuordnung der CAN-Identifier
Bitrate Buslänge Nominelle Bit-Zeit tb Anzahl der Zeiteinheiten pro Bit Länge der Zeiteinheit tq Plazierung des Sample-Punktes
1 MBit/s 25 m 1 æs 8 125 ns 6 tq (750 ns)
800 kBit/s 50m 1,25 æs 10 125 ns 8 tq (1 æs)
500 kBit/s 100 m 2 æs 16 125 ns 14 tq (1,75 æs)
250 kBit/s 250 m 4 æs 16 250 ns 14 tq (3,5 æs)
125 kBit/s 500 m 8 æs 16 500 ns 14 tq (7 æs)
50 kBit/s 1000 m 20 æs 16 1,25 æs 14 tq (17,5 æs)
20 kBit/s 2500 m 50 æs 16 3,125 æs 14 tq (43,75 æs)
10 kBit/s 5000 m 100 æs 16 6,25 æs 14 tq (87,5 æs)

Tabelle 3. Empfohlene Baudraten und Bit-Zeitbetrachtungen der physikalischen Busschnittstelle der CANopen-Geräte

 
CANopen-Geräteprofile
In Ergänzung zum CANopen-Kommunikationsprofil veröffentlicht die Anwender- und Herstellervereinigung CiA standardisierte CANopen-Geräteprofile. Derzeit sind mehrere Geräteprofile in der Spezifikation, und die ersten sind als Draft Standard Proposal bereits publiziert oder werden in Kürze verfügbar sein.
CiA DSP-401 Geräteprofil für E/A-Module Version 1.4 (12/96)
CiA DSP-402 Geräteprofil für Antriebe Version 1.0 (5/97)
CiA WD-404 Geräteprofil für Regler und Meßtechnik nicht veröffentlicht
CiA WD-405 Geräteprofil für IEC 1131 nicht veröffentlicht
CiA DSP-406 Geräteprofil für Encoder Version 1.0 (5/97)
CiA WD-407 Geräteprofil für Nahverkehr nicht veröffentlicht
DS = Draft Standard: veröffentlichte Spezifikation, die in der Regel ein Jahr lang nicht geändert und erweitert wird.
DSP = Draft Standard Proposal: veröffentlichter Spezifikationsentwurf, der noch nicht gänzlich fehlerfrei ist.
WD = Work Draft: CiA-intern zur Diskussion akzeptiertes Arbeitspapier.