Selektives PDO-Mapping

Selektives PDO-Mapping

Durch selektives PDO Mapping kann ein Anwender seinen eigenen zyklischen Datenaustausch konfigurieren. Dazu wird auf einer Seite der Klemme ein „vollständiger“ Satz Prozessdaten angelegt. Auf der anderen Seite kann nun ein Teilbereich davon definiert werden, der zyklisch ausgelesen werden soll. Das ist das sog. selektive PDO-Mapping.

Dabei wird das voreingestellte PDO Assignment und Mapping entfernt und der Benutzer muss sich ein eigenes PDO Assignment, sowie Mapping erstellen. Dazu ist es wichtig den Aufbau eines PDO Assignment bzw Mappings zu kennen.

Grundlegend (Standard) gibt es zwei CoE Objekte 0x1C12 „Rx PDO Assign“ und 0x1C13 „Tx PDO Assign“ in denen jeweils die Zuweisungen für den Dateneingang (RxPDO) und den Datenausgang (TxPDO) entsprechend für die Sekundär- und Primärseite definiert sind. In diesen ist ein Verweis auf die CoE Objekte 0x1608 „IO RxPDO Map“ und 0x1A08 „IO TxPDO Map“ in denen das Mapping der In- und Outputs definiert ist. Alle vier dieser CoE Objekte 0x1C12 und 0x1C13 sowie 0x1608 und 0x1A08 sind mit dem RW Flag versehen (RW = read/write). Die beiden Mapping Objekte 0x1608 und 0x1A08 wiederum verweisen initial auf die CoE Objekte 0x7000 „PD Outputs“ und 0x6000 „PD Inputs“ (Process Data Inputs/ Outputs) in denen Prozessdaten (-strukturen) abgelegt werden. „Initial“ bedeutet hierbei die automatische Konfiguration seitens TwinCAT, wenn der Anwender auf der Primär- oder Sekundärseite Ein- oder Ausgangsdaten neu hinzufügt. Das kann auch in den Karteireiter [Startup] nachgesehen werden. Hier werden alle Verknüpfungen der Objektverweise beim Übergang von PREOP zu SAFEOP (P → S) erzeugt. Die beiden „finalen“ CoE Objekte 0x6000 und 0x7000 sind nur „RO“ (read only), da Geräteintern die Kopiervorgänge von Ein- und Ausgangsdaten im OP Zustand durchgeführt werden.

Selektives PDO-Mapping 1:
Grundlegendes Mapping einer 1 Byte Variable über 0x1C12 bis 0x7000 „PD Outputs“

Übersicht der (initial) Verknüpften Objekte:

Selektives PDO-Mapping 2:

Mapping von CoE Objekten

0x1608 verweist auf 0x7000 und 0x1A08 auf 0x6000. Die Objekte 0x7000 und 0x6000 sind jeweils auf der anderen Seite der Klemme gespiegelt ansprechbar.

Falls beispielsweise auf der Primärseite ein Objekt 0x7000:0E PD Outputs existiert, so sollte für einen Datenaustausch ein Objekt 0x6000:0E PD Inputs auf der Sekundärseite angelegt sein.

Vorgehensweise unter TwinCAT

Um sich ein selektives Mapping zu erstellen, sollte zunächst die vorhandene PDO Konfiguration mit seinen Zuweisungen deaktiviert werden, indem im Karteireiter „Process Data“ der Klemme, sowohl bei den Out- als auch Inputs und unter Downloads sämtliche Häkchen entfernt werden.

Selektives PDO-Mapping 3:
Prozessdaten beim Selektiven Mapping

Dadurch werden auch die vorhandenen Einträge im Karteireiter Startup gelöscht und die Klemme hat kein Prozessabbild mehr. Dieses wird wie folgt beschrieben in zwei Schritten wieder neu definiert:

Im Karteireiter Startup der Klemme müssen dazu neue Einträge angelegt werden. Dazu ist in diesem Karteireiter unten rechts „New…“ zu betätigen.

Selektives PDO-Mapping 4:
Anlegen neuer Ausgangsvariablen (in diesem Beispiel: Primärseite der EL6695)

Als Beispiel sollen in diesem Fall insgesamt vier Output Variablen der Größen 8, 16, 32 und wieder 8 angelegt werden [empfohlene Reihenfolge der Vorgehensweise]:

