100
Handbuch PLC Lib: Tc3_JsonXml TwinCAT 3 1.6 19.11.2019 Version: Datum:

Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

  • Upload
    others

  • View
    46

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Handbuch

PLC Lib: Tc3_JsonXml

TwinCAT 3

1.619.11.2019

Version:Datum:

Page 2: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise
Page 3: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Inhaltsverzeichnis

PLC Lib: Tc3_JsonXml 3Version: 1.6

Inhaltsverzeichnis1 Vorwort ..................................................................................................................................................... 11

1.1 Hinweise zur Dokumentation........................................................................................................... 111.2 Sicherheitshinweise......................................................................................................................... 12

2 Übersicht .................................................................................................................................................. 13

3 Funktionsbausteine................................................................................................................................. 153.1 FB_JsonDomParser ........................................................................................................................ 15

3.1.1 AddArrayMember.............................................................................................................  153.1.2 AddBase64Member .........................................................................................................  153.1.3 AddBoolMember ..............................................................................................................  153.1.4 AddDateTimeMember......................................................................................................  163.1.5 AddDcTimeMember.........................................................................................................  163.1.6 AddDoubleMember..........................................................................................................  163.1.7 AddFileTimeMember .......................................................................................................  163.1.8 AddHexBinaryMember.....................................................................................................  173.1.9 AddInt64Member .............................................................................................................  173.1.10 AddIntMember .................................................................................................................  173.1.11 AddJsonMember..............................................................................................................  183.1.12 AddNullMember ...............................................................................................................  183.1.13 AddObjectMember...........................................................................................................  183.1.14 AddStringMember............................................................................................................  183.1.15 AddUint64Member...........................................................................................................  193.1.16 AddUintMember...............................................................................................................  193.1.17 ArrayBegin .......................................................................................................................  193.1.18 ArrayEnd..........................................................................................................................  203.1.19 ClearArray........................................................................................................................  203.1.20 CopyDocument ................................................................................................................  203.1.21 CopyJson.........................................................................................................................  213.1.22 CopyString .......................................................................................................................  213.1.23 FindMember.....................................................................................................................  223.1.24 FindMemberPath .............................................................................................................  223.1.25 GetArraySize ...................................................................................................................  233.1.26 GetArrayValue .................................................................................................................  233.1.27 GetArrayValueByIdx ........................................................................................................  233.1.28 GetBase64.......................................................................................................................  233.1.29 GetBool............................................................................................................................  243.1.30 GetDateTime ...................................................................................................................  243.1.31 GetDcTime.......................................................................................................................  243.1.32 GetDocument...................................................................................................................  243.1.33 GetDocumentLength........................................................................................................  243.1.34 GetDocumentRoot ...........................................................................................................  253.1.35 GetDouble........................................................................................................................  253.1.36 GetFileTime .....................................................................................................................  253.1.37 GetHexBinary ..................................................................................................................  253.1.38 GetInt ...............................................................................................................................  26

Page 4: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Inhaltsverzeichnis

PLC Lib: Tc3_JsonXml4 Version: 1.6

3.1.39 GetInt64 ...........................................................................................................................  263.1.40 GetJson ...........................................................................................................................  263.1.41 GetJsonLength ................................................................................................................  263.1.42 GetMaxDecimalPlaces ....................................................................................................  263.1.43 GetMemberName ............................................................................................................  273.1.44 GetMemberValue.............................................................................................................  273.1.45 GetString..........................................................................................................................  273.1.46 GetStringLength...............................................................................................................  273.1.47 GetType ...........................................................................................................................  283.1.48 GetUint.............................................................................................................................  283.1.49 GetUint64.........................................................................................................................  283.1.50 HasMember .....................................................................................................................  283.1.51 IsArray .............................................................................................................................  293.1.52 IsBase64..........................................................................................................................  293.1.53 IsBool...............................................................................................................................  293.1.54 IsDouble...........................................................................................................................  293.1.55 IsFalse .............................................................................................................................  303.1.56 IsHexBinary .....................................................................................................................  303.1.57 IsInt ..................................................................................................................................  303.1.58 IsInt64 ..............................................................................................................................  303.1.59 IsISO8601TimeFormat ....................................................................................................  303.1.60 IsNull ................................................................................................................................  313.1.61 IsNumber .........................................................................................................................  313.1.62 IsObject............................................................................................................................  313.1.63 IsString.............................................................................................................................  313.1.64 IsTrue...............................................................................................................................  313.1.65 IsUint................................................................................................................................  323.1.66 IsUint64............................................................................................................................  323.1.67 LoadDocumentFromFile ..................................................................................................  323.1.68 MemberBegin ..................................................................................................................  323.1.69 MemberEnd .....................................................................................................................  333.1.70 NewDocument .................................................................................................................  333.1.71 NextArray.........................................................................................................................  333.1.72 ParseDocument ...............................................................................................................  333.1.73 PushbackBase64Value....................................................................................................  333.1.74 PushbackBoolValue.........................................................................................................  343.1.75 PushbackDateTimeValue ................................................................................................  343.1.76 PushbackDcTimeValue ...................................................................................................  343.1.77 PushbackDoubleValue ....................................................................................................  343.1.78 PushbackFileTimeValue ..................................................................................................  353.1.79 PushbackHexBinaryValue ...............................................................................................  353.1.80 PushbackInt64Value........................................................................................................  353.1.81 PushbackIntValue............................................................................................................  363.1.82 PushbackJsonValue ........................................................................................................  363.1.83 PushbackNullValue..........................................................................................................  363.1.84 PushbackStringValue ......................................................................................................  36

Page 5: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Inhaltsverzeichnis

PLC Lib: Tc3_JsonXml 5Version: 1.6

3.1.85 PushbackUint64Value .....................................................................................................  373.1.86 PushbackUintValue .........................................................................................................  373.1.87 RemoveAllMembers ........................................................................................................  373.1.88 RemoveArray...................................................................................................................  373.1.89 RemoveMember ..............................................................................................................  383.1.90 RemoveMemberByName ................................................................................................  383.1.91 SaveDocumentToFile ......................................................................................................  393.1.92 SetArray...........................................................................................................................  393.1.93 SetBase64 .......................................................................................................................  393.1.94 SetBool ............................................................................................................................  403.1.95 SetDateTime....................................................................................................................  403.1.96 SetDcTime .......................................................................................................................  403.1.97 SetDouble ........................................................................................................................  403.1.98 SetFileTime......................................................................................................................  413.1.99 SetHexBinary...................................................................................................................  413.1.100 SetInt ...............................................................................................................................  413.1.101 SetInt64 ...........................................................................................................................  423.1.102 SetJson............................................................................................................................  423.1.103 SetMaxDecimalPlaces.....................................................................................................  423.1.104 SetNull .............................................................................................................................  423.1.105 SetObject .........................................................................................................................  433.1.106 SetString ..........................................................................................................................  433.1.107 SetUint .............................................................................................................................  433.1.108 SetUint64 .........................................................................................................................  43

3.2 FB_JsonSaxReader ........................................................................................................................ 443.2.1 DecodeBase64 ................................................................................................................  443.2.2 DecodeDateTime.............................................................................................................  443.2.3 DecodeDcTime ................................................................................................................  443.2.4 DecodeFileTime...............................................................................................................  453.2.5 DecodeHexBinary............................................................................................................  453.2.6 GetLastParseResult.........................................................................................................  453.2.7 IsBase64..........................................................................................................................  453.2.8 IsHexBinary .....................................................................................................................  463.2.9 IsISO8601TimeFormat ....................................................................................................  463.2.10 Parse ...............................................................................................................................  463.2.11 ParseValues ....................................................................................................................  47

3.3 FB_JsonSaxWriter........................................................................................................................... 473.3.1 AddBase64 ......................................................................................................................  473.3.2 AddBool ...........................................................................................................................  473.3.3 AddDateTime...................................................................................................................  473.3.4 AddDcTime ......................................................................................................................  483.3.5 AddDint ............................................................................................................................  483.3.6 AddFileTime.....................................................................................................................  483.3.7 AddHexBinary..................................................................................................................  483.3.8 AddKey ............................................................................................................................  493.3.9 AddKeyBool .....................................................................................................................  49

Page 6: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Inhaltsverzeichnis

PLC Lib: Tc3_JsonXml6 Version: 1.6

3.3.10 AddKeyDateTime.............................................................................................................  493.3.11 AddKeyDcTime................................................................................................................  493.3.12 AddKeyFileTime ..............................................................................................................  503.3.13 AddKeyLreal ....................................................................................................................  503.3.14 AddKeyNull ......................................................................................................................  503.3.15 AddKeyNumber ...............................................................................................................  503.3.16 AddKeyString...................................................................................................................  513.3.17 AddLint.............................................................................................................................  513.3.18 AddLreal ..........................................................................................................................  513.3.19 AddNull ............................................................................................................................  523.3.20 AddRawArray...................................................................................................................  523.3.21 AddRawObject.................................................................................................................  523.3.22 AddReal ...........................................................................................................................  523.3.23 AddString .........................................................................................................................  533.3.24 AddUdint ..........................................................................................................................  533.3.25 AddUlint ...........................................................................................................................  533.3.26 CopyDocument ................................................................................................................  533.3.27 EndArray..........................................................................................................................  543.3.28 EndObject ........................................................................................................................  543.3.29 GetDocument...................................................................................................................  543.3.30 GetDocumentLength........................................................................................................  543.3.31 GetMaxDecimalPlaces ....................................................................................................  553.3.32 ResetDocument ...............................................................................................................  553.3.33 SetMaxDecimalPlaces.....................................................................................................  553.3.34 StartArray.........................................................................................................................  553.3.35 StartObject.......................................................................................................................  55

3.4 FB_JsonReadWriteDataType.......................................................................................................... 553.4.1 AddJsonKeyPropertiesFromSymbol................................................................................  553.4.2 AddJsonKeyValueFromSymbol .......................................................................................  563.4.3 AddJsonValueFromSymbol .............................................................................................  563.4.4 GetDataTypeNameByAddress ........................................................................................  573.4.5 GetJsonFromSymbol .......................................................................................................  573.4.6 GetJsonStringFromSymbol..............................................................................................  583.4.7 GetJsonStringFromSymbolProperties .............................................................................  583.4.8 GetSymbolNameByAddress ............................................................................................  583.4.9 SetSymbolFromJson .......................................................................................................  58

3.5 FB_XmlDomParser.......................................................................................................................... 593.5.1 AppendAttribute ...............................................................................................................  593.5.2 AppendAttributeAsBool....................................................................................................  593.5.3 AppendAttributeAsDouble ...............................................................................................  603.5.4 AppendAttributeAsFloat...................................................................................................  603.5.5 AppendAttributeAsInt.......................................................................................................  603.5.6 AppendAttributeAsLint .....................................................................................................  613.5.7 AppendAttributeAsUint ....................................................................................................  613.5.8 AppendAttributeAsUlint....................................................................................................  613.5.9 AppendAttributeCopy.......................................................................................................  62

Page 7: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Inhaltsverzeichnis

PLC Lib: Tc3_JsonXml 7Version: 1.6

3.5.10 AppendChild ....................................................................................................................  623.5.11 AppendChildAsBool.........................................................................................................  623.5.12 AppendChildAsDouble.....................................................................................................  633.5.13 AppendChildAsFloat ........................................................................................................  633.5.14 AppendChildAsInt ............................................................................................................  633.5.15 AppendChildAsLint ..........................................................................................................  643.5.16 AppendChildAsUint..........................................................................................................  643.5.17 AppendChildAsUlint.........................................................................................................  643.5.18 AppendCopy ....................................................................................................................  653.5.19 AppendNode....................................................................................................................  653.5.20 Attribute ...........................................................................................................................  653.5.21 AttributeAsBool ................................................................................................................  663.5.22 AttributeAsDouble............................................................................................................  663.5.23 AttributeAsFloat ...............................................................................................................  663.5.24 AttributeAsInt ...................................................................................................................  663.5.25 AttributeAsLint .................................................................................................................  673.5.26 AttributeAsUint.................................................................................................................  673.5.27 AttributeAsUlint ................................................................................................................  673.5.28 AttributeBegin ..................................................................................................................  673.5.29 AttributeFromIterator........................................................................................................  683.5.30 AttributeName..................................................................................................................  683.5.31 Attributes..........................................................................................................................  683.5.32 AttributeText ....................................................................................................................  693.5.33 Begin................................................................................................................................  693.5.34 BeginByName..................................................................................................................  693.5.35 Child.................................................................................................................................  693.5.36 ChildByAttribute ...............................................................................................................  703.5.37 ChildByAttributeAndName ...............................................................................................  703.5.38 ChildByName...................................................................................................................  703.5.39 Children ...........................................................................................................................  713.5.40 ChildrenByName..............................................................................................................  713.5.41 Compare ..........................................................................................................................  713.5.42 CopyAttributeText ............................................................................................................  723.5.43 CopyDocument ................................................................................................................  723.5.44 CopyNodeText.................................................................................................................  723.5.45 CopyNodeXml..................................................................................................................  733.5.46 FirstNodeByPath..............................................................................................................  733.5.47 GetAttributeTextLength....................................................................................................  733.5.48 GetDocumentLength........................................................................................................  733.5.49 GetDocumentNode ..........................................................................................................  743.5.50 GetNodeTextLength ........................................................................................................  743.5.51 GetNodeXmlLength .........................................................................................................  743.5.52 GetRootNode...................................................................................................................  743.5.53 InsertAttributeCopy ..........................................................................................................  753.5.54 InsertAttribute ..................................................................................................................  753.5.55 InsertChild........................................................................................................................  75

Page 8: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Inhaltsverzeichnis

PLC Lib: Tc3_JsonXml8 Version: 1.6

3.5.56 InsertCopy .......................................................................................................................  763.5.57 IsEnd................................................................................................................................  763.5.58 LoadDocumentFromFile ..................................................................................................  763.5.59 NewDocument .................................................................................................................  763.5.60 Next .................................................................................................................................  773.5.61 NextAttribute ....................................................................................................................  773.5.62 NextByName....................................................................................................................  773.5.63 NextSibling.......................................................................................................................  773.5.64 NextSiblingByName.........................................................................................................  783.5.65 Node ................................................................................................................................  783.5.66 NodeAsBool.....................................................................................................................  783.5.67 NodeAsDouble.................................................................................................................  793.5.68 NodeAsFloat ....................................................................................................................  793.5.69 NodeAsInt ........................................................................................................................  793.5.70 NodeAsLint ......................................................................................................................  793.5.71 NodeAsUint......................................................................................................................  803.5.72 NodeAsUlint.....................................................................................................................  803.5.73 NodeName.......................................................................................................................  803.5.74 NodeText .........................................................................................................................  803.5.75 ParseDocument ...............................................................................................................  813.5.76 RemoveChild ...................................................................................................................  813.5.77 RemoveChildByName .....................................................................................................  813.5.78 SaveDocumentToFile ......................................................................................................  813.5.79 SetAttribute ......................................................................................................................  823.5.80 SetAttributeAsBool...........................................................................................................  823.5.81 SetAttributeAsDouble ......................................................................................................  823.5.82 SetAttributeAsFloat..........................................................................................................  823.5.83 SetAttributeAsInt..............................................................................................................  833.5.84 SetAttributeAsLint ............................................................................................................  833.5.85 SetAttributeAsUint ...........................................................................................................  833.5.86 SetAttributeAsUlint...........................................................................................................  833.5.87 SetChild ...........................................................................................................................  843.5.88 SetChildAsBool................................................................................................................  843.5.89 SetChildAsDouble............................................................................................................  843.5.90 SetChildAsFloat ...............................................................................................................  853.5.91 SetChildAsInt ...................................................................................................................  853.5.92 SetChildAsLint .................................................................................................................  853.5.93 SetChildAsUint.................................................................................................................  853.5.94 SetChildAsUlint................................................................................................................  86

3.6 FB_JwtEncode ................................................................................................................................ 86

4 Schnittstellen ........................................................................................................................................... 884.1 ITcJsonSaxHandler ......................................................................................................................... 88

4.1.1 OnBool.............................................................................................................................  884.1.2 OnDint..............................................................................................................................  884.1.3 OnEndArray .....................................................................................................................  884.1.4 OnEndObject ...................................................................................................................  88

Page 9: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Inhaltsverzeichnis

PLC Lib: Tc3_JsonXml 9Version: 1.6

4.1.5 OnKey..............................................................................................................................  884.1.6 OnLint ..............................................................................................................................  894.1.7 OnLreal ............................................................................................................................  894.1.8 OnNull ..............................................................................................................................  894.1.9 OnStartArray....................................................................................................................  894.1.10 OnStartObject ..................................................................................................................  894.1.11 OnString...........................................................................................................................  904.1.12 OnUdint............................................................................................................................  904.1.13 OnUlint.............................................................................................................................  90

4.2 ITcJsonSaxValues........................................................................................................................... 904.2.1 OnBoolValue....................................................................................................................  904.2.2 OnDintValue ....................................................................................................................  914.2.3 OnLintValue .....................................................................................................................  914.2.4 OnLrealValue...................................................................................................................  914.2.5 OnNullValue.....................................................................................................................  914.2.6 OnStringValue .................................................................................................................  924.2.7 OnUdintValue ..................................................................................................................  924.2.8 OnUlintValue....................................................................................................................  92

5 Beispiele................................................................................................................................................... 935.1 Tc3JsonXmlSampleJsonDataType ................................................................................................. 935.2 Tc3JsonXmlSampleJsonSaxReader ............................................................................................... 945.3 Tc3JsonXmlSampleJsonSaxWriter ................................................................................................. 955.4 Tc3JsonXmlSampleJsonDomReader.............................................................................................. 965.5 Tc3JsonXmlSampleXmlDomReader ............................................................................................... 975.6 Tc3JsonXmlSampleXmlDomWriter ................................................................................................. 98

6 Support und Service.............................................................................................................................. 100

Page 10: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Inhaltsverzeichnis

PLC Lib: Tc3_JsonXml10 Version: 1.6

Page 11: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Vorwort

PLC Lib: Tc3_JsonXml 11Version: 1.6

1 Vorwort

1.1 Hinweise zur DokumentationDiese Beschreibung wendet sich ausschließlich an ausgebildetes Fachpersonal der Steuerungs- undAutomatisierungstechnik, das mit den geltenden nationalen Normen vertraut ist.Zur Installation und Inbetriebnahme der Komponenten ist die Beachtung der Dokumentation und dernachfolgenden Hinweise und Erklärungen unbedingt notwendig. Das Fachpersonal ist verpflichtet, für jede Installation und Inbetriebnahme die zu dem betreffenden Zeitpunktveröffentliche Dokumentation zu verwenden.

Das Fachpersonal hat sicherzustellen, dass die Anwendung bzw. der Einsatz der beschriebenen Produktealle Sicherheitsanforderungen, einschließlich sämtlicher anwendbaren Gesetze, Vorschriften, Bestimmungenund Normen erfüllt.

Disclaimer

Diese Dokumentation wurde sorgfältig erstellt. Die beschriebenen Produkte werden jedoch ständig weiterentwickelt.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®, EtherCAT G®, EtherCAT G10®, EtherCAT P®, Safety over EtherCAT®,TwinSAFE®, XFC®, und XTS® und XPlanar®, sind eingetragene und lizenzierte Marken der BeckhoffAutomation GmbH.Die Verwendung anderer in dieser Dokumentation enthaltenen Marken oder Kennzeichen durch Dritte kannzu einer Verletzung von Rechten der Inhaber der entsprechenden Bezeichnungen führen.

Patente

Die EtherCAT-Technologie ist patentrechtlich geschützt, insbesondere durch folgende Anmeldungen undPatente:EP1590927, EP1789857, EP1456722, EP2137893, DE102015105702mit den entsprechenden Anmeldungen und Eintragungen in verschiedenen anderen Ländern.

EtherCAT® ist eine eingetragene Marke und patentierte Technologie lizenziert durch die BeckhoffAutomation GmbH, Deutschland

Copyright

© Beckhoff Automation GmbH & Co. KG, Deutschland.Weitergabe sowie Vervielfältigung dieses Dokuments, Verwertung und Mitteilung seines Inhalts sindverboten, soweit nicht ausdrücklich gestattet.Zuwiderhandlungen verpflichten zu Schadenersatz. Alle Rechte für den Fall der Patent-, Gebrauchsmuster-oder Geschmacksmustereintragung vorbehalten.

Page 12: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Vorwort

PLC Lib: Tc3_JsonXml12 Version: 1.6

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 Software-Konfigurationen ausgeliefert. Änderungen der Hard- oder Software-Konfiguration, die über diedokumentierten Möglichkeiten hinausgehen, sind unzulässig und bewirken den Haftungsausschluss derBeckhoff 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 nebenstehendenSicherheitshinweis oder Hinweistext verwendet. Die Sicherheitshinweise sind aufmerksam zu lesen undunbedingt zu befolgen!

GEFAHRAkute Verletzungsgefahr!Wenn der Sicherheitshinweis neben diesem Symbol nicht beachtet wird, besteht unmittelbare Gefahr fürLeben und Gesundheit von Personen!

WARNUNGVerletzungsgefahr!Wenn der Sicherheitshinweis neben diesem Symbol nicht beachtet wird, besteht Gefahr für Leben und Ge-sundheit von Personen!

VORSICHTSchädigung von Personen!Wenn der Sicherheitshinweis neben diesem Symbol nicht beachtet wird, können Personen geschädigt wer-den!

HINWEISSchädigung von Umwelt oder GerätenWenn der Hinweis neben diesem Symbol nicht beachtet wird, können Umwelt oder Geräte geschädigt wer-den.

Tipp oder FingerzeigDieses Symbol kennzeichnet Informationen, die zum besseren Verständnis beitragen.

Page 13: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Übersicht

PLC Lib: Tc3_JsonXml 13Version: 1.6

2 ÜbersichtMithilfe der SPS-Bibliothek Tc3_JsonXml können SAX- und DOM-Parser-Technologien zur Erstellung undzum Navigieren von JSON- und XML-Dokumenten verwendet werden.

SAX (Simple API for XML)

SAX wurde ursprünglich zur Behandlung von XML-Dokumenten entwickelt, kann aber auch für andereDatenformate, wie z. B. JSON, verwendet werden. Ein SAX-Parser behandelt die zu lesenden oderschreibenden Daten als sequentiellen Datenstrom. Beim Lesen eines Datenstroms werden definierteCallback-Methoden aufgerufen, welche dann die entsprechenden Inhalte des Datenstroms zurückliefern. Beieinem SAX-Parser wird daher auch von einem Event-basierten Parser gesprochen. Die auftretendenEreignisse (Callback-Methoden) sind zustandslos, d. h. sie hängen nicht von vorhergehenden Ereignissenab. Der Vorteil hierbei ist, dass das XML-Dokument zu keinem Zeitpunkt komplett im Speicher gehaltenwerden 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 einDokument, z. B. ein JSON-Dokument, in Form einer Baumstruktur im Speicher, welche dann zur Navigationdurch das Dokument verwendet werden kann. DOM erlaubt hierbei die Navigation zwischen den einzelnenKnoten, das Erzeugen, Verschieben und Löschen von Knoten, sowie das Auslesen, Ändern und Löschenvon Knoteninhalten. Am Ende der Verarbeitung wird aus der finalisierten Baumstruktur dann ein neuesJSON- oder XML-Dokument generiert. Der Vorteil hierbei ist, dass kein eigener Datenhaushalt mit deneingelesenen Daten erstellt werden muss, da die Daten im DOM vorliegen und immer wieder auf siezugegriffen werden kann.

Beispiel JSON-Dokument

Der folgende Ausschnitt zeigt ein beispielhaftes JSON-Dokument:{  "VariableNameX": 0.0,  "VariableNameY": 0.0,  "VariableNameZ": 0.0}

Metadaten

Die Tc3_JsonXml-Bibliothek beinhaltet den Funktionsbaustein FB_JsonReadWriteDataType [} 55], der eineautomatische 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 [} 93].

Page 14: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Übersicht

PLC Lib: Tc3_JsonXml14 Version: 1.6

