Aufgrund von Wartungsarbeiten (am Versorgungsnetz) ist W&T am 19.04.2024 geschlossen!

Unsere Technikhotline erreichen Sie unter:
0202 / 2680 - 110 oder unter der Notfallnummer: 0179 / 4317651


Ab Montag den 22.04.2024 sind wir in gewohnter Weise wieder erreichbar.

W&T verbindet
Interfaces für TCP/IP, Ethernet, RS-232, RS-485, USB, 20mA, Glas- und Kunststoff-LWL, http, SNMP, OPC, Modbus TCP, I/O digital, I/O analog, ISA, PCI

Thema:

Web-IO Programmierung mit ASCII-Sockets

IO-Signale mit lesbaren Kommandos abfragen und setzen



An dieser Stelle werden zunächst der prinzipielle Ablauf und eine kurze Konfigurationsanleitung für das Ansprechen unserer Web-IO-Produkte mit ASCII-Sockets über TCP oder UDP gezeigt. Die Seite ist untergliedert in die Bereiche:

  • Zugriff über TCP und Konfiguration eines Web-IO
  • Zugriff über UDP und Konfiguration eines Web-IO
  • Aufbau und Struktur der ASCII-Kommandos

Die angewandte Programmiersprache spielt dabei keine Rolle, da die Prinzipien übergreifend die gleichen sind. Detaillierte Beispiele für unterschiedliche Hochsprachen sind weiter unten verlinkt.


Zugriff über TCP

Zugriff über TCP

Ähnlich einem Telefongespräch muss bei TCP zunächst eine Verbindung aufgebaut werden, bevor Informationen ausgetauscht werden können. Dabei baut der Client die Verbindung auf, die vom Server entgegengenommen wird. Bei Anwendungen für Web-IO mit ASCII-Sockets übernimmt die Anwendung immer den Part des Clients und das Web-IO ist der Server.

Web-IO über HTTP-Requests ansprechen

Das Web-IO hat dazu einen TCP-Port für die Verbindungsannahme geöffnet (wenn nicht anders konfiguriert Port 42280). Der Client, also die Anwendung, baut eine Verbindung zur IP-Adresse des Servers zu diesem Port auf. Dabei öffnet auch der Client einen TCP-Port (dynamisch wechselnd), auf dem er Datensendungen vom Server entgegennehmen kann.

Sobald die Verbindung besteht, kann die Anwendung Kommandos zum Web-IO senden (Request), die dann vom Web-IO beantwortet bzw. ausgeführt werden (Reply). Bei entsprechender Konfiguration kann das Web-IO ohne Anfrage durch die Anwendung den Status der Input übermitteln (Event Message).

Das Schließen der TCP-Verbindung übernimmt im Regelfall die Anwendung. Das Web-IO schließt die Verbindung nur im Fehlerfall, z.B. wenn die Syntax eines Kommandos nicht stimmt.

Im TCP-ASCII-Socket-Modus kann das Web-IO zeitgleich maximal vier Verbindungen entgegennehmen. Der Verbindungsversuch eines fünften Clients würde abgewiesen (ähnlich besetzt beim Telefon).


Web-IO für TCP-Zugriff konfigurieren

Wählen Sie im Menübaum der Web-Oberfläche Kommunikationswege >> Socket-API und aktivieren Sie TCP-ASCII-Sockets.

Web-IO über TCP-Sockets ansprechen

Der TCP-Port kann bei Bedarf an die eigene Anwendung angepasst werden.

Wenn das Web-IO bei Änderung an den Inputs den Zustand automatisch an die Anwendung senden soll, setzen Sie die entsprechenden Häkchen unter Input-Trigger.

Außerdem müssen Outputs, die über die Anwendung geschaltet werden sollen, freigegeben werden.

Auf den Punkt IP-Adresse und Systemnamen voranstellen wird später noch eingegangen.


Zugriff über UDP

Zugriff über UDP

Anders als bei einem Telefongespräch gibt es bei UDP keine Verbindung. Ähnlich wie beim Sprechfunk werden die Informationen einfach gesendet. Client und Server gibt es also bei UDP nicht, sondern man spricht von UDP-Peers, die gleichberechtigt ihre Datagramme versenden.

Web-IO über UDP-Sockets ansprechen

Die Anwendung sendet Kommandos zum Web-IO (Request), die dann vom Web-IO beantwortet bzw. ausgeführt werden (Reply).


Web-IO für UDP-Zugriff konfigurieren

