# Modbus TCP: Mehrere Master/Slaves



## Curby (28 Januar 2014)

Hallo,

ich stehe vor der Aufgabe, dass ich mehrere Master habe, die auf die selben Slaves zugreifen - es geht also um Synchronisation/Zugriffsprobleme.

Genauer gesagt habe ich mehrere Touchpanels Master, die auf die selben Wagos Slaves (850) zugreifen. Es werden Lampen gesteuert.

Die Frage ist ganz einfach gestellt: Ich habe auf allen Touchpanels die selbe Oberfläche mit den selben Endpunkten in sagen wir einer einzigen Wago. 
Wenn ich jetzt auf einem Touchpanel eine Lampe an/aus schalte (Modbusvariable auf Wago invertieren), kommt diese Information auch bei den anderen Panels an? (pollt Modbus oder ist das von Gerät zu Gerät unterschiedlich?)
Gibt es Konflikte, wenn mehrere Panels die selbe Variable in der Wago über Modbus adressieren? (wohl ganz wichtig)
Ist das ganze schnell genug bei einer hohen Anzahl von Lampen?

mfg
Jens


----------



## funkey (28 Januar 2014)

Wenn die Wago mehrere TCP-Verbindungen handeln kann, dann sollte es kein Problem sein. Jedes Panel muss den Status aber selber zyklisch abfragen.


----------



## spstiger (6 Februar 2014)

Einer unserer Kunden hatte mit unseren HMI schon einmal Probleme mit einer WAGO 750-841. Die ist durch die Kommunikation in die Knie gegangen:
http://www.spstiger.de/epages/62466762.sf/de_DE/?ObjectPath=/Shops/62466762/Categories/Support__Hilfe/Support/HMI_Support/Kinco_HMI_als_Modbus_TCP_Master

Das lag allerdings weniger an der Wago sondern eher am Treiber des Kinco HMI. Der hatte die SPS durch zu viele Polls überfordert. (Der Treiber ist in den aktuellen Software-Versionen bei Kinco verbessert worden.) 

Generell ist es so, dass Modbus TCP per Polling eine Anfrage an die SPS stellt. Bei einigen HMI kann man diesen Polling-Zyklus einstellen (bei Kinco zum Beispiel nicht). 

Das Modbus-Protokoll schickt dann einen Lese- oder Schreibbefehl an die SPS. Wenn die SPS dann von vielen HMI solche Lesebefehle bekommt, kann das die CPU schon überfordern. Manchmal hilft auch das Umstellen auf Modbus UDP (statt TCP), das ist die verbindungslose Modbus-Variante über Ethernet. Diese wird von vielen Geräten unterstützt.

Konflikte sollte es in dieser Konstellation eigentlich nicht geben. Ein HMI sendet über Modbus TCP einen Schreibbefehl an die SPS. Wenn nun ein anderes HMI auch einen Schreibbefehl schickt, gewinnt der letzte in der SPS verarbeitete Schreibbefehl. Das Modbus-Protkoll sagt hier nur "setze Bit 2034 auf 1 oder 0". Alle HMI werden dann im nächsten Lesezyklus (Poll) den neuen Zustand der SPS bekommen. 

Theoretisch ist es oft auch möglich, die SPS als Master (bei TCP auch Client genannt, weil der die Abfragen oder Befehle schickt) zu konfigurieren. Dann geht die Kommunikation von der SPS aus. Die SPS schreibt dann die Werte in die Speicher der HMI und liest diese aus (für Bedienungen). Das haben einige unserer Kunden auch schon so realisiert. Allerdings muss natürlich die SPS dann schon dafür sorgen, dass sie immer weiß, welches der aktuelle Status ist, und welches Panel im Fall von Konflikten (zwei Panel schreiben oder haben unterschiedliche Werte) der Master ist. Das ist schon etwas komplizierter und muss in der SPS realisiert werden. Im HMI kann man das unterstützen, indem man die Lese- und Schreibvariablen eines Bedienelements (z.B. Schalter) unterschiedlich belegt. Das ist möglich. Vom HMI ausgelesen wird dann der "aktuelle Zustand", den die SPS in das HMI schreibt, vom HMI geschrieben wird eine Dummy-Variable, die von der SPS verarbeitet wird. Wenn sich Dummy-Variable (Sollzustand) und der Ist-Zustand unterscheiden, wird der Ist-Zustand vom SPS-Programm geändert. Dann muss die SPS aber danach diesen Zustand in alle Ist- und Sollzustände aller HMI schreiben. Also schon komplexer.

Es ist übrigens auch möglich, dass nur ein HMI der Client (Master) ist. Das liefert dann die Informationen an die anderen HMI (ebenfalls Slaves) aus. Allerdings ist man dann immer von diesem Master-HMI abhängig und muss die Logik für die Priorisierung auf dem HMI machen. 

Am einfachsten ist also dein Modell, wenn die SPS das schafft.


----------