Zur Verwendung von UTF-8-Zeichen, z. B. bei der automatischen Generierung von Metadaten über denFunktionsbaustein FB_JsonReadWriteDataType [} 55], muss im TwinCAT-Projekt das Auswahlkästchen zurUnterstützung von UTF-8 in der Symbolik aktiviert sein. Klicken Sie dazu im Projektbaum doppelt aufSYSTEM, ö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 selbstbeschreibendes Format definieren, um Informationen sicher zwischen Kommunikationsteilnehmern in Formeines JSON Objekts zu übertragen. Die Authentizität der übertragenen Information kann hierbei verifiziertund 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 oderBenutzers an einem Service. Sobald sich ein Benutzer an dem Service angemeldet hat, beinhalten alleweiteren Anfragen an den Service das JWT. Anhand des JWT kann der Service dann entscheiden, aufwelche weiteren Dienste oder Ressourcen der Benutzer zugreifen darf. Hierdurch können zum BeispielSingle Sign On Lösungen in Cloud-Diensten realisiert werden.

Die Tc3_JsonXml Bibliothek stellt über die Methode FB_JwtEncode [} 86] eine Funktion zum Erzeugeneines JWT zur Verfügung.

Systemvoraussetzungen

Technische Daten BeschreibungMinimale TwinCAT-Version TwinCAT 3.1 Build 4022

Page 15: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml 15Version: 1.6

3 Funktionsbausteine

3.1 FB_JsonDomParser

3.1.1 AddArrayMemberDiese Methode fügt ein Array-Member zu einem JSON-Objekt hinzu.

SyntaxMETHOD AddArrayMember : SJsonValueVAR_INPUT  v : SJsonValue;END_VARVAR_IN_OUT CONSTANT  member : STRING;END_VARVAR_INPUT  reserve : UDINT;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonArray := fbJson.AddArrayMember(jsonDoc, 'TestArray', 0);

3.1.2 AddBase64MemberDiese Methode fügt ein Base64-Member zu einem JSON-Objekt hinzu. Als Eingabeparameter kann z. B.eine Struktur adressiert werden. Die entsprechende Base64-Kodierung erfolgt durch die Methode.

SyntaxMETHOD AddBase64Member : SJsonValueVAR_INPUT  v : SJsonValue;  p : PVOID;  n : DINT;END_VARVAR_IN_OUT CONSTANT  member : STRING;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonBase64 := fbJson.AddBase64Member(jsonDoc, 'TestBase64', ADR(stStruct), SIZEOF(stStruct));

3.1.3 AddBoolMemberDiese Methode fügt ein Bool-Member zu einem JSON-Objekt hinzu.

SyntaxMETHOD AddBoolMember : SJsonValueVAR_INPUT  v     : SJsonValue;  value : BOOL;END_VARVAR_IN_OUT CONSTANT  member : STRING;END_VAR

Beispielaufruf:

Page 16: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml16 Version: 1.6

jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonMem := fbJson.AddBoolMember(jsonDoc, 'TestBool', TRUE);

3.1.4 AddDateTimeMemberDiese Methode fügt ein DateTime-Member zu einem JSON-Objekt hinzu.

SyntaxMETHOD AddDateTimeMember : SJsonValueVAR_INPUT  v     : SJsonValue;  value : DATE_AND_TIME;END_VARVAR_IN_OUT CONSTANT  member : STRING;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonMem := fbJson.AddDateTimeMember(jsonDoc, 'TestDateTime', DT#2018-11-22-12:12);

3.1.5 AddDcTimeMemberDiese Methode fügt ein DcTime-Member zu einem JSON-Objekt hinzu.

SyntaxMETHOD AddDcTimeMember : SJsonValueVAR_INPUT  v     : SJsonValue;  value : DCTIME;END_VARVAR_IN_OUT CONSTANT    member : STRING;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonMem := fbJson.AddDcTimeMember(jsonDoc, 'TestDcTime', 1234);

3.1.6 AddDoubleMemberDiese Methode fügt ein Double-Member zu einem JSON-Objekt hinzu.

SyntaxMETHOD AddDoubleMember : SJsonValueVAR_INPUT  v     : SJsonValue;  value : LREAL;END_VARVAR_IN_OUT CONSTANT  member : STRING;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonMem := fbJson.AddDoubleMember(jsonDoc, 'TestDouble', 42.42);

3.1.7 AddFileTimeMemberDiese Methode fügt ein FileTime-Member zu einem JSON-Objekt hinzu.

Page 17: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml 17Version: 1.6

SyntaxMETHOD AddFileTimeMember : SJsonValueVAR_INPUT  v     : SJsonValue;  value : FILETIME;END_VARVAR_IN_OUT CONSTANT  member : STRING;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonMem := fbJson.AddFileTimeMember(jsonDoc, 'TestFileTime', ftTime);

3.1.8 AddHexBinaryMemberDiese Methode fügt ein HexBinary-Member zu einem JSON-Objekt hinzu.

SyntaxMETHOD AddHexBinaryMember : SJsonValueVAR_INPUT  v : SJsonValue;  p : PVOID;  n : DINT;END_VARVAR_IN_OUT CONSTANT  member : STRING;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonMem := fbJson.AddHexBinaryMember(jsonDoc, 'TestHexBinary', sHexBinary, SIZEOF(sHexBinary));

3.1.9 AddInt64MemberDiese Methode fügt ein Int64-Member zu einem JSON-Objekt hinzu.

SyntaxMETHOD AddFileTimeMember : SJsonValueVAR_INPUT  v     : SJsonValue;  value : LINT;END_VARVAR_IN_OUT CONSTANT  member : STRING;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonMem := fbJson.AddInt64Member(jsonDoc, 'TestInt64', 42);

3.1.10 AddIntMemberDiese Methode fügt ein Int-Member zu einem JSON-Objekt hinzu.

SyntaxMETHOD AddIntMember : SJsonValueVAR_INPUT  v     : SJsonValue;  value : DINT;END_VARVAR_IN_OUT CONSTANT  member : STRING;END_VAR

Page 18: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml18 Version: 1.6

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonMem := fbJson.AddIntMember(jsonDoc, 'TestInt', 42);

3.1.11 AddJsonMemberDiese Methode fügt ein JSON-Member zu einem JSON-Objekt hinzu.

SyntaxMETHOD AddJsonMember : SJsonValueVAR_INPUT  v : SJsonValue;END_VARVAR_IN_OUT CONSTANT  member  : STRING;  rawJson : STRING;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonMem := fbJson.AddJsonMember(jsonDoc, 'TestJson', sJson);

3.1.12 AddNullMemberDiese Methode fügt ein NULL-Member zu einem JSON-Objekt hinzu.

SyntaxMETHOD AddNullMember : SJsonValueVAR_INPUT  v : SJsonValue;END_VARVAR_IN_OUT CONSTANT  member : STRING;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonMem := fbJson.AddNullMember(jsonDoc, 'TestJson');

3.1.13 AddObjectMemberDiese Methode fügt ein Object-Member zu einem JSON-Objekt hinzu.

SyntaxMETHOD AddObjectMember : SJsonValueVAR_INPUT v : SJsonValue;END_VARVAR_IN_OUT CONSTANT  member : STRING;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonMem := fbJson.AddObjectMember(jsonDoc, 'TestObject');

3.1.14 AddStringMemberDiese Methode fügt ein String-Member zu einem JSON-Objekt hinzu.

Page 19: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml 19Version: 1.6

SyntaxMETHOD AddStringMember : SJsonValueVAR_INPUT  v : SJsonValue;END_VARVAR_IN_OUT CONSTANT  member : STRING;  value  : STRING;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonMem := fbJson.AddStringMember(jsonDoc, 'TestString', 'Test');

3.1.15 AddUint64MemberDiese Methode fügt ein UInt64-Member zu einem JSON-Objekt hinzu.

SyntaxMETHOD AddUint64Member : SJsonValueVAR_INPUT  v     : SJsonValue;  value : ULINT;END_VARVAR_IN_OUT CONSTANT  member : STRING;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonMem := fbJson.AddUint64Member(jsonDoc, 'TestUint64', 42);

3.1.16 AddUintMemberDiese Methode fügt ein UInt-Member zu einem JSON-Objekt hinzu.

SyntaxMETHOD AddUintMember : SJsonValueVAR_INPUT  v     : SJsonValue;  value : UDINT;END_VARVAR_IN_OUT CONSTANT  member : STRING;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonMem := fbJson.AddUintMember(jsonDoc, 'TestUint', 42);

3.1.17 ArrayBeginDiese Methode liefert das erste Element eines Arrays und kann zusammen mit den Methoden ArrayEnd()und NextArray() zur Iteration durch ein JSON-Array verwendet werden.

SyntaxMETHOD ArrayBegin : SJsonAIteratorVAR_INPUT  v : SJsonValue;END_VAR

Beispielaufruf:

Page 20: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml20 Version: 1.6

jsonIterator := fbJson.ArrayBegin(jsonArray);jsonIteratorEnd := fbJson.ArrayEnd(jsonArray);WHILE jsonIterator <> jsonIteratorEnd DO  sName := fbJson.GetArrayValue(jsonIterator);  jsonIterator := fbJson.NextArray(jsonIterator);END_WHILE

3.1.18 ArrayEndDiese Methode liefert das letzte Element eines Arrays und kann zusammen mit den Methoden ArrayBegin()und NextArray() zur Iteration durch ein JSON-Array verwendet werden.

SyntaxMETHOD ArrayEnd : SJsonAIteratorVAR_INPUT  v : SJsonValue;END_VAR

Beispielaufruf:jsonIterator := fbJson.ArrayBegin(jsonArray);jsonIteratorEnd := fbJson.ArrayEnd(jsonArray);WHILE jsonIterator <> jsonIteratorEnd DO  sName := fbJson.GetArrayValue(jsonIterator);  jsonIterator := fbJson.NextArray(jsonIterator);END_WHILE

3.1.19 ClearArrayDiese Methode löscht den Inhalt eines Arrays.

SyntaxMETHOD ClearArray : BOOLVAR_INPUT  v : SJsonValue;  i : SJsonAIterator;END_VAR

Beispielaufruf:

Gegeben sei das folgende JSON-Dokument, das in den DOM-Speicher geladen wird:sMessage := '{"serialNumber":"123","batteryVoltage":"1547mV","clickType":"SINGLE", "array":["Hello",2,3]}';

Die Werte des JSON-Arrays „array“ sollen gelöscht werden. Zunächst wird das JSON-Dokument iterativnach dem Property „array“ durchsucht, anschließend werden alle Elemente des Arrays durch Aufruf derMethode ClearArray() gelöscht.jsonDoc := fbJson.ParseDocument(sMessage);jsonIterator := fbJson.MemberBegin(jsonDoc);jsonIteratorEnd := fbJson.MemberEnd(jsonDoc);WHILE jsonIterator <> jsonIteratorEnd DO  sName := fbJson.GetMemberName(jsonIterator);  jsonValue := fbJson.GetMemberValue(jsonIterator);  IF sName = 'array' THEN    jsonArrayIterator := fbJson.ArrayBegin(jsonValue);    fbJson.ClearArray(jsonValue, jsonArrayIterator);  END_IF  jsonIterator := fbJson.NextMember(jsonIterator);END_WHILE

3.1.20 CopyDocumentDiese Methode kopiert den Inhalt des DOM-Speichers in eine Variable vom Datentyp STRING, welcher einebeliebige Länge haben kann. Als Rückgabewert liefert die Methode die Länge des Strings (inklusiveNullterminierung). Falls der Zielbuffer zu klein ist, wird dieser durch eine Nullterminierung geleert und alsLänge 0 zurückgegeben.

Page 21: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml 21Version: 1.6

SyntaxMETHOD CopyDocument : UDINTVAR_INPUT  nDoc : DINT;END_VARVAR_IN_OUT CONSTANT  pDoc : STRING;END_VAR

Beispielaufruf:nLen := fbJson.CopyDocument(sJson, SIZEOF(sJson));

3.1.21 CopyJsonDiese Methode extrahiert ein JSON-Objekt aus einem Key und speichert dieses in einer Variablen vomDatentyp STRING. Als Rückgabewert liefert die Methode die Länge des kopierten JSON-Objekts (inklusiveNullterminierung). Falls der Zielbuffer zu klein ist, wird dieser durch eine Nullterminierung geleert und alsLänge 0 zurückgegeben.

SyntaxMETHOD CopyJson : UDINTVAR_INPUT  v : SJsonValue;END_VARVAR_IN_OUT CONSTANT  pDoc : STRING;  nDoc : UDINT;END_VAR

Beispielaufruf:

Gegeben sei das folgende JSON-Dokument, das in den DOM-Speicher geladen wird:sMessage := ' {"serialNumber":"123","meta":{"batteryVoltage":"1547mV","clickType":"SINGLE"}}';

Der Wert des JSON-Objekts „meta“ soll extrahiert und in einer Variablen vom Datentyp STRING gespeichertwerden. Zunächst wird das JSON-Dokument iterativ nach dem Property „meta“ durchsucht, anschließendwird dessen Wert bzw. Unterobjekt durch Aufruf der Methode CopyJson() extrahiert.jsonDoc := fbJson.ParseDocument(sMessage);jsonIterator := fbJson.MemberBegin(jsonDoc);jsonIteratorEnd := fbJson.MemberEnd(jsonDoc);WHILE jsonIterator <> jsonIteratorEnd DO  sName := fbJson.GetMemberName(jsonIterator);  jsonValue := fbJson.GetMemberValue(jsonIterator);  IF sName = 'meta' THEN    fbJson.CopyString(jsonValue, sString, SIZEOF(sString));  END_IF  jsonIterator := fbJson.NextMember(jsonIterator);END_WHILE

Die Variable sString hat nach diesem Durchlauf folgenden Inhalt:{"batteryVoltage":"1547mV","clickType":"SINGLE"}

3.1.22 CopyStringDiese Methode kopiert den Wert eines Keys in eine Variable vom Datentyp STRING. Als Rückgabewertliefert die Methode die Länge des kopierten Strings (inklusive Nullterminierung). Falls der Zielbuffer zu kleinist, wird dieser durch eine Nullterminierung geleert und als Länge 0 zurückgegeben.

SyntaxMETHOD CopyString : UDINTVAR_INPUT  v : SJsonValue;END_VARVAR_IN_OUT CONSTANT

Page 22: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml22 Version: 1.6

  pStr : STRING;  nStr : UDINT;END_VAR

Beispielaufruf:

Gegeben sei das folgende JSON-Dokument, das in den DOM-Speicher geladen wird:sMessage := ' {"serialNumber":"123","batteryVoltage":"1547mV","clickType":"SINGLE"}';

Der Wert des Keys „clickType“ soll extrahiert und in einer Variablen vom Datentyp STRING gespeichertwerden. Zunächst wird das JSON-Dokument iterativ nach dem Property „clickType“ durchsucht.jsonDoc := fbJson.ParseDocument(sMessage);jsonIterator := fbJson.MemberBegin(jsonDoc);jsonIteratorEnd := fbJson.MemberEnd(jsonDoc);WHILE jsonIterator <> jsonIteratorEnd DO  sName := fbJson.GetMemberName(jsonIterator);  jsonValue := fbJson.GetMemberValue(jsonIterator);  IF sName = 'clickType' THEN    fbJson.CopyString(jsonValue, sString, SIZEOF(sString));  END_IF  jsonIterator := fbJson.NextMember(jsonIterator);END_WHILE

Die Variable sString hat nach diesem Durchlauf folgenden Inhalt:SINGLE

3.1.23 FindMemberDiese Methode sucht in einem JSON-Dokument nach einem bestimmten Property und gibt dieses zurück.Wenn kein entsprechendes Property gefunden wird, wird 0 zurückgegeben.

SyntaxMETHOD FindMember : SJsonValueVAR_INPUT  v : SJsonValue;END_VARVAR_IN_OUT CONSTANT  member : STRING;END_VAR

Beispielaufruf:jsonProp := fbJson.FindMember(jsonDoc, 'PropertyName');

3.1.24 FindMemberPathDiese Methode sucht in einem JSON-Dokument nach einem bestimmten Property und gibt dieses zurück.Das Property wird hierbei nach dessen Pfad im Dokument spezifiziert. Wenn kein entsprechendes Propertygefunden wird, wird 0 zurückgegeben.

SyntaxMETHOD FindMemberPath : SJsonValueVAR_INPUT  v : SJsonValueEND_VARVAR_IN_OUT CONSTANT  member : STRING;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonProp := fbJson.FindMemberPath(jsonDoc, sPath);

Page 23: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml 23Version: 1.6

3.1.25 GetArraySizeDiese Methode liefert die Anzahl der Elemente in einem JSON-Array.

SyntaxMETHOD GetArraySize : UDINTVAR_INPUT  v : SJsonValue;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonArray := fbJson.FindMember(jsonDoc, 'array');nSize := fbJson.GetArraySize(jsonArray);

3.1.26 GetArrayValueDiese Methode liefert den Wert an der aktuellen Iterator-Position eines Arrays.

SyntaxMETHOD GetArrayValue : SJsonValueVAR_INPUT  i : SJsonAIterator;END_VAR

Beispielaufruf:jsonIterator := fbJson.ArrayBegin(jsonArray);jsonIteratorEnd := fbJson.ArrayEnd(jsonArray);WHILE jsonIterator <> jsonIteratorEnd DO  sName := fbJson.GetArrayValue(jsonIterator);  jsonIterator := fbJson.NextArray(jsonIterator);END_WHILE

3.1.27 GetArrayValueByIdxDiese Methode liefert den Wert eines Arrays an einem angegebenen Index.

SyntaxMETHOD GetArrayValueByIdx : SJsonValueVAR_INPUT  v : SJsonValue;  idx : UDINT;END_VAR

Beispielaufruf:jsonValue := fbJson.GetArrayValueByIdx(jsonArray, 1);

3.1.28 GetBase64Diese Methode dekodiert einen Base64-Wert aus einem JSON-Property. Wenn sich hinter dem Base64-Wert z. B. der Inhalt einer Datenstruktur befindet, kann der dekodierte Inhalt auch wieder auf eine identischeDatenstruktur gelegt werden.

SyntaxMETHOD GetBase64 : DINTVAR_INPUT  v : SJsonValue;  p : PVOID;  n : DINT;END_VAR

Beispielaufruf:

Page 24: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml24 Version: 1.6

jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonBase64 := fbJson.FindMember(jsonDoc, 'base64');nSize := fbJson.GetBase64(jsonBase64, ADR(stStruct), SIZEOF(stStruct));

3.1.29 GetBoolDiese Methode liefert den Value eines Properties vom Datentyp BOOL.

SyntaxMETHOD GetBool : BOOLVAR_INPUT  v : SJsonValue;END_VAR

3.1.30 GetDateTimeDiese Methode liefert den Value eines Properties vom Datentyp DATE_AND_TIME.

SyntaxMETHOD GetDateTime : DATE_AND_TIMEVAR_INPUT  v : SJsonValue;END_VAR

3.1.31 GetDcTimeDiese Methode liefert den Values eines Properties vom Datentyp DCTIME.

SyntaxMETHOD GetDcTime : DCTIMEVAR_INPUT  v : SJsonValue;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonProp := fbJson.FindMember(jsonDoc, 'property');dcTime := fbJson.GetDcTime(jsonProp);

3.1.32 GetDocumentDiese Methode gibt den Inhalt des DOM-Speichers als Datentyp STRING(255) zurück. Bei längerenDokumenten muss die Methode CopyDocument() verwendet werden.

SyntaxMETHOD GetDocument : STRING(255)

Beispielaufruf:sJson := fbJson.GetDocument();

3.1.33 GetDocumentLengthDiese Methode gibt die Länge eines JSON-Dokuments im DOM-Speicher zurück.

SyntaxMETHOD GetDocumentLength: UDINT

Page 25: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml 25Version: 1.6

Beispielaufruf:nLen := fbJson.GetDocumentLength();

3.1.34 GetDocumentRootDiese Methode liefert den Root-Knoten eines JSON-Dokuments im DOM-Speicher.

SyntaxMETHOD GetDocumentRoot : SJsonValue

Beispielaufruf:jsonRoot := fbJson.GetDocumentRoot();

3.1.35 GetDoubleDiese Methode liefert den Value eines Properties vom Datentyp LREAL.

SyntaxMETHOD GetDouble : LREALVAR_INPUT  v : SJsonValue;END_VAR

3.1.36 GetFileTimeDiese Methode liefert den Value eines Properties vom Datentyp DCTIME.

SyntaxMETHOD GetFileTime : FILETIMEVAR_INPUT  v : SJsonValue;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonProp := fbJson.FindMember(jsonDoc, 'property');fileTime := fbJson.GetFileTime(jsonProp);

3.1.37 GetHexBinaryDiese Methode dekodiert den HexBinary-Inhalt eines Properties und schreibt diesen an eine bestimmteSpeicheradresse, z. B. in eine Datenstruktur.

SyntaxMETHOD GetHexBinary : DINTVAR_INPUT  v : SJsonValue;  p : PVOID;  n : DINT;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonProp := fbJson.FindMember(jsonDoc, 'property');nLen := fbJson.GetHexBinary(jsonProp, ADR(stStruct), SIZEOF(stStruct));

Page 26: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml26 Version: 1.6

3.1.38 GetIntDiese Methode liefert den Value eines Properties vom Datentyp DINT.

SyntaxMETHOD GetInt : DINTVAR_INPUT  v : SJsonValue;END_VAR

3.1.39 GetInt64Diese Methode liefert den Value eines Properties vom Datentyp LINT.

SyntaxMETHOD GetInt64 : LINTVAR_INPUT  v : SJsonValue;END_VAR

3.1.40 GetJsonDiese Methode liefert den Value eines Properties, wenn dieser selbst wieder ein JSON-Dokument ist.

SyntaxMETHOD GetJson : STRING(255)VAR_INPUT  v : SJsonValue;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonProp := fbJson.FindMember(jsonDoc, 'property');sJson := fbJson.GetJson(jsonProp);

3.1.41 GetJsonLengthDiese Methode liefert die Länge eines Properties, wenn dieses ein JSON-Dokument ist.

SyntaxMETHOD GetJsonLength : UDINTVAR_INPUT  v : SJsonValue;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonProp := fbJson.FindMember(jsonDoc, 'property');nLen := fbJson.GetJsonLength(jsonProp);

3.1.42 GetMaxDecimalPlacesDiese Methode liefert die aktuelle Einstellung für MaxDecimalPlaces. Dies beeinflusst die Anzahl derDezimalstellen bei Fließkommazahlen.

SyntaxMETHOD GetMaxDecimalPlaces : DINT

Beispielaufruf:

Page 27: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml 27Version: 1.6

nDec := fbJson.GetMaxDecimalPlaces();

3.1.43 GetMemberNameDiese Methode liefert den Namen eines JSON-Property-Members an der Position des aktuellen Iterators,z. B. während der Iteration durch die Kindelemente eines JSON-Properties mit den MethodenMemberBegin(), MemberEnd() und NextMember().

SyntaxMETHOD GetMemberName : STRINGVAR_INPUT  i : SJsonIterator;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonIterator := fbJson.MemberBegin(jsonDoc);jsonIteratorEnd := fbJson.MemberEnd(jsonDoc);WHILE jsonIterator <> jsonIteratorEnd DO  sName := fbJson.GetMemberName(jsonIterator);  jsonIterator := fbJson.NextMember(jsonIterator);END_WHILE

3.1.44 GetMemberValueDiese Methode liefert den Value eines JSON-Property-Members an der Position des aktuellen Iterators, z.B.während der Iteration durch die Kindelemente eines JSON-Properties mit den Methoden MemberBegin(),MemberEnd() und NextMember().

SyntaxMETHOD GetMemberValue : SJsonValueVAR_INPUT  i : SJsonIterator;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonIterator := fbJson.MemberBegin(jsonDoc);jsonIteratorEnd := fbJson.MemberEnd(jsonDoc);WHILE jsonIterator <> jsonIteratorEnd DO  jsonValue := fbJson.GetMemberValue(jsonIterator);  jsonIterator := fbJson.NextMember(jsonIterator);END_WHILE

3.1.45 GetStringDiese Methode liefert den Value eines Properties vom Datentyp STRING(255).

SyntaxMETHOD GetString : STRING(255)VAR_INPUT  v : SJsonValue;END_VAR

3.1.46 GetStringLengthDiese Methode liefert die Länge eines Properties, wenn dessen Value ein String ist.

Page 28: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml28 Version: 1.6

SyntaxMETHOD GetStringLength : UDINTVAR_INPUT  v : SJsonValueEND_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonProp := fbJson.FindMember(jsonDoc, 'property');nLen := fbJson.GetStringLength(jsonProp);

3.1.47 GetTypeDiese Methode liefert den Typ eines Property-Values. Der Rückgabewert kann hierbei einen der Werte desEnums EJsonType annehmen.

SyntaxMETHOD GetStringLength : EJsonTypeVAR_INPUT  v : SJsonValueEND_VAR

TYPE EJsonType :(  eNullType := 0,  eFalseType := 1,  eTrueType := 2,  eObjectType := 3,  eArrayType := 4,  eStringType := 5,  eNumberType := 6) DINT;

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonProp := fbJson.FindMember(jsonDoc, 'property');eJsonType := fbJson.GetType(jsonProp);

3.1.48 GetUintDiese Methode liefert den Value eines Properties vom Datentyp UDINT.

SyntaxMETHOD GetUint : UDINTVAR_INPUT  v : SJsonValue;END_VAR

3.1.49 GetUint64Diese Methode liefert den Value eines Properties vom Datentyp ULINT.

SyntaxMETHOD GetUint64 : ULINTVAR_INPUT  v : SJsonValue;END_VAR

3.1.50 HasMemberDiese Methode prüft, ob ein bestimmtes Property im DOM-Speicher vorhanden ist. Wenn das Propertyvorhanden ist, gibt die Methode TRUE zurück, ansonsten FALSE.

Page 29: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml 29Version: 1.6

SyntaxMETHOD HasMember : BOOLVAR_INPUT  v : SJsonValue;END_VARVAR_IN_OUT CONSTANT  member : STRING;END_VAR

Beispielaufruf:bHasMember := fbJson.HasMember(jsonDoc, 'PropertyName');

3.1.51 IsArrayDiese Methode prüft, ob es sich bei einem gegebenen Property um ein Array handelt. Wenn dies der Fall ist,gibt die Methode TRUE zurück, ansonsten FALSE.

SyntaxMETHOD IsArray : BOOLVAR_INPUT  v : SJsonValue;END_VAR

3.1.52 IsBase64Diese Methode prüft, ob es sich bei dem Value eines gegebenen Properties um den Datentyp Base64handelt. Wenn dies der Fall ist, gibt die Methode TRUE zurück, ansonsten FALSE.

SyntaxMETHOD IsBase64 : BOOLVAR_INPUT  v : SJsonValue;END_VAR

3.1.53 IsBoolDiese Methode prüft, ob es sich bei dem Value eines gegebenen Properties um den Datentyp BOOLhandelt. Wenn dies der Fall ist, gibt die Methode TRUE zurück, ansonsten FALSE.

SyntaxMETHOD IsBool : BOOLVAR_INPUT  v : SJsonValue;END_VAR

3.1.54 IsDoubleDiese Methode prüft, ob es sich bei dem Value eines gegebenen Properties um den Datentyp Double (SPS:LREAL) handelt. Wenn dies der Fall ist, gibt die Methode TRUE zurück, ansonsten FALSE.

SyntaxMETHOD IsDouble : BOOLVAR_INPUT  v : SJsonValue;END_VAR

Page 30: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml30 Version: 1.6

3.1.55 IsFalseDiese Methode prüft, ob der Value eines gegebenen Properties FALSE ist. Wenn dies der Fall ist, gibt dieMethode TRUE zurück, ansonsten FALSE.

SyntaxMETHOD IsFalse : BOOLVAR_INPUT  v : SJsonValue;END_VAR

3.1.56 IsHexBinaryDiese Methode prüft, ob der Value eines Properties ein HexBinary-Format hat. Wenn dies der Fall ist, gibtdie Methode TRUE zurück, ansonsten FALSE.

SyntaxMETHOD IsHexBinary: BOOLVAR_INPUT  v : SJsonValueEND_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonProp := fbJson.FindMember(jsonDoc, 'property');bRet := fbJson.IsHexBinary(jsonProp);

3.1.57 IsIntDiese Methode prüft, ob es sich bei dem Value eines gegebenen Properties um den Datentyp Integer (SPS:DINT) handelt. Wenn dies der Fall ist, gibt die Methode TRUE zurück, ansonsten FALSE.

SyntaxMETHOD IsInt : BOOLVAR_INPUT  v : SJsonValue;END_VAR

3.1.58 IsInt64Diese Methode prüft, ob es sich bei dem Value eines gegebenen Properties um den Datentyp LINT handelt.Wenn dies der Fall ist, gibt die Methode TRUE zurück, ansonsten FALSE.

SyntaxMETHOD IsInt64 : BOOLVAR_INPUT  v : SJsonValue;END_VAR

3.1.59 IsISO8601TimeFormatDiese Methode prüft, ob es sich bei dem Value eines gegebenen Properties um ein Zeitformat laut ISO8601handelt. Wenn dies der Fall ist, gibt die Methode TRUE zurück, ansonsten FALSE.

SyntaxMETHOD IsISO8601TimeFormat : BOOLVAR_INPUT  v : SJsonValue;END_VAR

Page 31: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml 31Version: 1.6

3.1.60 IsNullDiese Methode prüft, ob es sich bei dem Value eines gegebenen Properties um NULL handelt. Wenn diesder Fall ist, gibt die Methode TRUE zurück, ansonsten FALSE.

SyntaxMETHOD IsNull : BOOLVAR_INPUT  v : SJsonValue;END_VAR

3.1.61 IsNumberDiese Methode prüft, ob es sich bei dem Value eines gegebenen Properties um einen numerischen Werthandelt. Wenn dies der Fall ist, gibt die Methode TRUE zurück, ansonsten FALSE.

SyntaxMETHOD IsNumber : BOOLVAR_INPUT  v : SJsonValue;END_VAR

3.1.62 IsObjectDiese Methode prüft, ob es sich bei dem gegebenen Property um ein weiteres JSON-Objekt handelt. Wenndies der Fall ist, gibt die Methode TRUE zurück, ansonsten FALSE.

SyntaxMETHOD IsObject : BOOLVAR_INPUT  v : SJsonValue;END_VAR

3.1.63 IsStringDiese Methode prüft, ob es sich bei dem Value eines gegebenen Properties um den Datentyp STRINGhandelt. Wenn dies der Fall ist, gibt die Methode TRUE zurück, ansonsten FALSE.

SyntaxMETHOD IsString : BOOLVAR_INPUT  v : SJsonValue;END_VAR

3.1.64 IsTrueDiese Methode prüft, ob der Wert eines gegebenen Properties TRUE ist. Wenn dies der Fall ist, gibt dieMethode TRUE zurück, ansonsten FALSE.

SyntaxMETHOD IsTrue : BOOLVAR_INPUT  v : SJsonValue;END_VAR

Page 32: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml32 Version: 1.6

3.1.65 IsUintDiese Methode prüft, ob es sich bei dem Value eines gegebenen Properties um den Datentyp UDINThandelt. Wenn dies der Fall ist, gibt die Methode TRUE zurück, ansonsten FALSE.

SyntaxMETHOD IsUint : BOOLVAR_INPUT  v : SJsonValue;END_VAR

3.1.66 IsUint64Diese Methode prüft, ob es sich bei dem Value eines gegebenen Properties um den Datentyp ULINThandelt. Wenn dies der Fall ist, gibt die Methode TRUE zurück, ansonsten FALSE.

SyntaxMETHOD IsUint64 : BOOLVAR_INPUT  v : SJsonValue;END_VAR

3.1.67 LoadDocumentFromFileDiese Methode lädt ein JSON-Dokument aus einer Datei. Eine steigende Flanke am EingangsparameterbExec triggert hierbei den Ladevorgang.

SyntaxMETHOD LoadDocumentFromFile : BOOLVAR_INPUT  bExec : BOOL;END_VARVAR_IN_OUT CONSTANT  sFile : STRING;END_VAR

Beispielaufruf:bLoaded := fbJson.LoadDocumentFromFile(sFile, bLoad);

3.1.68 MemberBeginDiese Methode liefert das erste Kindelemente unterhalb eines JSON-Properties und kann zusammen mitden Methoden MemberEnd() und NextMember() zur Iteration durch ein JSON-Property verwendet werden.

SyntaxMETHOD MemberBegin : SJsonIteratorVAR_INPUT  v : SJsonValue;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonIterator := fbJson.MemberBegin(jsonDoc);jsonIteratorEnd := fbJson.MemberEnd(jsonDoc);WHILE jsonIterator <> jsonIteratorEnd DO  sName := fbJson.GetMemberName(jsonIterator);  jsonIterator := fbJson.NextMember(jsonIterator);END_WHILE

Page 33: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml 33Version: 1.6

3.1.69 MemberEndDiese Methode liefert das letzte Kindelement unterhalb eines JSON-Properties und kann zusammen mit denMethoden MemberBegin() und NextMember() zur Iteration durch ein JSON-Property verwendet werden.

SyntaxMETHOD MemberEnd : SJsonIteratorVAR_INPUT  v : SJsonValue;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonIterator := fbJson.MemberBegin(jsonDoc);jsonIteratorEnd := fbJson.MemberEnd(jsonDoc);WHILE jsonIterator <> jsonIteratorEnd DO  sName := fbJson.GetMemberName(jsonIterator);  jsonIterator := fbJson.NextMember(jsonIterator);END_WHILE

3.1.70 NewDocumentDiese Methode erzeugt ein neues, leeres JSON-Dokument im DOM-Speicher.

SyntaxMETHOD NewDocument : SJsonValue

Beispielaufruf:jsonDoc := fbJson.NewDocument();

3.1.71 NextArray

3.1.72 ParseDocumentDiese Methode lädt ein JSON-Objekt zur weiteren Verarbeitung in den DOM-Speicher. Das JSON-Objektliegt hierbei als String vor und wird als Eingang an die Methode übergeben. Eine Referenz zum JSON-Dokument im DOM-Speicher wird an den Aufrufer zurückgegeben.

SyntaxMETHOD ParseDocument : SJsonValueVAR_IN_OUT CONSTANT  sJson : STRING;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sJsonString);

