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
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
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.
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
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.