# Modbus Slave in e!cockpit



## Bazarov (8 Mai 2022)

Hallo zusammen,
Ich habe ein Modbus-Slave-Gerät (nicht WAGO), das von einer Software ausgelesen werden muss, die ein Modbus-Master ist. Zwischen diesem Gerät und der Software befindet sich ein WAGO-Controller der Serie 8212. Ich will zunächst die Geräteinformationen des Modbus-Slaves von WAGO, der Modbus-Master ist, auslesen und sie der Software wieder als Modbus-Slave zur Verfügung stellen. Dazu habe ich einen Generic Modbus Slave und einen WAGO-Controller im Network Grid angelegt. Die Adressen der Register habe ich im Generic Modbus Slave definiert. Dann habe ich Ethernet mit dem WAGO-Controller im Network Grid verbunden. Im Bereich Modbus-Konfigurator habe ich diese Modbus-Slave-Register auf den WAGO Modbus-Master gemappt. Dann habe ich in Network Grid einen Generic Modbus Master erstellt und diesen mit dem Ethernet-Controller verbunden. Dann habe ich mehrere Variablen in der Programmumgebung definiert. Dann habe ich im Device-Bereich und im Modus-Slave-Bereich neue Variablen angelegt, die ich jeweils zu den Variablen hinzugefügt habe, die ich vorher in der Programmumgebung definiert hatte, und dann habe ich den Generic Modbus Slave hier im Map-Bereich gemappt.

Das Problem, das ich habe, ist, dass das Ändern der Werte der Generic Modbus Slave-Register nicht die Werte des Modul-Slave-Controllers ändert, obwohl er gemappt ist.
Hat jemand eine Idee, wo das Problem liegt?

Ich danke euch im Voraus.


----------



## KLM (9 Mai 2022)

Moin, wenn Du die Modus-Variablen aus dem Konfigurator nicht im Quellcode verwendest, erkennt der Kompiler das und optimiert die aus dem Code raus. Entweder Du rufst die Variablen daher im Code auf, oder änderst im Master (also dem Controller in e!COCKPIT) in den Einstellungen (Fenster rechts) unter der Registerkarte "Modbus Master" die Einstellung "Variablen aktualisieren" von "Nur bei Verwendung im SPS-Task" auf "Immer aktualisieren".


----------



## Bazarov (9 Mai 2022)

Bitte schaue die Bilder an:

Ich habe SDI1 ...SDI5 im Gerät (Modbus Slave).
sie wurden in WAGO(Modbus Master) gemappt.
diese gemappten Register wieder in WAGO(Modbus Slave) gemappt.
Wenn sich SDI1..SDI5 ändern, sollte sich auch MDI1...MDI5 ändern, was aber nicht geschieht.


----------



## holgermaik (9 Mai 2022)

Ebenfalls auch in den Einstellungen (Fenster rechts) unter der Registerkarte "Modbus Slave" die Einstellung "Variablen aktualisieren" von "Nur bei Verwendung im SPS-Task" auf "Immer aktualisieren".
Im Feldbuskonfigurator (linkes Fenster) ist der Zugriff falsch eingestellt (Write Only).


----------



## Bazarov (9 Mai 2022)

holgermaik schrieb:


> Ebenfalls auch in den Einstellungen (Fenster rechts) unter der Registerkarte "Modbus Slave" die Einstellung "Variablen aktualisieren" von "Nur bei Verwendung im SPS-Task" auf "Immer aktualisieren".
> Im Feldbuskonfigurator (linkes Fenster) ist der Zugriff falsch eingestellt (Write Only).


Beide Einstellungen habe ich gemacht. Das funktioniert immer noch nicht.


----------



## holgermaik (10 Mai 2022)

So sollte der Grid aussehen



So sollte die Einstellung im Feldbuskonfigurator sein



in den Einstellungen 
Modbus Master - Variablen aktualisieren - immer aktualisieren
Modbus Slave - Variablen aktualisieren - immer aktualisieren

Dann sollte es funktionieren wie du möchtest.


----------



## KLM (10 Mai 2022)

Wie @holgermaik es indirekt schon aufzeigt, Du brauchst einen generischen Master, wenn der Controller Slave sein soll, damit er seine Slave-Funktionalität aktiviert.


----------



## Bazarov (11 Mai 2022)

holgermaik schrieb:


> So sollte der Grid aussehen
> Anhang anzeigen 60970
> 
> 
> ...



Kannst du bitte deine Einstellungen in "Device>Modbus Slave" teilen?


----------

