PDO-Mapping-Dialog für CANopen-Anzeigeterminals

(gilt nur für Terminals mit CANopen DS301 V4, z.B. UPT128, UPT320,  UPT320 "I/O", UPT800, aber nicht UPT515)

Dieses Dokument beschreibt ein Dialogfenster des "UPT-Programmiertools 2" zur Definition des Inhalts der Prozessdatentelegramme.

Hinweis: Nicht alle Terminals bieten diese Funktion - nur Geräte mit CANopen seit 2004 (siehe Feature Matrix) !

Inhalt

Siehe auch:



Grundsätzliches zum PDO-Mapping

Der Begriff PDO-Mapping bezeichnet das "Einblenden von Nutzdaten in Prozessdatentelegramme" (engl. Mapping, hier: "Zuordnung"). Bei CANopen können nur Objekte, die im Objektverzeichnis (OD, Object Dictionary) enthalten sind, und die das Attribut "PDO-Mappable" tragen, in ein Prozessdatentelegramm eingeblendet werden.

Da ein CAN-Telegramm maximal 8 Datenbytes enthalten kann, dürfen maximal 64 Datenbits in ein Prozessdatenobjekt eingeblendet ("gemappt") werden. Bei vielen Geräten sind dabei Byte-Grenzen einzuhalten, um den Rechenaufwand in erträglichen Grenzen zu halten. Die in den Terminals verwendete CANopen-Implementierung unterstützt im OD nur Datentypen, deren Größe durch 8 teilbar ist (Grund: Längenangabe intern in BYTES, nicht in BITS). Vermeiden Sie daher bis auf Weiteres den Datentyp "boolean" (der eigentlich aus einem Bit pro Wert bestehen müsste, was aber aus oben genannten Gründen nicht funktioniert).

Weitergehende Informationen finden Sie in CANopen-Dokumentation "CiA Draft Standard 301 : CANopen Application Layer and Communication Profile". Suchen Sie dort nach der Beschreibung von Objekt 1600h ("Receive PDO Mapping Parameter") bzw. Objekt 1800h ("Transmit PDO Mapping Parameter").

Bei den programmierbaren Terminals lassen sich maximal 8 verschiedene Objekte in ein Prozessdatentelegramm einblenden. Aus diesem Grund verfügt jeder PDO-Mapping-Parameter über 8 Subindizes unter denen jeweils ein 32-Bit-Wert mit der folgenden Bedeutung eingetragen werden kann:

Structure of PDO Mapping Entry
Bit 31..16  (16-Bit-Wert) Bit 15..8 (8 Bit) Bit 7..0 (8 Bit)
Index des gemappten Objektes Subindex des gemappten Objektes Objektlänge (in Bits)


Wie bei CANopen üblich, werden im weiter unten abgebildeten PDO-Mapping-Dialog Index und Subindex der gemappten (und map-baren) Objekte in hexadezimaler Form angezeigt. Statt des nachgestellten kleinen "h" wird hier allerdings aus technischen Gründen der Prefix "0x" verwendet.

zurück zur Übersicht


Der PDO-Mapping-Dialog des Programmiertools

Der folgende Dialog dient zur Definition des Inhalts der Prozessdatentelegramme des Terminals. Er kann auf der Registerkarte "Kanäle"..."PDO" geöffnet werden. Selektieren Sie in der Tabelle "Prozeßdaten-Kanäle" zunächst den Kanal, dessen Inhalt sie definieren wollen, und klicken anschließend auf den Button "Mapping..." .

Screenshot PDO Mapping Dialog

Am linken Rand des Fensters sehen Sie die bereits in das PDO-Telegramm eingeblendeten Objekte, definiert durch deren Indizes, Subindizes, und die Anzahl der gemappten Datenbits. Falls das Programmiertool offensichtliche Fehler in der Mapping-Tabelle feststellt, werden die entsprechenden Felder farblich markiert und eine entsprechende Fehlermeldung angezeigt (z.B. "Größe des PDO-Datenfelds überschritten"). Die Fehleranzeige bezieht sich immer auf die in der Tabelle selektierte (z.B. blau hinterlegte) Zeile !

In der rechten Fensterhälfte finden Sie eine Liste aller Objekte im OD des Terminals, die sich zum Einblenden in einen Prozessdatenkanal eignen.

