Modbus RPi als Slave betreiben

  • Hallo zusammen,


    ich versuche Daten via Funk zu einem Rpi zu übertragen, der als Slave von einem Master abgefragt wird.

    Bei meinen Recherchen habe ich verschiedene Beispiele mit Arduinos gesehen, würde das auch mit einem Rpi funktionieren?


    Zur Zeit benutze ich einen Rpi als Master um Sondenwerte (Modbus RTU) auszulesen. Verwendet werden folgende Bibliotheken: Minimalmodbus und Pymodbus.

    Diese funktionieren ohne Probleme.


    Der Versuchsaufbau sollte wie folgt aussehen:


    Sonde (Slave) <->Rpi (Master)---------------> Funk --------------------> Rpi (Slave)<->Controller (Master)


    Der Funk stellt erstmal kein Problem da, dafür sollten im Netz ausreichend Beispiele vorhanden sein.


    Nun zu meiner Frage.

    Wie bekomme ich den Rpi(Slave) eingerichtet, dass dieser auf Anfrage des Controllers die Daten im richtigen Format sendet (Beispielsweise: 01 03 00 .....)?


    Der Controller (Master) kann mit foglenden Einstellungen betrieben werden:

    (0x01) Read Coils

    (0x02) Read Discrete Input Registers

    (0x03) Read Holding Registers

    (0x04) Read Input Registers

    unsignes word

    signed word

    u. double word

    s. double word

    float

    bit (of word)


    Ich würde ungern auf einen Arduino umsteigen wollen. Hat das jemand schon einmal versucht?

    Über Ideen oder Anregungen würde ich mich freuen.

  • > Das ist ja jetzt nichts, was hardware-spezifisch wäre ...

    Kommt drauf an wie schnell der Master reagiert. Mit Linux als Slave und RS485 sind schon viele gescheitert wenn der Master ein Mikrokontroller ist...


    Bei TCP oder UDP hat der Master meist ebenfalls ein eher langsames OS mit entsprechenden Timeouts, und zudem puffert ein anstaendiger Lan-Chip auch mindestens einen Frame.

  • Kommt drauf an wie schnell der Master reagiert. Mit Linux als Slave und RS485 sind schon viele gescheitert wenn der Master ein Mikrokontroller ist...

    Die Frage war ja, ob der Pi überhaupt Slave sein kann (was ja afair bei z.B. I2C nicht der Fall ist) ;)

    Ob das dann alles auch zufriedenstellend funktioniert, ist eine andere Sache (als Master klappt das ganz gut, ist aber keine Kunst) ...

    cu,

    -ds-

  • > Die Frage war ja, ob der Pi überhaupt Slave sein kann

    Mit TCP und UDP kann er das sicher, wenn man die passende Software hat (-; oder selber schreiben kann :-)


    Modbus ist ein recht einfaches Protokoll, und wenn man den Master kennt, braucht man meist nur wenige Function Codes zu implementieren.