You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

42 lines
1.4 KiB

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")

Powered by TurnKey Linux.