Beispiel06: UI-C#-ADS Client lädt die Symbolik vom Modul hoch
Dieser Artikel beschreibt die Implementierung eines ADS Client um
- mit einem ADS Server, der ein Prozessabbild (Datenbereich) bereitstellt, in Verbindung zu treten, die Verbindung kann lokal oder fern über Netzwerk hergestellt werden,
- Symbolinformation hochzuladen,
- Daten synchron zu lesen / schreiben,
- Symbole zu abonnieren, um Werte bei Veränderung als Callback zu erhalten.
Download
Hier erhalten Sie den Quellcode für dieses Client-Beispiel.
- Dieser Code erfordert .NET Framework 3.5 oder höher!
- 1. Entpacken Sie die heruntergeladene ZIP-Datei.
- 2. Öffnen Sie die enthaltene sln-Datei mit Visual Studio.
- 3. Erstellen Sie das Beispiel auf Ihrer lokalen Maschine (auf das Projekt rechtsklicken und „Build“ klicken).
- 4. Starten Sie das Programm mit einem Rechtsklick auf Projekt, Debug->Start new instance.
Das Client-Beispiel sollte mit Beispiel 03 „C++ als ADS Server“ verwendet werden.
Öffnen Sie Beispiel 03 bevor Sie mit diesem Client-seitigen Beispiel beginnen!
Beschreibung
Anhand dieses Beispiels werden die Möglichkeiten der ADS beschrieben.
Die Einzelheiten der Implementierung werden in Form1.cs, das im Download enthalten ist, beschrieben. Die Verbindung über ADS mit dem Zielsystem wird in der Methode btnLoad_Click, die beim Klicken auf die Load Symbols Schaltfläche aufgerufen wird, hergestellt. Von dort aus können Sie die verschiedenen Funktionen der GUI erkunden.
Hintergrundinformation:
Diesem ADS Client ist es Einerlei, ob der ADS Server auf TwinCAT 2 oder auf TwinCAT 3 basiert. Auch spielt es keine Rolle, ob der Server ein C++ Modul, ein SPS-Modul oder eine IO Task ohne jede Logik ist.
Die ADS Client UI
Nach dem Starten des Beispiels wird die Benutzerschnittstelle (UI) eingeblendet.
Kommunikationspartner auswählen
Geben Sie nach dem Starten des Client die beiden ADS-Parameter ein, um Ihren ADS-Kommunikationspartner zu bestimmen.
- NetID:
127.0.0.1.1.1 (für ADS-Partner auch mit lokalem ADS Message Router verbunden).
Geben Sie eine andere NetID ein, wenn Sie über das Netzwerk mit einem an einen anderen ADS Router angeschlossenen ADS-Partner kommunizieren möchten.
Zuvor müssen Sie einmal eine ADS Route zwischen Ihrem Gerät und dem fernen Gerät herstellen. - AdsPort
Geben Sie den AdsPort Ihres Kommunikationspartners ein: 350 (in diesem Beispiel).
Nicht den ADS Server Port mit dem regulären ADS Port verwechseln. Verwechseln Sie nicht den ADS Server Port (der ausdrücklich in Beispiel 03 implementiert wurde, um Ihren eigenen Message-Handler bereitzustellen) mit dem regulären ADS Port zwecks Zugriff auf Symbole (es gibt nichts zu tun, wird automatisch zur Verfügung gestellt): Wir benötigen den regulären ADS Port, um auf Symbole zugreifen zu können. Sie können den AdsPort bei der IO Task Ihrer Instanz oder bei der Modulinstanz selber herausfinden (weil das Modul im Kontext der IO Task ausgeführt wird). |
Navigieren Sie zur IO Task Task1 und achten auf den Wert von Port: 350.
Weil die C++ Modulinstanz im Kontext von Task1 ausgeführt wird, ist der ADS Port auch gleich 350.
Aktivierte Symbole für Zugriff über ADS verfügbar
Es besteht die Möglichkeit einzelne Symbole oder gar vollständige Datenbereiche für den Zugriff über ADS bereitzustellen oder eben nicht bereitzustellen.
Navigieren Sie zur der Registerkarte Data Area Ihrer Instanz und aktivieren/deaktivieren Sie die Spalte C/S.
In diesem Beispiel sind alle Symbole gekennzeichnet und demzufolge für den ADS-Zugriff verfügbar.
Nach den Änderungen klicken Sie auf Konfiguration aktivieren.
Symbole laden
Nach der Einrichtung der NetID und des ADS Port klicken Sie auf die Schaltfläche Load Symbols, um eine Verbindung mit dem Zielsystem herzustellen und die Symbole zu laden.
Daraufhin sind alle verfügbaren Symbole zu sehen. Anschließend können Sie:
- Einen neuen Wert schreiben:
wählen Sie ein Symbol im linken Baum au, z. B. Counter.
geben Sie einen neuen Wert in das Bearbeitungsfeld Value auf der rechten Seite ein und klicken Sie auf Write using WriteSymbol.
Der neue Wert wird in den ADS Server geschrieben.
Nach dem Schreiben eines neuen Werts mit Write using WriteSymbol erhält auch die C# Anwendung einen Callback mit dem neuen Wert. - Abonnieren, um einen Callback bei Werteveränderungen zu erhalten:
wählen Sie ein Symbol im linken Baum aus z. B. Counter.
klicken Sie auf Watch Current Symbol.