Zugriffsvarianten auf MDP Elemente
Die TwinCAT SPS MDP Bibliothek bietet verschiedenste Funktionsbausteine, um einen umfangreichen Zugriff auf MDP-Daten zu ermöglichen.
Es gibt zwei Grundtypen von Funktionsbausteinen in der Bibliothek.
Zum einen die allgemeinen Funktionsbausteine. Mit ihnen lassen sich beliebige Parameter im MDP mittels diskreten Zugriffes selbst abfragen und setzen.
Des Weiteren bieten spezifische Funktionsbausteine die Möglichkeit, auf bestimmte Daten sowie Gruppierungen von mehreren Daten mit einem Aufruf zuzugreifen. Die hier zur Verfügung stehenden Funktionsbausteine bieten einen schnellen Zugriff auf die wichtigsten MDP-Informationen.
Die Art des MDP-Zugriffs und die Unterschiede beider Typen von Funktionsbausteinen werden im Folgenden näher erläutert. Die Funktionsbausteine besitzen ein einheitliches Erscheinungsbild.
Alle Funktionsbausteine werden mit einer positiven Flanke am Eingang bExecute aufgerufen. Danach liefert zyklisches Aufrufen des Funktionsbausteines (bExecute = FALSE) das Ergebnis der Abfrage am Ausgang, sobald die Bearbeitung der Abfrage abgeschlossen ist (bBusy = FALSE). Weitere Handhabungshinweise liefert das Beispiel in dieser Dokumentation. Jeder Funktionsbaustein muss so lange aufgerufen werden (bExecute = FALSE) bis die interne Bearbeitung abgeschlossen (bBusy = FALSE) ist. Währenddessen sind alle Eingänge des Funktionsbausteins unverändert zu belassen.
Generell ist MDP ein Modell, welche Hardware- und Software Komponenten in Form von Modulen beschreibt. Informationen zu diesen Modulen sowie zum Gerät selbst können abgefragt und geändert werden.
Ein Modul besteht aus einer oder mehreren Tabellen. Jede Tabelle besteht aus einer festen Anzahl von Subindizes. Ein Subindex entspricht einem konkreten Element auf, das zugegriffen werden kann.
Zum Aufbau von MDP finden sich nähere Informationen im MDP Information Model. Dort sind ebenso weitere Zugriffsmöglichkeiten auf das MDP beschrieben.
Allgemeine Funktionsbausteine
Um einen MDP-Parameter abfragen oder setzen zu können, muss die dynamische Modul ID des Moduls bekannt sein in dem sich der Parameter befindet.
Diese wird mit Hilfe des Funktionsbausteines FB_MDP_ScanModules ermittelt.
Nun können einzelne Parameter mittels FB_MDP_Read und FB_MDP_Write gelesen bzw. geschrieben werden. Dabei werden zur Abfrage, neben der dynamischen Modul ID, die Nummer der ausgewählten Tabelle (Table ID), der ausgewählte Subindex innerhalb der Tabelle, sowie weitere Informationen angegeben.
Ebenso kann der komplette Header eines Moduls (ST_MDP_ModuleHeader) mit dem Funktionsbaustein FB_MDP_ReadModuleHeader abgefragt werden.
Der komplette Inhalt einer ausgewählten Tabelle innerhalb eines Moduls kann mit dem Funktionsbaustein FB_MDP_ReadModuleContent abgefragt werden.
Der Funktionsbaustein FB_MDP_ReadModule bündelt obige Abfragen. Der Funktionsbaustein ermittelt implizit die dynamische Modul ID und fragt Header sowie Tabelle ab.
Der Funktionsbaustein FB_MDP_ReadElement ermittelt ebenfalls die dynamische Modul ID bereits implizit. Mit ihm kann ein beliebiges einzelnes MDP-Element abgefragt werden.
Bei diesen beiden Funktionsbausteinen ist ein vorheriger Aufruf von FB_MDP_ScanModules demnach nicht nötig.
Spezifische Funktionsbausteine
Die hier zur Verfügung stehenden Funktionsbausteine bieten schnellen Zugriff auf die wichtigsten MDP-Informationen.
Beispielsweise reicht der Aufruf des Funktionsbausteines FB_MDP_NIC_Read aus, um alle wichtigen Informationen über einen Netzwerkadapter abzufragen (siehe MDP NIC Modul). Der Modul Header wird jeweils auch abgefragt und ausgegeben.
Ebenso ermitteln die spezifischen Funktionsbausteine implizit die dynamische Modul ID, so dass ein vorheriger Aufruf von FB_MDP_ScanModules überflüssig ist.