commit
1dce1cfe20
@ -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")
|
||||||
@ -0,0 +1 @@
|
|||||||
|
pymodbus
|
||||||
@ -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")
|
||||||
Loading…
Reference in new issue