ich arbeite mich zur Zeit in die Anwendung von Modbus mit Python ein, zunächst mit einfachen Tests. Ich erzeuge einen Modbus, in welchem mit einen Client Daten geschrieben werden sollen. Das gelingt bisher nicht.
Server-Code:
Code: Alles auswählen
#!/usr/bin/env python3
from pyModbusTCP.server import ModbusServer, DataBank
from time import sleep
from random import uniform
server = ModbusServer("127.0.0.1", 12345, no_block=True )
#server = ModbusServer("192.168.178.25",12345, no_block=True)
try:
print("Start Server ...")
server.start()
print("Server ist online")
state = [0]
server.data_bank.set_input_registers(0,[int(uniform(0, 100))])
state = server.data_bank.get_input_registers(0)
print("Register 0: " + str(state[0]))
# server.data_bank.set_input_register(0,[int(18)])
while True:
# print("2")
# server.data_bank.set_input_registers(0,[int(uniform(0, 100))])
# server.data_bank.set_input_registers(0, [int(uniform(0, 100))])
if state != server.data_bank.get_input_registers(0):
# print("3")
state = server.data_bank.get_input_registers(0)
print("Wert von Register 0 hat sich geändert zu " +str(state))
sleep(0.5)
continue
except:
print("Shutdown Server ...")
server.stop()
print("Server ist offline")
Code: Alles auswählen
pi@raspitest:~ $ python3 modbusserver
Start Server ...
Server ist online
Register 0: 43
Wert von Register 0 hat sich geändert zu [0]
Code: Alles auswählen
pi@raspitest:~ $ python3
Python 3.7.3 (default, Oct 11 2023, 09:51:27)
[GCC 8.3.0] on linux
Type ...
>>> from pyModbusTCP.client import ModbusClient
>>> client = ModbusClient(host="127.0.0.1", port=12345)
>>> client.open()
True
>>> client.read_input_registers(0, 5)
[27, 0, 0, 0, 0]
>>> client.write_multiple_registers(0, [1,2,5])
True
>>> client.read_input_registers(0, 5)
[27, 0, 0, 0, 0]
>>>