REST API
Diese Bibliothek stellt Funktionsbausteine zur Kommunikation zwischen der PLC und einem REST-fähigen Webserver zur Verfügung.
TB_ArrayToJson
Der Funktionsbaustein wandelt zwei Arrays (Key- und Werte-Array; Datentyp: STRING_128_ARRAY) in einen JSON String um. Dieser wird durch den Baustein in ein Byte-Array (BYTE_4096_BMARRAY) gelegt. Jedes Byte ist ein Zeichen/Buchstabe im JSON String.
Allgemeine Beschreibung
| In der Allgemeinen Beschreibung wird das JSON Format näher erklärt und ein Integrationsbeispiel gegeben. |
Beschreibungallgemein
JSON (JavaScript Object Notation) ist ein schlankes Datenaustauschformat, das für Menschen einfach zu lesen und zu schreiben und für Maschinen einfach zu parsen (Analysieren von Datenstrukturen) und zu generieren ist. Es basierd auf einer Untermenge der JavaScript Programmiersprache, Standard ECMA-262 dritte Edition - Dezember 1999. Bei JSON handelt es sich um ein Textformat, das komplett unabhängig von Programmiersprachen ist, aber vielen Konventionen folgt, die Programmieren aus der Familie der C-basierten Sprachen (inklusive C, C++, C#, Java, JavaScript, Perl, Python und vielen anderen) bekannt sind. Diese Eigenschaften machen JSON zum idealen Format für Datenaustausch. JSON baut auf zwei Strukturen auf:
- Name/Wert Paare. In verschiedenen Sprachen wird dies realisiert als ein Objekt (object), Satz (record), Struktur (struct), Wörterbuch bzw. Verzeichnis (dictionary), Hash-Tabelle (hash table), Schlüssel-Liste (keyed list) oder als ein assoziatives Array (associative array).
- Eine geordnete Liste von Werten. In den meisten Sprachen wird das als Array (array), Vektor (vector), Liste (list) oder Sequenz (sequence) realisiert.
Quelle: https://www.json.org/json-de.html
Empfohlene Task: Zyklisch, Default
Verwendete Bibliotheken: BM_TYPES_40bd04 oder höherTECH_TYPES_40bd15 oder höher
Eingänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| x_Execute | BOOL | Ausführen des Funktionsblocks |
| a_Keys | STRING_128_ARRAY | Array der Keys; im JSON Format sind Keys sozusagen die Variablennamen |
| a_Values | STRING_128_ARRAY | Array der zu den Keys zugehörigen Werte |
Ausgänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| x_Busy | BOOL | Funktion wird ausgeführt |
| x_Done | BOOL | Funktion ist fertig |
| a_JsonData | BYTE_4096_BMARRAY | Umgewandelte Keys und Values in einen JSON String im Byte Array |
Ein-/Ausgänge
| none |

TB_JsonToArray
Der Funktionsbaustein wandelt einen JSON String, der in einem BYTE_4096_BMARRAY vorliegt, in zwei einzelne Arrays (Key- und Werte-Array, STRING_128_ARRAY) um. Dadurch kann bspw. nach einem Request die empfangenen JSON Daten in ein verwertbares Format in der PLC gebracht werden.
Allgemeine Beschreibung
| In der Allgemeinen Beschreibung wird das JSON Format näher erklärt und ein Integrationsbeispiel gegeben. |
Beschreibungallgemein
JSON (JavaScript Object Notation) ist ein schlankes Datenaustauschformat, das für Menschen einfach zu lesen und zu schreiben und für Maschinen einfach zu parsen (Analysieren von Datenstrukturen) und zu generieren ist. Es basierd auf einer Untermenge der JavaScript Programmiersprache, Standard ECMA-262 dritte Edition - Dezember 1999. Bei JSON handelt es sich um ein Textformat, das komplett unabhängig von Programmiersprachen ist, aber vielen Konventionen folgt, die Programmieren aus der Familie der C-basierten Sprachen (inklusive C, C++, C#, Java, JavaScript, Perl, Python und vielen anderen) bekannt sind. Diese Eigenschaften machen JSON zum idealen Format für Datenaustausch. JSON baut auf zwei Strukturen auf:
- Name/Wert Paare. In verschiedenen Sprachen wird dies realisiert als ein Objekt (object), Satz (record), Struktur (struct), Wörterbuch bzw. Verzeichnis (dictionary), Hash-Tabelle (hash table), Schlüssel-Liste (keyed list) oder als ein assoziatives Array (associative array).
- Eine geordnete Liste von Werten. In den meisten Sprachen wird das als Array (array), Vektor (vector), Liste (list) oder Sequenz (sequence) realisiert.
Quelle: https://www.json.org/json-de.html
Verwendete Bibliotheken: BM_TYPES_40bd04 oder höherTECH_TYPES_40bd15 oder höher
Eingänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| x_Execute | BOOL | Ausführen des Funktionsblocks |
| a_JsonData | BYTE_4096_BMARRAY | Umgewandelte Keys und Values in einen JSON String im Byte Array |
Ausgänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| x_Busy | BOOL | Funktion wird ausgeführt |
| x_Done | BOOL | Funktion ist fertig |
| x_Error | BOOL | Funktion zeigt einen Fehlermeldung |
| s_ErrorInfo | STRING | zeigt Informationen zum aufgetreten Fehler an |
| a_Keys | STRING_128_ARRAY | Array der Keys; im JSON Format sind Keys sozusagen die Variablennamen |
| a_Values | STRING_128_ARRAY | Array der zu den Keys zugehörigen Werte |
Ein-/Ausgänge
| none |

TB_RestRequester
Dieser Funktionsbaustein stellt Requests an einen Webserver über eine REST API. Der Baustein kann die Request-Arten GET, PUT und POST durchführen. Auf diese wird später näher eingegangen. Der Baustein basiert auf den TCP Bausteinen der Bibliothek "SYSTEM2_PCC03_40bd03". Man muss die IP-Adresse und den Port des anzufragenden Webservers angeben. Zusätzlich gibt man über einen String noch an, welche Request-Art man verwenden will. Wichtig ist auch die Angabe des anzufragenden Pfades am Server. Der Content-Type kann angegeben werden, falls nichts angegeben ist, wird "application/json" als Default eingetragen. Für den Fall eines PUT oder POST Request muss dessen Body in einem BYTE_4096_BMARRAY in JSON Format angegeben werden. Dafür kann der Baustein "TB_ArrayToJson" verwendet werden. Über einen Execute kann nach Angabe all dieser Eingangsparameter der Request durchgeführt werden. Die empfangenen Daten werden ebenfalls in ein BYTE_4096_BMARRAY geschrieben. Falls diese im JSON Format von einem Server stammen, können Sie über den Baustein "TB_JsonToArray" diese in ein leserliches Format bringen.
Allgemeine Beschreibung
| In der Allgemeinen Beschreibung werden die vorhandenen Request-Arten näher erklärt und ein Integrationsbeispiel gegeben. |
Beschreibungallgemein
GET
Eine GET-Anfrage ist, vereinfacht ausgedrückt, eine Möglichkeit, Daten aus einer Datenquelle mit Hilfe des Internets abzurufen. Wenn Sie der API mitteilen, dass Sie Informationen abrufen möchten, senden Sie eine GET-Anfrage an den Server. Nachdem Ihre Anfrage verarbeitet wurde, erhalten Sie die Informationen in einem übersichtlichen Stapel (JSON-Format)
PUT
Die HTTP PUT-Anforderungsmethode erstellt eine neue Ressource oder ersetzt eine Repräsentation der Zielressource durch die Anforderungs-Payload. Wenn die Zielressource keine aktuelle Repräsentation hat und die PUT-Anforderung erfolgreich eine erstellt, muss der Ursprungsserver den User-Agent informieren, indem er eine 201 (Created) Antwort sendet. Wenn die Zielressource über eine aktuelle Darstellung verfügt und diese Darstellung entsprechend dem Zustand der beigefügten Darstellung erfolgreich geändert wird, muss der Ursprungsserver entweder eine 200 (OK) oder eine 204 (No Content) Antwort senden, um den erfolgreichen Abschluss der Anfrage anzuzeigen.
POST
POST ist eine HTTP-Methode, mit der Daten von einem HTTP-Client an den Server gesendet werden. Mit der HTTP-POST-Methode wird der Webserver aufgefordert, die im Textkörper der POST-Nachricht enthaltenen Daten zu akzeptieren. Die HTTP-POST-Methode wird häufig verwendet, um Anmelde- oder Kontaktformulare zu übermitteln oder Dateien und Bilder auf den Server hochzuladen. Die HTTP-POST-Methode wird verwendet, um eine Ressource auf dem Server zu erstellen oder hinzuzufügen. Normalerweise fügt die POST-Anfrage dem Server eine neue Ressource hinzu, während die PUT-Anfrage eine vorhandene Ressource auf dem Server ersetzt. Im Gegensatz zu GET- und HEAD-Anfragen können HTTP-POST-Anfragen den Serverstatus ändern.
DELETE
Eine HTTP-Anfrage dieser Art wird gesendet, um die Zielressource vom Server zu entfernen. Was genau auf der Seite des Servers geschieht, z. B. ob der Speicherplatz zurückgewonnen wird oder die Ressource stattdessen einfach offline genommen wird, unterliegt der Kontrolle des Servers und wie seine Umgebung konfiguriert wurde. Normalerweise wird die HTTP DELETE-Methode in Fällen verwendet, in denen Clients Ressourcen erstellen und ändern. Sie könnte verwendet werden, um beispielsweise eine Datei zu entfernen, die zuvor mit der HTTP-PUT-Methode gespeichert wurde.
Empfohlene Task: Zyklisch, Standard
Verwendete Bibliotheken: SYSTEM2_PCC03_40bd03BM_TYPES_40bd04 oder höherTECH_TYPES_40bd15 oder höher
Eingänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| x_Execute | BOOL | Ausführen des Funktionsblocks |
| s_RequestMethod | STRING | Festlegen der Request Methode (GET, PUT, POST) |
| s_IP | STRING | IP-Adresse des Gerätes auf dem der Webservers, mit dem sich verbunden werden soll, läuft |
| ui_Port | UINT | Port auf dem der Webserver läuft |
| s_Path | STRING | Pfad des Servers, an den der Request gestellt wird (Bsp.: /data) |
| s_ContentType | STRING | Art der verschickten / empfangenen Daten (Default: application/json) |
| a_Body | BYTE_4096_BMARRAY | Byte Array, das die zu versendeten Daten enthält (JSON Form umgewandelt in Bytes) |
Ausgänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| x_Busy | BOOL | Funktion wird ausgeführt |
| x_Done | BOOL | Funktion ist fertig |
| x_Error | BOOL | TRUE: Error |
| s_ErrorInfo | STRING | gibt Informationen zum aufgetretenen Fehler an |
| w_ErrorID | WORD | Error ID gemäß der Motion Control Error Liste |
| s_StatusReceived | STRING | Status des gestellten Requests (Bsp.: 200 OK) |
| a_DataOutput | BYTE_4096_BMARRAY | Empfangene Daten in einem BYTE_4096_BMARRAY in JSON Form |
Ein-/Ausgänge
| none |
