2016-09-09 20 views
0

pymodbus, python 2.7 및 Windows를 사용하여 WAGO 750-881 PLC에서 레지스터를 읽는 데 문제가 있습니다. Modbus Poll 유틸리티로 잘 읽으므로 파이썬 코드에 문제가 있다고 생각합니다.pymodbus로 PLC에서 읽는 데 문제가 있습니다

from pymodbus.client.sync import ModbusTcpClient 

c = ModbusTcpClient(host="192.168.1.20") 
chk = c.read_holding_registers(257,10, unit = 1) 
response = c.execute(chk)   
print response 

runfile('C:/Users/Mike/modbustest2.py', wdir='C:/Users/Mike') Exception Response(131, 3, IllegalValue) 내가 print response.registers을 읽어야 내 코드를 인식하지만 .registers 확장이 나에게 제공 될 것 같지 않습니다 : 다음 코드를 사용하여 나는 오류가 발생합니다. print response.registers이이 오류를 throw합니다. AttributeError: 'ExceptionResponse' object has no attribute 'registers' 어떤 점에서 도움이 될 수 있다고 생각하여 print response 오류 만 포함했습니다. 문제가 무엇인지 아는 사람 있습니까?

답변

1

예외 코드 'IllegalValue'와 함께 ExceptionResponse 객체가 다시 나타납니다.

가장 큰 원인은 PLC가 존재하지 않는다고 생각하는 레지스터를 읽는 것입니다.

물론이 개체에는 레지스터 속성이 없습니다. ReadHoldingRegisters 응답이 아니기 때문입니다.

+0

귀하의 도움으로 문제가 발견되었습니다. 한 번에 두 개 이상의 레지스터를 읽으려고하면 어떤 이유로 프로그램이 작동하지 않습니다. 따라서'chk = c.read_holding_registers (257,1, unit = 1)'이라고 쓰면 오류가 발생하지 않습니다. 나는 응답이 나에게 잘못된 결과를주는 또 다른 문제가 있는데, 그것은 또 다른 질문이다. 나는 다른 질문 [여기] (http://stackoverflow.com/questions/39418049/unexpected-number-when-reading-plc-using-pymodbus)을 올렸다. –