Handbuch. PLC Lib: Tc3_JsonXml. TwinCAT 3. Version: Datum:

Ähnliche Dokumente
Dokumentation C9900-L100. License-Key-USB-Stick für TwinCAT 3.1. Version: Datum:

Handbuch. PLC Lib: Tc2_Math. TwinCAT 3. Version: Datum:

Dokumentation. Motordrosseln AX2090-MD50. Version: Datum:

Dokumentation C9900-L100. License-Key-USB-Stick für TwinCAT 3.1. Version: Datum:

Dokumentation C9900-L100. License-Key-USB-Stick für TwinCAT 3.1. Version: Datum:

Handbuch. Remote Access. TwinCAT 3. Version: Datum:

Dokumentation. Netzfilter AX2090-NF50. Version: Datum:

Handbuch. TC3 PLC HMI Web. TwinCAT 3. Version: Datum: Bestell-Nr.: TF1810

Dokumentation. Netzdrosseln AX2090-ND50. Version: Datum:

Dokumentation EM2042. Sechzehnkanaliges, digitales Ausgangsmodul mit D-Sub- Anschluss. Version: Datum:

Handbuch. TwinCAT MC Flying Saw. TwinCAT 3. Version: Datum: Bestell-Nr.: TF5055

TC3 Interface für Matlab /Simulink

Handbuch. PLC Lib: Tc2_Coupler. TwinCAT 3. Version Datum

Handbuch. TC3 EtherCAT Simulation. TwinCAT 3. Version: Datum: Bestell-Nr.: TE1111

Handbuch. TC3 Wind Framework. TwinCAT 3. Version: Datum: Bestell-Nr.: TF8310

Dokumentation. AX5000 Tuning - Guide. Version: Datum:

Handbuch TC3 PLC HMI. TwinCAT 3. Version: Datum: Bestell-Nr.: TF1800

Beschreibung AX5806. Default-Werte zu den zulässigen Motoren

Handbuch. Source Control. TwinCAT 3. Version: Datum:

Technische Beschreibung. Drahlose Automatisierung Primärschleifenleiter WPC100

Bibliotheken für die Gebäudeautomation. Bausteine und Datentypen für den BACnet Controller

Technische Beschreibung. Drahtfreie Näherungsschalter Antenne WAT100

Beschreibung AX5805. Default-Werte zu den zulässigen Motoren

Anbindung eines Stromsensors an das WAGO-I/O-SYSTEM Anwendungshinweis

TwinCAT. TwinCAT Quick Start. The Windows Control and Automation Technology. Version: 1.2 Datum:

Dokumentation zu KM2604. Vierkanaliges Relaismodul. Version: Datum:

Handbuch. PLC Lib: Tc2_Standard. TwinCAT 3. Version: Datum:

Diagnose-Bits / -507 im Adressraum einer Steuerung beim Einsatz eines WAGO Kopplers Anwendungshinweis

Handbuch. TC3 EtherCAT Simulation. TwinCAT 3. Version: Datum: Bestell-Nr.: TE1111

Windows 95 Hyper Terminal an serieller Schnittstelle RS 232 C ( ) Anwendungshinweis

Ethernet-Controller als Modbus-Master Anwendungshinweis

Baumer SSI Drehgeber Typ BMA am SSI Geber Modul Anwendungshinweis

Dokumentation zu. KM2604 und KM2614. Vierkanaliges Relaismodul. Version: Datum:

Installation. Deutsch. Viewer. Rev /

Datenaustausch über Elpro Funkmodems Anwendungshinweis

Dokumentation. Bremswiderstände AX2090-BW5x. Version: Datum:

Dokumentation ZB8610. Lüftermodul für EtherCAT- und Busklemmen. Version: Datum:

EL9820/EL9821 Evaluation Kit

Bibliotheken für die Gebäudeautomation. Bausteinbeschreibung für KNX IP Master

Dokumentation. CU20xx, CU22xx. Ethernet-Switch. Version: Datum:

Anbindung WAGO Ethernet Controller über Modbus TCP an Siemens WinCC Anwendungshinweis

Installation. Deutsch. Server-Software für die DMVC iphone App. DMVC iphone Server. Rev /

Handbuch. Source Control. TwinCAT 3. Version Datum

Hinweise zum Einsatz von. Embedded-PC CX50x0-01xx. in explosionsgefährdeten Bereichen (ATEX)

