Prozessdatenobjekte (PDO)

Bei vielen Feldbussystemen wird ständig das gesamte Prozessabbild übertragen - meist mehr oder weniger zyklisch. CANopen ist nicht auf dieses Kommunikationsprinzip beschränkt, da bei CANopen die Prozessdaten nach dem Produzenten/Konsumenten-Modell übertragen werden. Dabei sendet ein Teilnehmer seine Prozessdaten von sich aus (Produzent), alle anderen Teilnehmer hören mit und entscheiden anhand eines CAN-Identifier, ob sie sich für dieses Telegramm interessieren und verarbeiten es entsprechend (Konsument).

Bei CANopen werden die Prozessdaten in Segmente zu maximal 8 Byte aufgeteilt. Diese Segmente heißen Prozessdatenobjekte (PDOs). Die Prozessdatenobjekte (PDOs) entsprechen jeweils einem CAN-Telegramm und werden durch einen spezifischen CAN-Identifier zugeordnet und in ihrer Priorität bestimmt.

Die Prozessdatenobjekte (PDOs) werden in Empfangs-PDOs (RxPDOs) und Sende-PDOs (TxPDOs) unterteilt, wobei die Bezeichnung jeweils aus Sicht der Teilnehmer erfolgt. Ein Teilnehmer sendet seine Eingangsdaten mit TxPDOs, und empfängt die Ausgangsdaten in den RxPDOs.
Diese Bezeichnung wird in TwinCAT beibehalten.

Kommunikationsparameter

Die Prozessdatenobjekte (PDOs) können je nach Anforderung mit unterschiedlichen Kommunikationsparametern versehen werden. Wie alle CANopen-Parameter stehen auch diese im Objektverzeichnis des Gerätes. Auf die Kommunikationsparameter kann über Servicedatenobjekte (SDOs) zugegriffen werden.

Die Parameter für die Empfangs-PDOs stehen bei Index 0x1400 (RxPDO1) bis Index 0x15FF (RxPDO512), damit können bis zu 512 RxPDOs vorhanden sein. Entsprechend finden sich die Einträge für die Sende-PDOs bei Index 0x1800 (TxPDO1) bis Index 0x19FF (TxPDO512).

Für jedes vorhandene Prozessdatenobjekt (PDO) ist ein zugehöriges Kommunikationsparameter-Objekt vorhanden. TwinCAT ordnet die eingestellten Parameter automatisch den jeweiligen Objektverzeichniseinträgen zu. Im Folgenden werden diese Einträge samt ihrer Bedeutung für das Kommunikationsverhalten der Prozessdaten erläutert.

CAN-Identifier

Der wichtigste Kommunikationsparameter für Prozessdatenobjekte (PDOs) ist der CAN-Identifier (auch Communication Object Identifier, COB-ID genannt). Der CAN-Identifier dient zur Identifizierung der CAN-Telegramme und bestimmt deren Priorität beim Buszugriff. Für jedes CAN-Telegramm darf es nur einen Sender (Produzenten) geben, da CAN jedoch alle Nachrichten im Broadcast-Verfahren sendet kann ein Telegramm wie beschrieben von beliebig vielen Teilnehmern empfangen werden (Konsumenten). Ein Teilnehmer kann also seine Eingangsinformation mehreren Teilnehmern gleichzeitig zur Verfügung stellen - auch ohne Weiterleitung durch einen logischen Master.

Der CAN-Identifier steht in Subindex 1 des Kommunikationsparametersatzes. Er ist als 32-Bit Wert kodiert, wobei die niederwertigsten 11 Bits (Bit 0...10) den eigentlichen CAN-Identifier enthalten. Die Datenbreite des Objektes von 32 Bit erlaubt auch den Eintrag von 29 Bit CAN-Identifiern. Der Einsatz der 29Bit-Variante bleibt auf Sonderanwendungen beschränkt - und wird daher auch von den Beckhoff CANopen-Geräten nicht unterstützt wird. Über das höchstwertige Bit (Bit 31) lässt sich das Prozessdatenobjekt aktivieren bzw. abschalten.

PDO-Linking

Standardmäßig kommunizieren alle Teilnehmer (Slaves) mit einer Zentrale (Master). Kein Slave hört wegen seinen Voreinstellungen auf die Prozessdatenobjekte (PDOs) und damit auf die CAN-Identifier eines anderen Slaves.

Standardkommunikation zwischen mehreren Slaves und einem Master:

Prozessdatenobjekte (PDO) 1:

Sollen die Prozessdatenobjekte (SDOs) direkt zwischen den Teilnehmern ohne Master ausgetauscht werden, so müssen die CAN-Identifier entsprechend angepasst werden. Die TxPDO-Identifier des Produzenten müssen mit dem RxPDO-Identifier des Konsumenten übereinstimmen. Dieses Verfahren nennt man PDO-Linking. Es ermöglicht beispielsweise den einfachen Aufbau von elektronischen Getrieben, bei denen mehrere Slave-Achsen gleichzeitig auf den Ist-Wert im TxPDO der Master-Achse hören.

