ich habe einen Batterieladeregler welchen ich gerne per Modbus-RTU auslesen möchte.
Ich habe dazu vom Hersteller ein Dokument welches die Register beschreibt sowie die Grund Konfiguration.
Leider bekomme ich es einfach nicht hin einen Datensatz zu lesen.
Folgendes habe ich bereits probiert:
Code: Alles auswählen
#!/usr/bin/env python3
import serial
import minimalmodbus
from time import sleep
client1 = minimalmodbus.Instrument('/dev/laderegler', 1, debug=True) # port name, slave address (in decimal)
client1.serial.baudrate = 9200 # baudrate
client1.serial.bytesize = 8
client1.serial.parity = serial.PARITY_NONE
client1.serial.stopbits = 1
client1.serial.timeout = 0.1 # seconds
client1.address = 1 # this is the slave address number
client1.mode = minimalmodbus.MODE_RTU # rtu or ascii mode
client1.clear_buffers_before_each_transaction = True
#client1.BYTEORDER_BIG_SWAP= 2
#driver_temp = client1.read_float(3018, 4, False, 3)
driver_temp = client1.read_register(3018, 0, 4) # read 4bytes (32bit)
print("driver temp: ", driver_temp)
client1.close_port_after_each_call = True
Ich bekomme jedoch leider immer folgenden Fehler:
Code: Alles auswählen
python modbus_min.py
MinimalModbus debug mode. Create serial port /dev/laderegler
MinimalModbus debug mode. Will write to instrument (expecting 7 bytes back): 01 04 0B CA 00 01 13 D0 (8 bytes)
MinimalModbus debug mode. Clearing serial buffers for port /dev/laderegler
MinimalModbus debug mode. No sleep required before write. Time since previous read: 4992932.15 ms, minimum silent period: 4.18 ms.
MinimalModbus debug mode. Response from instrument: 01 04 0B CA 00 01 13 (7 bytes), roundtrip time: 0.0 ms. Timeout for reading: 100.0 ms.
Traceback (most recent call last):
File "/home/pi/Modbus-RTU/modbus_min.py", line 20, in <module>
driver_temp = client1.read_register(3018, 0, 4) # read 4bytes (32bit)
File "/home/pi/.local/lib/python3.9/site-packages/minimalmodbus.py", line 480, in read_register
returnvalue = self._generic_command(
File "/home/pi/.local/lib/python3.9/site-packages/minimalmodbus.py", line 1245, in _generic_command
payload_from_slave = self._perform_command(functioncode, payload_to_slave)
File "/home/pi/.local/lib/python3.9/site-packages/minimalmodbus.py", line 1329, in _perform_command
payload_from_slave = _extract_payload(
File "/home/pi/.local/lib/python3.9/site-packages/minimalmodbus.py", line 1867, in _extract_payload
raise InvalidResponseError(text)
minimalmodbus.InvalidResponseError: Checksum error in rtu mode: '\x01\x13' instead of '?\x92' . The response is: '\x01\x04\x0bÊ\x00\x01\x13' (plain response: '\x01\x04\x0bÊ\x00\x01\x13')
Das Ziel wäre es, den Datensatz 3018 auszulesen.
In der Dokumentation ist folgendes beschrieben:



Kann mir hier bitte jemand weiterhelfen?
Vielen Dank