Dazu wird wahlweise (aus dem Bereich 0x1600..0x161F) in diesem Beispiel ein 0x1614 Objekt folgendermaßen eingerichtet (das Häkchen für „Complete Access“ ist zu setzen; als Kommentar z.B. „IO RxPDO-Map“ eintragen):

Selektives PDO-Mapping 5:
Einrichten des 0x1614 Objektes

Bedeutung der Eintragsdaten:

04 00

Subindexanzahl

08 01 00 70

Objekt 7000 Index 1 Länge 8

10 02 00 70

Objekt 7000 Index 2 Länge 16

20 03 00 70

Objekt 7000 Index 3 Länge 32

08 04 00 70

Objekt 7000 Index 4 Länge 8

Dies kann z.B. der Datenstruktur eines Programmobjektes oder Struktur repräsentieren. Um diesbezüglich eine Strukturvariable mit einem PDO der EL6695 verknüpfen zu können, ist sie unter TC3 zuvor in einen globalen Datentypen umzuwandeln:

Selektives PDO-Mapping 6:
Konvertierung in einen globalen Datentyp

Im zweiten Schritt sind über den Dialog „Edit CANopen Startup Entry“ nun folgende Einträge gemacht:

Selektives PDO-Mapping 7:
Anlegen des Objektes 0x1C12 für RxPDO

Der anzulegende CoE Startup Eintrag ist also der Index 0x1C12 mit dem Subindex 0 (Subindex für den Anfang des Objektes). Das Häkchen bei „Complete Acess“ ist gesetzt, damit die eingetragenen Werte nicht als ein Datentyp WORD, DWORD etc. interpretiert werden. Die Zuweisungen (Assignments) sollen beim Übergang von PREOP nach SAFEOP erfolgen; dazu bleibt ausschließlich das Häkchen „P → S“ bei Transition gesetzt (oder ist zu setzen). Unter „Comment“ kann ein erklärender Kommentar hinzugefügt werden, der zukünftig in der CoE Übersicht als Name des Objekts dargestellt sein wird. Der Inhalt des CoE Objekts wird in „Data (hexbin)“ angegeben.

Die ersten beiden Blöcke definieren die Anzahl der Subindexe des Objekts (Hi-/Lobyte getauscht: 01 00 → Anzahl Subindex = 1). Darauf folgt der Inhalt des ersten Subindex 01 mit 14 16 → 0x1614.

Dies ist nun einer der oben beschrieben Verweise in diesem Fall auf das bereits erstellte „RxPDO Map“ Objekt (0x1614).

Im Karteireiter [Startup] müsste nun folgendes zu sehen sein:

Selektives PDO-Mapping 8:
Neu PDO-Map und Zuweisungs- Objekte auf der Primärseite

Entscheidend ist, dass das „RxPDO assign“ über Objekt 0x1C12 stets am Ende der Liste von RxPDO-Map Einträgen steht. Es kann auch mehrere Verweise enthalten (je nach Bedarf). Ein Datensatz würde dann z.B. so aussehen: 06 00 03 16 1A 16 1E 16 08 16 04 16 ..usw.

Durch nachfolgende Aktionen werden die angelegten Variablen nun in der Konfiguration angezeigt:

  1. Auswahl im Menü: [TwinCAT] → [Reload Devices]
  2. „Load PDO info from device“ im Karteireiter „Process Data“ der Klemme
  3. Anzeigen der CoE Online Objekte mittels „Update List“
Selektives PDO-Mapping 9:
Neu angelegtes Prozessdaten:Objekt 0x1608
Selektives PDO-Mapping 10:
Darstellung [CoE Online] der selektiv angelegten Variablen mit den entsprechenden Verweisen

Erstellen der selektiven PDO Variablen

Auf der gegenüberliegenden Seite der bridge-Klemme EL6695, in diesem Fall die Sekundärseite, können nun wahlweise bestimmte Variablen Auszugsweise „gespiegelt“ werden. Dazu sind in dem „Solution Explorer“ die entsprechenden gewünschten Variablen hinzuzufügen.

In diesem Beispiel soll von der vorhandenen Struktur auf der Primärseite mit einer 1-2-4-1 Byte Struktur nur der 2‑Byte und nur der 4‑Byte Variablentyp „WORD“ und „DWORD“ als Auszug der gesamten Prozessdaten, wie gezeigt zur Verfügung gestellt werden:

