Kochbuch "Wie man einen ADS-Client implementiert"

 

- 0. Übersicht
- 1. Erste Schritte und Öffnen/Verbinden mit dem ADS-Router
- 2. Welche Variablen sind verfügbar
- 3. Handles von Variablen abfragen
- 4. Zyklische Erfassung von Life-Daten
- 5. Handles freigeben
- 6. ADS-Kanal schließen
- 7. Im Falle eines ADS-Fehlers

0. Übersicht

Es ist immer gut, mit einem Überblick zu beginnen

Die folgenden Beispiele basieren auf C++, funktionieren aber identisch für C#

Siehe Gerätekonzept

1. Erste Schritte und Öffnen/Verbinden mit ADS-Router

Übersicht C++-Beispiele

Die einfache (aber nicht empfohlene) Art, Daten zu lesen: Flag synchron von der SPS durch absolute Adressinformation lesen
Siehe Beispiel

Nachteil: Wenn sich der SPS-Code oder die SPS-Variablendeklaration ändert, wird der ADS-Client dies in keinem Fall bemerken.
WIR EMPFEHLEN DRINGEND, mit Handles von Variablen zu arbeiten (siehe Agenda 3)

2. Welche Variablen sind verfügbar

Beim Kompilieren des SPS-Codes erstellt der SPS-Editor "PLC-Control" eine XML-basierte Exportdatei <projectname.tpy>, die alle Informationen über Symbole (Variablen) und ihre Eigenschaften (Datentyp usw.) enthält.
Zur Zeit des HMI-Designs kann diese Datei in den Scada-Editor importiert werden, um die Zuordnung zwischen Variable und HMI-Objekt zu konfigurieren.

Wir bereiten einen Beispielcode vor, um den Typ bei Bedarf zu parsen; er wird hier verfügbar sein

3. Handles von Variablen abfragen

ADS-List-Kommando: Mehrere Handles mit einem ADS-Aufruf holen/freigeben

Anstatt eine Schleife durch eine Routine zu durchlaufen, um Handles zu erhalten, empfehlen wir, um Protokolltransportzeit zu sparen, mehrere Handles mit einem einzigen ADS-Aufruf anzufordern

Siehe Beispiel C++

HINWEIS:

Geräte mit älteren TwinCAT-Versionen unterstützen diesen Aufruf möglicherweise nicht (ADS Return Code "Service not supported"). In diesem Fall holen Sie die Handles nacheinander ab.

4. Zyklische Erfassung von Life-Daten

ADS-Summenkommando: Lesen

Funktioniert auch bei Schreibrichtung

Die Sub-IndexGroup sollte immer 0xF005 in Kombination mit dem Sub-IndexOffset sein, der mit dem Handle der Variablen gefüllt ist.

Siehe Beispiel C++

5. Handles freigeben

ADS-List-Kommando: Mehrere Handles mit einem ADS-Aufruf holen/freigeben
Anstatt eine Schleife zum Freigeben von Handles zu durchlaufen, empfehlen wir, durch das Freigeben mehrerer Handles mit einem einzigen ADS-Aufruf Protokolltransportzeit zu sparen

Siehe Beispiel C++

Kochbuch "Wie man einen ADS-Client implementiert" 1:

Vorherige TwinCAT-Versionen

Geräte mit älteren TwinCAT-Versionen unterstützen diesen Aufruf möglicherweise nicht (ADS Return Code "Service not supported"). In diesem Fall werden die Handles einzeln freigegeben.

6. ADS-Kanal schließen

Schließen Sie immer den ADS-Kanal PortClose() - achten Sie darauf, die Handles vorher freizugeben!

7. Im Falle eines ADS-Fehlers

Es ist immer gut, auf die Return Codes zu achten

Siehe ADS Return Codes
Im Falle des Return Codes "Invalid handle" hat jemand einen neuen SPS-Code heruntergeladen oder die TwinCAT-Maschine neu gestartet.

Vorhandene Handles freigeben und neue Handles anfordern, danach Datenerfassung fortsetzen.