Safety Integrated. Einführung und Begriffe zur funktionalen Sicherheit von Maschinen und Anlagen. Nachschlagewerk Januar Answers for industry.

Video Managementsoftware PView 7

Beschreibung AX5806. Liste der zulässigen Motoren

DMVC iphone Server Enterprise

Handbuch. PLC Lib: Tc2_DMX. TwinCAT 3. Version: Datum:

Bibliotheksbeschreibung. KNX_IP_750_889_02.lib. CODESYS-V2.3-Baustein für den KNX IP Anwendungscontroller

Hinweise zum Einsatz von. EtherCAT-Box-Modulen (EPxxxx-xxxx) in explosionsgefährdeten Bereichen (ATEX)

SIMATIC. Prozessleitsystem PCS 7 SIMATIC Management Console - Liesmich (Online) Security-Hinweise 1. Übersicht 2

Anbindung WAGO Ethernet Controller über OPC an Siemens WinCC Anwendungshinweis

Aufbau montieren SIMATIC. Aufbau montieren. Übersicht 1. Aufbau montieren. Getting Started A5E

Einschalten SIMATIC. Einschalten. Übersicht 1. Einschalten. IP-Adresse über das Display vergeben 3. Getting Started A5E

Dokumentation. AL225x Connector-Box. Version: Datum:

Beschreibung AX5805. Liste der zulässigen Motoren

Redundante ETHERNET-Kommunikation mit WAGO- Medienredundanz-ETHERNET- Feldbuscontroller

SIMATIC. Prozessleitsystem PCS 7 SIMATIC Management Console - Software-Aktualisierung. Software-Aktualisierung 1. Installationshandbuch

Allgemeines 1. Klasse: KDictionary 2 COMOS. Platform Klassendokumentation COMOSKDictionary_dll. Programmierhandbuch 05/2016 V 10.

Handbuch. PLC Lib: Tc3_PackML_V2. TwinCAT 3. Version: Datum:

Siemens IOL_CALL mit CPX I-Port Master für IO Link Devices

Programm erstellen. TIA Portal. SIMATIC Programm erstellen. Bausteinbibliothek laden 1. Programmbaustein Main [OB1] löschen

Anbindung eines seriellen Modbus Masters an das WAGO- I/O-SYSTEM Anwendungshinweis

Handbuch. TC3 Modbus TCP. TwinCAT 3. Version: Datum: Bestell-Nr.: TF6250

Beitragseinzug mit PC-VAB & ebanking Business

Bibliotheken für die Gebäudeautomation. Bausteinbeschreibungen für Spezielle M-Bus Zähler

Unified-E Standard WebHttp Adapter

SIMATIC HMI. WinCC V6.2 SP2 / V7.0 HMI Manual Collection. Dokumentation zu WinCC Basis / Optionen V6.2 SP2

Bibliotheksbeschreibung. WAGO-I/O-SYSTEM 750 CODESYS-2-Bibliothek WagoLibWakeOnLan.lib Wake on lan Ferngesteuertes Aufwecken von Netzwerk Geräten

FAQ zur Antriebstechnik

Berichte Benutzer Systemzuordnung. Assets und Systeme eines Benutzers ausgeben

Fern-Konfigurations-Software DMS NetConfig 2

Hinweise zum Einsatz des

Handbuch. PLC Lib: Tc2_EtherCAT. TwinCAT 3. Version: Datum:

Handbuch. PLC Lib: Tc2_NcDrive. TwinCAT. Version: Datum:

Handbuch. MATLAB /Simulink. TwinCAT 3. Version: Datum:

Anbindung eines WAGO Ethernet Kopplers an ifix V2.1 von Intellution Anwendungshinweis

Voraussetzungen SIMATIC. Voraussetzungen. Einleitung 1. Voraussetzungen. Weiterführende Informationen 3. Getting Started A5E

Voraussetzungen SIMATIC. Voraussetzungen. Einleitung. Voraussetzungen. Weiterführende Informationen 3. Getting Started 05/2014 A5E

Handbuch. PLC Lib: Tc2_SUPS. TwinCAT 3. Version: Datum:

Autor: Version: Datum: Christoph Luidold :39

Schnelleinstieg zum Projektieren eines HMI-Bildbausteins

