Controller (Master) mit Controller (Slave) verbinden
Das prinzipielle Vorgehen entspricht größtenteils der Beschreibung unter Controller (Master) mit Feldbuskoppler (Slave) verbinden. Der Hauptunterschied ist die Zuweisung der Kommunikationsrichtung. Die Zuweisung erfolgt nicht automatisch, da programmierbare Geräte sowohl Master- als auch Slave-Funktionen erfüllen können. Die Rolle muss also konfiguriert werden. Außerdem müssen die Datenpunkte programmierbarer Slave-Geräte für die Kommunikation erstellt und konfiguriert werden.
Geräte in der Kommunikationssicht platzieren
- Wählen Sie die Controller aus dem Produktkatalog aus und ziehen Sie diese mit der Maus in die Netzwerkansicht (Kommunikationssicht).

Verwendete I/O-Module in der Gerätedetailansicht konfigurieren
- Öffnen Sie die Gerätedetailansicht (wahlweise grafisch oder tabellarisch), indem Sie doppelt auf den Controller klicken.
- Ordnen Sie die verwendeten I/O-Module analog zu Ihrer Hardware an, indem Sie diese aus dem Produktkatalog hinter das Gerät ziehen.
- Parametrieren Sie die I/O-Module bei Bedarf, indem Sie diese auswählen und jeweils im Bedienfeld „Einstellungen“ Änderungen vornehmen.
- Wechseln Sie zurück zur Netzwerkansicht.
- Verfahren Sie ebenso mit dem zweiten Gerät.
Geräte verbinden
Überlegen Sie zunächst, welches der Geräte als Master und welches als Slave dienen soll, da die Reihenfolge, in welcher Sie die Geräte miteinander verbinden, für die Geräterollen relevant ist. Die Verbindungslinie beginnt beim Master und endet beim Slave.
- Klicken Sie in der Netzwerkansicht (Kommunikationssicht) auf den grauen Konnektor (ETHERNET/Modbus) des Masters und halten Sie die Maustaste gedrückt.
- Ziehen Sie die Verbindungslinie auf den gleichartigen Konnektor des Slaves und lassen Sie die Maustaste los, sobald ein grünes Pluszeichen erscheint.
- Die Geräte sind verbunden. An dem Pfeil der Verbindungslinie erkennen Sie die von Ihnen zugewiesene Rolle der Geräte: Die Verbindungslinie beginnt beim Master und endet beim Slave.

Tipp: Sie können die Geräterollen Master und Slave bei Bedarf auch nachträglich ändern. Klicken Sie dazu auf den Modbus-Konnektor eines der beiden Geräte und anschließend auf [Kommunikationsbeziehung]. Die aktuelle Kommunikationsbeziehung ist blau hinterlegt und wird an erster Stelle angezeigt. Bei Bedarf wählen Sie einen anderen Eintrag aus.

Protokoll für die Verbindung festlegen
- Um das Protokoll für die Verbindung festzulegen, klicken Sie im Kontextmenü des Modbus-Konnektors oder der Verbindung auf die Schaltfläche [Protokoll].
- Wählen Sie die gewünschte Verbindung aus (in diesem Beispiel „Modbus (TCP)“).

Die Auswahlmöglichkeiten hängen von den verwendeten Geräten ab.
Geräteeinstellungen im Bedienfeld „Einstellungen“ festlegen
Einstellungen oder Parameter der eingefügten Geräte ändern Sie im Bedienfeld „Einstellungen“. Das Bedienfeld ist standardmäßig geöffnet. Ist dies nicht der Fall, öffnen Sie es über das Kontextmenü des Gerätes und die Schaltfläche [Einstellungen].

