2016-09-09 9 views
0

pymodbus를 사용하여 PLC에서 modbus 레지스터를 읽으려고합니다. 나는 here 게시 된 예제를 따르고 있습니다. 을 시도하면 다음 오류가 발생합니다. object has no attribute 'registers' 이 예는 가져 오는 모듈을 표시하지 않지만 허용되는 대답 인 것 같습니다. 오류는 내가 잘못된 모듈을 가져오고 있거나 모듈이 누락 된 것일 수 있습니다. 나는 단순히 기록을 읽으려고 노력하고있다.pymodbus를 사용하여 레지스터 읽기

여기 내 코드입니다 :

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.registers 
+0

@J Earls 오류는 없어지지 만 레지스터를 읽지는 않습니다. Modbus 설문 조사가 정상적으로 읽습니다. 코드에 다른 문제가 보이십니까? –

답변

0

the pymodbus code을 읽을 경우, read_holding_registers 개체의 execute 방법은 중 하나 응답 객체 또는 오류를 포함하는 ExceptionResponse 개체를 반환 것으로 보인다. 나는 당신이 후자를 받고있는 것 같아요. 다음과 같이 시도해야합니다.

from pymodbus.register_read_message import ReadHoldingRegistersResponse 
#... 
response = c.execute(chk) 
if isinstance(response, ReadHoldingRegistersResponse): 
    print response.registers 
else: 
    pass # handle error condition here