Zugriff über ADS

Eine Möglichkeit des Zugriffs besteht über MQTT und einen Message Broker. Zusätzlich kann aber auch direkt über ADS zugegriffen werden. In dem Fall wird die gleiche Schnittstelle angesprochen, die im MQTT-Fall intern angesprochen wird.

Die der API-Beschreibung entsprechenden JSON-Dokumente (vgl. API-Beschreibung) werden per ADS an das JSON Data Interface weitergegeben, die Antwort enthält dann ebenfalls ein JSON-Dokument. Dazu wird ein ADS-ReadWrite-Befehl mit der Index Group 0xf070 und dem Index Offset 0x0 ausgeführt. Die zu schreibenden Daten enthalten das Request-Dokument, die zu lesenden Daten reservieren den Speicher für das Response-Dokument. Das folgende Code-Snippet zeigt den Zugriff auf das JSON Data Interface mittels der ADS .NET V5.

int adsPort = 851;
string responseString;

AdsClient adsClient = new AdsClient();
adsClient.Connect(adsPort);

string json = "{\"symbol\":\"MAIN.nCounter\"}";

byte[] writeData = new byte[json.Length+1];
MemoryStream writeStream = new MemoryStream(writeData);
BinaryWriter writer = new BinaryWriter(writeStream);
writer.Write(Encoding.ASCII.GetBytes(json));

byte[] readData = new byte[1000];

adsClient.ReadWrite(0xf070, 0, readData, writeData);

responseString = Encoding.ASCII.GetString(readData);

Prinzipiell werden immer Ads-ReadWrite-Kommandos an die im Code beschriebene Kombination aus Index Group und Index Offset geschickt. Die innerhalb des Kommandos zurückkommende Antwort enthält dann die JSON-Antwort des JSON Data Interfaces.