Modbus Herausforderung für einen Neuling

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
hudyhud
User
Beiträge: 3
Registriert: Dienstag 6. März 2018, 14:16

Hallo zusammen,

vom Prinzip möchte ich einen Sensor über eine RS485 Schnittstelle mit dem RPi3 auslesen.
Meine Versuche über die unterschiedlichen Pakete war erfolglos. Naja aufgeben möchte ich noch nicht.
Aktuell bin ich mit dem Paket minimalmodbus am werkeln.

Was ich dazu verwende:
Rpi3 mit folgender Platine
https://www.pollin.de/p/joy-it-rs485-br ... rry-810833

Der Sensor hat folgende Eigenschaften:
Register:40001
Adresse Sensor: 1
Messmodus (0x03) Read Holding Registers
Data Type: float (double word)
length: 2
R/W: r
Baudrate: 19200
Bytes: 8
Stopbits:1
P:None
BigEndian

Code: Alles auswählen

#python 2.7
import minimalmodbus
#import binascii
import time
import serial


instrument = minimalmodbus.Instrument('/dev/ttyAMA0',1) #modbusAddress)
instrument.serial.baudrate = 19200
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

data = instrument.read_registers(registeraddress=40001,
                                 numberOfRegisters=2 functioncode=4)

#read_float(registeraddress, functioncode=3, numberOfRegisters=2)
t2 = instrument.read_float(40001, 3, 2)

t1 = instrument.read_register(40001, 2, 3)
Ich muss dazu sagen, dass mir die Struktur noch fehlt.
Mit mit den drei Varianten wollte ich probieren wenigstens überhaupt einen Wert zu bekommen. Fehlanzeige.
Hat jemand von Euch einen Tipp, wie ich der Lösung etwas näher kommen könnte? :K
Oder kann es auch an der Schnittstelle vom RPI liegen? (UART )
Vielen Dank schon mal.
__deets__
User
Beiträge: 14533
Registriert: Mittwoch 14. Oktober 2015, 14:29

Hast du die serielle Schnittstelle aktiviert? Dazu muss ein overlay in die config.txt aufgenommen, das seinerseits den BlueTooth controller deaktiviert - weil der sich auf die Schnittstelle klemmt. Wenn man das nicht macht, dann bekommt man eine serielle Schnittstelle die leider keinen stabilen Takt hat und damit fuer praktische Anwendungen nutzlos ist.
hudyhud
User
Beiträge: 3
Registriert: Dienstag 6. März 2018, 14:16

Code: Alles auswählen

# NOOBS Auto-generated Settings:
hdmi_force_hotplug=1
enable_uart=1
dtoverlay =pi3-miniuart-bt
Meinst du diesen dtoverlay ?
Sollte soweit passen. Bei der /dev/... habe ich nur diese beiden "Schnittstellen" verfügbar ttyAMA0 und serial0.
__deets__
User
Beiträge: 14533
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich habe

dtoverlay=pi3-disable-bt.dtb

aber gerade mal in die Kernelquellen geschaut - ja, auch deins scheint richtig zu sein.

Ansonsten wuerde ich halt nen Oszi anhaengen & mir anschauen, ob und was da so ueber die Leitung geht. Weiter auskennen mit modbus tu ich mich leider nicht, gegebenenfalls hast du da mehr Erfolg im deutschen Raspberry-PI-Forum, da sind mehr Hardwarenahe Leute unterwegs als hier.
hudyhud
User
Beiträge: 3
Registriert: Dienstag 6. März 2018, 14:16

Vielen Dank schon mal. Zuvor hatte ich in der Datei etwas gelöscht. Vill ist dies das Porblem.
Antworten