3

pymodbus とラズベリー pi を使用して保持レジスタを読み取ろうとすると、問題が発生します。2 つのサーバー/スレーブを同時に接続できないようです (いずれか一方が機能しますが、一緒にすると、両方のデバイスからレジスタを読み取ることができません)。これらの接続の問題がエラー メッセージの原因になっているようです。たぶん、私がここで見逃している簡単なものがありますか?

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]

これらを別々のスクリプトに分割して同時に実行すると、同じエラーが発生することがわかっています。

独立して、一度に 1 つずつ実行する場合と同様に、これらはエラーなしで正しく実行されます。

みんなの助けが大歓迎です!

4

1 に答える 1