Schneider IEM + Minimalmodbus - Daten Auslesung

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
chris1984
User
Beiträge: 2
Registriert: Donnerstag 24. April 2025, 08:21

Guten Morgen,

ich versuche mich das erste Mal an Minimalmodbus und bin eigentlich auch ohne Probleme an Daten gekommen.

Aber ich verstehe jetzt noch nicht richtig wie genau ich die Adresse / Abfrage zu gestalten habe. Was mich verwirrt ist,
ob ich jetzt einen Offset berücksichtigen muss oder nicht.

Meine Vorgabe - ich will diesen Wert auslesen:
  • Adresse: 0xB02B
    Register: 45100
    Registerart: Lesbar
    Größe: 2 (Größe: Die Datengröße in Int16)
    Typ: Float32
    Einheiten: kWh
    Beschreibung: Gesamtwirkenergie-Import
Wie sollte nun diese Auslesung dazu aussehen:

instrument.read_register(45100,0,3,False)

Auszug Doku Minimalmodbus:
read_register(registeraddress: int, number_of_decimals: int = 0, functioncode: int = 3, signed: bool = False) → Union[int, float]
  • registeraddress: The slave register address
    number_of_decimals: The number of decimals for content conversion
    functioncode: Modbus function code. Can be 3 or 4
    signed: Whether the data should be interpreted as unsigned or signed.
Auszug Doku Schneider IEM:
  • Adresse: Eine 16-Bit-Registeradresse im Hexadezimalformat. Bei der Adresse handelt es sich um die Daten, die im Modbus-Frame verwendet werden.
    Register: Eine 16-Bit-Registernummer im Dezimalformat (Register = Adresse + 1)
    Größe: Die Datengröße in Int16

Dankeschön!
chris1984
User
Beiträge: 2
Registriert: Donnerstag 24. April 2025, 08:21

Also ich hatte prinzipiell übersehen dass es ein Float32 ist.

Dh. ich muss zwei Register lesen und dabei eine Nummer tiefer gehen.

instrument.read_registers(45099,2,3) #2 Register lang, Function Code 3

Danach muss ich beide INT Werte in HEX umwandeln und diesen HEXSTRING dann in Float32 umwandeln.

Oder direkt die komfortable Funktion nutzen:
instrument.read_float(registeraddress=45099,functioncode=3,number_of_registers=2,byteorder=0)
Benutzeravatar
noisefloor
User
Beiträge: 4149
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

es wäre noch gut, wenn du noch sagen würdest, welches Python-Modul (inkl. Link zur Projektseite) du verwendet hast. Das macht es für die Nachwelt deutlich einfacher, bei gleichem oder ähnlichem Problem direkt eine komplette, funktionierende Lösung zu haben.

Gruß, noisefloor
Antworten