Welcome to our new forum
All users of the legacy CODESYS Forums, please create a new account at account.codesys.com. But make sure to use the same E-Mail address as in the old Forum. Then your posts will be matched. Close

Modbus TCP zwischen 3 und mehr Raspberry Pi's - gelöst

grauerwolf
2017-12-11
2017-12-12
  • grauerwolf - 2017-12-11

    Hallo,
    ich komme mit folgendem Problem nicht klar:
    3 Raspberry's (im Idealfalle auch noch mehr) sollen mit Modbus TCP verbunden werden.
    Die diversen Beispiele im Forum (ModbusMasterSlaveDemo.project) bauen regelrecht darauf, das sich nur 2 Rechner gegenüberstehen und sind auch nicht ganz eindeutig:

    // Typical synchronization issue - it really depends on the application to know, who is responsible for the data.... 
    

    Was ist aber in diesem Falle:

    (die Namensvergabe ist hier nicht ganz sauber dargestellt, z.B. die gleichen Namen im Raspberry 3)

    **edit:mittlerweile habe ich festgestellt, das es schon die Möglichkeit gibt, 2 oder mehr Slave-Devices einzusetzen. Sie müssen nur verschiedene Ports zugewiesen bekommen. Dann kann man ein Slave-Device einem Slave zuordnen. Stürzt ein Slave-Device ab, ist nur eine Modbus-Verbindung betroffen. **

    Die Skizze macht das Dilemma richtig deutlich. >Zitat:
    to know, who is responsible for the data....

    Ich habe im ganzen Internet noch nichts darüber gefunden. Wäre toll, wenn sich einer des Problems annehmen würde.
    edit:
    aber durch viel Geduld bekommt man den Begriffs-Kauderwelsch hin.

    Viele Grüße
    Thomas

    IMG: ModbusTCP_1.jpg

     
  • grauerwolf - 2017-12-12

    So - nun habe ich es vielleicht verstanden (auf jeden Fall wackeln die Daten hin und her).
    Ich bin wahrscheinlich nicht so klar gekommen mit den Begriffen "Master" und "Slave", vor allem aber nicht mit "Slave Device". Letzteres gab es in Codesys 2.3 (mit Wagos) nicht und deshalb habe ich es nicht für voll genommen. Ich habe mir noch kein Beispiel ausdenken können, wo diese Dreifaltigkeit besonderen Sinn macht. Aber wird's wohl irgendwo von Vorteil sein.

    Für mich sind die Begriffe "Server" für das "Slave Device" verständlicher und SLave kann man mit "Client" vergleichen. Der Server sitzt nur rum und wartet, das ein Client Daten liefert oder abholen will - und dazu auch noch weiss, wo sie liegen !!! Er braucht auch nicht die IP des Clients zu wissen, er will mit seiner Server-IP vom Client direkt angesprochen sein. Also wie im richtigen Leben...

    Der Server kann dabei mehrere Clients bedienen.

    Der Client ist derjenige, der den Server sucht und die IP vom Server wissen muss (wird im Slave konfiguriert). Da auf dem Server meist mehr Daten liegen, als er liefern oder abholen will, muss er wissen, wo seine spezifischen Daten gelagert sind. Dieser Ort wird mit dem OFFSET bestimmt.
    Der Offset bezieht sich immer auf die Position im Server.

    Hier ist das mal verdeutlicht für 2 Verbindungen in einem Netzwerk:

    Da 3 Raspberry's auch 3 Verbindungen benötigen - hier die Dritte:

    Mit diesem Verständnis traue ich mir zu, auch noch mehr Verbindungen herzustellen. Ich muss nur weitere Slave-Devices bzw. Slaves einfügen.
    Immer nach der Vorgabe: ein Slave will zu einem Slave-Device.

    Wer das alles schon gewusst hat - warum hat er's mir nicht vorher gesagt ...
    Falls noch Irrungen enthalten sind - bitte korrigieren.

    Schönen Abend noch
    Grüße
    Thomas

    IMG: ModbusTCP_2.jpg

    IMG: ModbusTCP_3.jpg

     

Log in to post a comment.