ich versuche gerade Temperaturdaten zu lesen. PT100 Sensoren sind verknüft mit einem 10 Kanal Modbus Slave Device (Temco T3-PT10).
Dokumentation:
Address 100~101, Bytes 4
When set INT, 100 will show 0 and 101 show the temperature for channel 1, 250= 25.0C
when set flaot,100 and 101 show 25.0000C
-> Daher lese ich 101 als Adresse aus (103 für den nächsten Kanal usw...)
Minimalmodubs Einstellungen:
Code: Alles auswählen
instrument = minimalmodbus.Instrument('/dev/ttyUSB0', modbusAddress)
instrument.serial.baudrate = 9600
instrument.serial.bytesize = 8
instrument.serial.parity = minimalmodbus.serial.PARITY_NONE
instrument.serial.stopbits = 1
instrument.serial.timeout = 3.0
instrument.debug = False
instrument.mode = minimalmodbus.MODE_RTU
Code: Alles auswählen
#read_float(registeraddress, functioncode=3, numberOfRegisters=2)
temperaturef = instrument.read_float(r, 3, 2)
Code: Alles auswählen
#read_registers(registeraddress,numberOfRegisters,functioncode=3)
temperature = instrument.read_register(r, 1, 3)
Start Reading P3-PT10 2017-03-21 09:47:12
Channel 1 RegisterValue: 17530 Float: 1000.0
Channel 2 RegisterValue: 50043 Float: -251.279998779
Channel 3 RegisterValue: 16681 Float: 10.5799999237
Channel 4 RegisterValue: 49421 Float: -8.81999969482
Channel 5 RegisterValue: 16685 Float: 10.8524999619
Channel 6 RegisterValue: 16684 Float: 10.7725000381
Channel 7 RegisterValue: 49523 Float: -15.1975002289
Channel 8 RegisterValue: 16692 Float: 11.2600002289
Channel 9 RegisterValue: 16688 Float: 11.0524997711
Channel 10 RegisterValue: 16691 Float: 11.1875009537
Fragen:
Kann ich den Wert des Register umwandeln zu Float? Um zu vergleichen ob das gleich retour kommt?
Lese ich korrekt aus?