Media Reader. All-in-One. Anleitung

Die Bibliothek SysLibFile.lib

openvpn mit Linux basierenden Steuerungen a500880_de

P-touch Editor starten

Java und XML 2. Java und XML

Telekom SIP-Trunk-Anbindung via LANCOM-Router

White Paper. Konfiguration und Verwendung des Auditlogs Winter Release

S4F80 SAP BPC Optimized for SAP S/4HANA

GSM-Antenne. Bedienungsanleitung de/de

Report Builder 6.1 Einsteiger

Entwicklerhandbuch Kernprüfung

Ereignisse Auf Benutzereingaben reagieren

Wirtschaftsinformatik (PWIN) 5. Mentorium. Wirtschaftsinformatik (PWIN), SS2010, Professur für Mobile Business & Multilateral Security 1

Funktionsbaustein für die Auswertung der Normdiagnose in Step 7

Dokumentation QuickHMI Erste Schritte

Docusnap X Discovery Service. Installation und Konfiguration

Transkript:

Handbuch PLC Lib: Tc3_JsonXml TwinCAT 3 Version: Datum: 1.1 03.07.2017

Inhaltsverzeichnis Inhaltsverzeichnis 1 Vorwort... 5 1.1 Hinweise zur Dokumentation... 5 1.2 Sicherheitshinweise... 6 2 Übersicht... 7 3 Beispiele... 8 3.1 Tc3JsonXmlSampleJsonDataType... 8 3.2 Tc3JsonXmlSampleJsonSaxReader... 9 3.3 Tc3JsonXmlSampleJsonSaxWriter... 10 3.4 Tc3JsonXmlSampleJsonDomReader... 10 PLC Lib: Tc3_JsonXml Version: 1.1 3

Inhaltsverzeichnis 4 Version: 1.1 PLC Lib: Tc3_JsonXml

Vorwort 1 Vorwort 1.1 Hinweise zur Dokumentation Diese Beschreibung wendet sich ausschließlich an ausgebildetes Fachpersonal der Steuerungs- und Automatisierungstechnik, das mit den geltenden nationalen Normen vertraut ist. Zur Installation und Inbetriebnahme der Komponenten ist die Beachtung der Dokumentation und der nachfolgenden Hinweise und Erklärungen unbedingt notwendig. Das Fachpersonal ist verpflichtet, für jede Installation und Inbetriebnahme die zu dem betreffenden Zeitpunkt veröffentliche Dokumentation zu verwenden. Das Fachpersonal hat sicherzustellen, dass die Anwendung bzw. der Einsatz der beschriebenen Produkte alle Sicherheitsanforderungen, einschließlich sämtlicher anwendbaren Gesetze, Vorschriften, Bestimmungen und Normen erfüllt. Disclaimer Diese Dokumentation wurde sorgfältig erstellt. Die beschriebenen Produkte werden jedoch ständig weiter entwickelt. Wir behalten uns das Recht vor, die Dokumentation jederzeit und ohne Ankündigung zu überarbeiten und zu ändern. Aus den Angaben, Abbildungen und Beschreibungen in dieser Dokumentation können keine Ansprüche auf Änderung bereits gelieferter Produkte geltend gemacht werden. Marken Beckhoff, TwinCAT, EtherCAT, Safety over EtherCAT, TwinSAFE, XFC und XTS sind eingetragene und lizenzierte Marken der Beckhoff Automation GmbH. Die Verwendung anderer in dieser Dokumentation enthaltenen Marken oder Kennzeichen durch Dritte kann zu einer Verletzung von Rechten der Inhaber der entsprechenden Bezeichnungen führen. Patente Die EtherCAT Technologie ist patentrechtlich geschützt, insbesondere durch folgende Anmeldungen und Patente: EP1590927, EP1789857, DE102004044764, DE102007017835 mit den entsprechenden Anmeldungen und Eintragungen in verschiedenen anderen Ländern. Die TwinCAT Technologie ist patentrechtlich geschützt, insbesondere durch folgende Anmeldungen und Patente: EP0851348, US6167425 mit den entsprechenden Anmeldungen und Eintragungen in verschiedenen anderen Ländern. EtherCAT ist eine eingetragene Marke und patentierte Technologie lizensiert durch die Beckhoff Automation GmbH, Deutschland Copyright Beckhoff Automation GmbH & Co. KG, Deutschland. Weitergabe sowie Vervielfältigung dieses Dokuments, Verwertung und Mitteilung seines Inhalts sind verboten, soweit nicht ausdrücklich gestattet. Zuwiderhandlungen verpflichten zu Schadenersatz. Alle Rechte für den Fall der Patent-, Gebrauchsmusteroder Geschmacksmustereintragung vorbehalten. PLC Lib: Tc3_JsonXml Version: 1.1 5

Vorwort 1.2 Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise und Erklärungen! Produktspezifische Sicherheitshinweise finden Sie auf den folgenden Seiten oder in den Bereichen Montage, Verdrahtung, Inbetriebnahme usw. Haftungsausschluss Die gesamten Komponenten werden je nach Anwendungsbestimmungen in bestimmten Hard- und SoftwareKonfigurationen ausgeliefert. Änderungen der Hard- oder Software-Konfiguration, die über die dokumentierten Möglichkeiten hinausgehen, sind unzulässig und bewirken den Haftungsausschluss der Beckhoff Automation GmbH & Co. KG. Qualifikation des Personals Diese Beschreibung wendet sich ausschließlich an ausgebildetes Fachpersonal der Steuerungs-, Automatisierungs- und Antriebstechnik, das mit den geltenden Normen vertraut ist. Erklärung der Symbole In der vorliegenden Dokumentation werden die folgenden Symbole mit einem nebenstehenden Sicherheitshinweis oder Hinweistext verwendet. Die Sicherheitshinweise sind aufmerksam zu lesen und unbedingt zu befolgen! Akute Verletzungsgefahr! Wenn der Sicherheitshinweis neben diesem Symbol nicht beachtet wird, besteht unmittelbare Gefahr für Leben und Gesundheit von Personen! GEFAHR Verletzungsgefahr! Wenn der Sicherheitshinweis neben diesem Symbol nicht beachtet wird, besteht Gefahr für Leben und Gesundheit von Personen! WARNUNG Schädigung von Personen! Wenn der Sicherheitshinweis neben diesem Symbol nicht beachtet wird, können Personen geschädigt werden! VORSICHT Schädigung von Umwelt oder Geräten Wenn der Hinweis neben diesem Symbol nicht beachtet wird, können Umwelt oder Geräte geschädigt werden. Achtung Tipp oder Fingerzeig Dieses Symbol kennzeichnet Informationen, die zum besseren Verständnis beitragen. Hinweis 6 Version: 1.1 PLC Lib: Tc3_JsonXml

Übersicht 2 Ü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. Systemvoraussetzungen Technische Daten Beschreibung Minimale TwinCAT-Version TwinCAT 3.1 Build 4022 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. PLC Lib: Tc3_JsonXml Version: 1.1 7

Beispiele 3 Beispiele 3.1 Tc3JsonXmlSampleJsonDataType Beispiel zum automatischen Konvertieren von Strukturen in eine JSON-Nachricht Dieses Beispiel veranschaulicht, wie eine Datenstruktur in eine JSON-Nachricht konvertiert werden kann. Bei der Konvertierung wird der Aufbau einer Struktur eins-zu-eins in ein entsprechendes JSON-Äquivalent überführt. Über SPS-Attribute an den Member-Variablen der Struktur können zusätzlich Metadaten angelegt werden. Download: https://infosys.beckhoff.com/content/1031/tcplclib_tc3_jsonxml/resources/zip/3664376331.zip Aufbau der zu konvertierenden Datenstruktur TYPE ST_Values : STRUCT {attribute 'Unit' := 'm/s'} {attribute 'DisplayName' := 'Speed'} Sensor1 : REAL := 42.42; {attribute 'Unit' := 'V'} {attribute 'DisplayName' := 'Voltage'} Sensor2 : DINT := 230; {attribute 'Unit' := 'A'} {attribute 'DisplayName' := 'Current'} Sensor3 : DINT := 3; END_STRUCT END_TYPE Deklarationsbereich PROGRAM MAIN VAR dttimestamp : DATE_AND_TIME := DT#2017-04-04-12:42:42; fbjson : FB_JsonSaxWriter; fbjsondatatype : FB_JsonReadWriteDataType; sjsondoc : STRING(255); sjsondoc2 : STRING(2000); stvalues : ST_Values; END_VAR Implementierungsbereich Ausgehend von der Instanz fbjson des Funktionsbausteins FB_JsonSaxWriter werden zwei Wege zum Generieren der JSON-Nachricht gezeigt. Bei einer JSON-Nachricht mit nicht mehr als 255 Zeichen kann die Methode GetDocument() verwendet werden. Bei größeren JSON-Nachrichten muss hingegen die Methode CopyDocument() verwendet werden. fbjson.resetdocument(); fbjson.startobject(); fbjson.addkeydatetime('timestamp', dttimestamp); fbjsondatatype.addjsonkeyvaluefromsymbol(fbjson, 'Values', 'ST_Values', SIZEOF(stValues), ADR(stValues)); fbjsondatatype.addjsonkeypropertiesfromsymbol(fbjson, 'MetaData', 'ST_Values', 'Unit DisplayName'); fbjson.endobject(); sjsondoc := fbjson.getdocument(); fbjson.copydocument(sjsondoc2, SIZEOF(sJsonDoc2)); Resultierende JSON-Nachricht { "Timestamp": "2017-04-10T17:35:49", "Values": { "Sensor1": 0.0, "Sensor2": 0.0, "Sensor3": 0.0 }, "MetaData": { 8 Version: 1.1 PLC Lib: Tc3_JsonXml

