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.
Übersicht der (initial) Verknüpften Objekte:
- RxPDO Assign: 0x1C12 → RxPDO Map 0x1608 → 0x7000 PD Outputs
- TxPDO Assign: 0x1C13 → TxPDO Map 0x1A08 → 0x6000 PD Inputs
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.
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.
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):
- Einzutragen ist: 04 00 08 01 00 70 10 02 00 70 20 03 00 70 08 04 00 70
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:
Im zweiten Schritt sind über den Dialog „Edit CANopen Startup Entry“ nun folgende Einträge gemacht:
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.
- Einzutragen ist: 01 00 14 16
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:
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:
- Auswahl im Menü: [TwinCAT] → [Reload Devices]
- „Load PDO info from device“ im Karteireiter „Process Data“ der Klemme
- Anzeigen der CoE Online Objekte mittels „Update List“
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:
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:
- Einzutragen ist: 02 00 10 02 00 60 20 03 00 60
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:
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. |
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. |