Kurzeinführung: TwinCAT ADS
Grundstruktur von ADS-Geräten und ADS-Symbolen
Automation Device Specification (ADS) bildet die Grundlage für das Interface for MATLAB®/Simulink®. ADS beschreibt eine geräte- und feldbusunabhängige Schnittstelle und ermöglicht die Kommunikation zwischen ADS-Geräten.
Nachfolgend wird das ADS-Gerätekonzept sowie die Identifikation eines ADS-Geräts erläutert.
Die modulare Systemarchitektur von TwinCAT erlaubt es, die einzelnen Teile der Software (z. B. TwinCAT PLC, TwinCAT NC ...) als eigenständige Geräte zu betrachten: Für jede einzelne Aufgabe gibt es ein Softwaremodul. Die Server im System sind die ausführenden Geräte, welche bestimmte Dienste anbieten. Die Clients sind Programme, welche die Dienste der Server anfordern. Ein Client baut entsprechend initial eine Verbindung zum Server auf und fragt einen Dienst an: Zum Beispiel fragt er lesend den Wert einer Variablen an oder er fragt das Schreiben einer Variablen an.

Das Interface for MATLAB®/Simulink® stellt für Simulink® und MATLAB® eine ADS-Client-Schnittstelle zur Verfügung, mit welcher ein Datenaustausch (schreibend und lesend) mit TwinCAT-Laufzeiten ermöglicht wird. Die TwinCAT-Laufzeit, bzw. ihre ADS-Geräte, stellen damit als ADS-Server ihre Dienste zur Verfügung und können aus LabVIEW™ heraus genutzt werden.
Darüber hinaus stellt das Interface for MATLAB®/Simulink® einen ADS-Server für MATLAB® bereit, sodass eine MATLAB®-Umgebung Dienste für ADS-Clients bereitstellen kann.
Der ADS-Datenaustausch zwischen ADS-Geräten findet über den ADS-Router statt. Wie im obigen Schaubild aufgezeigt, erfolgt der Datenaustausch von ADS-Geräten, welche auf demselben System realisiert sind, über den Systemspeicher. Sind zwei ADS-Geräte, z. B. MATLAB® und die TwinCAT-Laufzeit auf unterschiedlichen Systemen, kann eine Route zwischen zwei ADS-Routern erzeugt werden. Beim Erzeugen der ADS-Route kann der Transporttyp (i.d.R. TCP/IP) für die Kommunikation zwischen den beiden ADS-Routern definiert werden. Entsprechend identifiziert sich ein ADS-Gerät durch die AMS-NetId des ADS-Routers und durch eine Portnummer, welche dann das ADS-Gerät auf dem System spezifiziert. Beispielsweise ist der Port 851 der Default-Port für die erste PLC-Instanz in der TwinCAT-Laufzeit. ADS-Dienste eines ADS-Geräts werden dann durch zwei Parameter, Index Group und Index Offset, spezifiziert. Zum Beispiel ist eine SPS-Variable zum Lesen oder Schreiben unter einem bestimmten Index Group und Index Offset erreichbar.
Zusammenfassung
- AMS NetId: Identifiziert den ADS-Router, also das System.
- ADS-Route: Spezifiziert die Verbindung zwischen zwei ADS-Routern.
- Port: Identifiziert ein ADS-Gerät.
- Index Group/Offset: Spezifiziert den ADS-Systemdienst, z. B. eine Variable zum Lesen und Schreiben.
Um die Adressierung von Variablen in einer TwinCAT-Laufzeit für den Anwender komfortabler zu gestalten, erstellt TwinCAT ADS-Symbole, welche z. B. mit dem Target Browser durchsucht werden können. Der Target Browser ist auch im Interface for MATLAB®/Simulink® im TC Symbol Interface integriert, sodass ADS-Symbole einfach und schnell selektiert werden können. Ein ADS-Symbol für eine Variable in TwinCAT enthält dann die oben genannten Informationen: AMS NetId, Port, Index Group und Index Offset und darüber hinaus die Bit Size sowie einen Symbolnamen und den Datentyp der Variablen.
Weitere Informationen zu ADS finden Sie unter folgenden Links:
- AMS NetId und Port: ADS device identification
- Index Group und Index Offset: Specification for ADS devices
- ADS Routen: System Node "Routes" und Add Route
- Connecting Devices with same AMS NetId: AmsNAT
- Using MQTT and Message Broker with ADS: ADS-over-MQTT
- TLS encrypted ADS: Secure ADS
- Target Browser: Target Browser
- ADS Kommunikation aufzeichnen: ADS Monitor
Grundlegende ADS-Datenkommunikation
Grundlegend gibt es bei ADS drei unterschiedliche Möglichkeiten/Modi, Daten zu kommunizieren:
Synchrones Lesen oder Schreiben
- Der ADS-Client wartet auf Antwort des ADS-Servers, bevor mit der Ausführung des Codes fortgeschritten wird.
Asychrones Lesen oder Schreiben
- Der ADS-Client sendet eine Lese- oder Schreibanfrage an den ADS-Server, wartet aber nicht auf Antwort, sondern führt weitere Programmteile (z. B. Anfragen an andere Variablen) weiter aus.

Eventbasierte Kommunikation (nur Lesen)
- Es wird nur einmalig eine sogenannte ADS-Notification am Server angemeldet. Die Notification kann „on change“ oder „cyclic“ angemeldet werden. Nach Anmeldung einer Notification am Server sendet dieser ohne weitere Anfragen des Clients an den Server.
