Python Modbus RTU Master "Kunbus Way"

Rund um die Software von Revolution Pi
Post Reply
Dan0207
Posts: 2
Joined: 22 Feb 2021, 12:37

Python Modbus RTU Master "Kunbus Way"

Post by Dan0207 »

Hallo,

ich arbeite zum ersten mal mit einem RevPi, mit Raspberrys und ähnlichen Linuxsystemen habe ich bereits einige Erfahrung.
Für das aktuelle Projekt benötige ich neben ein paar DIOs auch eine Modbus RTU Schnittstelle, alles umgesetzt mit Python.
Ich habe mir die Tutorials angesehen und wie ich es verstanden habe, gibt es nun zwei Möglichkeiten die Schnittstelle umzusetzen.

Die eine Möglichkeit ist eine Python Modbus Lib zu nutzen und damit auf die serielle RS485 Schnittstelle zuzugreifen, was vermutlich problemlos funktionieren wird.

Die andere Möglichkeit ist über das Prozessabbild und PiCtory, hier ist mir jedoch noch nicht ganz klar, wie man die Befehle "effizient" umsetzt.
Muss für jeden Slave und jedes Register der Befehl in PiCtory definiert werden?
Insbesondere bei den Schreibbefehlen, wie gebe ich aus dem Python Script vor, welcher Wert geschrieben werden soll?
Oder gibt es eine effizientere Möglichkeit das umzusetzen (Übergabe von Slave- und Registeradresse aus dem Skript, Übergabe des Werts aus dem Skript etc)?
Die Entwickler werden sich sicherlich etwas gedacht haben, als Sie das Prozessabbild und alles drum rum für den RevPi ausgearbeitet haben,
daher würde ich gerne verstehen wie genau man dieses Werkzeug am besten nutzt, anstatt den "faulen Weg" zu gehen und alles über die Python Lib zu lösen.

Auch in der Doku habe ich leider nichts dazu finden können, ich hatte etwas erwartet wie "rpi.io.<meinModbusname>.readholdingregisters" oder ähnliches.

Vielen Dank.
User avatar
dirk
KUNBUS
Posts: 2174
Joined: 15 Dec 2016, 13:19

Re: Python Modbus RTU Master "Kunbus Way"

Post by dirk »

Hi, Dan0207,
Danke für deine interessante Frage
Du erstellst Deine PiCtory Konfiguration. Somit hast Du ein DIO Modul und einen Modbus RTU Master zur Verfügung mit ein paar Klicks.

siehe Tutorial 21 – Modbus RTU Master
Zu guter Letzt erstellst Du Dir ein Python Skript, welches auf die Prozessdaten zugreift. Hilfreich ist hier die RevPiModIO2 Library.
Sicherlich möchtest du die digitalen Ein- und Ausgänge spiegeln zwischen den Modbus RTU Daten.
Hier gibt es ein Beispiel Skript im Forum, welches demonstriert, wie einfach es ist Daten zu spiegeln:
viewtopic.php?f=6&t=2535&p=9196&hilit=bitmirror#p9196

Ich denke der Knackpunkt hier ist, dass Dein Modbus RTU Master in PiCtory durch Rechtsklick "Extended Data" konfigurierbar ist.
Siehe hier "Extended Data" :
https://revolution.kunbus.de/tutorials/ ... enden-con/

Hier trägst Du die Funktion Codes ein und die Frequenz, zum Beispiel Read Input Registers oder Read Holding Registers jede Sekunde.
That’s the Kunbus way.
Dan0207
Posts: 2
Joined: 22 Feb 2021, 12:37

Re: Python Modbus RTU Master "Kunbus Way"

Post by Dan0207 »

Hallo Dirk,

vielen Dank für deine Antwort.

Also werden im definierten Zeitintervall die Daten geschrieben/gelesen, obwohl eventuell sich an den zu sendenden Daten gar nichts ändert oder?
Gut, kenne ich so vom CAN-Bus. Hatte es auf meiner Testhardware (Pi mit RS485 Modul) bisher so gehandhabt dass ich Daten nur wenn es nötig ist sende/empfange.

Muss man beim Modbus ähnlich wie beim CAN-Bus auch auf Auslastung achten?
User avatar
dirk
KUNBUS
Posts: 2174
Joined: 15 Dec 2016, 13:19

Re: Python Modbus RTU Master "Kunbus Way"

Post by dirk »

Hi
Muss man beim Modbus ähnlich wie beim CAN-Bus auch auf Auslastung achten?
Definitiv kann ich diese Frage nicht beantworten. Allerdings denke ich, dass die Auslastung des Busses eine Aufgabe ist, die der Modbus Master übernehmen muss.
Bei Modbus RTU kann es ja nur einen Master pro Bus geben.
Post Reply