0

背景资料:

我正在尝试从我的能量计中读取数据。我已将 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")

响应始终是“未连接”。

我已确保 a) 端口已打开。b) ip 地址在服务器上被列入白名单

为什么我无法连接?我在这里想念什么?

4

1 回答 1

0

在我的特殊情况下,gprs 调制解调器充当串行 tcp 网关。所以我必须创建一个串行端口然后连接到它。我最终做的是:

  1. 在 Linux 上使用 socat 命令创建一对串口(例如 p1 和 p2)
  2. 创建一个简单的 tcp 监听器(在 python 中使用套接字库)
  3. 将所有数据从 tcp 端口转发到 p1
  4. 从 pymodbus.client.sync 导入 ModbusSerialClient
  5. 使用 Modbus 串行客户端连接到 P2。
于 2018-06-05T09:15:10.350 回答