2017-01-19 16 views
0

저는 파이썬과 modbus를 모두 사용하는 초보자입니다. 이제는 몇 시간 동안 pymodbus를 사용하여 직렬 포트에 연결된 팬을 제어하려고합니다. 제조업체의 독점 소프트웨어를 사용하여 팬을 제어 할 수 있었기 때문에 연결 자체가 작동합니다. 그러나 내 자신의 코드는 그렇지 않습니다.Pymodbus RTU 연결 문제

모드 : RTU

전송 속도 : 19200

패리티 : 짝수

초과 1

슬레이브 팬은 다음과 같은 값으로 설정되는 매뉴얼에 따라

ID : 247 (F7h)

databits : 8

Pymodbus Library Examples에서 pymodbus 예제 코드를 수정했습니다. 이건 내 코드입니다 :

from pymodbus3.client.sync import ModbusSerialClient as ModbusClient 
Fan = ModbusClient(method='rtu',port ='/dev/ttymxc1', parity = 'E', baudrate='19200', timeout=1) 
connection = Fan.connect() 
a = Fan.write_register(2,1, unit=0xF7) 
b = Fan.read_holding_registers(2,1, unit = 0xF7) 
Fan.close() 

모두 읽고 다음과 같은 오류가 명령의 결과를 쓰기 :.

pymodbus3.exceptions.ModbusIOException: Modbus Error: [Input/Output] Server responded with bad response 

케이블이 연결되어 있지 않거나 심지어 얻을 같은 메시지

합니까 누구나 잘못된 제안이 있습니까? 미리 감사드립니다.

답변

0

시간 초과는 포트가 응답을 기다리는 시간입니다.

시간 제한을 ~ 2000과 같이 설정하면 1은 1ms이고 이는 아마도 1을 의미합니다.

또한 주소 1을 시도해보십시오 (위의 경우 작동하지 않는 경우). Modbus 주소를 다른 것으로 구성 할 수 있는지 확인하십시오 (팬의 스위치 일 수도 있음).