Übersicht
Mithilfe der SPS-Bibliothek Tc3_JsonXml können SAX- und DOM-Parser-Technologien zur Erstellung und zum Navigieren von JSON- und XML-Dokumenten verwendet werden.
Systemvoraussetzung
|
|
---|---|
Target System | Win7, WES7, WEC7, Win10 |
Min. TwinCAT-Version | 3.1.4022.0 |
Min. TwinCAT-Level | TC1200 TC3 PLC |
SAX (Simple API for XML)
SAX wurde ursprünglich zur Behandlung von XML-Dokumenten entwickelt, kann aber auch für andere Datenformate, wie z. B. JSON, verwendet werden. Ein SAX-Parser behandelt die zu lesenden oder schreibenden Daten als sequentiellen Datenstrom. Beim Lesen eines Datenstroms werden definierte Callback-Methoden aufgerufen, welche dann die entsprechenden Inhalte des Datenstroms zurückliefern. Bei einem SAX-Parser wird daher auch von einem Event-basierten Parser gesprochen. Die auftretenden Ereignisse (Callback-Methoden) sind zustandslos, d. h. sie hängen nicht von vorhergehenden Ereignissen ab. Der Vorteil hierbei ist, dass das XML-Dokument zu keinem Zeitpunkt komplett im Speicher gehalten werden muss und die Anwendung über die Callbacks „on the fly“ reagieren kann.
DOM (Document Object Model)
DOM ist eine Spezifikation für den Zugriff auf XML-Dokumente, kann aber auch für andere Datenformate, wie z. B. HTML oder JSON, verwendet werden. Der Schnittstelle liegt ein definiertes Objektmodell zugrunde, dessen Gültigkeit eine Voraussetzung für die korrekte Verwendung ist. Dieses Objektmodell repräsentiert ein Dokument, z. B. ein JSON-Dokument, in Form einer Baumstruktur im Speicher, welche dann zur Navigation durch das Dokument verwendet werden kann. DOM erlaubt hierbei die Navigation zwischen den einzelnen Knoten, das Erzeugen, Verschieben und Löschen von Knoten, sowie das Auslesen, Ändern und Löschen von Knoteninhalten. Am Ende der Verarbeitung wird aus der finalisierten Baumstruktur dann ein neues JSON- oder XML-Dokument generiert. Der Vorteil hierbei ist, dass kein eigener Datenhaushalt mit den eingelesenen Daten erstellt werden muss, da die Daten im DOM vorliegen und immer wieder auf sie zugegriffen werden kann.
JSON-Dokument
Der folgende Ausschnitt zeigt ein beispielhaftes JSON-Dokument:
{
"VariableNameX": 0.0,
"VariableNameY": 0.0,
"VariableNameZ": 0.0
}
SJsonValue
Bei der Verwendung von SJsonValue ist zu beachten, dass es sich hier um temporäre Pointer handelt. Eine dauerhafte Verwendung durch Speicherung und Wiederverwendung ist nicht vorgesehen. Speziell ist zu beachten, dass die Aktualisierung des Pointers eines „Elternknoten“ immer die Ungültigkeit der Pointer der folgenden „Kindknoten“ zur Folge hat.
Metadaten
Die Tc3_JsonXml-Bibliothek beinhaltet den Funktionsbaustein FB_JsonReadWriteDataType, der eine automatische Generierung von Metadaten anhand von SPS-Attributen ermöglicht.
{
"Values": {
"VariableNameX": 0.0,
"VariableNameY": 0.0,
"VariableNameZ": 0.0
},
"MetaData": {
"VariableNameX": {
"Unit": "A"
},
"VariableNameY": {
"Unit": "V"
},
"VariableNameZ": {
"Unit": "mA"
}
}
}
Siehe auch: Beispiele > Tc3JsonXmlSampleJsonDataType.
Zur Verwendung von UTF-8-Zeichen, z. B. bei der automatischen Generierung von Metadaten über den Funktionsbaustein FB_JsonReadWriteDataType, muss im TwinCAT-Projekt das Auswahlkästchen zur Unterstützung von UTF-8 in der Symbolik aktiviert sein. Klicken Sie dazu im Projektbaum doppelt auf SYSTEM, öffnen Sie die Registerkarte Settings und aktivieren Sie das entsprechende Auswahlkästchen.

JSON Web Token (JWT)
JSON Web Token (JWT) sind ein offener Standard (nach RFC 7519), welche ein kompaktes und sich selbst beschreibendes Format definieren, um Informationen sicher zwischen Kommunikationsteilnehmern in Form eines JSON Objekts zu übertragen. Die Authentizität der übertragenen Information kann hierbei verifiziert und sichergestellt werden, da ein JWT mit einer digitalen Signatur versehen wird. Die Signatur kann hierbei über ein Shared Secret (via HMAC Algorithmus) oder einen Public/Private Key (via RSA) erfolgen.
Das am weitesten verbreitete Anwendungsbeispiel für JWT ist die Autorisierung eines Geräts oder Benutzers an einem Service. Sobald sich ein Benutzer an dem Service angemeldet hat, beinhalten alle weiteren Anfragen an den Service das JWT. Anhand des JWT kann der Service dann entscheiden, auf welche weiteren Dienste oder Ressourcen der Benutzer zugreifen darf. Hierdurch können zum Beispiel Single Sign On Lösungen in Cloud-Diensten realisiert werden.
Die Tc3_JsonXml Bibliothek stellt über die Methode FB_JwtEncode eine Funktion zum Erzeugen eines JWT zur Verfügung.