3.1.73 PushbackBase64ValueDiese Methode hängt einen Base64-Wert an das Ende eines Arrays an. Als Eingabeparameter kann z. B.eine Struktur adressiert werden. Die entsprechende Base64-Kodierung erfolgt durch die Methode.

SyntaxMETHOD PushbackBase64Value : SJsonValueVAR_INPUT  v : SJsonValue;  p : PVOID;  n : DINT;END_VAR

Page 34: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml34 Version: 1.6

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonArray := fbJson.FindMember(jsonDoc, 'array');jsonValue := fbJson.PushbackBase64Value(jsonArray, ADR(stStruct), SIZEOF(stStruct));

3.1.74 PushbackBoolValueDiese Methode hängt einen Wert vom Datentyp BOOL an das Ende eines Arrays an.

SyntaxMETHOD PushbackBoolValue : SJsonValueVAR_INPUT  v     : SJsonValue;  value : BOOL;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonArray := fbJson.FindMember(jsonDoc, 'array');jsonValue := fbJson.PushbackBoolValue(jsonArray, TRUE);

3.1.75 PushbackDateTimeValueDiese Methode hängt einen Wert vom Datentyp DATE_AND_TIME an das Ende eines Arrays an.

SyntaxMETHOD PushbackDateTimeValue : SJsonValueVAR_INPUT  v     : SJsonValue;  value : DATE_AND_TIME;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonArray := fbJson.FindMember(jsonDoc, 'array');jsonValue := fbJson.PushbackDateTimeValue(jsonArray, dtTime);

3.1.76 PushbackDcTimeValueDiese Methode hängt einen Wert vom Datentyp DCTIME an das Ende eines Arrays an.

SyntaxMETHOD PushbackDcTimeValue : SJsonValueVAR_INPUT  v     : SJsonValue;  value : DCTIME;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonArray := fbJson.FindMember(jsonDoc, 'array');jsonValue := fbJson.PushbackDcTimeValue(jsonArray, dcTime);

3.1.77 PushbackDoubleValueDiese Methode hängt einen Wert vom Datentyp Double an das Ende eines Arrays an.

Page 35: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml 35Version: 1.6

SyntaxMETHOD PushbackDoubleValue : SJsonValueVAR_INPUT  v     : SJsonValue;  value : LREAL;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonArray := fbJson.FindMember(jsonDoc, 'array');jsonValue := fbJson.PushbackDoubleValue(jsonArray, 42.42);

3.1.78 PushbackFileTimeValueDiese Methode hängt einen Wert vom Datentyp FILETIME an das Ende eines Arrays an.

SyntaxMETHOD PushbackFileTimeValue : SJsonValueVAR_INPUT  v     : SJsonValue;  value : FILETIME;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonArray := fbJson.FindMember(jsonDoc, 'array');jsonValue := fbJson.PushbackFileTimeValue(jsonArray, fileTime);

3.1.79 PushbackHexBinaryValueDiese Methode hängt einen HexBinary-kodierten Wert an das Ende eines Arrays an. Die Kodierung in dasHexBinary-Format wird durch die Methode durchgeführt. Als Quelle kann z. B. eine Datenstruktur verwendetwerden.

SyntaxMETHOD PushbackHexBinaryValue : SJsonValueVAR_INPUT  v : SJsonValue;  p : PVOID;  n : DINT;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonArray := fbJson.FindMember(jsonDoc, 'array');jsonValue := fbJson.PushbackHexBinaryValue(jsonArray, ADR(stStruct), SIZEOF(stStruct));

3.1.80 PushbackInt64ValueDiese Methode hängt einen Wert vom Datentyp Int64 an das Ende eines Arrays an.

SyntaxMETHOD PushbackInt64Value : SJsonValueVAR_INPUT  v : SJsonValue;  value : LINT;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonArray := fbJson.FindMember(jsonDoc, 'array');jsonValue := fbJson.PushbackInt64Value(jsonArray, 42);

Page 36: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml36 Version: 1.6

3.1.81 PushbackIntValueDiese Methode hängt einen Wert vom Datentyp INT an das Ende eines Arrays an.

SyntaxMETHOD PushbackIntValue : SJsonValueVAR_INPUT  v     : SJsonValue;  value : DINT;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonArray := fbJson.FindMember(jsonDoc, 'array');jsonValue := fbJson.PushbackIntValue(jsonArray, 42);

3.1.82 PushbackJsonValueDiese Methode fügt ein JSON-Dokument zum Ende eines Arrays hinzu.

SyntaxMETHOD PushbackJsonValue : SJsonValueVAR_INPUT  v : SJsonValue;END_VARVAR_IN_OUT CONSTANT  rawJson : STRING;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonArray := fbJson.FindMember(jsonDoc, 'array');jsonValue := fbJson.PushbackJsonValue(jsonArray, sJson);

3.1.83 PushbackNullValueDiese Methode hängt einen NULL-Wert an das Ende eines Arrays an.

SyntaxMETHOD PushbackNullValue : SJsonValueVAR_INPUT  v : SJsonValue;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonArray := fbJson.FindMember(jsonDoc, 'array');jsonValue := fbJson.PushbackNullValue(jsonArray);

3.1.84 PushbackStringValueDiese Methode hängt einen Wert vom Datentyp DCTIME an das Ende eines Arrays an.

SyntaxMETHOD PushbackStringValue : SJsonValueVAR_INPUT  v : SJsonValue;END_VARVAR_IN_OUT CONSTANT  value : STRING;END_VAR

Page 37: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml 37Version: 1.6

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonArray := fbJson.FindMember(jsonDoc, 'array');jsonValue := fbJson.PushbackStringValue(jsonArray, sString);

3.1.85 PushbackUint64ValueDiese Methode hängt einen Wert vom Datentyp UInt64 an das Ende eines Arrays an.

SyntaxMETHOD PushbackUint64Value : SJsonValueVAR_INPUT  v     : SJsonValue;  value : ULINT;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonArray := fbJson.FindMember(jsonDoc, 'array');jsonValue := fbJson.PushbackUint64Value(jsonArray, 42);

3.1.86 PushbackUintValueDiese Methode hängt einen Wert vom Datentyp UInt an das Ende eines Arrays an.

SyntaxMETHOD PushbackUintValue : SJsonValueVAR_INPUT  v     : SJsonValue;  value : UDINT;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonArray := fbJson.FindMember(jsonDoc, 'array');jsonValue := fbJson.PushbackUintValue(jsonArray, 42);

3.1.87 RemoveAllMembersDiese Methode entfernt alle Kindelemente von einem gegebenen Property.

SyntaxMETHOD RemoveAllMembers : BOOLVAR_INPUT  v : SJsonValue;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonProp := fbJson.FindMember(jsonDoc, 'property');bRemoved := fbJson.RemoveAllMembers(jsonProp);

3.1.88 RemoveArrayDiese Methode löscht den Wert des aktuellen Array-Iterators.

Page 38: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml38 Version: 1.6

SyntaxMETHOD RemoveArray : BOOLVAR_INPUT  v : SJsonValue;  i : SJsonAIterator;END_VAR

Beispielaufruf:

Gegeben sei das folgende JSON Dokument, das in den DOM-Speicher geladen wird:sMessage := '{"serialNumber":"123","batteryVoltage":"1547mV","clickType":"SINGLE", "array":["Hello",2,3]}';

Die erste Array-Position soll gelöscht werden. Zunächst wird das JSON-Dokument iterativ nach demProperty „array“ durchsucht, anschließend wird das erste Element des Arrays durch Aufruf der MethodeRemoveArray()entfernt.jsonDoc := fbJson.ParseDocument(sMessage);jsonIterator := fbJson.MemberBegin(jsonDoc);jsonIteratorEnd := fbJson.MemberEnd(jsonDoc);WHILE jsonIterator <> jsonIteratorEnd DO  sName := fbJson.GetMemberName(jsonIterator);  jsonValue := fbJson.GetMemberValue(jsonIterator);  IF sName = 'array' THEN    jsonArrayIterator := fbJson.ArrayBegin(jsonValue);    fbJson.RemoveArray(jsonValue, jsonArrayIterator);  END_IF  jsonIterator := fbJson.NextMember(jsonIterator);END_WHILE

3.1.89 RemoveMemberDiese Methode löscht das Property an dem aktuellen Iterator.

SyntaxMETHOD RemoveMember : BOOLVAR_INPUT  v : SJsonValue;  i : SJsonIterator;  keepOrder : BOOL;END_VAR

Beispielaufruf:

Gegeben sei das folgende JSON Dokument, das in den DOM-Speicher geladen wird:sMessage := '{"serialNumber":"123","batteryVoltage":"1547mV","clickType":"SINGLE", "array":["Hello",2,3]}';

Das Property „array“ soll gelöscht werden. Zunächst wird das JSON-Dokument iterativ nach dem Property„array“ durchsucht, anschließend wird es entfernt.jsonDoc := fbJson.ParseDocument(sMessage);jsonIterator := fbJson.MemberBegin(jsonDoc);jsonIteratorEnd := fbJson.MemberEnd(jsonDoc);WHILE jsonIterator <> jsonIteratorEnd DO  sName := fbJson.GetMemberName(jsonIterator);  IF sName = 'array' THEN    fbJson.RemoveMember(jsonDoc, jsonIterator);  END_IF  jsonIterator := fbJson.NextMember(jsonIterator);END_WHILE

3.1.90 RemoveMemberByNameDiese Methode entfernt ein Kindelement von einem gegebenen Property. Das Element wird hierbei überdessen Namen referenziert.

Page 39: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml 39Version: 1.6

SyntaxMETHOD RemoveMemberByName : BOOLVAR_INPUT  v         : SJsonValue;  keepOrder : BOOL;END_VARVAR_IN_OUT CONSTANT    member : STRING;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonProp := fbJson.FindMember(jsonDoc, 'property');jsonValue := fbJson.RemoveMemberByName(jsonProp, 'ChildName');

3.1.91 SaveDocumentToFileDiese Methode speichert ein JSON-Dokument in einer Datei.

SyntaxMETHOD SaveDocumentToFile : BOOLVAR_INPUT  bExec : REFERENCE TO BOOL;END_VARVAR_IN_OUT CONSTANT    sFile : STRING;END_VAR

Beispielaufruf:bSaved := fbJson.SaveDocumentToFile(sFile, bSave);

3.1.92 SetArrayDiese Methode setzt den Value eines Properties auf den Typ „Array“. Neue Werte können nun mit denPushback-Methoden zum Array hinzugefügt werden.

SyntaxMETHOD SetArray : SJsonValueVAR_INPUT  v : SJsonValue;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonProp := fbJson.FindMember(jsonDoc, 'property');jsonValue := fbJson.SetArray(jsonProp);

3.1.93 SetBase64Diese Methode setzt den Value eines Properties auf einen Base64-kodierten Wert. Als Quelle kann z. B.eine Datenstruktur verwendet werden. Die Kodierung in das Base64-Format erfolgt innerhalb der Methode.

SyntaxMETHOD SetBase64 : SJsonValueVAR_INPUT  v : SJsonValue;  p : PVOID;  n : DINT;END_VAR

Beispielaufruf:

Page 40: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml40 Version: 1.6

jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonProp := fbJson.FindMember(jsonDoc, 'property');jsonValue := fbJson.SetBase64(jsonProp, ADR(stStruct), SIZEOF(stStruct));

3.1.94 SetBoolDiese Methode setzt den Value eines Properties auf einen Wert vom Datentyp BOOL.

SyntaxMETHOD SetBool : SJsonValueVAR_INPUT  v     : SJsonValue;  value : BOOL;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonProp := fbJson.FindMember(jsonDoc, 'property');jsonValue := fbJson.SetBool(jsonProp, TRUE);

3.1.95 SetDateTimeDiese Methode setzt den Value eines Properties auf einen Wert vom Datentyp DATE_AND_TIME.

SyntaxMETHOD SetDateTime : SJsonValueVAR_INPUT  v     : SJsonValue;  value : DATE_AND_TIME;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonProp := fbJson.FindMember(jsonDoc, 'property');jsonValue := fbJson.SetDateTime(jsonProp, dtTime);

3.1.96 SetDcTimeDiese Methode setzt den Value eines Properties auf einen Wert vom Datentyp DCTIME.

SyntaxMETHOD SetDcTime : SJsonValueVAR_INPUT  v     : SJsonValue;  value : DCTIME;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonProp := fbJson.FindMember(jsonDoc, 'property');jsonValue := fbJson.SetDcTime(jsonProp, dcTime);

3.1.97 SetDoubleDiese Methode setzt den Value eines Properties auf einen Wert vom Datentyp Double.

Page 41: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml 41Version: 1.6

SyntaxMETHOD SetDouble : SJsonValueVAR_INPUT  v     : SJsonValue;  value : LREAL;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonProp := fbJson.FindMember(jsonDoc, 'property');jsonValue := fbJson.SetDouble(jsonProp, 42.42);

3.1.98 SetFileTimeDiese Methode setzt den Value eines Properties auf einen Wert vom Datentyp FILETIME.

SyntaxMETHOD SetFileTime : SJsonValueVAR_INPUT  v     : SJsonValue;  value : FILETIME;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonProp := fbJson.FindMember(jsonDoc, 'property');jsonValue := fbJson.SetFileTime(jsonProp, fileTime);

3.1.99 SetHexBinaryDiese Methode setzt den Value eines Properties auf einen HexBinary-kodierten Wert. Als Quelle kann z. B.eine Datenstruktur verwendet werden. Die Kodierung in das HexBinary-Format erfolgt innerhalb derMethode.

SyntaxMETHOD SetHexBinary : SJsonValueVAR_INPUT  v : SJsonValue;  p : PVOID;  n : DINT;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonProp := fbJson.FindMember(jsonDoc, 'property');jsonValue := fbJson.SetHexBinary(jsonProp, ADR(stStruct), SIZEOF(stStruct));

3.1.100 SetIntDiese Methode setzt den Value eines Properties auf einen Wert vom Datentyp INT.

