2016-01-31 195 views
2

我嘗試使用pymodbus和覆盆子pi讀取保存寄存器時遇到問題。我似乎無法同時連接兩臺服務器/從站(兩者都可以工作,但是一起,我無法從兩臺設備讀取寄存器)。這些連接問題似乎導致錯誤消息。也許有一些簡單的東西我錯過了嗎?多個服務器pymodbus連接問題Modbus TCP

from pymodbus.client.sync import ModbusTcpClient 
import time 

#modbus connection to 1st device 

client1 = ModbusTcpClient('172.168.1.9', port=659) 
connection1 = client1.connect() 

#modbus connection to 2nd device 

client2 = ModbusTcpClient('192.168.1.8', port=502) 
connection2 = client2.connect() 

#read registers of 1st device 
request1 = client1.read_holding_registers(11,27) #covert to float 
result1 = request1.registers 
print (result1) 
close = client1.close() 

#read registers of 2nd device 
request2 = client2.read_holding_registers(1,7) #covert to float 
result2 = request2.registers 
print (result2) 
close = client2.close() 

以下是錯誤消息我收到:

[18, 57, 48, 984, 31, 1, 16, 1, 2, 78, 87, 4, 4, 0, 299, 65517, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 
Traceback (most recent call last): 
    File "gpsonce", line 20, in <module> 
    request2 = client2.read_holding_registers(1,7) #covert to float 
    File "/usr/local/lib/python2.7/dist-packages/pymodbus-1.2.0-py2.7.egg/pymodbus/client/common.py", line 109, in read_holding_registers 
    return self.execute(request) 
    File "/usr/local/lib/python2.7/dist-packages/pymodbus-1.2.0-py2.7.egg/pymodbus/client/sync.py", line 82, in execute 
    raise ConnectionException("Failed to connect[%s]" % (self.__str__())) 
pymodbus.exceptions.ConnectionException: Modbus Error: [Connection] Failed to connect[192.168.1.8:502] 

我知道,如果我打破這些成不同的腳本,並在同一時間運行它們,會發生同樣的錯誤。

獨立地,如同一次運行一個,這些執行正確無誤。

大家的幫助非常感謝!

+0

如果您已經安裝telnet程序,你可以測試是否連接在所有的工作與'的telnet 192.168.1.8 502' –

+0

感謝評論。我已經驗證了兩個連接獨立工作。當我嘗試同時連接兩者時,似乎出現問題。 – Emerson

+0

我在'localhost'(windows 7 pc)上用2個pymodbus服務器試過了你的代碼。一臺服務器正在監聽5020端口,另一臺監聽5021端口。你確定你正確配置了端口嗎?因爲在pymodbus示例中,服務器上配置的默認端口是'5020',而客戶端則是'502'。 – wewa

回答

0

我在PC上試過了,沒有問題。你有不必要的線條:

connection1 = client1.connect() 
.. 
connection2 = client2.connect() 

也許這就是問題所在......