Tcp Pymodbus无法连接PLC从机和Raspberry Pi主机

Tcp Pymodbus无法连接PLC从机和Raspberry Pi主机,tcp,raspberry-pi,plc,modbus-tcp,Tcp,Raspberry Pi,Plc,Modbus Tcp,我试图使用Raspberry Pi 3型号B从Allen Bradly PLC读取值。我使用Pymodbus TCP协议在它们之间进行通信 运行测试客户机时,出现以下错误: pi@raspberrypi:/var $ python test1.py Got here 1 Traceback (most recent call last): File "test1.py", line 12, in <module> request = client.read_holding_regis

我试图使用Raspberry Pi 3型号B从Allen Bradly PLC读取值。我使用Pymodbus TCP协议在它们之间进行通信

运行测试客户机时,出现以下错误:

pi@raspberrypi:/var $ python test1.py
Got here 1
Traceback (most recent call last):
File "test1.py", line 12, in <module>
request = client.read_holding_registers(0,1)
File "build/bdist.linux-armv7l/egg/pymodbus/client/common.py", line 109, in read_holding_registers
File "build/bdist.linux-armv7l/egg/pymodbus/client/sync.py", line 82, in execute
pymodbus.exceptions.ConnectionException: Modbus Error: [Connection] Failed to connect[10.0.0.237:502]
我可以ping PLC以太网卡(10.0.0.237)的IP地址。(PLC开启并显示在RSLinx和RSLogix5000中。)但当我尝试使用命令检查端口502(Modbus使用)时:

telnet 10.0.0.237 502
我得到一个错误:

Trying 10.0.0.237...
telnet: Unable to connect to remote host: Connection refused
我所做的研究告诉我检查该端口是否打开,但这是针对PC的,我不知道如何检查/配置PLC上的端口

此外,我想知道问题是否在于我正试图使用Modbus在Raspbery Pi和PLC之间切换。我发现prosoft网关可以进行接口。但我找不到任何关于这些是否只是另一种选择或是否需要的信息


我不熟悉PLC和网络,因此如果有任何帮助,我将不胜感激。

我自己没有使用Allen Bradley,但我确实使用了许多其他PLC,它们的工作原理或多或少都是一样的

您不会像在路由器中那样打开端口,而是在PLC中激活modbus连接。大多数情况下,这是一种设置,但如果Allen Bradley使用自己的专用总线系统(如Saia S-bus),则有时需要特定的功能块来启用modbus

例如,谷歌快速搜索显示,micrologix 1400中有一个复选框,用于在某些通道设置下启用modbus tcp

检查PLC是否有启用modbus主/客户端的设置(主=串行或RTU,客户端=TCP,但有时制造商不区分它们)

要测试Raspberry Pi,您可以下载modbus服务器模拟器并轮询该模拟器

要使用Pi以外的其他设备测试PLC,您可以下载modbus客户机/主机。我个人使用QmodMaster,它是免费的,可以很好地用于测试目的(搜索谷歌)

此外,请确保您正在使用正确的函数代码进行轮询。这可能会造成混淆,因为保持寄存器(地址为4xxx)使用功能代码03。输入寄存器(地址为3xxx)使用功能代码04

modbus网关用于使串行modbus(RTU或ASCII)能够通过TCP进行通信


如果两个设备都有modbus tcp,则不需要网关。例如,如果您有一个设备,它只有有线modbus(RS232/485/422),您可以将其连接到网关,并将网关连接到TCP。

我自己没有使用Allen Bradley,但我使用了许多其他PLC,它们的工作原理大致相同

您不会像在路由器中那样打开端口,而是在PLC中激活modbus连接。大多数情况下,这是一种设置,但如果Allen Bradley使用自己的专用总线系统(如Saia S-bus),则有时需要特定的功能块来启用modbus

例如,谷歌快速搜索显示,micrologix 1400中有一个复选框,用于在某些通道设置下启用modbus tcp

检查PLC是否有启用modbus主/客户端的设置(主=串行或RTU,客户端=TCP,但有时制造商不区分它们)

要测试Raspberry Pi,您可以下载modbus服务器模拟器并轮询该模拟器

要使用Pi以外的其他设备测试PLC,您可以下载modbus客户机/主机。我个人使用QmodMaster,它是免费的,可以很好地用于测试目的(搜索谷歌)

此外,请确保您正在使用正确的函数代码进行轮询。这可能会造成混淆,因为保持寄存器(地址为4xxx)使用功能代码03。输入寄存器(地址为3xxx)使用功能代码04

modbus网关用于使串行modbus(RTU或ASCII)能够通过TCP进行通信

如果两个设备都有modbus tcp,则不需要网关。例如,如果您有一个设备,它只有有线modbus(RS232/485/422),您可以将其连接到网关,并将网关连接到TCP

Trying 10.0.0.237...
telnet: Unable to connect to remote host: Connection refused