2016-08-17 17 views
1

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와 네트워킹에 익숙하지 않으므로 도움을 얻을 수 있습니다.

답변

0

필자는 Allen Bradley를 직접 사용하지 않았지만 많은 다른 PLC를 사용하고 있지만 모두 동일하거나 더 많이 작동합니다.

라우터에서와 같이 포트를 열지 않고 PLC에서 모드 버스 연결을 활성화하십시오. 대개 설정이지만 Allen Bradley가 독자적인 버스 시스템 (예 : Saia S-Bus)을 사용하는 경우 모드 버스를 사용하려면 특정 기능 블록이 필요한 경우가 있습니다.

예를 들어 빠른 google 검색은 micrologix 1400에서 일부 채널 설정에서 modbus tcp를 활성화하는 확인란을 보여줍니다.

Modbus 마스터/클라이언트 (마스터 = 시리얼 또는 RTU, 클라이언트 = TCP가 가능하지만 제조사가 이들을 구별하지 못하게 할 수있는)가 활성화되어 있는지 확인하십시오.

라즈베리 파이를 테스트하려면 modbus 서버 시뮬레이터를 다운로드하여 설문 조사를하십시오.

파이 이외의 것으로 PLC를 테스트하려면 modbus 클라이언트/마스터를 다운로드 할 수 있습니다. 개인적으로 QmodMaster는 무료이며 테스트 목적 (Google 검색)에 적합합니다.

올바른 기능 코드를 사용하여 폴링을 확인하십시오. (3xxxx로 지정된) 입력 레지스터는 기능 코드 04를 사용합니다.

Modbus 게이트웨이는 직렬 모드 버스 (RTU 또는 ASCII)를 사용하여 기능 코드 04를 사용할 수 있도록하기 때문에 혼동을 줄 수 있습니다. TCP를 통해 통신하십시오.

두 장치 모두 modbus tcp를 사용하는 경우 게이트웨이가 필요하지 않습니다. 예를 들어, 유선 모드 버스 (RS232/485/422) 만있는 장치를 게이트웨이에 연결하고 게이트웨이를 TCP에 연결할 수 있습니다.