Selektives PDO-Mapping 11:
Hinzufügen selektiver PDO-Variablen

Wie in der Abbildung gezeigt ist auch mit der DWORD-Variablen zu verfahren.

Danach ist wie folgt der Startup-Eintrag wie folgt zu ergänzen, damit die Subindex-Werte 02 für den WORD-Typ und 03 für den DWORD-Typ angepasst werden:

Selektives PDO-Mapping 12:
Startup Eintrag 0x1A08 zum Überschreiben (zur Korrektur der Verweisindex 01 → 02 und 02 → 03)

Bedeutung der Eintragsdaten:

02 00

Subindexanzahl

10 02 00 60

Objekt 6000 Index 2 Länge 16

20 03 00 60

Objekt 6000 Index 3 Länge 32

Nach erneuter „Reload“ Anweisung und Aktivierung der Konfiguration stehen das selektive PDO-Mapping nun dem Anwender zur Verfügung und kann von den PLC Programmen verwendet werden. Zu beachten ist allerdings, dass Aufgrund Klemmenspezifischer Systemeigenschaften für den Echtzeitdatenaustausch ein speziellen Puffermechanismus verwendet wird, so dass die Output-Variablen immer mit einem Byte am Anfang und einem Byte am Ende konfiguriert werden müssen, den sog. Start/Stop-Bytes. Verknüpfungen zu PLC Variablen oder Ausgängen und damit eine Daten-Nutzung sind für diese „fillbyte“-Variablen jedoch nicht nötig.

Beim Einsatz der EL6695 unter anderen EtherCAT-Mastern sind die Konfigurationsschritte entsprechend anzupassen.

Erläuterung zur Start/Stop Byte Verwendung

Beckhoff empfiehlt generell, beim selektiven Mapping in den Output-Daten ein Start-Byte am Anfang und ein Stop-Byte am Ende anzulegen. Der technische Grund liegt in der internen Speicherverwaltung der Prozessdaten. Der Zugriff auf das letzte Byte bewirkt dort eine interne Umschaltung auf den nächsten EtherCAT Puffer der Klemme; ab dann kann aus diesem Output-Paket nicht mehr gelesen werden. Wenn die Variablen selektiv „von oben nach unten“ aus dem Output-Buffer gelesen werden, ist dies kein Problem, wenn hingegen (wie vermutlich in den meisten Anwendungen der Fall) nacheinander aus verschiedenen Bereichen gelesen wird und dabei auch das letzte Byte erfasst werden soll, ist von da an der Puffer jedoch gesperrt und es können keine weiteren Daten mehr geholt werden. Ein zusätzliches „leeres“ Byte nach den eigentlichen Prozessdaten verhindert sodann eine unbeabsichtigte Umschaltung des Puffers.

Diese Abbildung zeigt dass in vielen Zugriffsfällen das Start/Stop-Byte gar nicht nötig wäre:

Selektives PDO-Mapping 13:
Start-/ Stop Byte Verwendung
Selektives PDO-Mapping 14:

Einfügen von Start und Stop-Byte

Damit bei der flexiblen Nutzung der EL6695 während der Lebensdauer der Applikation und eventueller Konfigurationsänderung keine unerwarteten Überraschungen auftreten, empfiehlt Beckhoff generell die Output-Variablen immer mit einem Byte am Anfang und einem Byte am Ende zu konfigurieren.

Selektives PDO-Mapping 15:

Verwendung der Beispielprogramme

Dieses Dokument enthält exemplarische Anwendungen unserer Produkte für bestimmte Einsatzbereiche. Die hier dargestellten Anwendungshinweise beruhen auf den typischen Eigenschaften unserer Produkte und haben ausschließlich Beispielcharakter. Die mit diesem Dokument vermittelten Hinweise beziehen sich ausdrücklich nicht auf spezifische Anwendungsfälle, daher liegt es in der Verantwortung des Anwenders zu prüfen und zu entscheiden, ob das Produkt für den Einsatz in einem bestimmten Anwendungsbereich geeignet ist. Wir übernehmen keine Gewährleistung, dass der in diesem Dokument enthaltene Quellcode vollständig und richtig ist. Wir behalten uns jederzeit eine Änderung der Inhalte dieses Dokuments vor und übernehmen keine Haftung für Irrtümer und fehlenden Angaben.

→ Beispielprogramme Selektives Mapping auf Anfrage:

Beispielprogramm

Beispielprogramm