Kommunikation ohne Master mit PDO-Linking:

Prozessdatenobjekte (PDO) 2:

PDO-Übertragungsarten

CANopen bietet folgende Möglichkeiten die Prozessdatenobjekte (PDOs) zu übertragen:

PDO-Übertragungsarten: Parametrierung

Die PDO-Übertragungsart (Transmission Type) legt fest, wie die Übertragung der Prozessdatenobjekte (PDOs) ausgelöst wird bzw. wie empfangene Prozessdatenobjekte (PDOs) behandelt werden:

Übertragungsart

Zyklisch

Azyklisch

Synchron

Asynchron

0

 

X

X

 

1-240

X

 

X

 

254, 255

 

 

 

X

Die Übertragungsart wird für RxPDOs in den Objekten 0x1400ff, Subindex 2, und für TxPDOs in den Objekten 0x1800ff, Subindex 2 parametriert. In TwinCAT wird die PDO-Übertragungsart auf der Registerkarte PDO unter Transmission Type eingestellt (siehe: Registerkarte PDO).

PDO Mapping

Unter PDO-Mapping versteht man die Abbildung der Applikationsobjekte (Echtzeitdaten) aus dem Objektverzeichnis in die Prozessdatenobjekte. Die CANopen-Geräteprofile sehen für jeden Gerätetyp ein Default Mapping vor, das für die meisten Anwendungen passend ist. So bildet das Default Mapping für digitale E/A einfach die Ein- bzw. Ausgänge ihrer physikalischen Reihenfolge gemäß in die Sende- bzw. Empfangs-Prozessdatenobjekte ab.

Die Default-PDOs für Antriebe enthalten jeweils 2 Byte Steuer- bzw. Statuswort und Soll- bzw. Istwert für die betreffende Achse. 

Das aktuelle Mapping kann über entsprechende Einträge im Objektverzeichnis, die sogenannten Mapping-Tabellen, gelesen werden. An erster Stelle der Mapping Tabelle (Subindex 0) steht die Anzahl der gemappten Objekte, die im Anschluss aufgelistet sind. Die Tabellen befinden sich im Objektverzeichnis bei Index 0x1600 ff. für die RxPDOs bzw. 0x1A00ff für die TxPDOs.

Prozessdatenobjekte (PDO) 4:

Digitale und analoge Ein-/Ausgabebaugruppen: E/A-Anzahl auslesen

Die aktuelle Anzahl der digitalen und analogen Ein-/Ausgänge lässt sich durch Auslesen der entsprechenden Applikationsobjekte im Objektverzeichnis ermitteln bzw. verifizieren:

Parameter

Adresse Objektverzeichnis

Anzahl digitale Eingangsbytes

Index 0x6000, Subindex 0

Anzahl digitale Ausgangsbytes

Index 0x6200, Subindex 0

Anzahl analoge Eingänge

Index 0x6401, Subindex 0

Anzahl analoge Ausgänge

Index 0x6411, Subindex 0

Variables Mapping

In der Regel genügt die Default-Belegung der Prozessdatenobjekte (Default Mapping) bereits den Anforderungen. Für spezielle Anwendungsfälle kann die Belegung jedoch verändert werden: So unterstützen beispielsweise die Beckhoff CANopen Buskoppler das variable Mapping, bei dem die Applikationsobjekte (Ein- und Ausgangsdaten) frei den PDOs zugeordnet werden können. Hierzu müssen die Mapping-Tabellen konfiguriert werden: Ab CANopen Version 4 ist nur noch die folgende Vorgehensweise zulässig, die genau eingehalten werden muss:

  1. Zunächst PDO löschen (0x1400ff, bzw. 0x1800ff, Subindex 1, Bit 31 auf "1" setzen) 
  2. Subindex 0 im Mapping Parameter (0x1600ff bzw. 0x1A00ff) auf "0" setzen 
  3. Mapping Einträge (0x1600ff bzw. 0x1A00ff, SI 1..8) verändern 
  4. Subindex 0 im Mapping Parameter auf gültigen Wert setzen. Das Gerät überprüft dann die Einträge auf Konsistenz.
  5. PDO anlegen durch Eintragen d. Identifiers (0x1400ff bzw. 0x1800ff Subindex 1).

Dummy-Mapping

Ein weiteres Feature von CANopen ist das Mappen von Platzhaltern (Dummy-Einträgen). Als Platzhalter dienen die im Objektverzeichnis hinterlegten Datentyp-Einträge, die ja selbst nicht mit Daten versehen sind. Sind solche Einträge in der Mapping-Tabelle enthalten, so werden die entsprechenden Daten vom Gerät nicht ausgewertet. Auf diese Art können beispielsweise mehrere Antriebe über ein einziges CAN-Telegramm mit neuen Sollwerten versorgt werden oder Ausgänge auf mehreren Knoten auch im ereignisgesteuerten Modus gleichzeitig gesetzt werden.