Forum: Mikrocontroller und Digitale Elektronik Pymodbus mit Beaglebone Black


von Wick D. (wi_di)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich möchte gerne mit einem Beaglebone Black und Modbus RTU Protokoll 
einen Energiezähler auslesen. Im Internet habe ich dafür das Pymodbus 
package gefunden und bereits auf dem BBB installiert. Da ich in sachen 
Python und embedded Linux/BBB totaler Neuling bin, weiß ich jetzt leider 
nicht genau wie ich den Datenaustausch mit Pymodbus zum laufen bringe.

Ich habe mir ein RS485 Serial Cape mit dem MAX3485 gebastelt, welcher 
UART1 und als RTS-Signal GPIO1_28 verwendet (Schaltplan im Anhang). Des 
weiteren habe ich einen PAP gemacht und angehängt.

Zum auslesen der entsprechenden Register muss ich dann lt. Datenblatt 
(siehe unten) den Funktions-Code "03hex - Read Hold. Register" 
verwenden, wobei die Register 36 - 52 (also insgesamt 17 Register) 
ausgelesen werden sollen. Die Adresse des Slave (Energiezähler) ist auf 
01 eingestellt.

Das Modbus-RTU Protokoll setzt sich folgendermaßen zusammen:
Slave Adresse - Funktions Code - Startadresse Daten - Anzahl Register - 
CRC LO_Byte - CRC HI_Byte. Somit ergibt sich zum anfordern der Daten 
folgender Hex-Code: 01 03 00 24 00 11 CRC_LO CRC_HI.

Soweit, so gut. Leider weiß ich nicht wie ich das ganze mit Pymodbus 
umsetzen kann. Kann mir hier vielleicht irgendjemand weiter helfen?

Danke schon mal für eure Hilfe!


Energiezähler:
(http://www.meterbuy.com/fileadmin/user_upload/Data_sheets/120102_SAIA_-_Data_sheet_26-527_EN_DS_Energy-Meter-ALE3-with-Modbus.pdf)

von Mathias O. (m-obi)


Lesenswert?

Ich hab bis jetzt zwar nur libmodbus und freemodbus verwendet, aber ich 
würde es einfach mal probieren wie in diesem Beispiel.
https://pymodbus.readthedocs.org/en/latest/examples/synchronous-client.html

von Wick D. (wi_di)


Lesenswert?

Danke für die Antwort.
Ok dann werde ich es mal damit diesem Beispiel probieren.

Den libmodbus habe ich auch schon gesehen und dazu folgendes gelesen:
https://groups.google.com/forum/#!topic/libmodbus/GH_W4JKKydk

Die patches die beschrieben werden sind zu finden unter:
https://github.com/stephane/libmodbus/pull/139

Allerdings verstehe ich nicht ganz wie ich die files unter
https://github.com/hmis/libmodbus/commit/53c183b0db23e61fbf5bcc122cd40adcae9d4294
verändern soll, wenn ich das package auf meinem BBB installiert habe.
Muss ich die entsprechenden .c und .h files mit z.B. nano aufrufen und 
verändern?

Kann ich dann einfach den Code aus folgender Seite verwenden, um alles 
zum laufen zu bringen? Muss ich das dann einfach in ein main.c packen 
und die entsprechenden header files ergänzen?
http://libmodbus.org/docs/v3.0.6/modbus_read_registers.html

Würde gerne beide, also den pymodbus und den libmodbus ausprobieren.
Danke schon mal für eure Hilfe.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.