Моделирование Modbus между двумя ПК с использованием USB-соединения с libmodbus или pymodbus

Я пытаюсь подключиться к ПК (один главный, один подчиненный), которые будут связываться друг с другом с помощью протокола Modbus, я хочу использовать pymodbus (Python) или libmodbus (C++), чтобы сделать это, но я относительно новичок в Modbus, поэтому я не уверен, с чего начать. Я создал (я думаю) сервер Modbus с pymodbusTCP, но я не уверен, как общаться с другим ПК с помощью pymodbusTCP.

Я написал приведенный ниже код:

      #!/bin/python
import sys
sys.path.append("..")
from pyModbusTCP.server import ModbusServer, DataBank
from time import sleep
from random import uniform

# Create an instance of ModbusServer
server = ModbusServer("127.0.0.1", 12345, no_block=True)

try:
    print("Start server ...")
    server.start()
    print("Server is online")
    while True:
        continue    

except:
    print("Shutdown server ...")
    server.stop()
    print("Server is offline")

и когда я подключаюсь с моего локального хоста (в качестве ведомого), я могу подключиться.

      >>> from pyModbusTCP.client import ModbusClient
>>> 
>>> client = ModbusClient(host="127.0.0.1", port=12345)
>>> client.open()
True
>>>

Что мне нужно сделать, чтобы подключить два ПК, один из которых работает как главный, а другой как подчиненный?

Как я могу отправить запись на катушки, чтобы это произошло?

Любая помощь будет с удовольствием оценена.

ПРИМЕЧАНИЕ: среда - Ubuntu 20.04.

1 ответ

Вы на правильном пути, но упускаете пару вещей:

-Для сервера вам необходимо определить и инициализировать регистры и катушки Modbus.

-На клиенте вам необходимо определить запросы для чтения этих регистров и / или катушек.

Foy pymodbus, лучше всего начать с примеров. Загрузите, отредактируйте порт (по умолчанию это 5020), запустите пример сервера из репозитория GitHub и выполните несколько запросов от вашего клиента с помощью:

      rr = client.read_coils(1, 1, unit=0x01)
print(rr.registers)

Вы можете найти другие типы запросов в любом из примеров асинхронного клиента .

После того, как вы установили и запустили соединение клиент-сервер, вы можете посмотреть детали сервера и, возможно, определить больше подчиненных устройств с разными идентификаторами или настроить регистры с более значимыми значениями.

После того, как вы немного освоитесь с pymodbus, libmodbus должен быть довольно простым.

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