Wählen Sie im Menübaum der Web-Oberfläche Kommunikationswege >> Socket-API und aktivieren Sie UDP-Sockets.

Web-IO über UDP-Sockets ansprechen

Der TCP-Port kann bei Bedarf an die eigene Anwendung angepasst werden.

Outputs die über die Anwendung geschaltet werden sollen, müssen entsprechend freigegeben werden.

Auf den Punkt IP-Adresse und Systemnamen voranstellen wird später noch eingegangen.


ASCII-Kommandos

Aufbau und Struktur der ASCII-Kommandos

Unabhängig davon, ob per TCP oder UDP zugegriffen wird - die Kommandos und die Antworten darauf sind die gleichen.

Der Aufbau der Kommandos ist angelehnt an das ursprünliche HTTP-Protokoll. Jedes Kommando beginnt mit der einleitenden Sequenz GET / gefolgt von dem eigentlichen Kommando. Die hier gezeigte Groß-/Kleinschreibung ist genau so umzusetzen. Mit ? abgetrennt können Parameter folgen. Beim Web-IO Digital auf jeden Fall immer das Passwort mit der Syntax PW=password&. Jeder Parametersatz wird mit & abgeschlossen, sodass zwei Parametersätze auch durch & getrennt werden.

WICHTIG: Kommandos inklusive Parametersätzen dürfen nicht mit CR (Carriage Return) oder LF (Line Feed) oder beidem abgeschlossen werden. In vielen Programmiersprachen gibt es die Methoden write und writeln . Verwnden Sie nicht die Methode writeln , da hierbei automatisch CR und LF angehangen werden.

Beispiel: Input-Abfrage

Als Beispiel hier das Kommando zum Abruf der Input-Schaltzustände. Das Web-IO ist mit dem Passwort blau geschützt.

GET /input?PW=blau&

Die Antwort des Web-IO sieht je nach Modell zum Beispiel so aus:

input;1 (Web-IO Digital 2xIn, 2xOut)
input;0001 (Web-IO Digital 12xIn, 12xOut bzw 12xIn, 6xRelais)

Der Aufbau besteht aus dem Schlüsselwort der Anfrage, mit Semikolon getrennt gefolgt von einem oder mehreren Werten. Als Abschluss hängt das Web-IO ein Null-Byte an.

Hier beginnt die Antwort also mit dem Schlüsselwort input und es folgt der Wert 1 bzw. 0001, der in hexadezimaler Schreibweiseen den Schaltzustand aller Inputs wiedergibt. Hier konkret Input 0 = ON, alle anderen Inputs = OFF.

Zum besseren Verständnis der hexadezimalen Input-Codierung hier nochmal ein Beispiel für ein Web-IO mit 12 Inputs:

Im Zustand ON sind die Inputs 0,1,5,7,10,11. Die anderen Inputs sind im Zustand OFF. Aus diesem Bit-Muster ergibt sich eine Dualzahl, bei der ON-Bits = 1 sind und OFF-Bits = 0.

Hier also 1100 1010 0011.
In hexadezimaler Schreibweise entspricht das CA3 bzw. in vierstelliger Darstellung 0CA3.
Mehr zu hexadezimalen Zahlen finden Sie hier.

Beispiel: Setzen der Outputs

Das Kommando zum Setzen von Outputs hat einen ähnlichen Aufbau wie das input-Kommando, hat aber mehr Parameter:

GET /outputaccess0?PW=blau&State=ON&

Die Ziffer hinter dem Schlüsselwort outputaccess gibt an, welcher Output geschaltet werden soll - hier Output 0. Mit State wird übergeben, in welchen Zustand geschaltet wird. Möglich sind die Werte ON,OFF und TOGGLE (Zustandswechsel).

Die Antwort des Web-IO sieht je nach Modell zum Beispiel so aus:

output;1 (Web-IO Digital 2xIn, 2xOut)
output;0001 (Web-IO Digital 12xIn, 12xOut bzw 12xIn, 6xRelais)

Genau wie bei der Input-Abfrage wird als Antwort das entsprechende Schlüsselwort gefolgt vom Bit-Muster der Output-Zustände plus Null-Byte gesendet. Unabhängig davon, welcher Output gesetzt wird - das Bit-Muster gibt immer den Zustand aller Outputs wieder.

Eine detaillierte Übersicht aller Kommandos finden Sie in der Kommandoübersicht oder im Programmierhandbuch zum Web-IO.


Beispiele in verschiedenen Programmiersprachen

Produkte