Hinweis:
Dabei wird leider nicht zwischen RPDO und TPDO unterschieden ! Einige Objekte, z.B. "Applikationsvariablen", können sowohl in RPDO als auch TPDO gemappt werden, bei anderen (z.B. "Tastaturmatrix") ist aus Sicht des Terminals nur das Einblenden in einen TPDO sinnvoll.

Mit den Schaltflächen in der Mitte des Fensters wird die PDO-Mapping-Tabelle editiert :

Die Checkboxen unterhalb der oben aufgeführten Schaltflächen haben folgende Funktion :

Hinweise:

Beide Tabellen sind nicht manuell editierbar. Falls Sie für besondere Anwendungen Objekte in den PDO mappen müssen, die nicht in der Tabelle aufgelistet sind, können Sie dies "auf eigene Verantwortung" in der Kanal-Definitions-Tabelle des Programmiertools durchführen. Wenn Sie danach allerdings den PDO-Mapping-Dialog aufrufen, werden sie mit Fehlermeldungen wegen nicht gefundener Objekt-Indizes bombardiert !

In der Tabelle map-barer Objekte sind (logischerweise) nur Objekte im Objektverzeichnis des Terminals enthalten. Um eine sinnvolle PDO-Kommunikation mit externen Geräten aufzubauen, muss auch dessen PDO-Mapping entsprechend eingestellt werden. Für komplexe Anwendungene existieren dafür spezielle CANopen-Konfigurationstools, mit denen sämtliche Geräte im Netzwerk per EDS- bzw DCF-Datei konfiguriert werden können. Näheres dazu im Kapitel Einstellen des PDO-Mappings per CANopen-Konfigurationstool !

Objekte mit dem Zusatz "(optional)" existieren nicht in allen, sondern nur in einigen programmierbaren Terminals. Beispielsweise unterstützen ältere Geräte (z.B. mit 16-Bit-CPU) nur maximal 10 Variablen pro CANopen-Datentyp, während manche 'neue' Geräte mit 32-Bit-CPU seit Dezember 2010 bis zu (!) 40 Variablen pro Datentyp unterstützen. Diese Option wird in der 'Feature Matrix' "Monster-OD" genannt. Falls die Firmware in Ihrem Gerät bereits mit dem "Monster-OD" ausgestattet ist, können Sie als EDS-Datei statt "MKT_Terminals_DS301V4" auch die Datei "MKT_Terminals_DS301V4_MonsterOD" verwenden .

Prozessdatenobjekte können notfalls sogar während der Laufzeit per Script 'umprogrammiert' werden. Verwenden Sie im Script dazu das Kommando cop.obd(index,subindex). Im Handbuch zur Script-Sprache finden Sie ein Beispiel zum Ändern des PDO-Mappings, ebenso in der Datei CANopen1.upt .

zurück zur Übersicht


Alias-Namen

Um Alias-Namen von den Standard-Namen im CANopen-Objekt-Verzeichnis zu unterscheiden, werden Alias-Namen in der Mapping-Tabelle mit einem Sternchen (*) markiert. Als Alias-Name dient der Name einer UPT-Display-Variablen, die per CANopen-Index und -Subindex mit dem "eigenen" CANopen-Objektverzeichnis des Gerätes verbunden werden kann.

Closeup of the VAR-def-table, OD-Index column

Diese Verbindung kann im PDO-Mapping-Dialog mit der Option 'Erzeuge Alias' hergestellt werden, oder -wie oben gezeigt- durch manuelles Eintragen von OD-Index und Subindex auf der Registerkarte 'Variablen' .
Besonders hilfreich wird diese Funktion, wenn die Konfiguration des Terminals als DCF-Datei (CANopen Device Configuration File) exportiert und z.B. von SPS-Projektierungssoftware bzw. "CANopen-Master" importiert werden kann. In dem Fall können Sie (als SPS-Entwickler) direkt mit den 'sprechenden' UPT-Variablen-Namen, statt nur mit den 'nichtssagenden' (da fest in der Gerätefirmware, wie auch im EDS verankerten) Namen im CANopen-OD arbeiten. Wählen Sie dazu im Hauptmenü des Terminal-Programmiertools die Funktion

   Datei   ..   Erzeuge CANopen EDS oder DCF   ..   Erzeuge DCF .