Beispiele } } "Sensor1": { "Unit": "m/s", "DisplayName": "Speed" }, "Sensor2": { "Unit": "V", "DisplayName": "Voltage" }, "Sensor3": { "Unit": "A", "DisplayName": "Current" } 3.2 Tc3JsonXmlSampleJsonSaxReader Beispiel zum Parsen von JSON-Dokumenten via SAX Reader Dieses Beispiel veranschaulicht, wie eine JSON-Nachricht programmatisch durchlaufen werden kann. Als Basis wird der Funktionsbaustein FB_JsonSaxReader verwendet. Download: https://infosys.beckhoff.com/content/1031/tcplclib_tc3_jsonxml/resources/zip/3664750475.zip Deklarationsbereich PROGRAM MAIN VAR fbjson : FB_JsonSaxReader; pjsonparse : JsonSaxHandler; sjsondoc : STRING(255) := '{"Values":{"Timestamp":"2017-04-04T12:42:42","Sensor1":42.42,"Sensor2":42}}'; END_VAR Implementierungsbereich Durch den Aufruf der Methode Parse(), die Übergabe der JSON-Nachricht als STRING und den Interface- Pointer auf eine Funktionsbaustein-Instanz, welche das Interface ITcJsonSaxHandler implementiert, werden der SAX Reader aktiviert und die entsprechenden Callback-Methoden durchlaufen. fbjson.parse(sjson := sjsondoc, iphdl := pjsonparse); Callback-Methoden Die Callback-Methoden werden an der Instanz des Funktionsbausteins, welcher das Interface ITcJsonSaxHandler implementiert, aufgerufen. Jede Callback-Methode repräsentiert ein gefundenes Element in der JSON-Nachricht. Zum Beispiel wird die Callback-Methode OnStartObject() aufgerufen, sobald eine geöffnete geschweifte Klammer detektiert wurde. Laut der oben genannten Beispiel-JSON-Nachricht werden also die folgenden Callback-Methoden in dieser Reihenfolge durchlaufen: 1. OnStartObject(), aufgrund der ersten geöffneten geschweiften Klammer 2. OnKey(), aufgrund des Properties "Values" 3. OnStartObject(), aufgrund der zweiten geöffneten geschweiften Klammer 4. OnKey(), aufgrund des Properties "Timestamp" 5. OnString(), aufgrund des Werts von Property "Timestamp" 6. OnKey(), aufgrund des Properties "Sensor1" 7. OnLreal(), aufgrund des Werts von Property "Sensor1 " 8. OnKey(), aufgrund des Properties "Sensor2 " 9. OnUdint(), aufgrund des Werts von Property "Sensor2" 10. OnEndObject(), aufgrund der ersten geschlossenen geschweiften Klammer 11. OnEndObject(), aufgrund der zweiten geschlossenen geschweiften Klammer PLC Lib: Tc3_JsonXml Version: 1.1 9

