CANopen Identifier speichern

Das Speichern von Identifiern der verschiedenen CANopen Dienste (PDO, EMCY) erfolgt über das Objekt 1010h, welches in der CANopen Spezifikation CiA 301 /1/ definiert ist. Durch das Schreiben einer Signatur (“save”) können sowohl die Identifier als auch die weiteren Kommunikationsparameter (Transmission Type, Event timer) netzausfallsicher gespeichert werden. Trotzdem lässt die Spezifikation noch Raum für Interpretationen: was soll passieren, wenn die Geräteadresse (Node-ID) geändert und das Gerät dann eingeschaltet wird? In der Praxis haben sich drei Varianten durchgesetzt, welche für die jeweilige Applikation sinnvoll sind, leider aber auch inkompatibel zueinander.

Variante 1 – Werte behalten

Bei der ersten Variante werden die Identifier für die Dienste (PDO/EMCY) bei Wechsel der Moduladresse behalten. Dies macht immer dann Sinn, wenn z.B. ein Sensor eine definierte Messstelle überwachen soll und somit eine eindeutige Beziehung zum gewählten Identifier besteht.

Variante 2 – Pre-defined Connection Set

Bei Variante 2 werden alle gespeicherten Identifier verworfen und es wird zum Pre-defined Connection Set /1/ gewechselt. Damit spart man sich das manuelle Schreiben einer Signatur auf das Restore Default Objekt (1011h).

Variante 3 – Offset

Bei der letzten mir bekannten Variante wird der Identifier für den jeweiligen Dienst berechnet gemäß der Formel Node-ID + Stored-ID. Das Verhalten ist ähnlich zum Pre-defined Connection Set, nur dass man hier noch einen Freiheitsgrad mehr hat und den Basis-Identifier frei einstellen kann.

Alle Möglichkeiten im Gerät

Jede dieser Varianten hat ihren Zweck, eine Möglichkeit zur Auswahl bietet die CiA 301 aber (noch) nicht. Daher haben wir in unseren Geräten ein hersteller-spezifisches Objekt (Index 201Ah) aufgenommen um den unterschiedlichen Kundenforderungen Rechnung zu tragen. Das Objekt definiert das Verhalten von gespeicherten Identifiern für die Dienste PDO und EMCY bei Änderung der Geräteadresse.

Index Name Datentyp
201Ah Sub 0 COB-ID Storage UNSIGNED8

Es sind folgende Werte definiert:

  • 0: Gespeicherte Identifier (PDO/EMCY) behalten
  • 1: Auf Pre-defined Connection Set wechseln
  • 2: Identifier für PDO/EMCY berechnen aus Moduladresse + gespeichertem Wert

Vielleicht gibt es noch weitere Varianten, die ich bislang noch nicht kenne. Dann freue ich mich natürlich auf eine Rückmeldung!

Referenzen

/1/ CiA 301, Version 4.2.0 – CANopen application layer and communication profile

Stichworte: , , ,

Geschrieben in: CANopen, Fachbeiträge


Hinterlasse eine Antwort