- Selektieren Sie das Gerät in der Netzwerkansicht.
- Register, Eingabemasken und Auswahlfelder innerhalb des Bedienfeldes „Einstellungen“ sind gerätespezifisch. Angezeigte Einstellmöglichkeiten hängen vom Inhalt der jeweiligen Gerätebeschreibungsdatei ab.
- Nehmen Sie allgemeine Einstellungen bezüglich Gerät, SPS und Lokalbus in den ersten Registern vor. Ändern Sie beispielsweise die IP-Adresse.
- Nehmen Sie Modbus-Einstellungen im Register „Modbus“ vor.
- Verfahren Sie ebenso mit dem zweiten Gerät.
Applikation programmieren
- Wählen Sie den Controller (Master) aus.
- Öffnen Sie das Bedienfeld „Programmstruktur“, indem Sie im Register „ANSICHT“ des Menübandes auf die Schaltfläche [Programmstruktur] klicken.
- Erstellen Sie Ihr Programm (im Hauptprogramm „PLC_PRG“ oder in einer POU).
- Kompilieren und validieren Sie Ihr Programm im Register „PROGRAMM“ mittels [Übersetzen].
Slave konfigurieren
Die Konfiguration des Slaves nehmen Sie im Datenpunktkonfigurator vor.
- Um zum Datenpunktkonfigurator zu gelangen, klicken Sie doppelt auf die Gerätekachel des Slave-Gerätes.
- Die Gerätedetailansicht wird geöffnet. Der Modbus-Datenpunktkonfigurator öffnet sich im Register „Modbus-Slave“ der Gerätedetailansicht.
- Legen Sie nun fest, welche Datenpunkte der Slave über den Feldbus bereitstellen soll. Sie haben folgende Möglichkeiten, die im Folgenden erläutert werden:
• Bereits bestehende Variablen aus der Applikation verwenden
• Variablen von I/O-Modulen verwenden
• Generische Datenpunkte anlegen
Bereits bestehende Variablen aus der Applikation verwenden:
Da in diesem Fall ein programmierbares Gerät als Slave verwendet wird, bestehen die Datenpunkte des Slaves u. a. aus Variablen der Slave-Applikation. Diese können direkt aus der Applikation ausgewählt und angelegt werden.
- Klicken Sie im Kontextmenü von „Programmvariablen“ auf [Hinzufügen aus Programm].
- Wählen Sie eine bestehende Variable aus der Applikation des Slaves aus.
- Hinweis: Einfache Datentypen werden direkt über Modbus übertragen, während komplexe Datentypen (u. a. Strukturen) auf Word-Arrays abgebildet werden. Diese werden dann stellvertretend über Modbus übertragen. Sofern der verwendete Datentyp global im Projekt bekannt ist, kann der Master direkt auf die Einzelelemente der komplexen Variablen zugreifen, obwohl Modbus einen solchen Datentyp selbst nicht verwendet (siehe auch Zugriff auf einfache und komplexe Datentypen).
- Übernehmen Sie diese mit [OK].
- Wählen Sie die Kommunikationsrichtung aus (Eingang, Ausgang oder Ein-/Ausgang).
- Sie können den neuen Datenpunkt verwenden.
Variablen von I/O-Modulen verwenden:
- Um Variablen von I/O-Modulen in Ihrer Applikation zu verwenden, wechseln Sie zunächst im Datenpunktkonfigurator zum Register „Lokalbus E/A-Abbild“.
- Wählen Sie in der Gerätedetailansicht das I/O-Modul aus, auf dessen Variablen Sie zugreifen möchten.
- Legen Sie Variablen für die einzelnen Kanäle der I/O-Module an (hier „var1“ und „var2“).
- Diese Variablen stehen global zur Verfügung.
- Wechseln Sie zurück in den Datenpunktkonfigurator. Klicken Sie dazu auf den Controller und dann auf das Register „Modbus-Slave“.
- Klicken Sie im Kontextmenü von „Programmvariablen“ auf [Hinzufügen].
- Ein neuer Datenpunkt „ModbusDataPoint“ wird angelegt.
- Wechseln Sie in die Applikation des Slaves und weisen Sie dem erstellten Datenpunkt die Lokalbus-Variable des I/O-Moduls zu.

