PyModbusTCP с raspberry Pi 4: как обнаружить катушку записи со стороны клиента и управлять портами GPIO?
Новичок в ModbusTCP здесь.
В настоящее время я работаю над проектом, в котором я собираюсь использовать плату Raspberry pi для управления выходами GPIO (катушки включения / выключения) либо с помощью REST API, либо через протокол modbusTCP. Сторона REST API уже готова и работает.
Что касается протокола modbusTCP, я использую библиотеку PyModbusTCP, которая позволяет мне создавать сервер на RPI. Для тестирования у меня есть клиент ModbusTCP на машине с Windows, который записывает / считывает состояния катушки на сервере Raspberry Modbus (успешно)
Проблема здесь в том, что я не смог найти на стороне сервера никакой функции, которая позволяет мне читать, какие команды были отправлены на стороне сервера, поэтому я не могу приказать GPIO физически открывать / закрывать катушки.
Ниже фрагмент кода, в котором я пытаюсь открыть клиент на самом сервере для чтения состояний катушки. В то же время клиент на стороне Windows пишет на катушке 3. Но я не могу получить никаких результатов.
#!/bin/python
from pyModbusTCP.server import ModbusServer, DataBank
from pyModbusTCP.client import ModbusClient
from time import sleep
from random import uniform
# Create an instance of ModbusServer
server = ModbusServer("0.0.0.0",9004, no_block=True)
try:
print("Start server...")
server.start()
sleep(5)
c = ModbusClient(host="0.0.0.0", port=9004)
c.open()
print("Server is online")
x=[False]
while True:
print(c.read_coils(3,1))
except Exception as e:
print("Shutdown server ...")
server.stop()
print("Server is offline"+str(e))