Generator für CANopen-EDS- oder DCF-Dateien

(gilt nur für Terminals mit CANopen DS301 V4 und 32-Bit-CPU (ARM), aber nicht für Geräte mit 8- oder 16-Bit-CPU)

Dieses Dokument beschreibt eine Sonderfunktion im "UPT-Programmiertool 2" zum Erzeugen von CANopen-EDS (Electronic Datasheet) oder DCF (Device Configuration File). Darüberhinaus sind einige Tipps und Hinweise zum Importieren der so erzeugten Dateien in CoDeSys enthalten.

Stand: 2013-05-08 (ISO 8601)
Autor: Wolfgang Büscher, MKT Systemtechnik

Inhalt

  1. Einleitung, Aufruf des EDS/DCF-Generators aus dem UPT-Programmiertool
  2. Alias-Namen / Denotation (für CANopen-Objekte)
  3. Device Commissioning (für CANopen-DCF)
  4. Reserviertes Kapitel für zukünftige Erweiterungen
  5. Notizen und Hinweise zu CoDeSys
    1. Importieren einer CANopen-Gerätekonfiguration (*.dcf) per 'Geräte-Repository'
    2. Einfügen eines CANopen-Slaves (z.B. MKT-View mit CANopen-Firmware) in ein neues Projekt
    3. Verbinden der Variablen im externen CANopen-Gerät (Slave) mit Variablen im SPS-Programm
    4. Hinweise zu den Datentypen von CoDeSys

Siehe auch (Links zu anderen Dokumenten):

1. Einleitung, Aufruf des EDS/DCF-Generators aus dem Programmiertool

Die Konfiguration des Terminals bezüglich der CANopen-Kommunikation kann als DCF-Datei exportiert und von einer geeigneten SPS-Projektierungssoftware (z.B. CoDeSys mit "CANopen-Master") importiert werden. Dadurch kann der SPS-Entwickler direkt mit den 'sprechenden' UPT-Variablen-Namen arbeiten, statt mit den 'nichtssagenden' (weil fest im EDS und in der Geräte-Firmware verankerten) Namen im CANopen-Objektverzeichnis (OD).

Workflow EDS/DCF-Creator

Wählen Sie dazu im Hauptmenü des Terminal-Programmiertools die Funktion

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

Der EDS/DCF-Generator listet zur Kontrolle alle Alias-Namen auf der Registerkarte "Aliases" auf (näheres dazu im folgenden Kapitel), z.B.:

Screenshot EDS/DCF-Creator, Registerkarte 'Aliases'

Auf den weiteren Registerkarten können die Einträge im Objektverzeichnis, und die Beschreibungen in den Abschnitten "File Info" und "Device Info" kontrolliert werden.
Im Idealfall sind aber keine weiteren Eingaben für die Erzeugung der DCF-Datei mehr nötig, weil das Programmiertool alle benötigten Informationen in das DCF (nicht EDS!) automatisch übernimmt. Dazu zählen unter Anderem:

2. Alias-Namen (für Elemente im CANopen-Objektverzeichnis)

In der vom UPT-Programmiertool erzeugten DCF-Datei sind die Alias-Namen wie in CANopen DS 306 beschrieben als 'Denotations' 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 einer vom Terminal-Programmiertool erzeugten DCF-Datei :


  4003sub1]
  ParameterName=Application Vars 16 bit signed_1
  Denotation=FourSines1  ;  dies ist der "Alias" (Name einer UPT-Variablen)
  DataType=0x3
  DefaultValue=0
  AccessType=rw
  ParameterValue=0
  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.