SyntaxMETHOD SetInt : SJsonValueVAR_INPUT  v : SJsonValue;  value : DINT;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonProp := fbJson.FindMember(jsonDoc, 'property');jsonValue := fbJson.SetInt(jsonProp, 42);

Page 42: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml42 Version: 1.6

3.1.101 SetInt64Diese Methode setzt den Value eines Properties auf einen Wert vom Datentyp Int64.

SyntaxMETHOD SetInt64 : SJsonValueVAR_INPUT  v : SJsonValue;  value : LINT;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonProp := fbJson.FindMember(jsonDoc, 'property');jsonValue := fbJson.SetInt64(jsonProp, 42);

3.1.102 SetJsonDiese Methode fügt in den Value eines Properties ein weiteres JSON-Dokument ein.

SyntaxMETHOD SetJson : SJsonValueVAR_INPUT  v : SJsonValue;END_VARVAR_IN_OUT CONSTANT  rawJson : STRING;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonProp := fbJson.FindMember(jsonDoc, 'property');jsonValue := fbJson.SetJson(jsonProp, sJson);

3.1.103 SetMaxDecimalPlacesDiese Methode setzt die aktuelle Einstellung für MaxDecimalPlaces. Dies stellt die maximal zu verwendendeAnzahl an Dezimalstellen bei Fließkommazahlen ein.

SyntaxMETHOD SetMaxDecimalPlacesVAR_INPUT  dp : DINT;END_VAR

Beispielaufruf:nDec := fbJson.SetMaxDecimalPlaces();

3.1.104 SetNullDiese Methode setzt den Value eines Properties auf den Wert NULL.

SyntaxMETHOD SetNull : SJsonValueVAR_INPUT  v : SJsonValue;END_VAR

Beispielaufruf:

Page 43: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml 43Version: 1.6

jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonProp := fbJson.FindMember(jsonDoc, 'property');jsonValue := fbJson.SetNull(jsonProp);

3.1.105 SetObjectDiese Methode setzt den Value eines Properties auf den Typ „Object“. Dies ermöglicht eine Verschachtelungvon JSON-Dokumenten.

SyntaxMETHOD SetDouble : SJsonValueVAR_INPUT  v : SJsonValue;  value : LREAL;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonProp := fbJson.FindMember(jsonDoc, 'property');jsonValue := fbJson.SetObject(jsonProp);

3.1.106 SetStringDiese Methode setzt den Value eines Properties auf einen Wert vom Datentyp STRING.

SyntaxMETHOD SetString : SJsonValueVAR_INPUT  v : SJsonValue;END_VARVAR_IN_OUT CONSTANT  value : STRING;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonProp := fbJson.FindMember(jsonDoc, 'property');jsonValue := fbJson.SetString(jsonProp, 'Hello World');

3.1.107 SetUintDiese Methode setzt den Value eines Properties auf einen Wert vom Datentyp UInt.

SyntaxMETHOD SetUint : SJsonValueVAR_INPUT  v     : SJsonValue;  value : UDINT;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonProp := fbJson.FindMember(jsonDoc, 'property');jsonValue := fbJson.SetUint(jsonProp, 42);

3.1.108 SetUint64Diese Methode setzt den Value eines Properties auf einen Wert vom Datentyp UInt64.

Page 44: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml44 Version: 1.6

SyntaxMETHOD SetUint64 : SJsonValueVAR_INPUT  v     : SJsonValue;  value : ULINT;END_VAR

Beispielaufruf:jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);jsonProp := fbJson.FindMember(jsonDoc, 'property');jsonValue := fbJson.SetUint64(jsonProp, 42);

3.2 FB_JsonSaxReader

3.2.1 DecodeBase64Diese Methode konvertiert einen Base64-formatierten String in Binärdaten. Wenn die Konvertierungerfolgreich war, gibt die Methode TRUE zurück, ansonsten FALSE.

SyntaxMETHOD DecodeBase64 : BOOLVAR_INPUT  sBase64 : STRING;  pBytes  : POINTER TO BYTE;  nBytes  : REFERENCE TO DINT;END_VAR

Beispielaufruf:bSuccess := fbJson.DecodeBase64('SGVsbG8gVHdpbkNBVA==', ADR(byteArray), byteArraySize);

3.2.2 DecodeDateTimeDiese Methode ermöglicht es, aus einem genormten ISO8601-Zeitformat (z. B. YYYY-MM-DDThh:mm:ss)eine SPS-Variable vom Datentyp DATE_AND_TIME bzw. DT zu erzeugen. DT entspricht hierbei der Anzahlan Sekunden ab dem Datum 01.01.1970. Wenn die Konvertierung erfolgreich war, gibt die Methode TRUEzurück, ansonsten FALSE.

SyntaxMETHOD DecodeDateTime : BOOLVAR_IN_OUT CONSTANT  sDT : STRING;END_VARVAR_OUTPUT  nDT : DATE_AND_TIME;END_VAR

Beispielaufruf:bSuccess := fbJson.DecodeDateTime('2017-08-09T06:54:00', nDT => dateTime);

3.2.3 DecodeDcTimeDiese Methode ermöglicht es, aus einem genormten ISO8601 Zeitformat (z. B. YYYY-MM-DDThh:mm:ss)eine SPS-Variable vom Datentyp DCTIME zu erzeugen. DCTIME entspricht der Anzahl an Nanosekundenab dem Datum 01.01.2000. Wenn die Konvertierung erfolgreich war, gibt die Methode TRUE zurück,ansonsten FALSE.

SyntaxMETHOD DecodeDcTime : BOOLVAR_IN_OUT CONSTANT  sDC : STRING;

Page 45: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml 45Version: 1.6

END_VARVAR_OUTPUT  nDC : DCTIME;END_VAR

Beispielaufruf:bSuccess := fbJson.DecodeDcTime('2017-08-09T06:54:00', nDc => dcTime);

3.2.4 DecodeFileTimeDiese Methode ermöglicht es, aus einem genormten ISO8601-Zeitformat (z. B. YYYY-MM-DDThh:mm:ss)eine SPS-Variable vom Datentyp FILETIME zu erzeugen. FILETIME entspricht der Anzahl anNanosekunden ab dem Datum 01.01.1601 – gemessen in 100 Nanosekunden. Wenn die Konvertierungerfolgreich war, gibt die Methode TRUE zurück, ansonsten FALSE.

SyntaxMETHOD DecodeDateTime : BOOLVAR_IN_OUT CONSTANT  sFT : STRING;END_VARVAR_OUTPUT  nFT : FILETIME;END_VAR

Beispielaufruf:bSuccess := fbJson.DecodeFileTime('2017-08-09T06:54:00', nFT => fileTime);

3.2.5 DecodeHexBinaryDiese Methode konvertiert einen String, der Hexadezimalwerte enthält, in Binärdaten um. Wenn dieKonvertierung erfolgreich war, gibt die Methode TRUE zurück, ansonsten FALSE.

SyntaxMETHOD DecodeHexBinary : BOOLVAR_IN_OUT CONSTANT  sHex : STRING;END_VARVAR_INPUT  pBytes : POINTER TO BYTE;  nBytes : REFERENCE TO DINT;END_VAR

Beispielaufruf:bSuccess := fbJson.DecodeHexBinary('ABCEF93A', ADR(byteArray), byteArraySize);

3.2.6 GetLastParseResult

SyntaxMETHOD GetLastParseResult : BOOL;VAR_INPUT  pOffset : POINTER TO LINT;  pError  : POINTER TO DINT;END_VAR

3.2.7 IsBase64Diese Methode prüft, ob der übergebene String dem Base64-Format entspricht. Wenn dies der Fall ist, gibtdie Methode TRUE zurück, ansonsten FALSE.

Page 46: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml46 Version: 1.6

SyntaxMETHOD IsBase64 : BOOLVAR_IN_OUT CONSTANT  sBase64 : STRING;END_VAR

Beispielaufruf:bIsBase64 := fbJson.IsBase64('SGVsbG8gVHdpbkNBVA==');

3.2.8 IsHexBinaryDiese Methode prüft, ob der übergebene String aus Hexadezimalwerten besteht. Wenn dies der Fall ist, gibtdie Methode TRUE zurück, ansonsten FALSE.

SyntaxMETHOD IsHexBinary : BOOLVAR_IN_OUT CONSTANT  sHex : STRING;END_VAR

Beispielaufruf:bSuccess := fbJson.IsHexBinary('ABCEF93A');

3.2.9 IsISO8601TimeFormatDiese Methode prüft, ob der übergebene String dem genormten ISO8601-Zeitformat entspricht. Wenn diesder Fall ist, gibt die Methode TRUE zurück, ansonsten FALSE.

SyntaxMETHOD IsISO8601TimeFormat : BOOLVAR_IN_OUT CONSTANT  sDT : STRING;END_VAR

Beispielaufruf:bSuccess := fbJson.IsISO8601TimeFormat('2017-08-09T06:54:00');

3.2.10 ParseDurch diese Methode wird der SAX-Reader-Parsing-Vorgang gestartet. Als Eingangsparameter werden daszu parsende JSON-Objekt und eine Referenz auf einen Funktionsbaustein übergeben, der vom InterfaceITcJsonSaxHandler abgeleitet wurde. Dieser Funktionsbaustein wird dann für die Callback-Methoden desSAX Readers verwendet.

SyntaxMETHOD Parse : BOOLVAR_IN_OUT CONSTANT  sJson : STRING;END_VARVAR_INPUT  ipHdl : ITcJsonSaxHandler;END_VAR

Page 47: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml 47Version: 1.6

3.2.11 ParseValuesDurch diese Methode wird der SAX-Reader-Parsing-Vorgang gestartet. Als Eingangsparameter werden daszu parsende JSON-Objekt und eine Referenz auf einen Funktionsbaustein übergeben, der vom InterfaceITcJsonSaxValues abgeleitet wurde. Dieser Funktionsbaustein wird dann für die Callback-Methoden desSAX Readers verwendet. Die Besonderheit bei dieser Methode ist, dass bei den Callback-Methodenausschließlich Values berücksichtigt werden, d. h. es gibt keine OnKey()- oder OnStartObject()-Callbacks.

SyntaxMETHOD ParseValues : BOOLVAR_IN_OUT CONSTANT  sJson : STRING;END_VARVAR_INPUT  ipHdl : ITcJsonSaxValues;END_VAR

3.3 FB_JsonSaxWriter

3.3.1 AddBase64Diese Methode fügt einen Wert vom Datentyp Base64 zu einem Property hinzu. Üblicherweise wurde vorhermit der Methode AddKey() [} 49] ein entsprechendes Property erstellt.

SyntaxMETHOD AddBase64VAR_INPUT  pBytes : Pointer TO BYTE;  nBytes : DINT;END_VAR

3.3.2 AddBoolDiese Methode fügt einen Wert vom Datentyp BOOL zu einem Property hinzu. Üblicherweise wurde vorhermit der Methode AddKey() [} 49] ein entsprechendes Property erstellt.

SyntaxMETHOD AddBoolVAR_INPUT  value : BOOL;END_VAR

Beispielaufruf:fbJson.AddKey('bSwitch');fbJson.AddBool(TRUE);

3.3.3 AddDateTimeDiese Methode fügt einen Wert vom Datentyp DATE_AND_TIME zu einem Property hinzu. Üblicherweisewurde vorher mit der Methode AddKey() [} 49] ein entsprechendes Property erstellt.

SyntaxMETHOD AddDateTimeVAR_INPUT  value : DATE_AND_TIME;END_VAR

Beispielaufruf:

Page 48: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml48 Version: 1.6

fbJson.AddKey('Timestamp');fbJson.AddDateTime(dtTime); // dtTime is of type DATE_AND_TIME

3.3.4 AddDcTimeDiese Methode fügt einen Wert vom Datentyp DCTIME zu einem Property hinzu. Üblicherweise wurdevorher mit der Methode AddKey() [} 49] ein entsprechendes Property erstellt.

SyntaxMETHOD AddDcTimeVAR_INPUT  value : DCTIME;END_VAR

Beispielaufruf:fbJson.AddKey('Timestamp');fbJson.AddDcTime(dcTime); // dcTime is of type DCTIME

3.3.5 AddDintDiese Methode fügt einen Wert vom Datentyp DINT zu einem Property hinzu. Üblicherweise wurde vorhermit der Methode AddKey() [} 49] ein entsprechendes Property erstellt.

SyntaxMETHOD AddDintVAR_INPUT  value : DINT;END_VAR

Beispielaufruf:fbJson.AddKey('nNumber');fbJson.AddDint(42);

3.3.6 AddFileTimeDiese Methode fügt einen Wert vom Datentyp FILETIME zu einem Property hinzu. Üblicherweise wurdevorher mit der Methode AddKey() [} 49] ein entsprechendes Property erstellt.

SyntaxMETHOD AddFileTimeVAR_INPUT  value : FILETIME;END_VAR

Beispielaufruf:fbJson.AddKey('Timestamp');fbJson.AddFileTime(ftTime); // ftTime is of type FILETIME

3.3.7 AddHexBinaryDiese Methode fügt einen HexBinary-Wert zu einem Property hinzu. Üblicherweise wurde vorher mit derMethode AddKey() [} 49] ein entsprechendes Property erstellt.

SyntaxMETHOD AddHexBinaryVAR_INPUT  pBytes : POINTER TO BYTE;  nBytes : DINT;END_VAR

Page 49: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml 49Version: 1.6

Beispielaufruf:fbJson.AddKey('HexBinary');fbJson.AddHexBinary(ADR(byteHexBin), SIZEOF(byteHexBin));

3.3.8 AddKeyDiese Methode fügt einen neuen Property-Key an der aktuellen Position des SAX Writers hinzu.Üblicherweise wird anschließend der Value des neuen Properties gesetzt. Dies kann zum Beispiel über eineder folgenden Methoden erfolgen: AddBase64 [} 47], AddBool [} 47], AddDateTime [} 47], AddDcTime[} 48], AddDint [} 48], AddFileTime [} 48], AddHexBinary [} 48], AddLint [} 51], AddLreal [} 51], AddNull[} 52], AddRawArray [} 52], AddRawObject [} 52], AddReal [} 52], AddString [} 53], AddUdint [} 53],AddUlint [} 53].

SyntaxMETHOD AddKeyVAR_IN_OUT CONSTANT  key : STRING;END_VAR

Beispielaufruf:fbJson.AddKey('PropertyName');

3.3.9 AddKeyBoolDiese Methode legt einen neuen Property-Key und gleichzeitig einen Wert vom Datentyp BOOL an.

SyntaxMETHOD AddKeyBoolVAR_IN_OUT CONSTANT  key : STRING;END_VARVAR_INPUT  value : BOOL;END_VAR

Beispielaufruf:fbJson.AddKeyBool('bSwitch', TRUE);

3.3.10 AddKeyDateTimeDiese Methode legt einen neuen Property-Key und gleichzeitig einen Wert vom Datentyp DATE_AND_TIMEan.

SyntaxMETHOD AddKeyDateTimeVAR_IN_OUT CONSTANT  key : STRING;END_VARVAR_INPUT  value : DATE_AND_TIME;END_VAR

Beispielaufruf:fbJson.AddKeyDateTime('Timestamp', dtTime);

3.3.11 AddKeyDcTimeDiese Methode legt einen neuen Property-Key und gleichzeitig einen Wert vom Datentyp DCTIME an.

Page 50: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml50 Version: 1.6

SyntaxMETHOD AddKeyDcTimeVAR_IN_OUT CONSTANT  key : STRING;END_VARVAR_INPUT  value : DCTIME;END_VAR

Beispielaufruf:fbJson.AddKeyDcTime('Timestamp', dcTime);

3.3.12 AddKeyFileTimeDiese Methode legt einen neuen Property-Key und gleichzeitig einen Wert vom Datentyp FILETIME an.

SyntaxMETHOD AddKeyFileTimeVAR_IN_OUT CONSTANT  key : STRING;END_VARVAR_INPUT  value : FILETIME;END_VAR

Beispielaufruf:fbJson.AddKeyFileTime('Timestamp', ftTime);

3.3.13 AddKeyLrealDiese Methode legt einen neuen Property-Key und gleichzeitig einen Wert vom Datentyp LREAL an.

SyntaxMETHOD AddKeyLrealVAR_IN_OUT CONSTANT  key : STRING;END_VARVAR_INPUT  value : LREAL;END_VAR

Beispielaufruf:fbJson.AddKeyLreal('PropertyName', 42.42);

3.3.14 AddKeyNullDiese Methode legt einen neuen Property-Key an und initialisiert dessen Wert mit null.

SyntaxMETHOD AddKeyNullVAR_IN_OUT CONSTANT  key : STRING;END_VAR

Beispielaufruf:fbJson.AddKeyNull('PropertyName');

3.3.15 AddKeyNumberDiese Methode legt einen neuen Property-Key und gleichzeitig einen Wert vom Datentyp DINT an.

Page 51: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml 51Version: 1.6

SyntaxMETHOD AddKeyNumberVAR_IN_OUT CONSTANT  key : STRING;END_VARVAR_INPUT  value : DINT;END_VAR

Beispielaufruf:fbJson.AddKeyNumber('PropertyName', 42);

3.3.16 AddKeyStringDiese Methode legt einen neuen Property-Key und gleichzeitig einen Wert vom Datentyp STRING an.

SyntaxMETHOD AddKeyStringVAR_IN_OUT CONSTANT  key : STRING;  value : STRING;END_VAR

Beispielaufruf:fbJson.AddKeyString('PropertyName', 'Hello World');

3.3.17 AddLintDiese Methode fügt einen Wert vom Datentyp LINT zu einem Property hinzu. Üblicherweise wurde vorhermit der Methode AddKey() [} 49] ein entsprechendes Property erstellt.

SyntaxMETHOD AddLintVAR_INPUT  value : LINT;END_VAR

Beispielaufruf:fbJson.AddKey('PropertyName');fbJson.AddLint(42);

3.3.18 AddLrealDiese Methode fügt einen Wert vom Datentyp LREAL zu einem Property hinzu. Üblicherweise wurde vorhermit der Methode AddKey() [} 49] ein entsprechendes Property erstellt.

SyntaxMETHOD AddLrealVAR_INPUT  value : LREAL;END_VAR

Beispielaufruf:fbJson.AddKey('PropertyName');fbJson.AddLreal(42.42);

Page 52: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml52 Version: 1.6

3.3.19 AddNullDiese Methode fügt den Wert null zu einem Property hinzu. Üblicherweise wurde vorher mit der MethodeAddKey() [} 49] ein entsprechendes Property erstellt.

SyntaxMETHOD AddNull

Beispielaufruf:fbJson.AddKey('PropertyName');fbJson.AddNull();

3.3.20 AddRawArrayDiese Methode fügt ein gültiges JSON-Array zu einem gegebenen Property als Value hinzu. Dashinzuzufügende Array muss ein gültiges JSON-Format aufweisen und darf nur dann hinzugefügt werden,wenn der SAX Writer sich an einer entsprechend gültigen Position befindet, also z. B. direkt nach einemvorhergehenden AddKey() [} 49], StartArray() [} 55] oder als erster Aufruf nach einem ResetDocument()[} 55].

SyntaxMETHOD AddRawArrayVAR_IN_OUT CONSTANT  rawJson : STRING;END_VAR

Beispielaufruf:fbJson.AddKey('PropertyName');fbJson.AddRawArray('[1, 2, {"x":42, "y":42}, 4');

3.3.21 AddRawObjectDiese Methode fügt ein gültiges JSON-Objekt zu einem gegebenen Property als Value hinzu. Dashinzuzufügende Objekt muss ein gültiges JSON-Format aufweisen und darf nur dann hinzugefügt werden,wenn der SAX Writer sich an einer entsprechend gültigen Position befindet, also z. B. direkt nach einemvorhergehenden AddKey() [} 49], StartArray() [} 55] oder als erster Aufruf nach einem ResetDocument()[} 55].

SyntaxMETHOD AddRawObjectVAR_IN_OUT CONSTANT  rawJson : STRING;END_VAR

Beispielaufruf:fbJson.AddKey('PropertyName');fbJson.AddRawObject('{"x":42, "y":42}');

3.3.22 AddRealDiese Methode fügt einen Wert vom Datentyp REAL zu einem Property hinzu. Üblicherweise wurde vorhermit der Methode AddKey() [} 49] ein entsprechendes Property erstellt.

SyntaxMETHOD AddRealVAR_INPUT  value : REAL;END_VAR

Page 53: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml 53Version: 1.6

Beispielaufruf:fbJson.AddKey('PropertyName');fbJson.AddReal(42.42);

3.3.23 AddStringDiese Methode fügt einen Wert vom Datentyp STRING zu einem Property hinzu. Üblicherweise wurdevorher mit der Methode AddKey() [} 49] ein entsprechendes Property erstellt.

SyntaxMETHOD AddStringVAR_IN_OUT CONSTANT  value : STRING;END_VAR

Beispielaufruf:fbJson.AddKey('PropertyName');fbJson.AddString('Hello World');

3.3.24 AddUdintDiese Methode fügt einen Wert vom Datentyp UDINT zu einem Property hinzu. Üblicherweise wurde vorhermit der Methode AddKey() [} 49] ein entsprechendes Property erstellt.

SyntaxMETHOD AddUdintVAR_INPUT  value : UDINT;END_VAR

Beispielaufruf:fbJson.AddKey('PropertyName');fbJson.AddUdint(42);

3.3.25 AddUlintDiese Methode fügt einen Wert vom Datentyp ULINT zu einem Property hinzu. Üblicherweise wurde vorhermit der Methode AddKey() [} 49] ein entsprechendes Property erstellt.

SyntaxMETHOD AddUlintVAR_INPUT  value : ULINT;END_VAR

Beispielaufruf:fbJson.AddKey('PropertyName');fbJson.AddUlint(42);

3.3.26 CopyDocumentDiese Methode kopiert den Inhalt des aktuell mit dem SAX Writer erstellten JSON-Objekts in eineZielvariable vom Datentyp STRING. Als Rückgabewert liefert die Methode die Länge des Strings (inklusiveNullterminierung). Falls der Zielbuffer zu klein ist, wird dieser durch eine Nullterminierung geleert und alsLänge 0 zurückgegeben.

Page 54: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml54 Version: 1.6

SyntaxMETHOD CopyDocument : UDINTVAR_IN_OUT CONSTANT  pDoc : STRING;END_VARVAR_INPUT  nDoc : UDINT;END_VAR

Beispielaufruf:fbJson.CopyDocument(sTargetString, SIZEOF(sTargetString));

3.3.27 EndArrayDiese Methode erzeugt den Abschluss eines angefangenen JSON-Arrays („eckige schließende Klammer“)und fügt sie an der aktuellen Position des SAX Writers ein.

SyntaxMETHOD EndArray()

Beispielaufruf:fbJson.EndArray();

3.3.28 EndObjectDiese Methode erzeugt den Abschluss eines angefangenen JSON-Objekts („geschweifte schließendeKlammer“) und fügt sie an der aktuellen Position des SAX Writers ein.

SyntaxMETHOD EndObject

Beispielaufruf:fbJson.EndObject();

3.3.29 GetDocumentDiese Methode liefert den Inhalt des aktuell mit dem SAX Writer erstellten JSON-Objekts und gibt diesen alsDatentyp STRING(255) zurück.

SyntaxMETHOD GetDocument : STRING(255)

Beispielaufruf:sTargetString := fbJson.GetDocument();

3.3.30 GetDocumentLengthDiese Methode liefert die Länge des aktuell mit dem SAX Writer erstellten JSON-Objekts und gibt diese alsDatentyp UDINT zurück.

SyntaxMETHOD GetDocumentLength : UDINT

Beispielaufruf:nLength := fbJson.GetDocumentLength();

Page 55: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml 55Version: 1.6

3.3.31 GetMaxDecimalPlaces

3.3.32 ResetDocumentDiese Methode setzt das aktuell mit dem SAX Writer erstellte JSON-Objekts zurück.

SyntaxMETHOD ResetDocument

Beispielaufruf:fbJson.ResetDocument();

3.3.33 SetMaxDecimalPlaces