Hinweis
Variablen von I/O-Modulen immer über neu angelegte Datenpunkte abbilden!
Verwenden Sie für Variablen von I/O-Modulen die Schaltfläche [Hinzufügen] (wie zuvor beschrieben) und nicht [Hinzufügen aus Programm].
Sie könnten die Variable zwar auch mittels [Hinzufügen aus Programm] auswählen (die Variable wird unter „Programmvariablen“ angezeigt), jedoch ist auf diesem Weg kein Zugriff möglich, da bereits über den Lokalbus auf die Variable zugegriffen wird.
Wenn Sie auf [Code erzeugen] klicken, wird eine entsprechende Fehlermeldung im Meldungsfenster ausgegeben: var1: map to existing variable with address is not allowed!
Verwenden Sie aus diesem Grund [Hinzufügen aus Programm] nur für Applikationsvariablen, nicht für Variablen von I/O-Modulen.
Generische Datenpunkte anlegen:
Es gibt Anwendungsfälle, bei denen es sinnvoll ist, generische Datenpunkte zu verwenden. Sie können beispielsweise mehrere Datenpunkte zu einem Register zusammenfassen. Sie können dann von verschiedenen Mastern aus zugreifen, ohne für jeden Zugriff im Master manuell Kanäle anlegen zu müssen.
- Um neue generische Datenpunkte zu erstellen, klicken Sie im Kontextmenü von „Generische Datenpunkte“ auf [Hinzufügen].
- Passen Sie bei Bedarf den Datentyp und die Modbus-Adresse an.
- Klicken Sie im Kontextmenü der Variable auf [Bearbeiten] und passen Sie bei Bedarf weitere Einstellungen an, z. B. Einstellungen zu Funktionscodes.
Hinweis: Generische Datenpunkte sind nicht über die Slave-Applikation verfügbar.
Verbindung zwischen Master und Slaves konfigurieren
Die Verbindung zwischen Master und Slaves konfigurieren Sie im Feldbuskonfigurator. Hier werden hauptsächlich Verbindungseinstellungen vorgenommen, zu übertragende Variablen angezeigt und neue Variablen angelegt.
- Klicken Sie auf den Modbus-Konnektor eines der beiden verbundenen Geräte.
- Öffnen Sie den Modbus-Feldbuskonfigurator, indem Sie auf die Schaltfläche [Konfigurator] klicken.
- Der Feldbuskonfigurator wird geöffnet. Die Verbindung wird im Kopfbereich des Konfigurators angezeigt. Falls mehrere Slaves mit einem Master verbunden sind, können Sie die Auswahl unter „Selektierte Verbindung“ ändern.
- Der Feldbuskonfigurator ist in zwei Spalten unterteilt:
Auf der linken Seite werden die Variablen dargestellt, die über den Bus vom Slave zum Master übertragen werden.
Die rechte Seite zeigt die auf dem Slave verfügbaren Datenpunkten an. Neben „Programmvariablen“ werden „Generische Datenpunkte“ und weitere Standardvariablen angezeigt, die automatisch jedem Modbus-Slave zur Verfügung stehen („WAGO Modbus special register“). - Wählen Sie in der rechten Spalte einen Slave-Datenpunkt aus, auf den der Master zugreifen soll.
Tipp: Mit gedrückter Steuerungstaste wählen Sie mehrere Datenpunkte aus. - Klicken Sie im Kontextmenü des Datenpunktes auf [Bereitstellen].
- Die Variable wird in der Master-Applikation erzeugt. Damit wird die Verbindung zum Slave-Datenpunkt hergestellt.
- Sie sehen den Slave-Datenpunkt (1), die erstellte Variable auf dem Master (2), das Auswahlfeld zur Anpassung des Datentyps (3), die Zykluszeit für die Aktualisierung der Variablen über Modbus (4) und die Art des Modbus-Zugriffs auf die Variablen (5).
ReadOnly (RO): Master liest den Ausgang des Slaves
WriteOnly (WO): Master schreibt auf den Eingang des Slaves
ReadWrite (RW): Master liest den Ausgang/schreibt den Eingang des Slaves - Passen Sie ggf. die Zykluszeit (Spalte T [ms]) auf die benötigte Zykluszeit an.
- Sie können die Master-Variable nun in der Applikation des Masters verwenden.
Auf Datenpunkte zugreifen
- Öffnen Sie die Programmstruktur und das Hauptprogramm des Masters.
- In der Applikation des Masters erfolgt der Zugriff auf die Variable, wie in der folgenden Abbildung dargestellt.
- Tipp: Die Eingabehilfe zur einfachen Auswahl der Variable öffnen Sie mittels Taste [F2].
- Auf diese Weise wurde ein vorhandener Slave-Datenpunkt über Modbus zugänglich gemacht und in der Master-Applikation ausgelesen.