Konfigurationsdatei
Der TwinCAT ADS Router wird durch eine XML-Datei konfiguriert, um eine ADS-over-MQTT-Verbindung mit einem Message Broker herzustellen. Diese Konfigurationsdatei wird unter einem beliebigen Namen in dem folgenden Verzeichnis abgelegt:
\TwinCAT\3.1\Target\Routes
Im Kapitel Beispiele finden Sie exemplarische Konfigurationsdateien für alle unten beschriebenen Anwendungsfälle.
![]() | Aktivieren einer neuen ADS-over-MQTT-Konfiguration Neue oder geänderte ADS-over-MQTT-Konfigurationen werden erst dann übernommen, wenn der TwinCAT ADS Router initialisiert wird. Dies erfolgt beispielsweise in den TwinCAT-Übergängen von RUN nach CONFIG oder auch CONFIG nach CONFIG. |
![]() | Pfadangaben Bitte beachten Sie, dass Sie bei etwaigen Pfadangaben in der Konfigurationsdatei die für Ihr Betriebssystem korrekte Schreibweise verwenden. |
Basis-Konfiguration
Die Basis-Konfiguration enthält immer die folgenden Elemente:
Adresse des Message Brokers, dessen TCP-Port, sowie den Namen des virtuellen Netzwerks.
Die Adresse des Brokers und der TCP-Port, unter dem dieser erreichbar ist, werden hierbei über den <Address>-Knoten angegeben. Das virtuelle Netzwerk wird über den <Topic> Knoten definiert. In dem folgenden Beispiel wird eine Verbindung zu einem lokal (127.0.0.1) installierten Message Broker und dem TCP-Port 1883 hergestellt. Als virtuelles Netzwerk wird „VirtualAmsNetwork1“ definiert“.
<?xml version="1.0" encoding="ISO-8859-1"?>
<TcConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.beckhoff.com/schemas/2015/12/TcConfig">
<RemoteConnections>
<Mqtt>
<Address Port="1883">127.0.0.1</Address>
<Topic>VirtualAmsNetwork1</Topic>
</Mqtt>
</RemoteConnections>
</TcConfig>
NoRetain
Über das NoRetain-Attribut lässt sich der Kommunikationsablauf für das Geräte-Discovery anpassen. Durch das Setzen von NoRetain = true, basiert die Geräte-Suchfunktion nicht länger auf Retain-Nachrichten. Stattdessen wird ein Handshake-Mechanismus verwendet, um alle verbundenen ADS-Teilnehmer zu identifizieren.

Unidirectional
Über das Unidirectional-Attribut lassen sich eingehende ADS-Nachrichten für dieses System blockieren. Ein typischer Anwendungsfall könnte zum Beispiel ein Engineering-System sein, welches zwar die Runtime-Systeme über ADS erreichen können soll, jedoch nicht umgekehrt.

TLS
Über den <TLS>-Knoten lassen sich Einstellungen für eine Absicherung des Transportkanals über TLS definieren. Es stehen diverse Verbindungsmöglichkeiten zur Verfügung, z. B. die Konfiguration von Client-Zertifikaten oder PSK. Unsere Beispiele zeigen alle möglichen Konfigurationsvarianten auf.
TLS IgnoreCn
Über das IgnoreCn-Attribut lässt sich die Überprüfung des CommonName (CN) vom Serverzertifikat deaktivieren.

TLS PSK
Bei der Verwendung von TLS mit einem Pre-shared Key (PSK), können Sie den PSK entweder als Hex-kodierten, 64 Zeichen langen String angeben, oder TwinCAT die Konvertierung intern mittels Sha256(Identity + Pwd) überlassen. In letzterem Fall lässt sich über das Attribut IdentityCaseSensitive festlegen, dass TwinCAT die Identity als UpperCase für die Berechnung verwenden soll. Unsere Beispiele zeigen beide möglichen Konfigurationsvarianten auf.
User
<?xml version="1.0" encoding="ISO-8859-1"?>
<TcConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.beckhoff.com/schemas/2015/12/TcConfig">
<RemoteConnections>
<Mqtt>
<Address Port="1883">127.0.0.1</Address>
<Topic>VirtualAmsNetwork1</Topic>
<User>CX-12345</User>
</Mqtt>
</RemoteConnections>
</TcConfig>
Das Element <User> gibt eine Identität an, welche im TcMqttPlugin genutzt werden kann, um Zugriffsrechte zwischen ADS-Geräten zu konfigurieren. Üblicherweise wird die Identität jedoch durch andere Mittel definiert, z. B. den CommonName (CN) eines Clientzertifikats.
Optional kann das <Mqtt>-Element ein ClientId-Attribut enthalten, um die MQTT-ClientID anzugeben. Diese wird ansonsten aus dem <User> und einem beliebigen String gebildet.