CANopen-Geräte benötigen zur eindeutigen Adressierung für viele CANopen-Dienste eine Knotennummer im Wertebereich von 1 bis 127. Die in CiA-305 definierten Layer Setting Services (LSS) bieten eine Möglichkeit diese Knotennummer dynamisch über CANopen zu vergeben. Dieser Artikel gibt einen Überblick über LSS und stellt die Vorteile von LSS gegenüber anderen Verfahren heraus.
Die LSS ID zur Adressierung von Geräten ohne Knotennummer
Zur Adressierung von CANopen-Geräten ohne Knotennummer nutzt der Master die so genannte LSS-Adresse. Diese ist ein 128 bit-Wert, welcher aus den 4 Subindizes des Identity-Objekts (0x1018) besteht:
Dies bedeutet auch das Geräte, welche eine dynamische Vergabe der Knotennummer unterstützen sollen, eine eindeutige Seriennummer haben müssen.
Grundlegend nutzt das Protokoll nur 2 CAN-Identifier: die CAN-ID 0x7e5 für die Telegramme vom Master zum Slave und die 0x7e4 für die Antworten der Slaves.
Alle weiteren unterschiedlichen Kommandos werden anhand des Command Specifiers im ersten Datenbyte der CAN-Nachricht unterschieden.
LSS – Switch Mode Selective or Switch Mode Global
Um einzelne Geräte umkonfigurieren zu können, müssen diese in den Konfigurationsmodus versetzt werden. Dies ist mit den ‚Switch Mode‘-Kommandos möglich.
Switch Mode Global wechselt den Zustand aller Geräte im Netzwerk. Dies ist in der Praxis nur zum Verlassen des Konfigurationszustands sinnvoll oder wenn nur 1 Gerät im Netzwerk vorhanden ist.
In dem oben gezeigten Beispiel hatte das Gerät noch keine Knotennummer und startet direkt nach dem Verlassen des Konfigurationsmodus mit der Boot-Up-Nachricht.
Soll dagegen ein Gerät selektiv adressiert werden, so wird Switch Mode Selective verwendet.
Dabei muss jedoch die vollständige LSS-Adresse (Vendor-ID, Product Code, Revision Number, Serial Number) bekannt sein.
Im dem gezeigten Beispiel hatte das Gerät bereits eine gültige Knotennummer(42) und die neue Knotennummer (43) wird erst gültig, nachdem ein Reset-Kommando an das Gerät geschickt wurden.
Identifikation unbekannter Geräte
Oft ist die LSS-Adresse dem Master oder dem Anwender nicht bekannt. Für diesen Fall – nachdem beispielsweise ein Servicetechniker ein Gerät ausgetauscht hat – stehen 2 Dienste zur Verfügung, um unbekannte Geräte zu finden.
Identify Remote Slave (klassischer LSS Scan)
Für diesen Dienst ist es erforderlich, dass Vendor-ID und Produktcode bekannt sind. Jedoch bietet der Dienst die Möglichkeit nach Geräten mit unbekannten Revisions- und Seriennummern zu suchen.
Die Anfrage besteht aus 6 CAN-Nachrichten, wobei der Master fragt, ob ein Gerät mit einer definierten Vendor-ID und definiertem Produktcode vorhanden ist. Zusätzlich wird eine untere Grenze und obere Grenze für die Revisionsnummer und Seriennummer angegeben.
Wenn nun auf diese Anfrage ein oder mehrere Geräte antworten, so kann der Master sicher sein, dass es ein oder mehrere Geräte gibt, auf diese die Eigenschaften zutreffen. Durch eine geeignete Verkleinerung der Revisionsnummer- und Seriennummerbereiche auf letztlich einen einzelnen Wert, kann mit einer Vielzahl solcher Abfragen ein einzelnen Gerät identifiziert werden.
Dadurch, dass der Master die 6 CAN-Telegramme mit gleicher CAN-ID bei der Anfrage direkt nacheinander sendet, kann es bei Geräten mit langsamer CAN-Verarbeitung zu Empfangsproblemen und Nachrichtenverlust kommen.
LSS Fast Scan
Mithilfe des neueren LSS Fast Scans können auch Geräte mit unbekannter Vendor-ID und unbekanntem Produktcode identifiziert werden. Zudem besteht beim Fast Scan die Anfrage immer nur aus jeweils einer CAN-Nachricht. Dabei fragt der Master die Vendor-ID, Product-Code, Revision-Number und Seriennumer bitweise ab. Dies bedeutet er fragt, ob ein bestimmtes Bit in dem jeweiligen Wert gesetzt ist und daraufhin antworten die Geräte oder nicht und danach fragt der Master das nächste Bit ab und so weiter.
Am Ende eines Vorgangs, welcher 4×32 Nachrichten dauert, ist mindestens 1 Gerät identifiziert. Danach kann der Master den Vorgang wiederholen, um weitere Geräte zu finden. Mittels Fast Scan kann der Master auch bekannte Geräte direkt adressieren, da die Vorteile von LSS Fast Scan überwiegen ist dies für neuere Geräte empfohlen bzw. von diversen CiA-Applikationsprofilen gefordert.
Setzen von Knotennummer und Bitrate
Nachdem ein CANopen-Knoten mit dem Kommando Switch Mode Global, Switch Mode Selective oder FastScan in den Konfigurationsmodus geschalten wurden, so erfolgt das Setzen der Knotennummer über ein einfaches Paar an CAN-Telegrammen und das Setzen der Bitrate analog:
Dabei ist zu berücksichtigen, dass das dynamische Setzen der Bitrate nicht im Feld empfohlen ist. Bei einem Fehler in einem Gerät kann im Extremfall die Kommunikation im gesamten CANopen-Netzwerk gestört werden. In diesem Fall ist es nötig das Gerät zu finden und auszubauen, was nicht immer technisch möglich ist.
Darüberhinaus gibt es ähnlich aufgebaute Kommandos (Request-Response-Paar) zum Speichern der Knotennummer oder Bitrate in nicht-flüchtigen Speicher in den Geräten.
In diesen Fällen wird das Gerät nach einem Reset mit den gespeicherten Werten startet.
Weitere Funktionalitäten
Darüber hinaus definiert das Protokoll Nachrichten, mit denen ein unkonfiguriertes Gerät melden kann, dass es vorhanden ist und auf eine Knotennummervergabe wartet. Zudem kann ein Master anfragen, ob noch weitere unkonfigurierte Geräte im Netzwerk vorhanden sind. Zusätzlich sind weitere Dienste zur Abfrage von Knotennummer, Bitrate, Vendor-ID, Produktcode usw. definiert, welche jedoch eher geringere praktische Bedeutung haben.
Alternativen zu LSS
Die klassische Alternative ist immer noch ein einfacher DIP- oder Drehschalter, welcher die Knotennummer einstellt. Dazu ist jedoch beim Installateur und Systemintegration ein gewisses CANopen-Know-How nötig, so dass keine CANopen-Knotennummer doppelt vergeben wird. Denkbar ist es auch, dass die CANopen-Knotennummer über einen anderen Kommunikationskanal, wie zum Beispiel UART oder über USB-Konfigurationsinterface eingestellt wird.
CANopen-Netzwerke, welche CANopen-Geräte aus einer Hand nutzen, können verschiedene herstellerspezifische Verfahren implementieren. Dies können u.A. speziell kodierte-Stecker sein mit unterschiedlichen, zusätzlichen Pin-Belegungen. Dabei wird je nach Steckplatz/Stecker einem Gerät eine definierte Knotennummer zugewiesen.
Von der Variante, die Knotennummer über ein herstellerspezifisches Objekt im Objektverzeichnis zu setzen, wird gänzlich abgeraten. Zum Einen wird zum Setzen der Knotennummer mithilfe des SDO-Dienstes bereits eine Knotennummer benötigt und zum Anderen kann im Fehlerfall das Gerät nicht mehr über SDO erreichbar sein.
CANopen Address Claiming nach CiA 416
Das CANopen-Applikationsprofile 416 für Türsteuerungen definiert ein abweichendes Address Claiming Procedure, welches eine dynamische Knotennummervergabe ohne einen Master realisiert.
Unterstützung durch Stacks und Tools
Für die Entwicklung von CANopen-Geräten mit Layer Setting Services sollte ein CANopen-Stack eingesetzt werden, der diese Features unterstützt. Dabei ist darauf zu achten, dass der Stack alle Dienste des LSS-Protokolls unterstützt. Insbesondere wenn man nicht weiß, mit welchen anderen Komponenten die Geräte kommunizieren sollen.
Hinsichtlich der Tools gibt es am Markt eine Vielzahl von CANopen-Tools. Dabei können drei Anwendungsfälle unterschieden werden:
-
- Analyse eines CANopen-Netzwerks
Bei der Analyse von CANopen-Netzwerken mit dynamischer Knotennummervergabe ist es sinnvoll einen CAN-Analyzer zu verwenden, welcher in der Lage ist das CANopen-Protokoll und insbesondere das LSS-Protokoll im Detail zu interpretieren. So dass man beispielsweise in der Lage ist, direkt zu sehen welchem Gerät mit welcher LSS-Adresse welche Knotennummer zugewiesen wird. Im Idealfall kann der Protokollanalyzer einzelne Geräte auch mit wechselnder Knotennummer verfolgen und beispielsweise nach Kommunikation mit diesem Gerät filtern.
-
- Entwicklung eines CANopen-Layer-Setting-Services-Masters
Als Gegenstelle benötigt man hier einen LSS-fähigen Slave, welche es selten als PC-Tool gibt. Hier reicht oft ein reales Slave-Gerät als Gegenstelle, welches man für die vollständige Master-Entwicklung ohnehin benötigt. Zusätzlich ist natürlich eine Interpretation der CAN-Telegramme entsprechend dem Layer Setting Services-Protokoll sinnvoll.
-
- Entwicklung eines CANopen-LSS-Slaves
Um die Protokollimplementierung zu testen ist ein entsprechender Master nötig oder besser ein PC-Tool, wie der CANopen DeviceExplorer von emotas embedded communication GmbH. Dieses Tool kann mit der passenden Erweiterung als LSS-Master fungieren.
Zusätzlich ist natürlich hier auch eine Interpretation der CAN-Nachrichten entsprechend dem Layer Setting Services Protokoll nützlich.