3.3.34 StartArrayDiese Methode erzeugt den Anfang eines neuen JSON-Arrays („eckige öffnende Klammer“) und fügt sie ander aktuellen Position des SAX Writers ein.

SyntaxMETHOD StartArray()

Beispielaufruf:fbJson.StartArray();

3.3.35 StartObjectDiese Methode erzeugt den Beginn eines neuen JSON-Objekts („geschweifte öffnende Klammer“) und fügtsie an der aktuellen Position des SAX Writers ein.

SyntaxMETHOD StartObject

Beispielaufruf:fbJson.StartObject();

3.4 FB_JsonReadWriteDataType

3.4.1 AddJsonKeyPropertiesFromSymbolMit dieser Methode können Metadaten über SPS-Attribute in die JSON-Repräsentation einer SPS-Datenstruktur auf einem FB_JsonSaxWriter [} 47]-Objekt hinzugefügt werden. Als Eingangsparameter erhältdie Methode die Instanz des FB_JsonSaxWriter‑Funktionsbausteins, den gewünschten Namen des JSON-Properties, das die Metadaten enthalten soll, den Datentypnamen der Struktur und eine String-VariablesProperties, die eine durch einen Querbalken getrennte Liste der zu extrahierenden SPS-Attribute enthält.

SyntaxMETHOD AddJsonValueFromSymbol : BOOLVAR_IN_OUT  fbWriter    : FB_JsonSaxWriter;END_VARVAR_IN_OUT CONSTANT  sKey        : STRING;

Page 56: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml56 Version: 1.6

  sDatatype   : STRING;  sProperties : STRING;END_VAR

Die SPS-Attribute können in folgender Form an den Strukturelementen spezifiziert werden:{attribute 'Unit' := 'm/s'}{attribute 'DisplayName' := 'Speed'}Sensor1 : REAL;

Ein vollständiges Beispiel zur Verwendung dieser Methode finden Sie im AbschnittTc3JsonXmlSampleJsonDataType [} 93].

Beispielaufruf:fbJsonSaxWriter.ResetDocument()fbJsonDataType.AddJsonKeyPropertiesFromSymbol(fbJsonSaxWriter, 'MetaData','ST_Values','Unit|DisplayName');

3.4.2 AddJsonKeyValueFromSymbolDiese Methode erzeugt die JSON-Repräsentation einer SPS-Datenstruktur auf einem FB_JsonSaxWriter[} 47]-Objekt. Als Eingangsparameter erhält die Methode die Instanz des FB_JsonSaxWriter-Funktionsbausteins, den Datentypnamen der Struktur sowie die Adresse und Größe derQuellstrukturinstanz. Als Resultat beinhaltet die FB_JsonSaxWriter-Instanz eine gültige JSON-Repräsentation der Struktur. Im Unterschied zur Methode AddJsonValueFromSymbol() [} 56] werden dieElemente der Quellstruktur hierbei in ein JSON-Unterobjekt verschachtelt, dessen Name über denEingangs-/Ausgangsparameter sKey spezifiziert werden kann.

SyntaxMETHOD AddJsonValueFromSymbol : BOOLVAR_IN_OUT  fbWriter  : FB_JsonSaxWriter;END_VARVAR_IN_OUT CONSTANT  sKey      : STRING;  sDatatype : STRING;END_VARVAR_INPUT  nData     : UDINT;  pData     : PVOID;END_VAR

Ein vollständiges Beispiel zur Verwendung dieser Methode finden Sie im AbschnittTc3JsonXmlSampleJsonDataType [} 93].

Beispielaufruf:fbJsonSaxWriter.ResetDocument()fbJsonDataType.AddJsonKeyValueFromSymbol(fbJsonSaxWriter, 'Values','ST_Values',SIZEOF(stValues),ADR(stValues));

3.4.3 AddJsonValueFromSymbolDiese Methode erzeugt die JSON-Repräsentation einer SPS-Datenstruktur auf einem FB_JsonSaxWriter[} 47]-Objekt. Als Eingangsparameter erhält die Methode die Instanz des FB_JsonSaxWriter-Funktionsbausteins, den Datentypnamen der Struktur sowie die Adresse und Größe derQuellstrukturinstanz. Als Resultat beinhaltet die FB_JsonSaxWriter-Instanz eine gültige JSON-Repräsentation der Struktur.

SyntaxMETHOD AddJsonValueFromSymbol : BOOLVAR_IN_OUT  fbWriter : FB_JsonSaxWriter;END_VARVAR_IN_OUT CONSTANT  sDatatype : STRING;

Page 57: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml 57Version: 1.6

END_VARVAR_INPUT  nData : UDINT;  pData : PVOID;END_VAR

Ein vollständiges Beispiel zur Verwendung dieser Methode finden Sie im AbschnittTc3JsonXmlSampleJsonDataType [} 93].

Beispielaufruf:fbJsonSaxWriter.ResetDocument()fbJsonDataType.AddJsonValueFromSymbol(fbJsonSaxWriter,'ST_Values',SIZEOF(stValues), ADR(stValues));

3.4.4 GetDataTypeNameByAddressDiese Methode liefert den Datentypnamen eines übergebenen Symbols.

SyntaxMETHOD GetDataTypeNameByAddress : STRINGVAR_INPUT    nData : UDINT;    pData : PVOID;END_VAR

Beispielaufruf:sBuffer := fbJsonDataType.GetDataTypeNameByAddress(SIZEOF(stValues),ADR(stValues));

3.4.5 GetJsonFromSymbolDiese Methode erzeugt die entsprechende JSON-Repräsentation eines Symbols. Im Unterschied zurMethode AddJsonValueFromSymbol() [} 56] wird das Resultat nicht in eine Instanz vom FunktionsbausteinFB_JsonSaxWriter geschrieben, sondern in eine String-Variable. Als Eingangsparameter erhält die Methodeden Datentypnamen des Symbols sowie die Adresse und Größe des Quellsymbols, z. B. einerStrukturinstanz. Als weitere Eingangsparameter werden die Adresse und Größe des Ziel-Buffers übergeben,der nach dem Aufruf die JSON-Repräsentation des Symbols enthält.

SyntaxMETHOD GetJsonFromSymbol : BOOLVAR_IN_OUT CONSTANT  sDatatype : STRING;END_VARVAR_INPUT  nData : UDINT;  pData : PVOID;  nJson : REFERENCE TO UDINT;  pJson : POINTER TO STRING;END_VAR

Eingangsparameter nJsonDer Eingangsparameter nJson enthält beim Aufruf der Methode die Größe des Ziel-Buffers undnach Abschluss des Methodenaufrufs die Größe des tatsächlich geschriebenen JSON-Objekts imZiel-Buffer.

Beispielaufruf:fbJsonDataType.GetJsonFromSymbol('ST_Values',SIZEOF(stValues), ADR(stValues), nBufferLength,ADR(sBuffer));

Page 58: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml58 Version: 1.6

3.4.6 GetJsonStringFromSymbolDiese Methode erzeugt die entsprechende JSON-Repräsentation eines Symbols. Im Unterschied zurMethode AddJsonValueFromSymbol() [} 56] wird das Resultat nicht in eine Instanz vom FunktionsbausteinFB_JsonSaxWriter geschrieben, sondern in eine String-Variable. Als Eingangsparameter erhält die Methodeden Datentypnamen des Symbols sowie die Adresse und die Größe des Quellsymbols, z. B. einerStrukturinstanz.

SyntaxMETHOD GetJsonStringFromSymbol : STRING(16384)VAR_IN_OUT CONSTANT  sDatatype : STRING;END_VARVAR_INPUT  nData : UDINT;  pData : PVOID;END_VAR

Beispielaufruf:sBuffer := fbJsonDataType.GetJsonStringFromSymbol('ST_Values',SIZEOF(stValues), ADR(stValues));

3.4.7 GetJsonStringFromSymbolPropertiesDiese Methode erzeugt eine entsprechende JSON-Repräsentation von SPS-Attributen an einem Symbol. ImUnterschied zur Methode AddJsonKeyPropertiesFromSymbol [} 55] wird das Resultat nicht in eine Instanzvom Funktionsbaustein FB_JsonSaxWriter geschrieben, sondern in eine String-Variable. AlsEingangsparameter erhält die Methode den Datentypnamen des Symbols und eine String-Variable, welcheeine durch Querbalken getrennte Liste der zu extrahierenden SPS‑Attribute darstellt. Das Resultat wirddirekt als Rückgabewert der Methode zurückgeliefert.

SyntaxMETHOD GetJsonStringFromSymbolProperties : STRING(16384)VAR_IN_OUT CONSTANT  sDatatype : STRING;  sProperties : STRING;END_VAR

Beispielaufruf:sBuffer := fbJsonDataType.GetJsonStringFromSymbolProperties('ST_Values', 'Unit|DisplayName');

3.4.8 GetSymbolNameByAddressDiese Methode liefert den vollständigen (ADS-)Symbolnamen eines übergebenen Symbols.

SyntaxMETHOD GetSymbolNameByAddress : STRING(255)VAR_INPUT  nData : UDINT;  pData : PVOID;END_VAR

Beispielaufruf:sBuffer := fbJsonDataType.GetSymbolNameByAddress(SIZEOF(stValues), ADR(stValues));

3.4.9 SetSymbolFromJsonDiese Methode extrahiert einen String, der eine gültige JSON-Nachricht beinhaltet, und versucht die Inhaltedes JSON-Objekts in eine äquivalente Datenstruktur zu speichern. Als Eingangsparameter erhält dieMethode den String mit dem JSON-Objekt, den Datentypnamen der Zielstruktur sowie die Adresse undGröße der Zielstrukturinstanz.

Page 59: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml 59Version: 1.6

SyntaxMETHOD SetSymbolFromJson : BOOLVAR_IN_OUT CONSTANT  sJson : STRING;  sDatatype : STRING;END_VARVAR_INPUT  nData : UDINT;  pData : PVOID;END_VAR

Beispielaufruf:fbJsonDataType.SetSymbolFromJson(sJson,'ST_Values',SIZEOF(stValuesReceive), ADR(stValuesReceive));

3.5 FB_XmlDomParser

3.5.1 AppendAttributeDiese Methode fügt ein neues Attribut zu einem existierenden Knoten hinzu. Der Name und der Wert desneuen Attributs sowie der existierende XML-Knoten werden der Methode als Eingangsparameter übergeben.Die Methode liefert eine Referenz auf das neu hinzugefügte Attribut.

SyntaxMETHOD AppendAttribute : SXmlAttributeVAR_INPUT  n : SXmlNode;END_VARVAR_IN_OUT CONSTANT  name : STRING;  value : STRING;END_VAR

Beispielaufruf:objAttribute := fbXml.AppendAttribute(objMachine, 'Name', 'some value');

3.5.2 AppendAttributeAsBoolDiese Methode fügt ein neues Attribut zu einem existierenden Knoten hinzu. Der Wert des Attributs isthierbei vom Datentyp Boolean. Der Name und der Wert des neuen Attributs sowie der existierende XML-Knoten werden der Methode als Eingangsparameter übergeben. Die Methode liefert eine Referenz auf dasneu hinzugefügte Attribut.

SyntaxMETHOD AppendAttributeAsBool : SXmlAttributeVAR_INPUT  n : SXmlNode;END_VARVAR_IN_OUT CONSTANT  name : STRING;END_VARVAR_INPUT  value : BOOL;END_VAR

Beispielaufruf:objAttribute := fbXml.AppendAttributeAsBool(objMachine, 'Name', TRUE);

Page 60: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml60 Version: 1.6

3.5.3 AppendAttributeAsDoubleDiese Methode fügt ein neues Attribut zu einem existierenden Knoten hinzu. Der Wert des Attributs isthierbei vom Datentyp Double. Der Name und der Wert des neuen Attributs sowie der existierende XML-Knoten werden der Methode als Eingangsparameter übergeben. Die Methode returniert eine Referenz aufdas neu hinzugefügte Attribut.

SyntaxMETHOD AppendAttributeAsDouble : SXmlAttributeVAR_INPUT  n : SXmlNode;END_VARVAR_IN_OUT CONSTANT  name : STRING;END_VARVAR_INPUT  value : LREAL;END_VAR

Beispielaufruf:objAttribute := fbXml.AppendAttributeAsDouble(objMachine, 'Name', 42.42);

3.5.4 AppendAttributeAsFloatDiese Methode fügt ein neues Attribut zu einem existierenden Knoten hinzu. Der Wert des Attributs isthierbei vom Datentyp Float. Der Name und der Wert des neuen Attributs sowie der existierende XML-Knotenwerden der Methode als Eingangsparameter übergeben. Die Methode liefert eine Referenz auf das neuhinzugefügte Attribut.

SyntaxMETHOD AppendAttributeAsFloat : SXmlAttributeVAR_INPUT  n : SXmlNode;END_VARVAR_IN_OUT CONSTANT  name : STRING;END_VARVAR_INPUT  value : REAL;END_VAR

Beispielaufruf:objAttribute := fbXml.AppendAttributeAsFloat(objMachine, 'Name', 42.42);

3.5.5 AppendAttributeAsIntDiese Methode fügt ein neues Attribut zu einem existierenden Knoten hinzu. Der Wert des Attributs isthierbei vom Datentyp Integer. Der Name und der Wert des neuen Attributs sowie der existierende XML-Knoten werden der Methode als Eingangsparameter übergeben. Die Methode liefert eine Referenz auf dasneu hinzugefügte Attribut.

SyntaxMETHOD AppendAttributeAsInt : SXmlAttributeVAR_INPUT  n : SXmlNode;END_VARVAR_IN_OUT CONSTANT  name : STRING;END_VARVAR_INPUT  value : DINT;END_VAR

Beispielaufruf:

Page 61: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml 61Version: 1.6

objAttribute := fbXml.AppendAttributeAsInt(objMachine, 'Name', 42);

3.5.6 AppendAttributeAsLintDiese Methode fügt ein neues Attribut zu einem existierenden Knoten hinzu. Der Wert des Attributs isthierbei vom Datentyp Integer64. Der Name und der Wert des neuen Attributs sowie der existierende XML-Knoten werden der Methode als Eingangsparameter übergeben. Die Methode liefert eine Referenz auf dasneu hinzugefügte Attribut.

SyntaxMETHOD AppendAttributeAsLint : SXmlAttributeVAR_INPUT  n : SXmlNode;END_VARVAR_IN_OUT CONSTANT  name : STRING;END_VARVAR_INPUT  value : LINT;END_VAR

Beispielaufruf:objAttribute := fbXml.AppendAttributeAsLint(objMachine, 'Name', 42);

3.5.7 AppendAttributeAsUintDiese Methode fügt ein neues Attribut zu einem existierenden Knoten hinzu. Der Wert des Attributs isthierbei vom Datentyp Unsigned Integer. Der Name und der Wert des neuen Attributs sowie der existierendeXML-Knoten werden der Methode als Eingangsparameter übergeben. Die Methode liefert eine Referenz aufdas neu hinzugefügte Attribut.

SyntaxMETHOD AppendAttributeAsUint : SXmlAttributeVAR_INPUT  n : SXmlNode;END_VARVAR_IN_OUT CONSTANT  name : STRING;END_VARVAR_INPUT  value : UDINT;END_VAR

Beispielaufruf:objAttribute := fbXml.AppendAttributeAsUint(objMachine, 'Name', 42);

3.5.8 AppendAttributeAsUlintDiese Methode fügt ein neues Attribut zu einem existierenden Knoten hinzu. Der Wert des Attributs isthierbei vom Datentyp Unsigned Integer64. Der Name und der Wert des neuen Attributs sowie derexistierende XML-Knoten werden der Methode als Eingangsparameter übergeben. Die Methode liefert eineReferenz auf das neu hinzugefügte Attribut.

SyntaxMETHOD AppendAttributeAsUlint : SXmlAttributeVAR_INPUT  n : SXmlNode;END_VARVAR_IN_OUT CONSTANT  name : STRING;END_VAR

Page 62: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml62 Version: 1.6

VAR_INPUT  value : ULINT;END_VAR

Beispielaufruf:objAttribute := fbXml.AppendAttributeAsUlint(objMachine, 'Name', 42);

3.5.9 AppendAttributeCopyDiese Methode fügt ein neues Attribut zu einem existierenden Knoten hinzu. Der Name und der Wert desneuen Attributs werden hierbei von einem existierenden Attribut übernommen bzw. kopiert. Das existierendeAttribut wird der Methode als Eingangsparameter übergeben.

SyntaxMETHOD AppendAttributeCopy : SXmlAttributeINPUT_VAR  n : SXmlNode;  copy : SXmlAttribute;END_VAR

Beispielaufruf:xmlNewAttribute := fbXml.AppendAttributeCopy(xmlNode, xmlExistingAttribute);

3.5.10 AppendChildDiese Methode fügt einen neuen Knoten unterhalb eines existierenden Knotens ein. Der Wert des neuenKnotens ist hierbei vom Datentyp STRING. Der Name und der Wert des neuen Knotens sowie eine Referenzauf den existierenden Knoten werden der Methode als Eingangsparameter übergeben. Die Methode lieferteine Referenz auf den neu hinzugefügten Knoten. Der Eingangsparameter cdata gibt an, ob der Wert desKnotens in einem CDATA‑Block gekapselt werden soll, sodass bestimmte Sonderzeichen wie z. B. "<" und">" als Werte erlaubt sind.

SyntaxMETHOD AppendChild : SXmlNodeVAR_INPUT  n : SXmlNode;END_VARVAR_IN_OUT CONSTANT  name : STRING;  value : STRING;END_VARVAR_INPUT  cdata : BOOL;END_VAR

Beispielaufruf:xmlNewNode := fbXml.AppendChild(xmlExisting, 'Controller', 'CX5120', FALSE);

3.5.11 AppendChildAsBoolDiese Methode fügt einen neuen Knoten unterhalb eines existierenden Knotens ein. Der Wert des neuenKnotens ist hierbei vom Datentyp Boolean. Der Name und der Wert des neuen Knotens sowie eine Referenzauf den existierenden Knoten werden der Methode als Eingangsparameter übergeben. Die Methode lieferteine Referenz auf den neu hinzugefügten Knoten.

SyntaxMETHOD AppendChildAsBool : SXmlNodeVAR_INPUT  n : SXmlNode;END_VARVAR_IN_OUT CONSTANT  name : STRING;

Page 63: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml 63Version: 1.6

END_VARVAR_INPUT  value : BOOL;END_VAR

Beispielaufruf:xmlNewNode := fbXml.AppendChildAsBool(xmlExisting, 'SomeName', TRUE);

3.5.12 AppendChildAsDoubleDiese Methode fügt einen neuen Knoten unterhalb eines existierenden Knotens ein. Der Wert des neuenKnotens ist hierbei vom Datentyp Double. Der Name und der Wert des neuen Knotens sowie eine Referenzauf den existierenden Knoten werden der Methode als Eingangsparameter übergeben. Die Methode lieferteine Referenz auf den neu hinzugefügten Knoten.

SyntaxMETHOD AppendChildAsDouble : SXmlNodeVAR_INPUT  n : SXmlNode;END_VARVAR_IN_OUT CONSTANT  name : STRING;END_VARVAR_INPUT  value : LREAL;END_VAR

Beispielaufruf:xmlNewNode := fbXml.AppendChildAsDouble(xmlExisting, 'SomeName', 42.42);

3.5.13 AppendChildAsFloatDiese Methode fügt einen neuen Knoten unterhalb eines existierenden Knotens ein. Der Wert des neuenKnotens ist hierbei vom Datentyp Float. Der Name und der Wert des neuen Knotens sowie eine Referenzauf den existierenden Knoten werden der Methode als Eingangsparameter übergeben. Die Methode lieferteine Referenz auf den neu hinzugefügten Knoten.

SyntaxMETHOD AppendChildAsFloat : SXmlNodeVAR_INPUT  n : SXmlNode;END_VARVAR_IN_OUT CONSTANT  name : STRING;END_VARVAR_INPUT  value : REAL;END_VAR

Beispielaufruf:xmlNewNode := fbXml.AppendChildAsFloat(xmlExisting, 'SomeName', 42.42);

3.5.14 AppendChildAsIntDiese Methode fügt einen neuen Knoten unterhalb eines existierenden Knotens ein. Der Wert des neuenKnotens ist hierbei vom Datentyp Integer. Der Name und der Wert des neuen Knotens sowie eine Referenzauf den existierenden Knoten werden der Methode als Eingangsparameter übergeben. Die Methode lieferteine Referenz auf den neu hinzugefügten Knoten.

SyntaxMETHOD AppendChildAsInt : SXmlNodeVAR_INPUT  n : SXmlNode;

Page 64: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml64 Version: 1.6

END_VARVAR_IN_OUT CONSTANT  name : STRING;END_VARVAR_INPUT  value : DINT;END_VAR

Beispielaufruf:xmlNewNode := fbXml.AppendChildAsInt(xmlExisting, 'SomeName', 42);

3.5.15 AppendChildAsLintDiese Methode fügt einen neuen Knoten unterhalb eines existierenden Knotens ein. Der Wert des neuenKnotens ist hierbei vom Datentyp Integer64. Der Name und der Wert des neuen Knotens sowie eineReferenz auf den existierenden Knoten werden der Methode als Eingangsparameter übergeben. DieMethode liefert eine Referenz auf den neu hinzugefügten Knoten.

SyntaxMETHOD AppendChildAsLint : SXmlNodeVAR_INPUT  n : SXmlNode;END_VARVAR_IN_OUT CONSTANT  name : STRING;END_VARVAR_INPUT  value : LINT;END_VAR

Beispielaufruf:xmlNewNode := fbXml.AppendChildAsLint(xmlExisting, 'SomeName', 42);

3.5.16 AppendChildAsUintDiese Methode fügt einen neuen Knoten unterhalb eines existierenden Knotens ein. Der Wert des neuenKnotens ist hierbei vom Datentyp Unsigned Integer. Der Name und der Wert des neuen Knotens sowie eineReferenz auf den existierenden Knoten werden der Methode als Eingangsparameter übergeben. DieMethode liefert eine Referenz auf den neu hinzugefügten Knoten.

SyntaxMETHOD AppendChildAsUint : SXmlNodeVAR_INPUT  n : SXmlNode;END_VARVAR_IN_OUT CONSTANT  name : STRING;END_VARVAR_INPUT  value : UDINT;END_VAR

Beispielaufruf:xmlNewNode := fbXml.AppendChildAsUint(xmlExisting, 'SomeName', 42);

3.5.17 AppendChildAsUlintDiese Methode fügt einen neuen Knoten unterhalb eines existierenden Knotens ein. Der Wert des neuenKnotens ist hierbei vom Datentyp Unsigned Integer64. Der Name und der Wert des neuen Knotens sowieeine Referenz auf den existierenden Knoten werden der Methode als Eingangsparameter übergeben. DieMethode liefert eine Referenz auf den neu hinzugefügten Knoten.

Page 65: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml 65Version: 1.6

SyntaxMETHOD AppendChildAsUlint : SXmlNodeVAR_INPUT  n : SXmlNode;END_VARVAR_IN_OUT CONSTANT  name : STRING;END_VARVAR_INPUT  value : ULINT;END_VAR

Beispielaufruf:xmlNewNode := fbXml.AppendChildAsUlint(xmlExisting, 'SomeName', 42);

3.5.18 AppendCopyDiese Methode fügt einen neuen Knoten unterhalb eines existierenden Knotens ein. Der Name und der Wertdes neuen Knotens werden von einem existierenden Knoten übernommen bzw. kopiert. Die Referenzen aufdie existierenden Knoten werden der Methode als Eingangsparameter übergeben. Die Methode liefert eineReferenz auf den neu hinzugefügten Knoten.

SyntaxMETHOD AppendCopy : SXmlNodeVAR_INPUT  n : SXmlNode;  copy : SXmlNode;END_VAR

Beispielaufruf:xmlNewNode := fbXml.AppendCopy(xmlParentNode, xmlExistingNode);

3.5.19 AppendNodeDiese Methode fügt einen neuen Knoten zu einem existierenden Knoten hinzu. Der existierende Knotensowie der Name des neuen Knotens werden der Methode als Eingangsparameter übergeben. Die Methodeliefert eine Referenz auf den neu angefügten Knoten.

