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