Моделирование 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 должен быть довольно простым.