from pymodbus.client import ModbusTcpClient import struct client = ModbusTcpClient('192.168.0.102') if client.connect(): # Benutzereingabe in Prozent eingabe = input("Gib einen Wert in % ein: ") prozent = float(eingabe) # Umrechnung auf den Wertebereich des Registers registerwert = int(prozent * 320) # Konvertierung des 32-Bit-Werts in Modbus-Registerwerte registers = client.convert_to_registers(registerwert, data_type=client.DATATYPE.INT32) print(f"Got int32: {registers}") # Schreiben in Holding Register 100 (2 Register erforderlich) client.write_registers(14, registers) # Lesen r_druck = client.read_holding_registers(address=10, count=2) r_ist = client.read_holding_registers(address=12, count=2) if not r_druck.isError(): print("Druck:", r_druck.registers) # reg_bytes = struct.pack('>HH', *r_druck.registers) # wert = struct.unpack('>f', reg_bytes)[0] # print(f"Ausgelesener Wert: {wert}") else: print("Fehler beim Lesen:", r_druck) if not r_ist.isError(): print("Ist:", r_ist.registers) # reg_bytes = struct.pack('>HH', *r_ist.registers) # wert = struct.unpack('>f', reg_bytes)[0] # print(f"Ausgelesener Wert: {wert}") else: print("Fehler beim Lesen:", r_ist) client.close() else: print("Verbindung fehlgeschlagen")