Der "EDS / DCF - Creator" listet zur Kontrolle alle Alias-Namen auf der Registerkarte "Aliases" auf, z.B.:

Screenshot EDS/DCF-Creator, Registerkarte 'Aliases'

In der so erzeugten DCF-Datei sind die Alias-Namen wie in CANopen DS 306 beschrieben enthalten, siehe:

CANopen DS 306 V1.6 = Spezifikation des EDS- und DCF-Formates
Kapitel 5.3.2 : "Denotation"
Seite 22 (in DS 306 V1.3)

Beispiel aus vom Terminal-Programmiertool erzeugter DCF-Datei :


[4005sub1]
ParameterName=Application Vars 8 bit unsigned_1
Denotation=AppU8_1         ;  dies ist der "Alias" (Name einer UPT-Variablen)
DataType=0x5
DefaultValue=0x0
AccessType=rw
ParameterValue=0x0
PDOMapping=1
Falls Ihre SPS-Projektierungssoftware diese im CANopen-Standard vorgesehene (und nach Meinung des Autors sehr praktische) Funktion nicht unterstützt, wenden Sie sich bitte an den Hersteller. Notfalls hilft Ihnen die oben gezeigte Liste (Registerkarte "Aliases" mit CANopen-Objekt-Namen im EDS/DCF-Creator) als Referenz bei der Erstellung des SPS-Programms. Zu diesem Zweck kann die Liste als 'normaler Text' über die Windows-Zwischenablage in einen beliebigen Text-Editor übernommen werden.

Alternativ (falls die SPS-Software die von CANopen vorgesehene 'Denotation' nicht unterstützt) kann für jedes konfigurierte Anzeigeterminal auch ein eigenes (individuelles) EDS erzeugt werden, in dem dann statt der Standard-Objekt-Namen die Alias-Namen als "ParameterName" verwendet werden. Für jedes konfigurierte Gerät eine eigene DCF-Datei zu verwenden ist zwar nicht 'im Sinne des Erfinders' (CANopen), aber mit der folgenden Einstellung auf der Registerkarte 'Options' im EDS/DCF-Creator möglich:

Screenshot EDS/DCF-Creator, Registerkarte 'Options'

Weitere Details zum 'EDS/DCF-Creator' finden Sie hier .

zurück zur Übersicht


Einstellen des PDO-Mappings per CANopen-Konfigurationstool

Falls Sie glücklicher Besitzer eines "universellen" CANopen-Konfigurationstools sind, können Sie die Konfiguration der vom Terminal gesendeten und empfangenen Prozessdaten-Telegramme noch bequemer durchführen. Das Konfigurationstool muss dazu in der Lage sein, per CANopen/SDO-Protokol die entsprechenden Objekte im OD des Terminals umzuprogrammieren. Dies setzt ein geeignetes CAN-Interface am PC voraus, und das EDS-File des Terminals, in dem alle map-baren Objekte in elektronisch lesbarer Form enthalten sind (zur Terminal-Firmware passende EDS-Files sind beim Hersteller verfügbar). Entsprechende Projektierungs- und Konfigurationstools für CANopen-Geräte sind von mehreren Herstellern verfügbar.

Prinzipieller Ablauf zum Einstellen des PDO-Mappings per externem CANopen-Konfigurationstool / Netzwerk-Projektierungssoftware

  1. Das Anzeigeprogramm erstellen und per Terminal-Programmiertool ins Terminal laden (per CANopen, RS-232, oder CompactFlash-Karte)
  2. Erst danach das PDO-Mapping mit dem externen CANopen-Konfigurationstool einstellen ! Dazu kann das CANopen-Konfigurationstool das EDS-File des Terminals, und aller anderer am CAN-Netzwerk angeschlossenen Geräte einlesen. Einige Tools scannen dazu das gesamte CANopen-Netz ab und laden die Gerätebeschreibungen (EDS-Files) automatisch.

Warum in dieser Reihenfolge ?