SyntaxMETHOD AppendNode : SXmlNodeVAR_INPUT  n : SXmlNode;END_VARVAR_IN_OUT CONSTANT  name : STRING;END_VAR

Beispielaufruf:objMachines := fbXml.AppendNode(objRoot, 'Machines');

3.5.20 AttributeMit dieser Methode kann das Attribut eines gegebenen XML-Knotens ausgelesen werden. Der XML-Knotenund der Name des Attributs werden der Methode als Eingangsparameter übergeben. Nach Aufruf derMethode müssen weitere Methoden aufgerufen werden, um z. B. den Wert des Attributs auszulesen, z. B.AttributeAsInt().

SyntaxMETHOD Attribute : SXmlAttributeVAR_INPUT  n : SXmlNode;END_VAR

Page 66: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml66 Version: 1.6

VAR_IN_OUT CONSTANT  name : STRING;END_VAR

Beispielaufruf:xmlMachine1Attribute := fbXml.Attribute(xmlMachine1, 'Type');

3.5.21 AttributeAsBoolDiese Methode liefert den Wert eines Attributs als Datentyp Boolean. Das Attribut wird der Methode alsEingangsparameter übergeben.

SyntaxMETHOD AttributeAsBool : BOOLVAR_INPUT  a : SXmlAttribute;END_VAR

Beispielaufruf:bValue := fbXml.AttributeAsBool(xmlAttr);

3.5.22 AttributeAsDoubleDiese Methode liefert den Wert eines Attributs als Datentyp Double. Das Attribut wird der Methode alsEingangsparameter übergeben.

SyntaxMETHOD AttributeAsDouble : LREALVAR_INPUT  a : SXmlAttribute;END_VAR

Beispielaufruf:lrValue := fbXml.AttributeAsDouble(xmlAttr);

3.5.23 AttributeAsFloatDiese Methode liefert den Wert eines Attributs als Datentyp Float. Das Attribut wird der Methode alsEingangsparameter übergeben.

SyntaxMETHOD AttributeAsFloat : REALVAR_INPUT  a : SXmlAttribute;END_VAR

Beispielaufruf:rValue := fbXml.AttributeAsFloat(xmlAttr);

3.5.24 AttributeAsIntDiese Methode liefert den Wert eines Attributs als Datentyp Integer. Das Attribut wird der Methode alsEingangsparameter übergeben.

SyntaxMETHOD AttributeAsInt : DINTVAR_INPUT  a : SXmlAttribute;END_VAR

Page 67: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml 67Version: 1.6

Beispielaufruf:nValue := fbXml.AttributeAsInt(xmlAttr);

3.5.25 AttributeAsLintDiese Methode liefert den Wert eines Attributs als Datentyp Integer64. Das Attribut wird der Methode alsEingangsparameter übergeben.

SyntaxMETHOD AttributeAsLint : LINTVAR_INPUT  a : SXmlAttribute;END_VAR

Beispielaufruf:nValue := fbXml.AttributeAsLint(xmlAttr);

3.5.26 AttributeAsUintDiese Methode liefert den Wert eines Attributs als Datentyp Unsigned Integer. Das Attribut wird der Methodeals Eingangsparameter übergeben.

SyntaxMETHOD AttributeAsUint : UDINTVAR_INPUT  a : SXmlAttribute;END_VAR

Beispielaufruf:nValue := fbXml.AttributeAsUint(xmlAttr);

3.5.27 AttributeAsUlintDiese Methode liefert den Wert eines Attributs als Datentyp Unsigned Integer64. Das Attribut wird derMethode als Eingangsparameter übergeben.

SyntaxMETHOD AttributeAsUlint : ULINTVAR_INPUT  a : SXmlAttribute;END_VAR

Beispielaufruf:nValue := fbXml.AttributeAsUlint(xmlAttr);

3.5.28 AttributeBeginDiese Methode liefert einen Iterator über alle Attribute eines XML-Knotens. Der XML‑Knoten wird derMethode als Eingangsparameter übergeben.

SyntaxMETHOD AttributeBegin : SXmlIteratorVAR_INPUT  n : SXmlNode;END_VAR

Beispielaufruf:

Page 68: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml68 Version: 1.6

xmlIterator := fbXml.AttributeBegin(xmlNode);WHILE NOT fbXml.IsEnd(xmlIterator) DO  xmlAttr := fbXml.AttributeFromIterator(xmlIterator);  nAttrValue := fbXml.AttributeAsInt(xmlAttr);  xmlIterator := fbXml.Next(xmlIterator);END_WHILE

3.5.29 AttributeFromIteratorDiese Methode konvertiert die aktuelle Position eines Iterators in ein XML-Attribut-Objekt. Der Iterator wirdder Methode als Eingangsparameter übergeben.

SyntaxMETHOD AttributeFromIterator : SXmlAttributeVAR_INPUT  it : SXmlIterator;END_VAR

Beispielaufruf:xmlIterator := fbXml.AttributeBegin(xmlNode);WHILE NOT fbXml.IsEnd(xmlIterator) DO  xmlAttr := fbXml.AttributeFromIterator(xmlIterator);  nAttrValue := fbXml.AttributeAsInt(xmlAttr);  xmlIterator := fbXml.Next(xmlIterator);END_WHILE

3.5.30 AttributeNameDiese Methode liefert den Namen eines gegebenen Attributs. Das Attribut wird der Methode alsEingangsparameter übergeben.

SyntaxMETHOD AttributeName : STRINGVAR_INPUT  a : SXmlAttribute;END_VAR

Beispielaufruf:sName := fbXml.AttributeName(xmlAttr);

3.5.31 AttributesDiese Methode dient zur Navigation durch den DOM und liefert einen Iterator auf alle gefundenen Attributean einem XML-Knoten zurück. Der Iterator kann anschließend zur weiteren Navigation durch die gefundenenElemente verwendet werden. Der Knoten und eine Referenz auf den Iterator werden der Methode alsEingangsparameter übergeben.

SyntaxMETHOD Attributes : SXmlAttributeVAR_INPUT  n : SXmlNode;  it : REFERENCE TO SXmlIterator;END_VAR

Beispielaufruf:xmlRet := fbXml.Attributes(xmlNode, xmlIterator);WHILE NOT fbXml.IsEnd(xmlIterator) DO  xmlMachineAttrRef := fbXml.Attribute(xmlIterator);  xmlMachineAttrText := fbXml.AttributeText(xmlMachineAttrRef);  xmlIterator := fbXml.Next(xmlIterator);END_WHILE

Page 69: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml 69Version: 1.6

3.5.32 AttributeTextDiese Methode liefert den Text eines gegebenen Attributs. Das Attribut wird der Methode alsEingangsparameter übergeben.

SyntaxMETHOD AttributeText : STRING(255)VAR_INPUT  a : SXmlAttribute;END_VAR

Beispielaufruf:sText := fbXml.AttributeText(xmlAttr);

3.5.33 BeginDiese Methode liefert einen Iterator über alle Kindelemente eines XML‑Knotens, immer beginnend ab demersten Kindelement. Der XML-Knoten wird der Methode als Eingangsparameter übergeben.

SyntaxMETHOD Begin : SXmlIteratorVAR_INPUT  n : SXmlNode;END_VAR

Beispielaufruf:xmlIterator := fbXml.Begin(xmlNode);WHILE NOT fbXml.IsEnd(xmlIterator) DO  xmlNodeRef := fbXml.Node(xmlIterator);  xmlNodeValue := fbXml.NodeText(xmlNodeRef);  xmlIterator := fbXml.Next(xmlIterator);END_WHILE

3.5.34 BeginByNameDiese Methode liefert einen Iterator über alle Kindelemente eines XML-Knotens, beginnend ab einembestimmten Element. Der XML-Knoten wird der Methode als Eingangsparameter übergeben.

SyntaxMETHOD BeginByName : SXmlIteratorVAR_INPUT  n : SXmlNode;END_VARVAR_IN_OUT CONSTANT  name : STRING;END_VAR

Beispielaufruf:xmlNode := fbXml.ChildByName(xmlDoc, 'Machines');xmlIterator := fbXml.BeginByName(xmlNode, 'NameX');WHILE NOT fbXml.IsEnd(xmlIterator) DO  xmlNodeRef := fbXml.Node(xmlIterator);  xmlNodeValue := fbXml.NodeText(xmlNodeRef);  xmlIterator := fbXml.Next(xmlIterator);END_WHILE

3.5.35 ChildDiese Methode dient zur Navigation durch den DOM und liefert eine Referenz auf das (erste) Kindelementdes aktuellen Knotens zurück. Der Startknoten wird der Methode als Eingangsparameter übergeben.

Page 70: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml70 Version: 1.6

SyntaxMETHOD ChildByName : SXmlNodeVAR_INPUT  n : SXmlNode;END_VAR

Beispielaufruf:xmlChild := fbXml.Child(xmlNode);

3.5.36 ChildByAttributeDiese Methode dient zur Navigation durch den DOM und liefert eine Referenz auf ein Kindelement im XML-Dokument zurück. Der Startknoten sowie der Name und der Wert des Attributs werden der Methode alsEingangsparameter übergeben.

SyntaxMETHOD ChildByAttribute : SXmlNodeVAR_INPUT  n : SXmlNode;END_VARVAR_IN_OUT CONSTANT  attr : STRING;  value : STRING;END_VAR

Beispielaufruf:xmlMachine1 := fbXml.ChildByAttribute(xmlMachines, 'Type', '1');

3.5.37 ChildByAttributeAndNameDiese Methode dient zur Navigation durch den DOM und liefert eine Referenz auf ein Kindelement im XML-Dokument zurück. Der Startknoten, der Name und der Wert des Attributs sowie der Name des Kindelementswerden der Methode als Eingangsparameter übergeben.

SyntaxMETHOD ChildByAttributeAndName : SXmlNodeVAR_INPUT  n : SXmlNode;END_VARVAR_IN_OUT CONSTANT  attr : STRING;  value : STRING;  child : STRING;END_VAR

Beispielaufruf:xmlMachine2 := fbXml.ChildByAttributeAndName(xmlMachines, 'Type', '2', 'Machine');

3.5.38 ChildByNameDiese Methode dient zur Navigation durch den DOM und liefert eine Referenz auf ein Kindelement im XML-Dokument zurück. Der Startknoten und der Name des zurückzuliefernden Elements werden der Methode alsEingangsparameter übergeben.

SyntaxMETHOD ChildByName : SXmlNodeVAR_INPUT  n : SXmlNode;END_VARVAR_IN_OUT CONSTANT  name : STRING;END_VAR

Page 71: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml 71Version: 1.6

Beispielaufruf:xmlMachines := fbXml.ChildByName(xmlDoc, 'Machines');

3.5.39 ChildrenDiese Methode dient zur Navigation durch den DOM und liefert einen Iterator auf mehrere gefundeneKindelemente im XML-Dokument zurück. Der Iterator kann dann zur weiteren Navigation durch diegefundenen Elemente verwendet werden. Der Startknoten und eine Referenz auf den Iterator werden derMethode als Eingangsparameter übergeben.

SyntaxMETHOD Children : SXmlNodeVAR_INPUT  n : SXmlNode;  it : REFERENCE TO SXmlIterator;END_VAR

Beispielaufruf:xmlRet := fbXml.Children(xmlNode, xmlIterator);WHILE NOT fbXml.IsEnd(xmlIterator) DO  xmlMachineNodeRef := fbXml.Node(xmlIterator);  xmlMachineNodeText := fbXml.NodeText(xmlMachineNodeRef);  xmlIterator := fbXml.Next(xmlIterator);END_WHILE

3.5.40 ChildrenByNameDiese Methode dient zur Navigation durch den DOM und liefert einen Iterator auf mehrere gefundeneKindelemente im XML-Dokument zurück. Der Iterator kann dann zur weiteren Navigation durch diegefundenen Elemente verwendet werden. Der Startknoten sowie der Name der zu suchenden Kindelementeund eine Referenz auf den Iterator werden der Methode als Eingangsparameter übergeben.

SyntaxMETHOD ChildrenByName : SXmlNodeVAR_INPUT  n : SXmlNode;  it : REFERENCE TO SXmlIterator;END_VARVAR_IN_OUT CONSTANT  name : STRING;END_VAR

Beispielaufruf:xmlMachineNode := fbXml.ChildrenByName(xmlMachines, xmlIterator, 'Machine');WHILE NOT fbXml.IsEnd(xmlIterator) DO  xmlMachineNodeRef := fbXml.Node(xmlIterator);  xmlMachineNodeText := fbXml.NodeText(xmlMachineNodeRef);  xmlIterator := fbXml.Next(xmlIterator);END_WHILE

3.5.41 CompareDiese Methode überprüft zwei Iteratoren auf Gleichheit.

SyntaxMETHOD Compare : BOOLVAR_INPUT  it1 : SXmlIterator;  it2 : SXmlIterator;END_VAR

Beispielaufruf:bResult := fbXml.Compare(xmlIt1, xmlIt2);

Page 72: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml72 Version: 1.6

3.5.42 CopyAttributeTextDiese Methode liest den Wert eines XML-Attributs aus und schreibt diesen in eine Variable vom DatentypString. Das XML-Attribut sowie die Zielvariable und die zu schreibende Länge werden der Methode alsEingangsparameter übergeben. Die tatsächliche Größe wird von der Methode zurückgeliefert.

SyntaxMETHOD CopyAttributeText : UDINTVAR_INPUT  a : SXmlAttribute;END_VARVAR_IN_OUT CONSTANT  sXml : STRING;END_VARVAR_INPUT  nXml : UDINT;END_VAR

Beispielaufruf:nLength := fbXml.CopyAttributeText(xmlAttr, sTarget, SIZEOF(sTarget));

3.5.43 CopyDocumentDiese Methode kopiert den Inhalt des DOM-Speichers in eine Variable vom Datentyp String. Die zuschreibende Länge und die Variable, in die der resultierende String geschrieben werden soll, werden derMethode als Eingangsparameter übergeben. Die tatsächlich geschriebene Länge wird von der Methodezurückgeliefert. Beachten Sie, dass die Größe der String-Variablen mindestens der Größe des XML-Dokuments im DOM entspricht.

SyntaxMETHOD CopyDocument : UDINTVAR_IN_OUT CONSTANT  sXml : STRING;END_VARVAR_INPUT  nXml : UDINT;END_VAR

Beispielaufruf:nLength := fbXml.CopyDocument(sTarget, SIZEOF(sTarget));

3.5.44 CopyNodeTextDiese Methode liest den Wert eines XML-Knotens aus und schreibt diesen in eine Variable vom DatentypString. Der XML-Knoten sowie die Zielvariable und die zu schreibende Länge werden der Methode alsEingangsparameter übergeben. Die tatsächliche Größe wird von der Methode zurückgeliefert.

SyntaxMETHOD CopyNodeText : UDINTVAR_INPUT  n : SXmlNode;END_VARVAR_IN_OUT CONSTANT  sXml : STRING;END_VARVAR_INPUT  nXml : UDINT;END_VAR

Beispielaufruf:nLength := fbXml.CopyNodeText(xmlNode, sTarget, SIZEOF(sTarget));

Page 73: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml 73Version: 1.6

3.5.45 CopyNodeXmlDiese Methode liest die XML-Struktur eines XML Knotens aus und schreibt diese in eine Variable vomDatentyp String. Der XML-Knoten sowie die Zielvariable und die zu schreibende Länge werden der Methodeals Eingangsparameter übergeben. Die tatsächliche Größe wird von der Methode zurückgeliefert.

SyntaxMETHOD CopyNodeXml : UDINTVAR_INPUT  a : SXmlNode;END_VARVAR_IN_OUT CONSTANT  sXml : STRING;END_VARVAR_INPUT  nXml : UDINT;END_VAR

Beispielaufruf:nLength := fbXml.CopyNodeXml(xmlNode, sTarget, SIZEOF(sTarget));

3.5.46 FirstNodeByPathDiese Methode navigiert anhand eines an die Methode übergebenen Pfads durch ein XML‑Dokument. DerPfad und der Startknoten werden der Methode als Eingangsparameter übergeben. Der Pfad wird mit "/" alsSeparator spezifiziert. Als Rückgabewert liefert die Methode eine Referenz auf den gefundenen XML-Knoten.

SyntaxMETHOD FirstNodeByPath : SXmlNodeVAR_INPUT  n : SXmlNode;  path : STRING;END_VAR

Beispielaufruf:xmlFoundNode := fbXml.FirstNodeByPath(xmlStartNode, 'Level1/Level2/Level3');

3.5.47 GetAttributeTextLengthDiese Methode liefert die Länge des Werts eines XML-Attributs. Das XML-Attribut wird der Methode alsEingangsparameter übergeben.

SyntaxMETHOD GetAttributeTextLength : UDINTVAR_INPUT  a : SXmlAttribute;END_VAR

Beispielaufruf:nLength := fbXml.GetAttributeTextLength(xmlAttr);

3.5.48 GetDocumentLengthDiese Methode liefert die Länge eines XML-Dokuments in Bytes.

SyntaxMETHOD GetDocumentLength : UDINT

Beispielaufruf:

Page 74: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml74 Version: 1.6

nLength := fbXml.GetDocumentLength();

3.5.49 GetDocumentNodeDiese Methode liefert den Root-Knoten eines XML-Dokuments. Dieser ist nicht gleichbedeutend mit demersten XML-Knoten im Dokument (verwenden Sie hierfür die Methode GetRootNode()). Die Methode kannauch verwendet werden, um ein leeres XML‑Dokument im DOM zu erzeugen.

SyntaxMETHOD GetDocumentNode : SXmlNode

Beispielaufruf:objRoot := fbXml.GetDocumentNode();

3.5.50 GetNodeTextLengthDiese Methode liefert die Länge des Werts eines XML-Knotens. Der XML-Knoten wird der Methode alsEingangsparameter übergeben.

SyntaxMETHOD GetNodeTextLength : UDINTVAR_INPUT  n : SXmlNode;END_VAR

Beispielaufruf:nLength := fbXml.GetNodeTextLength(xmlNode);

3.5.51 GetNodeXmlLengthDiese Methode liefert die Länge der XML-Struktur eines XML-Knotens. Der XML-Knoten wird der Methodeals Eingangsparameter übergeben.

SyntaxMETHOD GetNodeXmlLength : UDINTVAR_INPUT  n : SXmlNode;END_VAR

Beispielaufruf:nLength := fbXml.GetNodeXmlLength(xmlNode);

3.5.52 GetRootNodeDiese Methode liefert eine Referenz zum ersten XML-Knoten im XML-Dokument.

SyntaxMETHOD GetRootNode : SXmlNode

Beispielaufruf:xmlRootNode := fbXml.GetRootNode();

Page 75: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml 75Version: 1.6

3.5.53 InsertAttributeCopyDiese Methode fügt ein Attribut zu einem XML-Knoten hinzu und kopiert hierbei den Name und den Werteines existierenden Attributs. Das Attribut kann hierbei an einer bestimmten Stelle platziert werden. DerXML-Knoten, die Position und eine Referenz auf das existierende Attribut-Objekt werden der Methode alsEingangsparameter übergeben. Die Methode liefert eine Referenz auf das neu hinzugefügte Attribut.

SyntaxMETHOD InsertAttributeCopy : SXmlAttributeVAR_INPUT  n : SXmlNode;  before : SXmlAttribute;  copy : SXmlAttribute;END_VAR

Beispielaufruf:xmlNewAttr := fbXml.InsertAttributeCopy(xmlNode, xmlBeforeAttr, xmlCopyAttr);

3.5.54 InsertAttributeDiese Methode fügt ein Attribut zu einem XML-Knoten hinzu. Das Attribut kann hierbei an einer bestimmtenStelle platziert werden. Der XML-Knoten, die Position und der Name des neuen Attributs werden derMethode als Eingangsparameter übergeben. Die Methode liefert eine Referenz auf das neu hinzugefügteAttribut. Anschließend kann z. B. über die Methode SetAttribute() ein Wert für das Attribut eingetragenwerden.

SyntaxMETHOD InsertAttribute : SXmlAttributeVAR_INPUT  n : SXmlNode;  before : SXmlAttribute;END_VARVAR_IN_OUT CONSTANT  name : STRING;END_VAR

Beispielaufruf:xmlNewAttr := fbXml.InsertAttribute(xmlNode, xmlBeforeAttr, 'SomeName');

3.5.55 InsertChildDiese Methode fügt einen Knoten zu einem existierenden XML-Knoten hinzu. Der neue Knoten kann hierbeian einer bestimmten Stelle platziert werden. Der existierende XML‑Knoten sowie die Position und der Namedes neuen Knotens werden der Methode als Eingangsparameter übergeben. Die Methode liefert eineReferenz auf den neu hinzugefügten Knoten. Anschließend kann z. B. über die Methode SetChild() ein Wertfür den Knoten eingetragen werden.

SyntaxMETHOD InsertChild : SXmlNodeVAR_INPUT  n : SXmlNode;  before : SXmlNode;END_VARVAR_IN_OUT CONSTANT  name : STRING;END_VAR

Beispielaufruf:xmlNewNode := fbXml.InsertChild(xmlNode, xmlBeforeNode, 'SomeName');

Page 76: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml76 Version: 1.6

3.5.56 InsertCopyDiese Methode fügt einen neuen Knoten zu einem existierenden XML Knoten hinzu und kopiert hierbei einenexistierenden Knoten. Der neue Knoten kann hierbei an einer beliebigen Stelle im existierenden Knotenplatziert werden. Der XML-Knoten, die Position und eine Referenz auf das existierende Knoten-Objektwerden der Methode als Eingangsparameter übergeben. Die Methode liefert eine Referenz auf den neuhinzugefügten Knoten.

SyntaxMETHOD InsertCopy : SXmlNodeVAR_INPUT  n : SXmlNode;  before : SXmlNode;  copy : SXmlNode;END_VAR

Beispielaufruf:xmlNewNode := fbXml.InsertCopy(xmlNode, xmlBeforeNode, xmlCopyNode);

3.5.57 IsEndDiese Methode überprüft, ob sich ein gegebener XML-Iterator am Ende der zu durchlaufenden Iterationbefindet.

SyntaxMETHOD IsEnd : BOOLVAR_INPUT  it : SXmlIterator;END_VAR

Beispielaufruf:xmlIterator := fbXml.Begin(xmlNode);WHILE NOT fbXml.IsEnd(xmlIterator) DO  xmlNodeRef := fbXml.Node(xmlIterator);  xmlNodeValue := fbXml.NodeText(xmlNodeRef);  xmlIterator := fbXml.Next(xmlIterator);END_WHILE

3.5.58 LoadDocumentFromFileDiese Methode lädt ein XML-Dokument aus einer Datei. Der absolute Pfad zu der Datei wird der Methodeals Eingangsparameter übergeben.

SyntaxMETHOD LoadDocumentFromFile : BOOLVAR_IN_OUT CONSTANT  sFile : STRING;END_VARVAR_INPUT  bExec : REFERENCE TO BOOL;END_VAR

Beispielaufruf:bLoaded := fbXml.LoadDocumentFromFile('C:\Test.xml', bLoad);

3.5.59 NewDocumentDiese Methode erzeugt ein leeres XML-Dokument im DOM-Speicher.

SyntaxMETHOD NewDocument : BOOL

Page 77: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml 77Version: 1.6

Beispielaufruf:fbXml.NewDocument();

3.5.60 NextDiese Methode setzt einen XML-Iterator auf das nächste zu durchlaufende Objekt.

SyntaxMETHOD Next : SXmlIteratorVAR_INPUT  it : SXmlIterator;END_VAR

Beispielaufruf:xmlIterator := fbXml.Begin(xmlNode);WHILE NOT fbXml.IsEnd(xmlIterator) DO  xmlNodeRef := fbXml.Node(xmlIterator);  xmlNodeValue := fbXml.NodeText(xmlNodeRef);  xmlIterator := fbXml.Next(xmlIterator);END_WHILE

3.5.61 NextAttributeDiese Methode liefert zu einem gegebenen XML-Attribut das nächste Attribut.

