MPDO – Multiplexed Process Data Objects
Der MPDO-Dienst dient, so wie herkömmliche PDOs in CANopen zum Austausch von Prozessdaten zwischen mehreren Geräten. Dabei kommt das Producer-Consumer-Model zum Einsatz, so dass ein MPDO von mehreren Consumern empfangen werden kann. Im Gegensatz zu PDOs sind jedoch die übertragenen Objekte nicht fest in einer Mapping-Tabelle definiert, sondern es werden Index und Subindex der Daten bei jeder Übertragung mit übertragen. Aus diesem Grund reduziert sich die mögliche Nutzlast der MPDOs auf bis zu maximal 4 Bytes und es kann jeweils nur ein Objekt in einem MPDO gleichzeitig übertragen werden. Jedoch unterstützen nicht alle Geräte MPDOs. Aus der EDS-Datei eine Geräts kann man dies im Eintrag GroupMessaging=1 erkennen.
Die Konfiguration von COB-ID und Transmission Type erfolgt wie bei herkömmlichen PDOs in den entsprechenden Objekten im Objektverzeichnis ab 0x1400 bzw. 0x1800. MPDOs dürfen jedoch nur ereignis-gesteuert übertragen werden. Mit den Scanner- und Dispatcherlisten gibt es zudem weitere Objekte ab 0x1FA0 zur Konfiguration der MPDOs.
Source Address Mode
Wie der Name es vermuten lässt, wird beim Source Address Mode die Knotennummer und der Objektindex des Producers im MPDO mit übertragen. In einer Scanner-Liste (ab Index 0x1FA0) im Producer sind die Objekte aufgeführt, welche ein Producer per MPDO senden darf und in einer Dispachter-Liste (ab Index 0x1FD0) im Consumer ist die Zuordnung definiert, welches empfangene Objekt in welches Objekt des Consumers übertragen werden soll.
Die Dispatcher-Liste beinhaltet mehrere 64-Bit-Werte, wobei jeder Subindex für eine Producer-Objekte – Consumer-Objekt-Zuordnung steht.
63 .. 56 | 54 .. 40 | 39 .. 32 | 31 .. 16 | 15 .. 8 | 7 .. 0 |
Block Size | Local Index | Local Subindex | Producer Index | Producer Subindex | Produccer Node |
Struktur der 64-Bit-Einträge der Dispatcher-Liste
Das „MPDO-Linking“ ergibt sich damit wie folgt dargestellt:
Destination Address Mode
Beim Destination Address Mode kann der Producer vorgeben in welches Objekt des Empfängers der Wert geschrieben werden soll. Zudem ist es möglich mit der Angabe der Knotennummer == 0 eine Broadcast-Nachricht zu senden, welche beispielsweise den gleichen Wert in ein definiertes Objekt aller Geräte im Netzwerk schreibt.
Vergleich mit SDOs und PDOs
Analyse der MPDOs im CAN-Logging
Zur Analyse der MPDO-Kommunikation in CAN-Loggings sollte ein Tool mit CANopen-Interpretation verwendet werden. Dabei ist darauf zu achten, dass das Tool in der Lage ist MPDOs korrekt zu interpretieren. Dazu muss es möglich sein, die EDS- oder DCF-Datei der Geräte im Netzwerk zu importieren, so dass das Tool Informationen über die Objekte der Geräte hat. Der CANopen DeviceExplorer ist ein solches Tool und der nachfolgende Screenshot zeigt die Interpretation von MPDOs in dem Tool:
Anwendungsfälle des MPDO Dients
Ein CANopen-Gerät kann bis zu 512 herkömmliche PDOs verschicken. Wenn man von einer Größe von einem Byte pro Prozessdatum ausgeht, ist es für ein Gerät möglich, bis zu 4096 unterschiedliche Objekte aus dem Objektverzeichnis als Prozessdaten zu versenden. In der Praxis verringert sich dieser Wert durch größere Objekte und durch die Tatsache, dass meist mehrere Geräte PDOs verschicken möchten. Um diese Begrenzung zu umgehen, können MPOs eingesetzt werden.
In CANopen ist dieser Dienst optional, jedoch definieren eine Applikationsprofile wie z.B. CiA-417 (CANopen-Lift) die Verwendung von MPDOs.
Verfügbarkeit in Geräte und CANopen Stacks
Da der MPDO Dienst ein optionales Feature in CANopen ist, ist er nicht in allen CANopen-Geräten anzutreffen. Der Normalfall ist sogar, dass die Mehrzahl der CANopen-Gerääte den Dienst nicht unterstützen, sondern nur dann, wenn er explizit benötigt wird. In den beiden bekannten quelloffenen CANopen-Implementierung ist er ebenfalls nicht unterstützt, jedoch gibt es eine Reihe kommerzieller Anbieter von CANopen Stacks oder einer CANopen Source Code Library, welche MPDOs untersützten.