Diese Seite bearbeiten Links hierher Zu Buch hinzufügen PDF exportieren Buch erstellen Diese Seite zum Buch hinzufügen Buch erstellen Diese Seite aus Buch entfernen Buch anzeigen, ändern (0 Seite/n) Hilfe XML Exchange Plugin Das XML Exchange Plugin ermöglicht das Lesen und Schreiben von Daten (Attribute und Textknoten) in XML-Dateien (mit fester Struktur). Konfiguration Die gesamte XML Exchange Plugin-Konfiguration befindet sich unter dem Nodepfad /System/Exchange/XML Exchange. Document Ein XML Exchange Document (ähnlich eines Channels bei Device-Plugins) repräsentiert eine XML-Datei. Settings File Path Der Pfad zur XML-Datei im Dateisystem. Exchange Mode Gibt an, wie auf die XML-Datei zugegriffen werden soll: Implicit: Die XML-Datei wird eingelesen, sobald eine oder mehrere Variablen gelesen werden; und die Datei wird geschrieben, sobald eine oder mehrere Variablen geschrieben werden. Explicit: Beim Lesen oder Schreiben von Variablen findet kein Dateizugriff statt. Die Datei muss explizit gelesen oder geschrieben werden, indem die Load- oder Save-Methode aufgerufen wird, um den Inhalt der Datei in die Variablen zu übertragen und umgekehrt. Hinzufügen eines Documents (Channels) Um ein neues XML Document (entspricht einem Channel bei Device Plugins) zu erstellen, gehen Sie wie folgt vor: Fügen Sie einen Folder Node unter dem Node XML Exchange/Documents hinzu, oder machen Sie einen Rechtsklick auf den XML Exchange/Documents-Node und wählen Sie Add Document aus. Tragen Sie im Add Document-Dialog die Settings für die XML-Datei ein. Nachdem Sie „Save“ geklickt haben, wird die Document-Node erstellt. Sie können den Kanal starten, indem Sie die Document-Node auswählen und den Startbutton klicken. Variablen Unter dem DocumentElement-Node können Sie Variablen (Nodes) erstellen, die den Aufbau des XML-Dokuments abbilden (d.h. Baumstruktur der CoDaBix-Variablen entspricht der Struktur der XML-Knoten): Ein Folder-Node-Variable bildet ein XML-Element ab, wobei die Path-Eigenschaft den Namen des Elements enthält; oder, falls dieser leer ist, der Name der Variablen als Name des XML-Elements verwendet wird. Ein Datapoint-Node-Variable bildet ein XML-Attribut oder -Textknoten ab, das als String gelesen und geschrieben werden kann. Die Path-Eigenschaft kann folgende Ausdrücke enthalten: text(): Die Variable repräsentiert einen XML-Textknoten. Beginnt nicht mit / (z.B.: abc): Die Variable repräsentiert ein XML-Attribut des übergeordneten XML-Elements mit dem Namen, der angegeben wurde (im Beispiel "abc"). Beginnt mit / (z.B.: /*/A/B/text()[2]): Die Variable repräsentiert eine XPath-Abfrage, die als Ergebnis entweder einen Text zurückliefert (dann kann in die Variable nicht geschrieben werden), oder ein Node Set, von dem der erste Knoten verwendet wird (muss ein Text-, Attribut- oder Kommentar-Knoten sein). Beachten Sie: Bei Verwendung einer XPath-Abfrage wird die Position der Variable inerhalb des Nodes-Baums nicht berücksichtigt. Bei einer vorhandenen XML-Datei können Sie das Document (Channel) browsen, um die CoDaBix-Variablen für die XML-Dokumentenstruktur automatisch anzulegen. Beispiel example.xml <Root> <A>Test</A> <B> <C x="Hello" y="World"> 12345 <D /> 67890 </C> </B> </Root> Nachdem Browsen des Documents wird folgende Nodestruktur in CoDaBix angelegt: Lesen/Schreiben Sowohl beim Lesen und Schreiben werden CoDaBix-Variablen anhand deren Position innerhalb des Nodebaums zu XML-Knoten zugeordnet. Falls beim Schreiben von Werten Variablen in CoDaBix existieren, diese aber nicht in der XML-Datei gefunden werden können (gilt beispielsweise auch, wenn die XML-Datei noch nicht existiert), werden die entsprechenden Knoten in der XML-Datei angelegt. Leseverhalten (abhängig vom eingestellten Exchange Mode in den Settings). Exchange Mode „Implicit“: Synchroner Lesevorgang von einer oder mehreren Variablen: Die XML-Datei wird komplett eingelesen. Die XML-Knoten werden den existierenden CoDaBix-Variablen über die Baumstruktur zugeordnet. Es werden nur Werte in diejenigen CoDaBix-Variablen geschrieben, die Teil des synchronen Lesevorgangs waren. Falls das Lesen der XML-Datei fehlschlägt, wird ein Wert mit dem Status Bad in die Variablen geschrieben. Aufruf der Load-Methode: Es wird ein Fehler ausgelöst, da die Methode nur im Modus Explicit verwendet werden kann. Exchange Mode „Explicit“: Synchroner Lesevorgang von einer oder mehreren Variablen: Es findet kein Dateizugriff statt; als Ergebnis des synchronen Lesevorgangs werden die aktuellen Werte der gelesenen Variablen zurückgegeben. Aufruf der Load-Methode: Die XML-Datei wird komplett eingelesen. Die XML-Knoten werden den CoDaBix-Variablen über die Baumstruktur zugeordnet. Es werden in alle CoDaBix-Variablen die Werte geschrieben, die aus den zugeordneten XML-Knoten gelesen wurden. Falls das Lesen der XML-Datei fehlschlägt, wird nichts in die Variablen geschrieben, sondern die Methode löst einen Fehler aus. Schreibverhalten: Exchange Mode „Implicit“: Schreiben von Werten in eine oder mehrere Variablen: Die XML-Datei wird komplett eingelesen. Die XML-Knoten werden den existierenden CoDaBix-Variablen über die Baumstruktur zugeordnet. Falls für eine existierende CoDaBix-Variable kein XML-Knoten gefunden wird, wird einer in der XML-Datei erzeugt (auch wenn die Variable nicht Teil des Schreibvorgangs ist), jedoch zunächst ohne Wert (Text). Es werden nur Werte in diejenigen XML-Knoten eingefügt, deren zugeordnete CoDaBix-Variablen Teil der Schreibvorgangs waren. Die XML-Datei wird geschrieben. Aufruf der Save-Methode: Es wird ein Fehler ausgelöst, da die Methode nur im Modus Explicit verwendet werden kann. Exchange Mode „Explicit“: Schreiben von Werten in eine oder mehrere Variablen: Es findet kein Dateizugriff statt; als Ergebnis des Schreibvorgangs wird der Status Good zurückgegeben. Aufruf der Save-Methode: Die XML-Datei wird komplett eingelesen. Die XML-Knoten werden den existierenden CoDaBix-Variablen über die Baumstruktur zugeordnet. Falls für eine existierende CoDaBix-Variable kein XML-Knoten gefunden wird, wird einer in der XML-Datei erzeugt, jedoch zunächst ohne Wert (Text). Es werden in alle XML-Knoten die aktuellen Werte eingefügt, die in den CoDaBix-Variablen enthalten sind. Die XML-Datei wird geschrieben. Fehlerdiagnose Das XML Exchange Plugin liefert je nach zu untersuchender Schicht verschiedene Statusinformationen. Generell werden die dokumentenbasierten Diagnoseinformationen durch den Zugriffsstatus auf die XML-Datei produziert. Die variablenbasierten Diagnoseinformationen werden während des Lese-/Schreibzugriffs auf die verschiedenen Variablen produziert. Kanal Um den Status des XML-Dokuments (Kanal) zu überwachen und zu diagnostizieren, werfen Sie einen Blick auf das folgende Bild: Das obige Bild zeigt das Bedienfeld des XML-Dokuments, das alle statusrelevanten Informationen anzeigt. Das Bedienfeld aktualisiert automatisch seine Statusinformation, wenn ein neuer Status verfügbar ist. Statuskreis Farbe Bedeutung Der Kanal ist gestoppt. Klicken Sie den ►-Button, um ihn zu starten. Der Kanal startet oder stoppt gerade oder wartet auf den Verbindungsaufbau. Der Kanal ist bereit für Lese-/Schreiboperationen. Sie können ihn durch Klick auf den ◼-Button stoppen. Der Kanal läuft, aber die Verbindung ist momentan fehlerhaft. Bitte überprüfen Sie den Statustext für weitere Informationen. Variablen Um den Status der verschiedenen XML-Variablen zu überwachen und zu diagnostizieren, werfen Sie einen Blick auf die in CoDaBix angezeigte Status-Eigenschaft der Spalte. Falls der Exchange Mode auf „Implicit“ eingstellt ist, benutzen Sie den Button „Read actual Value“, um die Werte von der XML-Datei auszulesen und das Ergebnis in den Variablen zu speichern. Ansonsten können Sie die Load-Methode aufrufen, um zu prüfen, ob die XML-Datei erfolgreich gelesen werden kann. Logdatei Alle kanalbezogenen Statusinformationen werden auch in die kanalspezifische Logdatei im [LoggingFolder] protokolliert. Jede Logdatei wird nach dem Namensschema XML Exchange.<ChannelName>.log benannt. Der Inhalt einer solchen Logdatei kann wie folgt aussehen: ... 2018-04-11 11:32:37.0 +2: [Error] Error (Severity=High): Code=[-1], Text=[The operation has timed-out.], Details=[] ... Entities Wie jedes Exchange Plugin erweitert das XML Exchange Plugin das CoDaBix Exchange-Modell. Wie jedes Exchange Plugin erweitert das XML Exchange Plugin das CoDaBix Exchange-Modell. Exchange Der Exchange-Typ XmlExchange des Plugins definiert auch das XmlExchangeDocument und erweitert somit die grundlegenden CodabixExchange und CodabixExchangeChannel Entities. Während das XmlExchange nur eine Konkretisierung des CodabixExchange darstellt, erweitert das XmlExchangeDocument den CodabixExchangeChannel mit den XML Variable Entities. Channel Der Kanal wird von einem Channel Worker behandelt, der über Dateisystemoperationen Zugriff auf die XML-Datei herstellt. Der Worker liest standardmäßig keine Werte. Wenn der Exchange Mode auf „Implicit“ gestellt ist und ein Anwender oder Plugin in CoDaBix einen synchronen Lesevorgang der Channel Variablen anfordert (z.B. mit der „Read actual value“-Funktion in der CoDaBix Webkonfiguration), liest der Channel Worker diese aus der XML-Datei und schreibt diese in die entsprechenden CoDaBix Nodes. Wenn der Exchange Mode auf Explicit gestellt ist, liest der Channel Worker Werte, sobald die Load-Methode des Channels aufgerufen wird. Ähnlich schreibt der Channel Worker auch die Werte in die Datei, wenn ein Client oder Plugin Werte in die Channel-Variablen schreibt („Implicit“) oder wenn die Save-Methode des Channels aufgerufen wird („Explicit“). Damit eine XML-Exchange-Variable im Exchange Mode „Implicit“ regelmäßig gelesen wird, können Sie in der Webkonfiguration bei dem Node „History Options“ auf Yes stellen (was eine interne Subscription erstellt), oder Sie können zum Beispiel einen OPC UA Client verwenden, der mit dem OPC UA Server Plugin verbunden ist und damit eine Subscription für die XML-Variablennodes erstellen. In diesen Fällen liest der Channel Worker in regelmäßigen Intervallen die Variablen aus der XML-Datei und schreibt den neuen Wert nach einer Wertänderung automatisch in die entsprechenden CoDaBix Nodes. Ordner & Dateien Ordner Name Pfad Zweck / Verwendung AssemblyFolder <CodabixInstallDir>/plugins/XmlExchangePlugin/ Beinhaltet die Plugin-Assemblydatei. ConfigFolder <CodabixProjectDir>/plugins/XmlExchangePlugin/ Beinhaltet die Plugin-Konfigurationsdatei. LoggingFolder <CodabixProjectDir>/log/ Beinhaltet die Plugin-Logdateien. Dateien Typ Pfad Zweck / Verwendung Assembly [AssemblyFolder]/CoDaBix.XmlExchangePlugin.dll Die Plugin-Assembly Datei. Logging [LoggingFolder]/XML Exchange.<ChannelName>.log Die Logdatei. Versionsinformation Dieses Dokument Datum 2020-02-06 Version 1.0 Plugin Name XML Exchange Plugin Node /System/Exchange/XML Exchange Version 1.0.0 Assembly Name CoDaBix.XmlExchangePlugin.dll Datum 2020-02-11 Version 1.0.0.0 Inhaltsverzeichnis Konfiguration Document Settings Hinzufügen eines Documents (Channels) Variablen Beispiel Lesen/Schreiben Fehlerdiagnose Kanal Variablen Logdatei Entities Exchange Channel Ordner & Dateien Versionsinformation