SyntaxMETHOD NextAttribute : SXmlAttributeVAR_INPUT  a : SXmlAttribute;END_VAR

Beispielaufruf:xmlNextAttr := fbXml.NextAttribute(xmlAttr);

3.5.62 NextByNameDiese Methode setzt einen XML-Iterator auf das nächste zu durchlaufende Objekt, das anhand seinesNamens identifiziert wird.

SyntaxMETHOD NextByName : SXmlIteratorVAR_INPUT  it : SXmlIterator;END_VARVAR_IN_OUT CONSTANT  name : STRING;END_VAR

Beispielaufruf:xmlIterator := fbXml.Begin(xmlNode);WHILE NOT fbXml.IsEnd(xmlIterator) DO  xmlNodeRef := fbXml.Node(xmlIterator);  xmlNodeValue := fbXml.NodeText(xmlNodeRef);  xmlIterator := fbXml.NextByName(xmlIterator, 'SomeName');END_WHILE

3.5.63 NextSiblingDiese Methode liefert zu einem gegebenen XML-Knoten den nächsten direkten Knoten auf derselben XML-Ebene.

Page 78: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml78 Version: 1.6

SyntaxMETHOD NextSibling : SXmlNodeVAR_INPUT  n : SXmlNode;END_VAR

Beispielaufruf:xmlSibling := fbXml.NextSibling(xmlNode);

3.5.64 NextSiblingByNameDiese Methode liefert zu einem gegebenen XML-Knoten den nächsten direkten Knoten mit einembestimmten Namen auf derselben XML-Ebene.

SyntaxMETHOD NextSiblingByName : SXmlNodeVAR_INPUT  n : SXmlNode;END_VARVAR_IN_OUT CONSTANT  name : STRING;END_VAR

Beispielaufruf:xmlSibling := fbXml.NextSibling(xmlNode, 'SomeName');

3.5.65 NodeDiese Methode wird in Zusammenhang mit einem Iterator verwendet, um durch den DOM zu navigieren. DerIterator wird der Methode als Eingangsparameter übergeben. Als Rückgabewert liefert die Methode dannden aktuellen XML-Knoten.

SyntaxMETHOD Node : SXmlNodeVAR_INPUT  it : SXmlIterator;END_VAR

Beispielaufruf:xmlMachineNode := fbXml.ChildrenByName(xmlMachines, xmlIterator, 'Machine');WHILE NOT fbXml.IsEnd(xmlIterator) DO  xmlMachineNode := fbXml.Node(xmlIterator);  xmlMachineNodeValue := fbXml.NodeText(xmlMachineNode);  xmlIterator := fbXml.Next(xmlIterator);END_WHILE

3.5.66 NodeAsBoolDiese Methode liefert den Text eines XML-Knotens als Datentyp Boolean. Der XML‑Knoten wird derMethode als Eingangsparameter übergeben.

SyntaxMETHOD NodeAsBool : BOOLVAR_INPUT  n : SXmlNode;END_VAR

Beispielaufruf:bXmlNode:= fbXml.NodeAsBool(xmlMachine1);

Page 79: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml 79Version: 1.6

3.5.67 NodeAsDoubleDiese Methode liefert den Text eines XML-Knotens als Datentyp Double. Der XML‑Knoten wird der Methodeals Eingangsparameter übergeben.

SyntaxMETHOD NodeAsDouble : LREALVAR_INPUT  n : SXmlNode;END_VAR

Beispielaufruf:lrXmlNode:= fbXml.NodeAsDouble(xmlMachine1);

3.5.68 NodeAsFloatDiese Methode liefert den Text eines XML-Knotens als Datentyp Float. Der XML-Knoten wird der Methodeals Eingangsparameter übergeben.

SyntaxMETHOD NodeAsFloat : REALVAR_INPUT  n : SXmlNode;END_VAR

Beispielaufruf:rXmlNode:= fbXml.NodeAsFloat(xmlMachine1);

3.5.69 NodeAsIntDiese Methode liefert den Text eines XML-Knotens als Datentyp Integer. Der XML‑Knoten wird der Methodeals Eingangsparameter übergeben.

SyntaxMETHOD NodeAsInt : DINTVAR_INPUT  n : SXmlNode;END_VAR

Beispielaufruf:nXmlNode:= fbXml.NodeAsInt(xmlMachine1);

3.5.70 NodeAsLintDiese Methode liefert den Text eines XML-Knotens als Datentyp Integer64. Der XML-Knoten wird derMethode als Eingangsparameter übergeben.

SyntaxMETHOD NodeAsLint : LINTVAR_INPUT  n : SXmlNode;END_VAR

Beispielaufruf:nXmlNode:= fbXml.NodeAsLint(xmlMachine1);

Page 80: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml80 Version: 1.6

3.5.71 NodeAsUintDiese Methode liefert den Text eines XML-Knotens als Datentyp Unsigned Integer. Der XML‑Knoten wirdder Methode als Eingangsparameter übergeben.

SyntaxMETHOD NodeAsUint : UDINTVAR_INPUT  n : SXmlNode;END_VAR

Beispielaufruf:nXmlNode:= fbXml.NodeAsUint(xmlMachine1);

3.5.72 NodeAsUlintDiese Methode liefert den Text eines XML-Knotens als Datentyp Unsigned Integer64. Der XML-Knoten wirdder Methode als Eingangsparameter übergeben.

SyntaxMETHOD NodeAsUlint : ULINTVAR_INPUT  n : SXmlNode;END_VAR

Beispielaufruf:nXmlNode:= fbXml.NodeAsUlint(xmlMachine1);

3.5.73 NodeNameDiese Methode gibt den Namen eines XML-Knotens zurück. Eine Referenz zum XML-Knoten wird derMethode als Eingangsparameter übergeben.

SyntaxMETHOD NodeName : STRINGVAR_INPUT  n : SXmlNode;END_VAR

Beispielaufruf:sNodeName := fbXml.NodeName(xmlMachine1);

3.5.74 NodeTextDiese Methode liefert den Text eines XML-Knotens. Der XML-Knoten wird der Methode alsEingangsparameter übergeben.

SyntaxMETHOD NodeText : STRING(255)VAR_INPUT  n : SXmlNode;END_VAR

Beispielaufruf:sMachine1Name := fbXml.NodeText(xmlMachine1);

Page 81: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml 81Version: 1.6

3.5.75 ParseDocumentDiese Methode lädt ein XML-Dokument zur weiteren Verarbeitung in den DOM-Speicher. Das XML-Dokument liegt hierbei als String vor und wird der Methode als Eingangsparameter übergeben. EineReferenz zum XML-Dokument im DOM wird an den Aufrufer zurückgegeben.

SyntaxMETHOD ParseDocument : SXmlNodeVAR_IN_OUT CONSTANT  sXml : STRING;END_VAR

Beispielaufruf:xmlDoc := fbXml.ParseDocument(sXmlToParse);

3.5.76 RemoveChildDiese Methode entfernt einen XML-Kindknoten von einem gegebenen XML-Knoten. Die beiden XML-Knotenwerden der Methode als Eingangsparameter übergeben. Die Methode gibt TRUE zurück, wenn der Vorgangerfolgreich war und der XML-Knoten entfernt wurde.

SyntaxMETHOD RemoveChild : BOOLVAR_INPUT  n : SXmlNode;  child : SXmlNode;END_VAR

Beispielaufruf:bRemoved := fbXml.RemoveChild(xmlParent, xmlChild);

3.5.77 RemoveChildByNameDiese Methode entfernt einen XML-Kindknoten von einem gegebenen XML-Knoten. Der zu entfernendeKnoten wird über dessen Namen angesprochen. Gibt es mehr als einen Kindknoten, so wird der letzteentfernt. Die Methode gibt TRUE zurück, wenn der Vorgang erfolgreich war und der XML-Knoten entferntwurde.

SyntaxMETHOD RemoveChildByName : BOOLVAR_INPUT  n : SXmlNode;END_VARVAR_IN_OUT CONSTANT  name : STRING;END_VAR

Beispielaufruf:bRemoved := fbXml.RemoveChildByName(xmlParent, 'SomeName');

3.5.78 SaveDocumentToFileDiese Methode speichert das aktuelle XML-Dokument in einer Datei.

SyntaxMETHOD SaveDocumentToFile : BOOLVAR_IN_OUT CONSTANT  sFile : STRING;END_VAR

Page 82: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml82 Version: 1.6

VAR_INPUT  bExec : REFERENCE TO BOOL;END_VAR

Beispielaufruf:bSaved = fbXml.SaveDocumentToFile('C:\Test.xml', bSave);

3.5.79 SetAttributeDiese Methode setzt den Wert eines Attributs. Der Wert ist hierbei vom Datentyp String.

SyntaxMETHOD SetAttribute : SXmlAttributeVAR_INPUT  a : SXmlAttribute;END_VARVAR_IN_OUT CONSTANT  value : STRING;END_VAR

Beispielaufruf:xmlAttr := fbXml.SetAttribute(xmlExistingAttr, 'Test');

3.5.80 SetAttributeAsBoolDiese Methode setzt den Wert eines Attributs. Der Wert ist hierbei vom Datentyp Boolean.

SyntaxMETHOD SetAttributeAsBool : SXmlAttributeVAR_INPUT  a : SXmlAttribute;  value : BOOL;END_VAR

Beispielaufruf:xmlAttr := fbXml.SetAttributeAsBool(xmlExistingAttr, TRUE);

3.5.81 SetAttributeAsDoubleDiese Methode setzt den Wert eines Attributs. Der Wert ist hierbei vom Datentyp Double.

SyntaxMETHOD SetAttributeAsDouble : SXmlAttributeVAR_INPUT  a : SXmlAttribute;  value : LREAL;END_VAR

Beispielaufruf:xmlAttr := fbXml.SetAttributeAsDouble(xmlExistingAttr, 42.42);

3.5.82 SetAttributeAsFloatDiese Methode setzt den Wert eines Attributs. Der Wert ist hierbei vom Datentyp Float.

Page 83: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml 83Version: 1.6

SyntaxMETHOD SetAttributeAsFloat : SXmlAttributeVAR_INPUT  a : SXmlAttribute;  value : REAL;END_VAR

Beispielaufruf:xmlAttr := fbXml.SetAttributeAsFloat(xmlExistingAttr, 42.42);

3.5.83 SetAttributeAsIntDiese Methode setzt den Wert eines Attributs. Der Wert ist hierbei vom Datentyp Integer.

SyntaxMETHOD SetAttributeAsInt : SXmlAttributeVAR_INPUT  a : SXmlAttribute;  value : DINT;END_VAR

Beispielaufruf:xmlAttr := fbXml.SetAttributeAsInt(xmlExistingAttr, 42);

3.5.84 SetAttributeAsLintDiese Methode setzt den Wert eines Attributs. Der Wert ist hierbei vom Datentyp Integer64.

SyntaxMETHOD SetAttributeAsLint : SXmlAttributeVAR_INPUT  a : SXmlAttribute;  value : LINT;END_VAR

Beispielaufruf:xmlAttr := fbXml.SetAttributeAsLint(xmlExistingAttr, 42);

3.5.85 SetAttributeAsUintDiese Methode setzt den Wert eines Attributs. Der Wert ist hierbei vom Datentyp Unsigned Integer.

SyntaxMETHOD SetAttributeAsUint : SXmlAttributeVAR_INPUT  a : SXmlAttribute;  value : UDINT;END_VAR

Beispielaufruf:xmlAttr := fbXml.SetAttributeAsUint(xmlExistingAttr, 42);

3.5.86 SetAttributeAsUlintDiese Methode setzt den Wert eines Attributs. Der Wert ist hierbei vom Datentyp Unsigned Integer64.

Page 84: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml84 Version: 1.6

SyntaxMETHOD SetAttributeAsUlint : SXmlAttributeVAR_INPUT  a : SXmlAttribute;  value : ULINT;END_VAR

Beispielaufruf:xmlAttr := fbXml.SetAttributeAsUlint(xmlExistingAttr, 42);

3.5.87 SetChildDiese Methode setzt den Wert eines XML-Knotens. Der Wert wird der Methode als Eingangsparameter vomDatentyp String übergeben. Der Eingangsparameter cdata gibt an, ob der Wert des Knotens in einemCDATA‑Block gekapselt werden soll, sodass bestimmte Sonderzeichen wie z. B. "<" und ">" als Werteerlaubt sind.

SyntaxMETHOD SetChild : SXmlNodeVAR_INPUT  n : SXmlNode;END_VARVAR_IN_OUT CONSTANT  value : STRING;END_VARVAR_INPUT  cdata : BOOL;END_VAR

Beispielaufruf:xmlNode := fbXml.SetChild(xmlExistingNode, 'SomeText', FALSE);

3.5.88 SetChildAsBoolDiese Methode setzt den Wert eines XML-Knotens. Der Wert wird der Methode als Eingangsparameter vomDatentyp Boolean übergeben.

SyntaxMETHOD SetChildAsBool : SXmlNodeVAR_INPUT  n : SXmlNode;  value : BOOL;END_VAR

Beispielaufruf:xmlNode := fbXml.SetChild(xmlExistingNode, TRUE);

3.5.89 SetChildAsDoubleDiese Methode setzt den Wert eines XML-Knotens. Der Wert wird der Methode als Eingangsparameter vomDatentyp Double übergeben.

SyntaxMETHOD SetChildAsDouble : SXmlNodeVAR_INPUT  n : SXmlNode;  value : LREAL;END_VAR

Beispielaufruf:xmlNode := fbXml.SetChildAsDouble(xmlExistingNode, 42.42);

Page 85: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml 85Version: 1.6

3.5.90 SetChildAsFloatDiese Methode setzt den Wert eines XML-Knotens. Der Wert wird der Methode als Eingangsparameter vomDatentyp Float übergeben.

SyntaxMETHOD SetChildAsFloat : SXmlNodeVAR_INPUT  n : SXmlNode;  value : REAL;END_VAR

Beispielaufruf:xmlNode := fbXml.SetChildAsFloat(xmlExistingNode, 42.42);

3.5.91 SetChildAsIntDiese Methode setzt den Wert eines XML-Knotens. Der Wert wird der Methode als Eingangsparameter vomDatentyp Integer übergeben.

SyntaxMETHOD SetChildAsInt : SXmlNodeVAR_INPUT  n : SXmlNode;  value : DINT;END_VAR

Beispielaufruf:xmlNode := fbXml.SetChildAsInt(xmlExistingNode, 42);

3.5.92 SetChildAsLintDiese Methode setzt den Wert eines XML-Knotens. Der Wert wird der Methode als Eingangsparameter vomDatentyp Integer64 übergeben.

SyntaxMETHOD SetChildAsLint : SXmlNodeVAR_INPUT  n : SXmlNode;  value : LINT;END_VAR

Beispielaufruf:xmlNode := fbXml.SetChildAsLint(xmlExistingNode, 42);

3.5.93 SetChildAsUintDiese Methode setzt den Wert eines XML-Knotens. Der Wert wird der Methode als Eingangsparameter vomDatentyp Unsigned Integer übergeben.

SyntaxMETHOD SetChildAsUint : SXmlNodeVAR_INPUT  n : SXmlNode;  value : UDINT;END_VAR

Beispielaufruf:xmlNode := fbXml.SetChildAsUint(xmlExistingNode, 42);

Page 86: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml86 Version: 1.6

3.5.94 SetChildAsUlintDiese Methode setzt den Wert eines XML-Knotens. Der Wert wird der Methode als Eingangsparameter vomDatentyp Unsigned Integer64 übergeben.

SyntaxMETHOD SetChildAsUlint : SXmlNodeVAR_INPUT  n : SXmlNode;  value : ULINT;END_VAR

Beispielaufruf:xmlNode := fbXml.SetChildAsUlint(xmlExistingNode, 42);

3.6 FB_JwtEncodeDer Funktionsbaustein ermöglicht die Erzeugung und Signierung eines JSON Web Token (JWT).

Syntax

Definition:FUNCTION_BLOCK FB_JwtEncodeVAR_INPUT  bExecute       : BOOL;   sHeaderAlg     : STRING(46);  sPayload       : STRING(1023);  sKeyFilePath   : STRING(511);  tTimeout       : TIME;  pKey           : PVOID;  nKeySize       : UDINT;  nJwtSize       : UDINT;END_VARVAR_IN_OUT CONSTANT  sJwt           : STRING;  END_VARVAR_OUTPUT  bBusy          : BOOL;  bError         : BOOL;  hrErrorCode    : HRESULT;  initStatus     : HRESULT;END_VAR

Eingänge

Name Typ BeschreibungbExecute BOOL Steigende Flanke aktiviert die Abarbeitung des

Funktionsbausteins.sHeaderAlg STRING(46) Der zu verwendende Algorithmus für den JWT Header,

z. B. RS256.sPayload STRING(1023 Der zu verwendende Payload des JWT.sKeyFilePath STRING(511) Pfad zum Private Key, welcher für die Signatur des

JWT verwendet werden soll.tTimeout TIME ADS Timeout, welcher intern für den Dateizugriff auf

den Private Key verwendet wird.pKey PVOID Buffer für den auszulesenden Private Key.nKeySize UDINT Maximalgröße des Buffers.sJwt STRING Enthält nach Abarbeitung des Funktionsbausteins das

fertig kodierte und signierte JWT.nJwtSize UDINT Größe des erzeugten JWT inklusive Nullterminierung.

Page 87: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Funktionsbausteine

PLC Lib: Tc3_JsonXml 87Version: 1.6

Ausgänge

Name Typ BeschreibungbBusy BOOL Ist TRUE, solange die Abarbeitung des Funktionsbausteins

noch nicht beendet ist.bError BOOL Wird TRUE, sobald eine Fehlersituation eintritt.hrErrorCode HRESULT Liefert bei einem gesetzten bError-Ausgang einen

Fehlercode. Eine Erläuterung zu den möglichenFehlercodes befindet sich im Anhang.

Page 88: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Schnittstellen

PLC Lib: Tc3_JsonXml88 Version: 1.6

4 Schnittstellen

4.1 ITcJsonSaxHandler

4.1.1 OnBoolDiese Callback-Methode wird getriggert, wenn an der Position des SAX Readers ein Wert vom DatentypBOOL gefunden wurde. Der Eingangsparameter value enthält hierbei den gefundenen Wert. Durch Setzendes Rückgabewerts HRESULT auf S_FALSE wird der SAX-Parsing-Vorgang abgebrochen.

SyntaxMETHOD OnBool : HRESULTVAR_INPUT    value : BOOL;END_VAR

4.1.2 OnDintDiese Callback-Methode wird getriggert, wenn an der Position des SAX Readers ein Wert vom DatentypDINT gefunden wurde. Der Eingangsparameter value enthält hierbei den gefundenen Wert. Durch Setzendes Rückgabewerts HRESULT auf S_FALSE wird der SAX-Parsing-Vorgang abgebrochen.

SyntaxMETHOD OnDint : HRESULTVAR_INPUT    value : DINT;END_VAR

4.1.3 OnEndArrayDiese Callback-Methode wird getriggert, wenn an der Position des SAX Readers eine eckige schließendeKlammer gefunden wurde, was dem JSON-Synonym für ein endendes Array entspricht. Durch Setzen desRückgabewerts HRESULT auf S_FALSE wird der SAX-Parsing-Vorgang abgebrochen.

SyntaxMETHOD OnEndArray : HRESULT

4.1.4 OnEndObjectDiese Callback-Methode wird getriggert, wenn an der Position des SAX Readers eine geschweifteschließende Klammer gefunden wurde, was dem JSON-Synonym für ein endendes Objekt entspricht. DurchSetzen des Rückgabewerts HRESULT auf S_FALSE wird der SAX-Parsing-Vorgang abgebrochen.

SyntaxMETHOD OnEndObject : HRESULT

4.1.5 OnKeyDiese Callback-Methode wird getriggert, wenn an der Position des SAX Readers ein Property gefundenwurde. Der Property-Name liegt hierbei am Eingangs-/Ausgangsparameter key an und dessen Länge amEingangsparameter len. Durch Setzen des Rückgabewerts HRESULT auf S_FALSE wird der SAX-Parsing-Vorgang abgebrochen.

Page 89: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Schnittstellen

PLC Lib: Tc3_JsonXml 89Version: 1.6

SyntaxMETHOD OnKey : HRESULTVAR_IN_OUT CONSTANT    key : STRING;END_VARVAR_INPUT    len : UDINT;END_VAR

4.1.6 OnLintDiese Callback-Methode wird getriggert, wenn an der Position des SAX Readers ein Wert vom DatentypLINT gefunden wurde. Der Eingangsparameter value enthält hierbei den gefundenen Wert. Durch Setzendes Rückgabewerts HRESULT auf S_FALSE wird der SAX-Parsing-Vorgang abgebrochen.

SyntaxMETHOD OnLint : HRESULTVAR_INPUT    value : LINT;END_VAR

4.1.7 OnLrealDiese Callback-Methode wird getriggert, wenn an der Position des SAX Readers ein Wert vom DatentypLREAL gefunden wurde. Der Eingangsparameter value enthält hierbei den gefundenen Wert. Durch Setzendes Rückgabewerts HRESULT auf S_FALSE wird der SAX-Parsing-Vorgang abgebrochen.

SyntaxMETHOD OnLreal : HRESULTVAR_INPUT    value : LREAL;END_VAR

4.1.8 OnNullDiese Callback-Methode wird getriggert, wenn an der Position des SAX Readers ein NULL-Wert gefundenwurde. Durch Setzen des Rückgabewerts HRESULT auf S_FALSE wird der SAX-Parsing-Vorgangabgebrochen.

SyntaxMETHOD OnNull : HRESULT

4.1.9 OnStartArrayDiese Callback-Methode wird getriggert, wenn an der Position des SAX Readers eine eckige öffnendeKlammer gefunden wurde, was dem JSON-Synonym für ein beginnendes Array entspricht. Durch Setzendes Rückgabewerts HRESULT auf S_FALSE wird der SAX-Parsing-Vorgang abgebrochen.

SyntaxMETHOD OnStartArray : HRESULT

4.1.10 OnStartObjectDiese Callback-Methode wird getriggert, wenn an der Position des SAX Readers eine geschweifte öffnendeKlammer gefunden wurde, was dem JSON-Synonym für ein beginnendes Objekt entspricht. Durch Setzendes Rückgabewerts HRESULT auf S_FALSE wird der SAX-Parsing-Vorgang abgebrochen.

Page 90: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Schnittstellen

PLC Lib: Tc3_JsonXml90 Version: 1.6

SyntaxMETHOD OnStartObject : HRESULT

4.1.11 OnStringDiese Callback-Methode wird getriggert, wenn an der Position des SAX Readers ein Wert vom DatentypSTRING gefunden wurde. Der In/Out-Parameter value enthält hierbei den gefundenen Wert. Durch Setzendes Rückgabewerts HRESULT auf S_FALSE wird der SAX-Parsing-Vorgang abgebrochen.

SyntaxMETHOD OnString : HRESULTVAR_IN_OUT CONSTANT    value : STRING;END_VARVAR_INPUT    len : UDINT;END_VAR

4.1.12 OnUdintDiese Callback-Methode wird getriggert, wenn an der Position des SAX Readers ein Wert vom DatentypUDINT gefunden wurde. Der Eingangsparameter value enthält hierbei den gefundenen Wert. Durch Setzendes Rückgabewerts HRESULT auf S_FALSE wird der SAX-Parsing-Vorgang abgebrochen.

SyntaxMETHOD OnUdint : HRESULTVAR_INPUT    value : UDINT;END_VAR

4.1.13 OnUlintDiese Callback-Methode wird getriggert, wenn an der Position des SAX Readers ein Wert vom DatentypULINT gefunden wurde. Der Eingangsparameter value enthält hierbei den gefundenen Wert. Durch Setzendes Rückgabewerts HRESULT auf S_FALSE wird der SAX-Parsing-Vorgang abgebrochen.

SyntaxMETHOD OnUlint : HRESULTVAR_INPUT    value : ULINT;END_VAR

4.2 ITcJsonSaxValues

4.2.1 OnBoolValueDiese Callback-Methode wird getriggert, wenn an der Position des SAX Readers ein Wert vom DatentypBOOL gefunden wurde. Der Eingangsparameter value enthält hierbei den gefundenen Wert. Durch Setzendes Rückgabewerts HRESULT auf S_FALSE wird der SAX-Parsing-Vorgang abgebrochen.

SyntaxMETHOD OnBoolValue : HRESULTVAR_INPUT    level : UDINT;    infos : POINTER TO TcJsonLevelInfo;    value : BOOL;END_VAR

Page 91: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Schnittstellen

PLC Lib: Tc3_JsonXml 91Version: 1.6

4.2.2 OnDintValueDiese Callback-Methode wird getriggert, wenn an der Position des SAX Readers ein Wert vom DatentypDINT gefunden wurde. Der Eingangsparameter value enthält hierbei den gefundenen Wert. Durch Setzendes Rückgabewerts HRESULT auf S_FALSE wird der SAX-Parsing-Vorgang abgebrochen.

SyntaxMETHOD OnDintValue : HRESULTVAR_INPUT    level : UDINT;    infos : POINTER TO TcJsonLevelInfo;    value : DINT;END_VAR

4.2.3 OnLintValueDiese Callback-Methode wird getriggert, wenn an der Position des SAX Readers ein Wert vom DatentypLINT gefunden wurde. Der Eingangsparameter value enthält hierbei den gefundenen Wert. Durch Setzendes Rückgabewerts HRESULT auf S_FALSE wird der SAX-Parsing-Vorgang abgebrochen.

SyntaxMETHOD OnLintValue : HRESULTVAR_INPUT    level : UDINT;    infos : POINTER TO TcJsonLevelInfo;    value : LINT;END_VAR

4.2.4 OnLrealValueDiese Callback-Methode wird getriggert, wenn an der Position des SAX Readers ein Wert vom DatentypLREAL gefunden wurde. Der Eingangsparameter value enthält hierbei den gefundenen Wert. Durch Setzendes Rückgabewerts HRESULT auf S_FALSE wird der SAX-Parsing-Vorgang abgebrochen.

SyntaxMETHOD OnLrealValue : HRESULTVAR_INPUT    level : UDINT;    infos : POINTER TO TcJsonLevelInfo;    value : LREAL;END_VAR

4.2.5 OnNullValueDiese Callback-Methode wird getriggert, wenn an der Position des SAX Readers ein NULL-Wert gefundenwurde. Durch Setzen des Rückgabewerts HRESULT auf S_FALSE wird der SAX-Parsing-Vorgangabgebrochen.

SyntaxMETHOD OnNull : HRESULTVAR_INPUT    level : UDINT;    infos : POINTER TO TcJsonLevelInfo;END_VAR

Page 92: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Schnittstellen

PLC Lib: Tc3_JsonXml92 Version: 1.6

4.2.6 OnStringValueDiese Callback-Methode wird getriggert, wenn an der Position des SAX Readers ein Wert vom DatentypSTRING gefunden wurde. Der Eingangs-/Ausgangsparameter value enthält hierbei den gefundenen Wert.Durch Setzen des Rückgabewerts HRESULT auf S_FALSE wird der SAX-Parsing-Vorgang abgebrochen.

SyntaxMETHOD OnStringValue : HRESULTVAR_IN_OUT CONSTANT    value : STRING;END_VARVAR_INPUT    len : UDINT;    level : UDINT;    infos : POINTER TO TcJsonLevelInfo;END_VAR

4.2.7 OnUdintValueDiese Callback-Methode wird getriggert, wenn an der Position des SAX Readers ein Wert vom DatentypUDINT gefunden wurde. Der Eingangsparameter value enthält hierbei den gefundenen Wert. Durch Setzendes Rückgabewerts HRESULT auf S_FALSE wird der SAX-Parsing-Vorgang abgebrochen.

SyntaxMETHOD OnUdintValue : HRESULTVAR_INPUT    level : UDINT;    infos : POINTER TO TcJsonLevelInfo;    value : UDINT;END_VAR

4.2.8 OnUlintValueDiese Callback-Methode wird getriggert, wenn an der Position des SAX Readers ein Wert vom DatentypULINT gefunden wurde. Der Eingangsparameter value enthält hierbei den gefundenen Wert. Durch Setzendes Rückgabewerts HRESULT auf S_FALSE wird der SAX-Parsing-Vorgang abgebrochen.

SyntaxMETHOD OnUlintValue : HRESULTVAR_INPUT    level : UDINT;    infos : POINTER TO TcJsonLevelInfo;    value : ULINT;END_VAR

Page 93: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Beispiele

PLC Lib: Tc3_JsonXml 93Version: 1.6

5 Beispiele

5.1 Tc3JsonXmlSampleJsonDataTypeBeispiel zum automatischen Konvertieren von Strukturen in eine JSON-Nachricht

Dieses Beispiel veranschaulicht, wie eine Datenstruktur in eine JSON-Nachricht (und umgekehrt) konvertiertwerden kann. Bei der Konvertierung wird der Aufbau einer Struktur eins-zu-eins in ein entsprechendesJSON-Äquivalent überführt. Über SPS-Attribute an den Member-Variablen der Struktur können zusätzlichMetadaten angelegt werden.

Download: https://infosys.beckhoff.com/content/1031/TcPlcLib_Tc3_JsonXml/Resources/zip/3664376331.zip

Aufbau der zu konvertierenden DatenstrukturTYPE ST_Values :STRUCT

  {attribute 'Unit' := 'm/s'}  {attribute 'DisplayName' := 'Speed'}  Sensor1 : REAL;

  {attribute 'Unit' := 'V'}  {attribute 'DisplayName' := 'Voltage'}  Sensor2 : DINT;

  {attribute 'Unit' := 'A'}  {attribute 'DisplayName' := 'Current'}  Sensor3 : DINT;

END_STRUCTEND_TYPE

DeklarationsbereichPROGRAM MAINVAR  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 zumGenerieren der JSON-Nachricht gezeigt. Bei einer JSON-Nachricht mit nicht mehr als 255 Zeichen kann dieMethode GetDocument() verwendet werden. Bei größeren JSON-Nachrichten muss hingegen die MethodeCopyDocument() 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,    "Sensor3": 0  },  "MetaData": {

Page 94: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Beispiele

PLC Lib: Tc3_JsonXml94 Version: 1.6

    "Sensor1": {      "Unit": "m/s",      "DisplayName": "Speed"    },    "Sensor2": {      "Unit": "V",      "DisplayName": "Voltage"    },    "Sensor3": {      "Unit": "A",      "DisplayName": "Current"    }  }}

