Allen Bradly PLC에서 값을 읽으려면 Raspberry Pi 3 모델 B를 사용하려고합니다. 나는 그들 사이에서 통신하기 위해 Pymodbus Modbus TCP 프로토콜을 사용하고 있습니다.Pymodbus가 PLC 슬레이브 및 라즈베리 파이 마스터와 연결하지 못했습니다.
나는 다음과 같은 오류 얻을 테스트 클라이언트를 실행하면 :
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()
내가 PLC의 이더넷 카드의 IP 주소를 Ping 할 수 있습니다 : 여기
[email protected]:/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]
테스트 클라이언트의 코드를 (10.0.0.237) 괜찮아. (PLC는 켜져 있고 RSLinx를하고 된 RSLogix5000에 나타납니다.)하지만이 명령을 사용하여 포트 502 (모드 버스에서 사용하는)을 확인하려고하면
Trying 10.0.0.237...
telnet: Unable to connect to remote host: Connection refused
:
telnet 10.0.0.237 502
나는 오류 내가 한 연구에서 포트가 열려 있는지 확인하라고했으나 PC 용이었습니다. PLC에서 포트를 확인/구성하는 방법을 모르겠습니다.
또한 Modbus를 사용하여 Raspbery Pi와 PLC 사이를 이동하는 것이 문제인지 궁금합니다. 나는 인터페이싱을하는 prosoft 게이트웨이를 발견했다. 그러나 나는 그것들이 단지 또 다른 선택 사항인지 아니면 그것이 필요한지에 대한 정보를 찾을 수 없었다.
저는 PLC와 네트워킹에 익숙하지 않으므로 도움을 얻을 수 있습니다.