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

0 ответов

Другие вопросы по тегам