CANopen Routing – Überblick
CANopen Routing – oder CANopen Multi-Level-Networking – beschreibt die CANopen-Kommuniktion über mehrere verbundene CANopen-Netze. Diese Netzwerke können hierarchisch strukturiert oder vermascht sein und es gibt vielfältige Konfigurationsmöglichkeiten hinsichtlich des Routings, so dass beispielsweise unterschiedliche Routen mit unterschiedlichen Kostenfaktoren belegt werden können. Dabei können jedoch nur einzelne CANopen Dienste, wie SDOs, PDOs und Emergency-Nachrichten geroutet werden.
SDO CANopen Routing
Beim SDO-Routing kann ein SDO-Client über ein Gateway eine SDO-Anfrage an SDO-Server in entfernten Netzen verschicken. Dazu schickt der SDO-Client vor der eigentlichen SDO-Anfrage eine SDO Network Request an das Gateway, gefolgt von der herkömmlichen SDO-Anfrage.
Das Gateway leitet den die Anfrage in das Zielnetzwerk – ggf. über weitere Router – weiter und leitet die SDO-Anworten zurück zum Client.
Dabei können alle 3 Varianten des SDO-Transfers (expedited, segmented und der Block-Transfer) verwendet werden. Nach jeder abgeschlossenen SDO-Anfrage muss eine erneute SDO-Routing-Anfrage erneut mit einem SDO Network Request eingeleitet werden.
PDO CANopen Routing
Die Grundidee des PDO-Routing besteht darin, dass der Router PDOs von einem Netzwerk empfängt und diese Daten in einem Shared-Memory speichert und in anderen Netzwerken wieder als PDO sendet.
Für den Shared-Memory wird der vormals reservierte Index-Bereich zwischen 0xB000 und 0xBFFF verwendet.
Emergency (EMCY) CANopen Routing
Beim Emergency Routing werden EMCY-Nachrichten von einem Netz in ein anderes Netzwerk weitergeleitet.
Wie in der Abbildung zu sehen beinhaltet die resultierende EMCY-Nachricht im Zielnetz Informationen über das Quellnetzwerk, die Quellknotennummer und den Emergency Error Code, jedoch werden die 5 hersteller-spezifischen Bytes aus der originalen EMCY-Nachricht nicht mehr übertragen.
Weitere CANopen Dienste
Weitere CANopen-Dienste wie MPDOs, SYNC können mit dem Routing-Protokoll nicht geroutet werden. Für NMT-Kommandos besteht die Möglichkeit über Remote-SDO-Zugriffe NMT-Request-Nachrichten zu entfernten NMT-Mastern zu schicken, welche dann in dem jeweiligen Netz die NMT-Kommandos verschicken.
Anforderungen an CANopen-Geräte
Slaves
CANopen-Slaves bzw. Geräte mit SDO-Server-Funktionalität benötigen keine besonderen Anpassung für den Einsatz in multiplen CANopen-Netzen, somit können bestehende Slaves ohne Änderung eingesetzt werden.
SDO-Clients
SDO-Clients, welche über mehrere CANopen-Netzwerk kommunizieren wollen, benötigen eine Unterstützung des SDO-Routing-Protokolls im Client und Sie müssen das lokale Gateway bzw. den Router in ihrem Netzwerk kennen.
Router/Gateway
Ein CANopen-Router muss – je nach Anwendungsfall – alle zuvor beschriebenen Routing-Protokolle implementieren und den entsprechenden Shared-Memory für das PDO-Routing bereitstellen. Theoretisch ist es denkbar, dass ein Router nur eines der Protokolle (z.B. SDO, PDO, EMCY) unterstützt, aber in der Praxis kommen höchstens Router vor, welche nur das SDO-Routing zu Diagnosezwecken unterstützen.
Analyse und Implementierung
Bei der Analyse von multiplen CANopen-Netzwerken ist es sinnvoll einen CAN-Analyzer einzusetzen, welcher mehrere CAN-Linien zusammen darstellen kann und zudem das SDO-Routing-Protokoll und das EMCY-Routing-Protokoll bei der CANopen-Interpretation korrekt interpretieren kann. Zur Implementierung eines Gateways wird ein CANopen Software Stack benötigt, welcher sowohl die Gateway-Protokolle unterstützt und eine CAN-Multi-Line-Funktionalität bietet.