Das Terminal setzt intern die vom Programmiertool als "Quelltext" empfangene Applikation zunächst in entsprechende Einträge in den PDO-Parametern im OD um (= Objekte 0x1600+x ... 0x1800+x). D.h. beim Übertragen des "Terminal-Programms" werden auch die PDO-Mapping- und PDO-Kommunikations-Parameter im Terminal überschrieben.

Siehe auch:

zurück zur Übersicht


Einstellen des PDO-Mappings per Script (während der Laufzeit, im Terminal)

Bei Geräten, die neben CANopen auch über die optionale Script-Sprache verfügen, kann das PDO-Mapping auch während der Laufzeit des Terminals umprogrammiert werden.
Leider sind dazu einige, z.T. recht abstruse Besonderheiten von CANopen zu beachten. Für das Verständnis der folgenden Beschreibung wird vorausgesetzt, dass der Leser bereits mit den Grundlagen von CANopen, und mit den Script-Befehlen zum Zugriff auf das 'eigene' CANopen-OD vertraut ist (denn "ohne Objektverzeichnis geht bei CANopen gar nichts").

Zur Erinnerung:
Subindex 1 im sogenannten 'PDO Communication Parameter' (z.B. Objekt 0x1800 = erster Transmit-PDO) enthält den von CANopen als 'COB-ID used by TPDO' bezeichneten CAN-Identifier, mit dem das Prozessdatentelegramm gesendet wird.
Die höherwertigen Bits im 'COP-ID' haben eine besondere Bedeutung, die z.B. in CiA DS301 V4.2.0 in Tabelle 70 auf Seite 138 spezifiziert sind:
Bit(s) Value Description
valid (bit 31) 0
1
PDO exists / is valid
PDO does not exist / is not valid
RTR (bit 30) 0
1
RTR allowed on this PDO
no RTR allowed on this PDO
frame (bit 29) 0
1
11-bit CAN-ID valid (CAN base frame)
29-bit CAN-ID valid (CAN extended frame)
.. ..
...
Das 'valid'-Bit (Bit 31) im PDO-Communication-Parameter ist auch beim Ändern des PDO-Mappings wichtig, denn (Zitat aus CANopen CiA DS301 V4.2.0, Seite 142 bis 143):

The following procedure shall be used for re-mapping, which may take place during the NMT state Pre-operational and during the NMT state Operational, if supported:
  1. Destroy TPDO by setting bit valid to 1b of sub-index 01h of the according TPDO communication parameter.
  2. Disable mapping by setting sub-index 00h to 00h.
  3. Modify mapping by changing the values of the corresponding sub-indices.
  4. Enable mapping by setting sub-index 00h to the number mapped objects.
  5. Create TPDO by setting bit valid to 0b of sub-index 01h of the according TPDO communication parameter.
In der Script-Sprache könnte das Terminal daher z.B. wie folgt seinen eigenen 'ersten Transmit-PDO' umprogrammieren:
  // dwCommParValue : declared somewhere as 32-bit unsigned integer variable, aka dword
  dwCommParValue := cop.obd(0x1800,0x00); // save original value of PDO communication parameter     
  cop.obd(0x1800,0x00) := dwCommParValue | 0x80000000;  // make 1st transmit PDO invalid (CiA: "Destroy TPDO"); set bit 31
  cop.obd(0x1A00,0x00) := 0x00;        // clear TPDO1 mapping table (CiA: "Disable mapping"..)
  cop.obd(0x1A00,0x01) := 0x40050108;  // 1st mapping entry: map object 0x4005, subindex 1, 8 bits
  cop.obd(0x1A00,0x00) := 0x01;        // enable mapping by setting the number of mapped objects
  cop.obd(0x1800,0x00) := dwCommParValue & 0x7FFFFFFF; // make 1st transmit PDO valid (CiA: "Create TPDO"); clear bit 31
  

Im Handbuch zur Script-Sprache ist ein Beipiel zum 'Umprogrammieren' eines Prozessdatenkanals (zur Laufzeit) enthalten; Details in den Erläuterungen zur Applikation CANopen1.upt .


Datei: ..?..\uptwin1\help\pdomapdlg_49.htm
Autor: W.Büscher, MKT Systemtechnik
Letzte Änderung: 2013-08-22 (ISO8601, YYYY-MM-DD)

zurück zur Übersicht