ich würde gerne einen Eurotherm 3216 via Modbus RTU auslesen, scheitere jedoch bisher.
Was ich bisher gemacht habe:
RS485 Stick aus dem Shop angeschlossen und angesteckt (/dev/ttyUSB0)
Beim 3216 die Addresse auf 5 und die Baudrate auf 19200 eingestellt.
HE mit D+ (A) verbunden
HF mit D- (B) verbunden
HE und HF mit einen 220 Ohm Widerstand verbunden
Minimalmodbus Bibliothek installiert: http://minimalmodbus.readthedocs.io/en/ ... usage.html
Für folgenden Test
Code: Select all
ser = serial.Serial('/dev/ttyUSB0', 19200, timeout=1)
print(ser)
Code: Select all
Serial<id=0x7571fb90, open=True>(port='/dev/ttyUSB0', baudrate=19200, bytesize=8, parity='N', stopbits=1, timeout=1, xonxoff=False, rtscts=False, dsrdtr=False)
Code: Select all
import serial
import minimalmodbus
instrument = minimalmodbus.Instrument('/dev/ttyUSB0', 5) # port name, slave address (in decimal)
instrument.debug = True
print(instrument)
## Read temperature (PV = ProcessValue) ##
temperature = instrument.read_register(1) # Registernumber, number of decimals
print(temperature)
erhalte ich folgende Fehlermeldung:
Code: Select all
minimalmodbus.Instrument<id=0x74d11350, address=5, mode=rtu, close_port_after_each_call=False, precalculate_read_size=True, debug=True, serial=Serial<id=0x757a1270, open=True>(port='/dev/ttyUSB0', baudrate=19200, bytesize=8, parity='N', stopbits=1, timeout=0.05, xonxoff=False, rtscts=False, dsrdtr=False)>
MinimalModbus debug mode. Writing to instrument (expecting 7 bytes back): '\x05\x03\x00\x01\x00\x01ÔN' (05 03 00 01 00 01 D4 4E)
MinimalModbus debug mode. No sleep required before write. Time since previous read: 1519823930887.9 ms, minimum silent period: 2.01 ms.
MinimalModbus debug mode. Response from instrument: '' () (0 bytes), roundtrip time: 50.3 ms. Timeout setting: 50.0 ms.
Traceback (most recent call last):
File "/home/pi/Desktop/program.py", line 10, in <module>
temperature = instrument.read_register(1) # Registernumber, number of decimals
File "/usr/local/lib/python3.4/dist-packages/minimalmodbus.py", line 258, in read_register
return self._genericCommand(functioncode, registeraddress, numberOfDecimals=numberOfDecimals, signed=signed)
File "/usr/local/lib/python3.4/dist-packages/minimalmodbus.py", line 697, in _genericCommand
payloadFromSlave = self._performCommand(functioncode, payloadToSlave)
File "/usr/local/lib/python3.4/dist-packages/minimalmodbus.py", line 795, in _performCommand
response = self._communicate(request, number_of_bytes_to_read)
File "/usr/local/lib/python3.4/dist-packages/minimalmodbus.py", line 930, in _communicate
raise IOError('No communication with the instrument (no answer)')
OSError: No communication with the instrument (no answer)
Folgendes Beispiel verwedet ebenfalls Register 1: https://www.gitbook.com/book/alexdumitr ... oc/details
Mit Pictory war ich ebenfalls erfolglos. Da ich aber im nächsten Schritt Motoren ansteuern möchte, werde ich sowieso bei dieser Variante bleiben müssen.
Ich würde mich sehr freuen, wenn ihr mir weiterhelfen könntet