Alternative

Als Alternative kann auch die Methode AddJsonValueFromSymbol() verwendet werden, um aus einerDatenstruktur direkt ein JSON-Format zu erzeugen.fbJson.ResetDocument();fbJsonDataType.AddJsonValueFromSymbol(fbJson, 'ST_Values', SIZEOF(stValues), ADR(stValues));sJsonDoc := fbJson.GetDocument();fbJson.CopyDocument(sJsonDoc2, SIZEOF(sJsonDoc2));

Das resultierende JSON-Objekt sieht wie folgt aus:{  "Sensor1": 0.0,  "Sensor2": 0,  "Sensor3": 0}

Konvertierung einer JSON-Nachricht zurück in eine Datenstruktur

Die obigen Beispiele zeigen, wie auf einfache Art und Weise aus einer Datenstruktur ein JSON‑Objekterzeugt werden kann. Für den umgekehrten Weg, also das Extrahieren von Werten aus einem(empfangenen) JSON-Objekt zurück in eine Datenstruktur, gibt es ebenfalls eine entsprechende Methode inder Tc3_JsonXml-Bibliothek. Der Aufruf der Methode SetSymbolFromJson() ermöglicht diesenAnwendungsfall.fbJsonDataType.SetSymbolFromJson(someJson, 'ST_Values', SIZEOF(stValuesReceive),ADR(stValuesReceive));

Die String-Variable sJsonDoc2 enthält das JSON-Objekt, das durch den Aufruf der Methode in dieStrukturinstanz stValuesReceive überführt wird.

ZieldatenstrukturDie Zieldatenstruktur muss zum Aufbau des JSON-Dokuments passen. Ansonsten liefert SetSym-bolFromJson() FALSE zurück.

5.2 Tc3JsonXmlSampleJsonSaxReaderBeispiel zum Parsen von JSON-Dokumenten via SAX Reader

Dieses Beispiel veranschaulicht, wie eine JSON-Nachricht programmatisch durchlaufen werden kann. AlsBasis wird der Funktionsbaustein FB_JsonSaxReader verwendet.

Download: https://infosys.beckhoff.com/content/1031/TcPlcLib_Tc3_JsonXml/Resources/zip/3664750475.zip

DeklarationsbereichPROGRAM MAINVAR  fbJson     : FB_JsonSaxReader;  pJsonParse : JsonSaxHandler;  sJsonDoc   : STRING(255) := '{"Values":{"Timestamp":"2017-04-04T12:42:42","Sensor1":42.42,"Sensor2":42}}';END_VAR

Page 95: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Beispiele

PLC Lib: Tc3_JsonXml 95Version: 1.6

Implementierungsbereich

Durch den Aufruf der Methode Parse(), die Übergabe der JSON-Nachricht als STRING und den Interface-Pointer auf eine Funktionsbaustein-Instanz, die das Interface ITcJsonSaxHandler implementiert, werden derSAX 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, der das InterfaceITcJsonSaxHandler implementiert, aufgerufen. Jede Callback-Methode repräsentiert ein „gefundenes“Element in der JSON-Nachricht. Zum Beispiel wird die Callback-Methode OnStartObject() aufgerufen, sobaldeine geöffnete geschweifte Klammer detektiert wurde. Laut der oben genannten Beispiel-JSON-Nachrichtwerden also die folgenden Callback-Methoden in dieser Reihenfolge durchlaufen:

1. OnStartObject(), aufgrund der ersten geöffneten geschweiften Klammer2. OnKey(), aufgrund des Properties "Values"3. OnStartObject(), aufgrund der zweiten geöffneten geschweiften Klammer4. 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 Klammer11. OnEndObject(), aufgrund der zweiten geschlossenen geschweiften Klammer

Innerhalb der Callback-Methoden wird der aktuelle Zustand über eine Instanz des Enums E_JsonStatesdefiniert und gespeichert. Hierüber kann auch ermittelt werden, ob es sich um eine gültige JSON-Nachrichthandelt. Wenn zum Beispiel die Callback-Methode OnLreal() aufgerufen wird und sich der Zustand nicht imerwarteten State 70 (JSON_STATE_ONLREAL) befindet, kann an die Methode der Rückgabewert S_FALSEzurückgegeben werden. Der SAX Reader beendet dann automatisch die weitere Verarbeitung.

5.3 Tc3JsonXmlSampleJsonSaxWriterBeispiel zum Erstellen von JSON-Dokumenten via SAX Writer

Dieses Beispiel veranschaulicht, wie eine JSON-Nachricht über den SAX-Mechanismus erstellt werdenkann. Als Basis wird der Funktionsbaustein FB_JsonSaxWriter verwendet.

Download: https://infosys.beckhoff.com/content/1031/TcPlcLib_Tc3_JsonXml/Resources/zip/3664753419.zip

DeklarationsbereichPROGRAM MAINVAR  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 entsprechendenElemente werden der Reihe nach durchlaufen und erstellt.fbJson.StartObject();fbJson.AddKey('Timestamp');fbJson.AddDateTime(dtTimestamp);fbJson.AddKey('Values');fbJson.StartObject();fbJson.AddKey('Sensor1');fbJson.AddReal(42.42);fbJson.AddKey('Sensor2');

Page 96: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Beispiele

PLC Lib: Tc3_JsonXml96 Version: 1.6

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  }}

5.4 Tc3JsonXmlSampleJsonDomReaderDieses Beispiel veranschaulicht, wie eine JSON-Nachricht programmatisch auf Basis von DOM durchlaufenwerden kann. Als Basis wird der Funktionsbaustein FB_JsonDomParser verwendet.

Download: https://infosys.beckhoff.com/content/1031/TcPlcLib_Tc3_JsonXml/Resources/zip/3916597387.zip

DeklarationsbereichPROGRAM MAINVAR  fbJson     : FB_JsonDomParser;  jsonDoc    : SJsonValue;  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ßendkann mit der Methode HasMember() überprüft werden, ob ein bestimmtes Property enthalten ist. Über dieMethode FindMember() wird das Property selektiert und ü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

Die Verwendung der Methode HasMember() ist nicht zwingend erforderlich, da die Methode FindMember()bereits 0 zurückliefert, wenn ein Property nicht gefunden wurde. Der oben dargestellte Code kann also auchwie folgt implementiert werden:

Page 97: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Beispiele

PLC Lib: Tc3_JsonXml 97Version: 1.6

jsonDoc := fbJson.ParseDocument(sMessage);

jsonProp := fbJson.FindMember(jsonDoc, 'serialNumber');IF (jsonProp <> 0) THEN  stReceivedData.serialNumber := fbJson.GetString(jsonProp);END_IF

jsonProp := fbJson.FindMember(jsonDoc, 'batteryVoltage');IF (jsonProp <> 0) THEN  stReceivedData.batteryVoltage := fbJson.GetString(jsonProp);END_IF

jsonProp := fbJson.FindMember(jsonDoc, 'clickType');IF (jsonProp <> 0) THEN  stReceivedData.clickType := fbJson.GetString(jsonProp);END_IF

Verschachtelte JSON-Objekte

Bei verschachtelten JSON-Objekten ist die Herangehensweise ähnlich. Dadurch, dass sich das gesamteDokument im DOM befindet, kann darin einfach navigiert werden. Gegeben sei ein JSON-Objekt, das sichwie folgt darstellt:sMessage : STRING(255) := '{"Values":{"serial":"G030PT028191AC4R"}}';

Das gesuchte Property befindet sich in dem Unterobjekt „Values“. Der folgende Code zeigt, wie das Propertyextrahiert werden kann.jsonDoc := fbJson.ParseDocument(sMessage);bHasMember := fbJson.HasMember(jsonDoc, 'Values');IF (bHasMember) THEN  bHasMember := FALSE;  jsonProp := fbJson.FindMember(jsonDoc, 'Values');  IF jsonProp <> 0 THEN    jsonSerial := fbJson.FindMember(jsonProp, 'serial');    stReceivedData.serialNumber := fbJson.GetString(jsonSerial);  END_IFEND_IF

5.5 Tc3JsonXmlSampleXmlDomReaderDieses Beispiel veranschaulicht, wie ein XML-Dokument programmatisch auf Basis von DOM durchlaufenwerden kann. Als Basis wird der Funktionsbaustein FB_XmlDomParser verwendet.

Download: https://infosys.beckhoff.com/content/1031/TcPlcLib_Tc3_JsonXml/Resources/zip/5529225227.zip

DeklarationsbereichPROGRAM MAINVAR  fbXml : FB_XmlDomParser;  xmlDoc : SXmlNode;  xmlMachines : SXmlNode;  xmlMachine1 : SXmlNode;  xmlMachine2 : SXmlNode;  xmlIterator : SXmlIterator;  xmlMachineNode : SXmlNode;  xmlMachineNodeValue : STRING;  xmlMachineAttributeRef : SXmlAttribute;  xmlMachine1Attribute : SXmlAttribute;  xmlMachine2Attribute : SXmlAttribute;  sMachine1Name : STRING;  sMachine2Name : STRING;  nMachineAttribute : DINT;  nMachine1Attribute : DINT;  nMachine2Attribute : DINT;  sMessageToParse : STRING(255) := '<Machines><Machine Type="1" Test="3">Wilde Nelli</Machine><Machine Type="2">Huber8</Machine></Machines>';END_VAR

Page 98: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Beispiele

PLC Lib: Tc3_JsonXml98 Version: 1.6

Implementierungsbereich

Der Implementierungsbereich zeigt verschiedene Möglichkeiten auf, wie man ein XML-Dokument parsenkann.(* Load XML content *)xmlDoc := fbXml.ParseDocument(sMessageToParse);

(* Parse XML nodes - Option 1 *)xmlMachines := fbXml.ChildByName(xmlDoc, 'Machines');xmlMachine1 := fbXml.ChildByAttribute(xmlMachines, 'Type', '1');xmlMachine2 := fbXml.ChildByAttributeAndName(xmlMachines, 'Type', '2', 'Machine');

(* Parse XML nodes - Option 2 *)xmlMachines := fbXml.ChildByName(xmlDoc, 'Machines');xmlMachineNode := fbXml.Children(xmlMachines, xmlIterator);WHILE NOT fbXml.IsEnd(xmlIterator) DO  xmlMachineNode := fbXml.Node(xmlIterator);  xmlMachineNodeValue := fbXml.NodeText(xmlMachineNode);  xmlMachineNode := fbXml.Children(xmlMachines, xmlIterator);END_WHILE

(* Parse XML nodes - Option 3 *)xmlMachines := fbXml.ChildByName(xmlDoc, 'Machines');xmlIterator := fbXml.Begin(xmlMachines);WHILE NOT fbXml.IsEnd(xmlIterator) DO  xmlMachineNode := fbXml.Node(xmlIterator);  xmlMachineNodeValue := fbXml.NodeText(xmlMachineNode);  xmlIterator := fbXml.Next(xmlIterator);  xmlIterator := fbXml.End(xmlMachines);END_WHILE

(* Parse XML attributes - Option 1*)xmlMachine1Attribute := fbXml.Attribute(xmlMachine1, 'Type');xmlMachine2Attribute := fbXml.Attribute(xmlMachine2, 'Type');

(* Parse XML attributes - Option 2*)xmlIterator := fbXml.AttributeBegin(xmlMachine1);WHILE NOT fbXml.IsEnd(xmlIterator) DO  xmlMachineAttributeRef := fbXml.AttributeFromIterator(xmlIterator);  nMachineAttribute := fbXml.AttributeAsInt(xmlMachineAttributeRef);  xmlIterator := fbXml.Next(xmlIterator);END_WHILE

(* Retrieve node values *)sMachine1Name := fbXml.NodeText(xmlMachine1);sMachine2Name := fbXml.NodeText(xmlMachine2);

(* Retrieve attribute values *)nMachine1Attribute := fbXml.AttributeAsInt(xmlMachine1Attribute);nMachine2Attribute := fbXml.AttributeAsInt(xmlMachine2Attribute);

5.6 Tc3JsonXmlSampleXmlDomWriterDieses Beispiel veranschaulicht, wie ein XML-Dokument programmatisch auf Basis von DOM erstellt werdenkann. Als Basis wird der Funktionsbaustein FB_XmlDomParser verwendet.

Download: https://infosys.beckhoff.com/content/1031/TcPlcLib_Tc3_JsonXml/Resources/zip/5529228299.zip

DeklarationsbereichPROGRAM MAINVAR  fbXml : FB_XmlDomParser;  objRoot : SXmlNode;  objMachines : SXmlNode;  objMachine : SXmlNode;  objControllers : SXmlNode;  objController : SXmlNode;  objAttribute : SXmlAttribute;  sXmlString : STRING(1000);  bCreate : BOOL := FALSE;  bSave : BOOL := TRUE;  nLength : UDINT;  newAttr : SXmlAttribute;END_VAR

Page 99: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Beispiele

PLC Lib: Tc3_JsonXml 99Version: 1.6

Implementierungsbereich

Der Implementierungsbereich zeigt verschiedene Möglichkeiten auf, wie ein XML-Dokument erstellt werdenkann.IF bCreate THEN  (* Create an empty XML document *)  objRoot := fbXml.GetDocumentNode();

  (* Create a new XML node 'Machines' and add to the empty document *)  objMachines := fbXml.AppendNode(objRoot, 'Machines');    (* Create a new XML node 'Machine' and add an attribute to this node. Append node to 'Machines' *)  objMachine := fbXml.AppendNode(objMachines, 'Machine');  objAttribute := fbXml.AppendAttribute(objMachine, 'Name', 'Wilde Nelli');

  (* Create a new XML node 'Controllers' and add to the 'Machine' node *)  objControllers := fbXml.AppendNode(objMachine, 'Controllers');

  (* Create a new XML node 'Controller' and add some attributes. Append node to 'Controllers'. *)  objController := fbXml.AppendChild(objControllers, 'Controller', 'CX5120', FALSE);  objAttribute := fbXml.AppendAttribute(objController, 'Type', 'EPC');  objAttribute := fbXml.AppendAttribute(objController, 'OS', 'Windows Embedded Compact 7');

  (* Create a new XML node 'Controller' and add some attributes. Append node to 'Controllers'. *)  objController := fbXml.AppendChild(objControllers, 'Controller', 'CX2040', FALSE);  objAttribute := fbXml.AppendAttribute(objController, 'Type', 'EPC');  objAttribute := fbXml.AppendAttribute(objController, 'OS', 'Windows Embedded Standard 7');

  (* Create a new XML node 'Controller' and add some attributes. Append node to 'Controllers'. *)  objController := fbXml.AppendChild(objControllers, 'Controller', 'C6015', FALSE);  objAttribute := fbXml.AppendAttribute(objController, 'Type', 'IPC');  objAttribute := fbXml.AppendAttribute(objController, 'OS', 'Windows 10 IoT Enterprise');

  (* Create a new XML node 'Machine' and add an attribute to this node. Append node to 'Machines' *)  objMachine := fbXml.AppendNode(objMachines, 'Machine');  objAttribute := fbXml.AppendAttribute(objMachine, 'Name', 'Stanze Oscar');    (* Create a new XML node 'Controllers' and add to the 'Machine' node *)  objControllers := fbXml.AppendNode(objMachine, 'Controllers');

  (* Create a new XML node 'Controller' and add some attributes. Append node to 'Controllers'. *)  objController := fbXml.AppendChild(objControllers, 'Controller', 'C6017', FALSE);  objAttribute := fbXml.AppendAttribute(objController, 'Type', 'IPC');  objAttribute := fbXml.AppendAttribute(objController, 'OS', 'Windows 10 IoT Enterprise');  newAttr := fbXml.InsertAttribute(objController, objAttribute, 'AddAttribute');  fbXml.SetAttribute(newAttr, 'Hola');

  (* Retrieve XML document and store in a variable of data type STRING(1000) *)  nLength := fbXml.CopyDocument(sXmlString, SIZEOF(sXmlString));  bCreate := FALSE;END_IF

Page 100: Handbuch PLC Lib: Tc3 JsonXml - download.beckhoff.com · 12 PLC Lib: Tc3_JsonXmlVersion: 1.6 1.2Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise

Support und Service

PLC Lib: Tc3_JsonXml100 Version: 1.6

6 Support und ServiceBeckhoff und seine weltweiten Partnerfirmen bieten einen umfassenden Support und Service, der eineschnelle und kompetente Unterstützung bei allen Fragen zu Beckhoff Produkten und Systemlösungen zurVerfügung stellt.

Beckhoff Support

Der Support bietet Ihnen einen umfangreichen technischen Support, der Sie nicht nur bei dem Einsatzeinzelner Beckhoff Produkte, sondern auch bei weiteren umfassenden Dienstleistungen unterstützt:

• Support• Planung, Programmierung und Inbetriebnahme komplexer Automatisierungssysteme• umfangreiches Schulungsprogramm für Beckhoff Systemkomponenten

Hotline: +49(0)5246/963-157Fax: +49(0)5246/963-9157E-Mail: [email protected]

Beckhoff Service

Das Beckhoff Service-Center unterstützt Sie rund um den After-Sales-Service:

• Vor-Ort-Service• Reparaturservice• Ersatzteilservice• Hotline-Service

Hotline: +49(0)5246/963-460Fax: +49(0)5246/963-479E-Mail: [email protected]

Weitere Support- und Serviceadressen finden Sie auf unseren Internetseiten unter http://www.beckhoff.de.

Beckhoff Firmenzentrale

Beckhoff Automation GmbH & Co. KG

Hülshorstweg 2033415 VerlDeutschland

Telefon: +49(0)5246/963-0Fax: +49(0)5246/963-198E-Mail: [email protected]

Die Adressen der weltweiten Beckhoff Niederlassungen und Vertretungen entnehmen Sie bitte unserenInternetseiten:http://www.beckhoff.de

Dort finden Sie auch weitere Dokumentationen zu Beckhoff Komponenten.