Modbus Slave in e!cockpit

Bazarov

Level-1
Beiträge
17
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
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.
 
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".
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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.
 

Anhänge

  • Mslave1.jpg
    Mslave1.jpg
    89,5 KB · Aufrufe: 50
  • Mslave2.jpg
    Mslave2.jpg
    109,6 KB · Aufrufe: 49
  • Mslave3.jpg
    Mslave3.jpg
    60,1 KB · Aufrufe: 50
  • Mslave4.jpg
    Mslave4.jpg
    42,2 KB · Aufrufe: 49
  • Mslave5.jpg
    Mslave5.jpg
    76,5 KB · Aufrufe: 45
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).
 
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.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
So sollte der Grid aussehen
Grid.jpg

So sollte die Einstellung im Feldbuskonfigurator sein
Feldbuskonfigurator.jpg

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

Dann sollte es funktionieren wie du möchtest.
 
Wie @holgermaik es indirekt schon aufzeigt, Du brauchst einen generischen Master, wenn der Controller Slave sein soll, damit er seine Slave-Funktionalität aktiviert.
 
Zurück
Oben