pyModbusTCP Raspberry Pi для подключения к ПК eth0
История до сих пор. Я настраивал сервер и клиент, используя очень полезный учебник Йоханнеса на YouTube. Первоначально я делал это на Raspberry Pi без каких-либо проблем, используя localhost.
https://github.com/Johannes4Linux/Simple-ModbusTCP-Server/blob/master/Simple_ModbusServer.py
Затем я попытался настроить клиент на моем ПК с Windows, используя порт Ethernet, и подключиться к серверу (Pi).
Я использовал IP-адрес "inet" из команды "ifconfig" внутри Pi, а не адрес из "ipconfig" в окнах (они были разными).
client = ModbusClient(host="192.168.0.16", port=502, debug=True)
client.open()
connect error
False
Я попытался пропинговать этот адрес "cmd" из окон, но время ожидания соединения прервалось.
ping 168.168.0.16
Pinging 168.168.0.16 with 32 bytes of data:
Request timed out.
Такое чувство, что я упускаю что-то действительно очевидное. Если кто-то может мне помочь, я был бы очень признателен.
1 ответ
Хорошо, оказывается, я немного встревожен. И многие важные концепции отсутствовали в моей реализации.
Отладка проблемы с помощью
ipconfig/all
обнаружил, что ipV4 = 192.168.4.180(дубликат)
Я установил IP-адрес на ПК и Pi, я забыл, что изменил файл dchpcd.conf. Итак, устройства пытались получить один и тот же адрес в сетевой подсети.
Приведенная ниже реализация сработала для меня:
Настройка на Pi
from pyModbusTCP.server import ModbusServer, DataBank
server = ModbusServer(host="192.168.4.181", port=502, no_block=True)
Настройка на ПК
from pyModbusTCP.client import ModbusClient
client = ModbusClient(host="192.168.4.181", port=502)
client.open()
Я нашел это руководство очень полезным в моем заклинании по обновлению сети: https://www.ionos.co.uk/digitalguide/server/configuration/provide-raspberry-pi-with-a-static-ip-address/#:~:text=To%20assign%20an%20IP%20address, с% 20the% 20IPv4%20address%20192.168 .
Я счастлив удалить это, но подумал, что оставлю его здесь на всякий случай, если кто-то сочтет его полезным. Обычно я отвечаю на свой вопрос, но иногда бывает полезно просто формализовать собственное невежество в черно-белых тонах.