Bei einem Test mit CoDeSys V3.4 funktionierte die empfohlene 'Denotation'-Methode, d.h. die vom UPT-Programmiertool erzeugte DCF-Datei (nicht EDS !) wurde beim Import per 'Geräte-Repository' mit den Alias-Namen eingelesen. Bei der Auswahl von Elementen im Objektverzeichnis zeigt CoDeSys im Dialog 'Element aus dem Objekverzeichnis auswählen' die 'Denotations' in der Spalte 'Name' an (statt der 'Default-Namen im OD):

Screenshot 'Element aus dem Objektverzeichnis auswählen' in CoDeSys'

Näheres dazu im Kapitel Hinweise zu CoDeSys.


Falls Ihre SPS-Projektierungssoftware die 'Denotation' im DCF ignoriert, kann alternativ 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'


3. Device Commissioning

Auf der Registerkarte 'Device Commissioning' können die folgenden Konfigurationswerte eingegeben werden, die zum Erzeugen einer DCF-Datei benötigt werden:

Screenshot EDS/DCF-Creator, Registerkarte 'Device Commissioning'

Details finden Sie in DS 306 V1.3.0 aus kaum nachvollziehbaren Gründen nur im Kapitel
5.3.3.3 Network variable values.
Im "Members-Only"-Bereich der CiA-Webseite konnten CiA-Mitglieder seit Juni 2011 eine stark verbesserte "CiA 306 Work Draft Part 1", Version 1.3.3 herunterladen, in der das Thema Device Commisioning in einem eigenen Kapitel erläutert wird:
7.3.4 Device Commissioning.

Im UPT-Programmiertool wird der Node-ID für das 'Device Commissioning' von der Registerkarte Einstellungen im Hauptfenster übernommen (aus dem Feld 'Node-ID des Terminals', rechts oben).

Zu der Bedeutung der weiteren Parameter unter 'Device Commissioning' ziehen Sie bitte die einschlägige CANopen-Fachliteratur zu Rate (z.B. DS 306 in der neuesten verfügbaren Version).

> NodeID         shall indicate the CANopen device's address (UNSIGNED8), 
> NodeName       shall indicate the node name (maximal 246 characters), 
> Baudrate       shall indicate the CANopen device's baudrate (UNSIGNED16), 
> NetNumber      shall indicate the number of the network (UNSIGNED32), 
> NetworkName    shall indicate the name of the network (max 243 characters), 
> CANopenManager shall indicate the CANopen device is the CANopen manager 
>         (BOOLEAN, 1 = CANopen manager, 0 or missing = not the manager), 
> LSS_SerialNumber shall indicate the serial number (index 1018h, sub-index 04h),
>         (UNSIGNED32). 


4. Reserviert


5. Notizen und Hinweise zu CoDeSys

CoDeSys ist (zumindest in der vom Autor getesteten Version 3.4 SP4 Patch 2) glücklicherweise in der Lage, die 'Denotations' anzuzeigen (d.h. die im UPT-Programmiertool passend zu ihrer 'Bedeutung' benannten Objekte), statt nur der nichtssagenden Objektnamen im CANopen-Objekt-Verzeichnis. Beispiel:

Screenshot 'Element aus dem Objektverzeichnis auswählen' in CoDeSys'

Details zum 'Einhängen' eines CANopen-Slaves in eine CoDeSys-Steuerung entnehmen Sie bitte der einschlägigen Fachliteratur - eine detailierte "Step-by-Step"-Anleitung würde den Rahmen dieser Dokumentation sprengen. Hier nur der prinzipielle Ablauf, mit einigen Tips des Autors dieser Beschreibung (der zum Zeitpunkt der Erstellung dieses Dokuments seine ersten Erfahrungen mit CoDeSys machte):

5.1 Importieren einer CANopen-Gerätekonfiguration (*.dcf) in CoDeSys V3.4 per 'Geräte-Repository'

Um ein externes CANopen-Gerät in ein neu erstelltes CoDeSys-Projekt zu integrieren, muss meistens per 'Bibliotheksverwalter' die passende Library gefunden und in das Projekt aufgenommen werden. Vermutlich ist dies der 'CANopen Manager'. Details siehe Unten .
Danach...


5.2 Einfügen eines CANopen-Slaves (z.B. MKT-View mit CANopen-Firmware) in ein neues CoDeSys (V3.4) - Projekt

       (ToDo: Geht das auch mit weniger Klickibunti ? )

Anhand der Werte aus der DCF-Datei (die, wie weiter oben beschrieben, mittlerweile in der 'Geräte-Repository' enthalten ist) sollte an dieser Stelle auch das mit dem UPT-Programmiertool (! - nicht mit CoDeSys - !) eingestellte PDO-Mapping im CoDeSys-Projekt bekannt sein.
Auf der Registerkarte PDO-Mapping kann dies in CoDeSys kontrolliert werden:

Erhalten Sie nicht die erwartete Anzeige in CoDeSys, kontrollieren Sie die folgenden Punkte:

5.3 Verbinden der Variablen im externen CANopen-Gerät (Slave) mit Variablen im SPS-Programm

"under construction".. dieses Kapitel wird ergänzt, sobald der Autor weitere Erfahrungen mit CoDeSys gesammelt hat !

Üblicherweise erfolgt die Kommunikation zwischen SPS und externem CANopen-Gerät per Prozessdaten (PDO). Der Aufbau und die Kommunikationsparameter der Prozessdaten-Objekte sind der CoDeSys-Steuerung an dieser Stelle bereits bekannt (da sie, wie oben beschrieben, aus der vom UPT-Programmiertool erzeugten DCF-Datei importiert wurden).

Vermutlich reicht es, die per PDO übertragenen 'Kanäle' auf der Registerkarte "CANopen I/O Abbild" mit entsprechenden Variablen zu verbinden.
Im unten gezeigten Screenshot wurden in der Spalte 'Variable' (links) die gleichen Namen verwendet, die in der Spalte 'Kanal' bereits vorhanden waren (und die vermutlich von CoDeSys aus den 'Denotations' in der DCF-Datei importiert wurden) :

Ob dies allerdings 'der richtige Weg' ist, war fragwürdig, denn (nach der oben beschriebenen Änderung):

Der Autor stellte daraufhin weitere Experimente mit Codesys zunächst ein.


5.4 Hinweise zu den Datentypen von CoDeSys

Bei der Arbeit mit CoDeSys ist zu beachten, dass für die Datentypen leider völlig andere Namen als im CANopen-Standard verwendet werden.
Speziell beim Datentyp 'INT' ist Vorsicht geboten, da dieser bei modernen C-Compilern i.d.R. 32 Bit breit ist. Nicht so bei CoDeSys:
Hier besteht 'INT' offenbar nur aus 16 Bit, und 'S' (steht vermutlich für "short") kennzeichnet 8, nicht 16 Bit !

Datentyp Name bei CANopen
("CiA 301", ehemals
 "DS 301")
Name in CoDeSys Vergleichbare Typen in "C"
8 bit signed integer

INTEGER8

SINT

signed char
16 bit signed integer

INTEGER16

INT (!!!)

short, short int
32 bit signed integer

INTEGER32

DINT

int, long, long int
8 bit unsigned integer

UNSIGNED8

USINT

unsigned char, BYTE
16 bit unsigned integer

UNSIGNED16

UINT (!!!)

unsigned short, WORD
32 bit unsigned integer

UNSIGNED32

UDINT

unsigned long, DWORD
32 bit floating point

REAL32

REAL

float
Zeichenkette ? VISIBLE_STRING ? char[]

Hinweis: Da die meisten CANopen-Slaves (auch die 'ARM-Views') kein bitweises, sondern nur byte-weises PDO-Mapping unterstützten, macht der Datentyp 'Boolean' im Zusammenhang mit der Prozessdaten-Übertragung wenig Sinn, und ist aus dem Grund in der obigen Tabelle nicht enthalten.
CANopen-Objekte mit dem Datentyp "VISIBLE_STRING" sind ebenfalls nicht PDO-map-bar, und können (wie BOOLEAN) nur per SDO (Servicedatenobjekt) übertragen werden.