brenner
Commander
- Registriert
- Apr. 2002
- Beiträge
- 3.037
N´Abend,
weiß gar nicht wie ich das Problem verständlich beschreiben soll.
Ich versuche gerade einen Stromzähler per ModBus RTU mittel RaspBerry auszulesen.
Zum testen habe ich den RS485 Adapter zuerst an ein Windows angeschlossen und diverse Tool ausprobiert. Mit einem habe ich Erfolg gehabt (siehe Screenshot). Dazu musste ich die Ausgabe aber auf "32Bit sw. float" umstellen. Im Screenshot sieht man z.b. bei Zeile 0, 2 und 4 die Spannungen der 3 Phasen.
Mittels Internet habe ich mir ein Script zusammenkopiert was die Register unter Debian ausgibt, allerdings immer nur zwei 16Bit Register und nur Dezimalwerte.
Daraus muss, wenn ich es richtig verstanden habe, ein 32Bit Wert werden und als "sw. float"? ausgeben werden!?
Hier komme ich seit ein paar Stunden nicht weiter weil ich keine Ahnung habe was ich hier tun muss
weiß gar nicht wie ich das Problem verständlich beschreiben soll.
Ich versuche gerade einen Stromzähler per ModBus RTU mittel RaspBerry auszulesen.
Zum testen habe ich den RS485 Adapter zuerst an ein Windows angeschlossen und diverse Tool ausprobiert. Mit einem habe ich Erfolg gehabt (siehe Screenshot). Dazu musste ich die Ausgabe aber auf "32Bit sw. float" umstellen. Im Screenshot sieht man z.b. bei Zeile 0, 2 und 4 die Spannungen der 3 Phasen.
Mittels Internet habe ich mir ein Script zusammenkopiert was die Register unter Debian ausgibt, allerdings immer nur zwei 16Bit Register und nur Dezimalwerte.
Code:
root@rpisrv01:/scripts# ./test01.py
[17255, 26771]
root@rpisrv01:/scripts#
Hier komme ich seit ein paar Stunden nicht weiter weil ich keine Ahnung habe was ich hier tun muss

Code:
#!/usr/bin/python
import pymodbus
import serial
from pymodbus.pdu import ModbusRequest
from pymodbus.client.sync import ModbusSerialClient as ModbusClient #initialize a serial RTU client instance
from pymodbus.transaction import ModbusRtuFramer
#count= the number of registers to read
count=2
#unit= the slave unit this request is targeting
unit=1
#address= the starting address to read from
address=1
client=ModbusClient(method='rtu',port='/dev/ttyUSB0',stopbits=1,bytesize=8,parity='N',baudrate=9600,timeout=1)
#starting add, num of reg to read, slave unit.
result= client.read_input_registers(0x04,count=2,unit=1)
#print(result)
print(str(result.registers))
#closes the underlying socket connection
client.close()
Anhänge
Zuletzt bearbeitet: