Я пытаюсь использовать Raspberry Pi 3 Model B для чтения значений из ПЛК Allen Bradly. Я использую протокол Pymodbus Modbus 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]
Вот код для тестового клиента:
from pymodbus.client.sync import ModbusTcpClient
#modbus connection
client = ModbusTcpClient(host='10.0.0.237')
connection = client.connect()
#test print
print "Got here 1"
#read register
request = client.read_holding_registers(0,1)
print request
client.close()
Я могу просто пропинговать IP-адрес Ethernet-карты ПЛК (10.0.0.237). (ПЛК включен и отображается в RSLinx и RSLogix5000.) Но когда я пытаюсь проверить порт 502 (который использует Modbus) с помощью команды:
telnet 10.0.0.237 502
Я получаю сообщение об ошибке:
Trying 10.0.0.237...
telnet: Unable to connect to remote host: Connection refused
Исследования, которые я провел, сказали мне проверить, открыт ли этот порт, но это для ПК, я не знаю, как вы проверяете / настраиваете порты на ПЛК.
Кроме того, мне интересно, не в том ли проблема, что я пытаюсь просто использовать Modbus для переключения между Raspbery Pi и PLC. Я нашел шлюзы прософт, которые делают интерфейс. Но я не мог найти никакой информации о том, были ли это просто еще одним вариантом или они были необходимы.
Я новичок в ПЛК и сетях, поэтому буду благодарен за любую помощь.