commit 1dce1cfe20f7f0d48f7ed30527a6739165ad6926 Author: Samuel Zielke Date: Tue Oct 14 13:06:40 2025 +0200 First Commit diff --git a/read.py b/read.py new file mode 100644 index 0000000..d13b61c --- /dev/null +++ b/read.py @@ -0,0 +1,27 @@ +from pymodbus.client import ModbusTcpClient +import time +from datetime import datetime + +input_zone = input("Bereich [0, 11, ...]: ") +input_client = input("Client [101, 102, ...]: ") +print("\n") + +client = ModbusTcpClient(f'192.168.{input_zone}.{input_client}') + +if client.connect(): + print(f"✅ Verbindung Hergestellt: [192.168.{input_zone}.{input_client}] \n") + try: + while True: + r_ist = client.read_holding_registers(address=12, count=2) + if not r_ist.isError(): + # aktuellen Zeitstempel erzeugen + timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S") + # Ausgabe in derselben Zeile + print(f"\r{timestamp} | Ist: {r_ist.registers}", end="", flush=True) + time.sleep(0.5) + except KeyboardInterrupt: + print("\nBeendet.") + finally: + client.close() +else: + print("Verbindung fehlgeschlagen") \ No newline at end of file diff --git a/requierements.txt b/requierements.txt new file mode 100644 index 0000000..b5140c7 --- /dev/null +++ b/requierements.txt @@ -0,0 +1 @@ +pymodbus diff --git a/test.py b/test.py new file mode 100644 index 0000000..e242529 --- /dev/null +++ b/test.py @@ -0,0 +1,42 @@ +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") \ No newline at end of file