Mit POST-Anforderungen werden zu lesende oder zu beschreibende Arrays im Rumpf der HTTP-Anforderung angegeben.
POST-Anforderungen enthalten die IP-Adresse, Portnummer und den Befehl plcpost
in der URL. Die Nutzdaten müssen im JSON-Format im HTTP-Rumpf eingegeben werden.
Für externe Aufrufe: http://IP_OF_DEVICE:API_PORT/plcpost
Beispiel: http://192.168.100.155:2000/plcpost
Für interne Aufrufe, wenn der Code in das FP-I4C-Modul geladen wurde: plcpost
IP-Adresse des FP-I4C-Moduls
API-Port, der auf der Seite REST-API/HTTP-Server eingestellt wurde
Die Nutzdaten müssen wie im Beispiel strukturiert sein.
Mehrere Anforderungen: Integerwerte in DT0 bis DT9 lesen, Zeichenfolge ab DT677 lesen, boolesche Werte in YF bis Y18 lesen, Integerwerte 1 bis 10 in DT100 bis DT109 schreiben
{
"req":[
{
"area": "dt",
"type": "int",
"start": 0,
"count": 10
},
{
"area": "dt",
"type": "string",
"start": 677,
},
{
"area": "y",
"type": "bool",
"start": f,
"count": 10
},
{
"area": "dt",
"type": "int",
"start": 100,
"count": 10,
"value": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
},
],
"interface": 0,
"station": 0
}
Anforderungsliste (Array), max. 20 Objekte
COM-Schnittstelle der SPS
Achten Sie darauf, dass die angegebene Schnittstelle auf der Seite COM-Schnittstelle aktiviert und für sie ein Port auf der Seite Port geöffnet wurde.
Wird der Parameter weg gelassen, wird die unter
gewählte Schnittstelle verwendet.Teilnehmeradresse: 0 bis 99 (0 für USB und RS232 verwenden)
Wird der Parameter weg gelassen, wird die unter
eingestellte Teilnehmeradresse verwendet.Die Anforderungsliste "req" ist ein Array von Objekten. Jedes Objekt stellt eine eigene Anforderung dar und kann folgende Eigenschaften enthalten:
Datenspeicherbereich. Gültige Bereiche (Groß-/Kleinschreibung egal):
DT, FL (nur FP2/FP2SH und MEWTOCOL), LD, WR, WX, WY, WL, R, X, Y, L
Datentyp. Gültige Datentypen (Groß-/Kleinschreibung egal):
INT, UINT, DINT, UDINT, REAL, STRING, ANY (nur Lesen für Register, liefert alle Datentypen außer BOOL), BOOL
Anfangsadresse des Registers oder Merkers. Für Register ist dies eine Zahl. Für boolesche Merker ist es eine Zeichenfolge.
Anzahl der zu lesenden oder zu schreibenden Werte. Diese Eigenschaft wird für den Datentyp STRING nicht benötigt.
Ein oder mehrere zu schreibenden Werte. Diese Eigenschaft wird nur für Schreibanforderungen benötigt. Fehlt die Eigenschaft, wird eine Leseanforderung angenommen. Der Wert kann ein einzelner Datentyp oder ein Array sein. Achten Sie darauf, dass der Wert von "count" der Anzahl der zu schreibenden Werte entspricht.
Beispiele:
Die Anforderungsliste kann mehrere unterschiedliche Anforderungen enthalten (Lesen, Schreiben, verschiedene Datentypen usw.).
Die Daten in der Antwort liegen in derselben Reihenfolge vor wie in der Anforderung.
Boolesche Werten werden mit den Schlüsselwörtern "true"/"false” oder “1"/“0” (ohne Anführungszeichen) geschrieben.
Groß-/Kleinschreibung ist bei den Werten der Eigenschaften "area" und "type" egal (erlaubt sind z.B. “dt”, “Dt” und “DT”).
Zum Lesen einer Zeichenfolge ist die Eigenschaft "count" nicht erforderlich.
Der Wert der Eigenschaft "start" ist für Register (DT, LD, WX usw.) eine Zahl und für Merker eine Zeichenfolge (R, Y, usw.)
Sollen die im FP-I4C-Webinterface eingestellte Schnittstelle und Teilnehmeradresse verwendet werden, lassen Sie die Eigenschaften "interface" und "station" weg.
"req": Die Anzahl der Objekte in der Anforderungsliste ist auf 20 begrenzt.
"count": Es können maximal 100 Register oder Merker gelesen oder geschrieben werden.
Die zu schreibende Zeichenfolge darf maximal 1000 Zeichen enthalten.
Die Antwort auf eine POST-Leseanforderung ist eine JSON-Zeichenfolge, die Fehlerinformationen und angeforderten Daten enthält.
Jede Antwort enthält die Eigenschaften err, err_msg und data. Die Eigenschaft err ist TRUE, wenn ein Fehler aufgetreten ist, und FALSE, wenn kein Fehler aufgetreten ist. Die Eigenschaft err_msg enthält die Fehlermeldung, wenn die Eigenschaft err TRUE ist, oder sie ist leer, wenn die Eigenschaft err FALSE ist. Die Eigenschaft data ist ein Array, das die Daten in der gleichen Reihenfolge wie in der Anforderung enthält.
{
"err": false,
"err_msg": "",
"data": []
}
Die Anforderungsliste kann mehrere unterschiedliche Anforderungen enthalten (Lesen, Schreiben, verschiedene Datentypen usw.). Das Antwortformat unterscheidet sich jedoch je nach Anforderung.
Das Datenarray der Antwort hat dieselbe Länge und Reihenfolge wie in der Anforderung. Jedes Objekt enthält in der Antwort die Eigenschaften err, err_msg und err_code. Die Eigenschaft err ist TRUE, wenn ein Fehler aufgetreten ist, und FALSE, wenn kein Fehler aufgetreten ist. Die Eigenschaft err_msg enthält die Fehlermeldung, wenn die Eigenschaft err TRUE ist, oder sie ist leer, wenn die Eigenschaft err FALSE ist. Der Fehlercode ist abhängig vom verwendeten Protokoll (MEWTOCOL, MEWTOCOL7 oder Modbus). Die Eigenschaft request enthält den angeforderten Speicherbereich und die Anfangsadresse. Die Datenwerte werden zusammen mit dem Datentyp entweder in einem Array (wenn die Anforderung mehr als einen Wert enthält) oder als einzelne Werte geliefert. Bei booleschen Werten gibt die Eigenschaft state den Status (0 oder 1) entweder als Array für einen Merkerbereich oder als einzelnen Wert an.
Einzelne Anforderung: Integerwerte in DT10 bis DT19 lesen
{
"req":[
{
"area": "dt",
"type": "int",
"start": 10,
"count": 10
}
]
}
Antwort:
Die Antwort enthält das angeforderte Array (Datentyp „int“ und count = 10). Für count = 1 wäre die Antwort eine einzelne Zahl.
{
"err": false,
"err_msg": "",
"data": [
{
"err": false,
"err_msg": "",
"err_code": 0,
"request": "DT10",
"int": [
20,
0,
0,
0,
0,
0,
0,
0,
0,
0,
]
}
]
}
Mehrere Anforderungen: Zeichenfolge in DT673 lesen, Werte eines beliebigen Datentyps in DT100 bis DT109 lesen, boolesche Werte in Y0 bis Y15 lesen
{
"req":[
{
"area": "dt",
"type": "string",
"start": 673,
},
{
"area": "dt",
"type": "any",
"start": 100,
"count": 10
},
{
"area": "y",
"type": "bool",
"start": 0,
"count": 16
}
]
}
Antwort:
Für type = „any“ enthält die Antwort alle Datentypen außer BOOL.
{
"err": false,
"err_msg": "",
"data": [
{
"err": false,
"err_msg": "",
"err_code": 0,
"request": "DT673",
"string": "This is a string"
},
{
"err": false,
"err_msg": "",
"err_code": 0,
"request": "DT100",
"int": [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
],
"uint": [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
],
"udint": [
131073,
262147,
393221,
524295,
655369,
],
"dint": [
131073,
262147,
393221,
524295,
655369,
],
"hex": [
0001,
0002,
0003,
0004,
0005,
0006,
0007,
0008,
0009,
000A,
],
"real": [
5.969307950918661e-39,
6.061144848375116e-39,
6.152981745831572e-39,
6.244818643288028e-39,
6.336655540744483e-39,
],
"string": "",
"request": "DT100"
},
{
"err": false,
"err_msg": "",
"err_code": 0,
"request": "Y0",
"state": [
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
]
}
]
}
Die Antwort auf eine POST-Schreibanforderung ist eine JSON-Zeichenfolge, die Fehlerinformationen enthält.
Jede Antwort enthält die Eigenschaften err, err_msg und data. Die Eigenschaft err ist TRUE, wenn ein Fehler aufgetreten ist, und FALSE, wenn kein Fehler aufgetreten ist. Die Eigenschaft err_msg enthält die Fehlermeldung, wenn die Eigenschaft err TRUE ist, oder sie ist leer, wenn die Eigenschaft err FALSE ist. Die Eigenschaft data ist ein Array, das die Daten in der gleichen Reihenfolge wie in der Anforderung enthält.
{
"err": false,
"err_msg": "",
"data": []
}
Die Anforderungsliste kann mehrere unterschiedliche Anforderungen enthalten (Lesen, Schreiben, verschiedene Datentypen usw.). Das Antwortformat unterscheidet sich jedoch je nach Anforderung.
Das Datenarray der Antwort hat dieselbe Länge und Reihenfolge wie in der Anforderung. Jedes Objekt enthält in der Antwort die Eigenschaften err und err_code. Die Eigenschaft err ist TRUE, wenn ein Fehler aufgetreten ist, und FALSE, wenn kein Fehler aufgetreten ist. Der Fehlercode ist abhängig vom verwendeten Protokoll (Mewtocol, Mewtocol7 oder Modbus). Die Eigenschaft request enthält den angeforderten Speicherbereich und die Anfangsadresse.
Mehrere Anforderungen: Integerwerte 22 und 23 in DT10 bis DT11 schreiben, Y0 auf TRUE und Y1 auf FALSE setzen, die reelle Zahl 22,88 in DT20 schreiben.
{
"req":[
{
"area": "dt",
"type": "int",
"start": 10,
"count": 2,
"value": [22, 33]
},
{
"area": "y",
"type": "bool",
"start": 0,
"count": 2,
"value": [1, false]
},
{
"area": "dt",
"type": "real",
"start": 20,
"count": 1,
"value": 22.88
}
]
}
Antwort:
Die Antwort enthält keine Datenwerte und bestätigt, dass die Schreibanforderung erfolgreich war oder fehlgeschlagen ist.
{
"err": false,
"err_msg": "",
"data": [
{
"request": "DT10",
"err": false,
"err_code": 0,
},
{
"request": "Y0",
"err": false,
"err_code": 0,
},
{
"request": "DT20",
"err": false,
"err_code": 0,
}
]
}