Beispiele Innerhalb der Callback-Methoden wird der aktuelle Zustand über eine Instanz des Enums E_JsonStates definiert und gespeichert. Hierüber kann auch ermittelt werden, ob es sich um eine gültige JSON-Nachricht handelt. Wenn zum Beispiel die Callback-Methode OnLreal() aufgerufen wird und sich der Zustand nicht im erwarteten State 70 (JSON_STATE_ONLREAL) befindet, kann an die Methode der Rückgabewert S_FALSE zurückgegeben werden. Der SAX Reader beendet dann automatisch die weitere Verarbeitung. 3.3 Tc3JsonXmlSampleJsonSaxWriter Beispiel zum Erstellen von JSON-Dokumenten via SAX Writer Dieses Beispiel veranschaulicht, wie eine JSON-Nachricht über den SAX-Mechanismus erstellt werden kann. Als Basis wird der Funktionsbaustein FB_JsonSaxWriter verwendet. Download: https://infosys.beckhoff.com/content/1031/tcplclib_tc3_jsonxml/resources/zip/3664753419.zip Deklarationsbereich PROGRAM MAIN VAR dttimestamp : DATE_AND_TIME := DT#2017-04-04-12:42:42; fbjson : FB_JsonSaxWriter; sjsondoc : STRING(255); END_VAR Implementierungsbereich Der SAX-Mechanismus durchläuft ein zu erstellendes JSON-Dokument sequentiell, d. h. die entsprechenden Elemente werden der Reihe nach durchlaufen und erstellt. fbjson.startobject(); fbjson.addkey('values'); fbjson.startobject(); fbjson.addkey('timestamp'); fbjson.adddatetime(dttimestamp); fbjson.addkey('sensor1'); fbjson.addreal(42.42); fbjson.addkey('sensor2'); fbjson.adddint(42); fbjson.addkey('sensor3'); fbjson.addbool(true); fbjson.endobject(); fbjson.endobject(); sjsondoc := fbjson.getdocument(); fbjson.resetdocument(); Resultierende JSON-Nachricht { } "Timestamp": "2017-04-04T12:42:42", "Values": { "Sensor1": 42.42, "Sensor2": 42, "Sensor3": true } 3.4 Tc3JsonXmlSampleJsonDomReader Dieses Beispiel veranschaulicht, wie eine JSON-Nachricht programmatisch auf Basis von DOM durchlaufen werden kann. Als Basis wird der Funktionsbaustein FB_JsonDomParser verwendet. Download: https://infosys.beckhoff.com/content/1031/tcplclib_tc3_jsonxml/resources/zip/3916597387.zip Deklarationsbereich PROGRAM MAIN VAR fbjson : FB_JsonDomParser; jsondoc : SJsonValue; 10 Version: 1.1 PLC Lib: Tc3_JsonXml

Beispiele jsonprop : SJsonValue; jsonvalue : SJsonValue; bhasmember : BOOL; smessage : STRING(255) := '{"serialnumber":"g030pt028191ac4r","batteryvoltage":"1547mv","clicktype":"single"}'; streceiveddata : ST_ReceivedData; END_VAR Implementierungsbereich Durch die Methode ParseDocument() wird die JSON-Nachricht in den DOM-Tree geladen. Anschließend kann mit der Methode HasMember() überprüft werden, ob ein bestimmtes Property enthalten ist. Mittels FindMember() wird das Property selektiert und anschließend über GetString() dessen Value extrahiert. jsondoc := fbjson.parsedocument(smessage); bhasmember := fbjson.hasmember(jsondoc, 'serialnumber'); IF (bhasmember) THEN bhasmember := FALSE; jsonprop := fbjson.findmember(jsondoc, 'serialnumber'); streceiveddata.serialnumber := fbjson.getstring(jsonprop); END_IF bhasmember := fbjson.hasmember(jsondoc, 'batteryvoltage'); IF (bhasmember) THEN bhasmember := FALSE; jsonprop := fbjson.findmember(jsondoc, 'batteryvoltage'); streceiveddata.batteryvoltage := fbjson.getstring(jsonprop); END_IF bhasmember := fbjson.hasmember(jsondoc, 'clicktype'); IF (bhasmember) THEN bhasmember := FALSE; jsonprop := fbjson.findmember(jsondoc, 'clicktype'); streceiveddata.clicktype := fbjson.getstring(jsonprop); END_IF PLC Lib: Tc3_JsonXml Version: 1.1 11