Клиент Modbus TCP не подключается
Справочная информация:
Я пытаюсь прочитать данные с моего счетчика энергии. Я подключил модем gprs к порту счетчика (через rs485). Этот модем отправляет данные по протоколу tcp-ip на указанный сервер и порт. На сервере (экземпляр aws ec2) я вижу соединение с устройства.
Вопрос:
Когда я пытаюсь подключиться к этому устройству с помощью PyModbus, я не могу открыть соединение.
from pymodbus.client.sync import ModbusTcpClient as Modbusclient
client= Modbusclient(host=<internal ip of the connection>, port=5025)
if client.connect():
print("Connected")
else:
print("Not Connected")
Ответ всегда "Не подключен".
Я заверил, что а) порт открыт. б) IP-адрес занесен в белый список на сервере
Почему я не могу подключиться? Что мне здесь не хватает?
1 ответ
Решение
В моем конкретном случае модем gprs действовал как шлюз serial-over-tcp. Поэтому мне пришлось создать последовательный порт, а затем подключиться к нему. То, что я закончил, было:
- Создайте пару последовательных портов (например, p1 и p2) в Linux с помощью команды socat
- Создайте простой слушатель TCP (используя библиотеку сокетов в Python)
- Переслать все данные из порта tcp в p1
- Импорт ModbusSerialClient из pymodbus.client.sync
- подключитесь к P2 используя Modbus Serial Client.