2016-09-09 42 views
0

enter image description here wym 750-881 PLC의 레지스터를 읽으려면 pymodbus를 사용하고 있습니다. 또한 Modbus Poll 유틸리티와 HMI에서 동일한 레지스터를 읽습니다. Modbus Poll 및 HMI는 올바르게 읽었지만 pymodbus 프로그램은 올바로 읽지 않습니다. 여기 pymodbus를 사용하여 PLC를 읽을 때 예기치 않은 번호

from pymodbus.client.sync import ModbusTcpClient 

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

코드 실행의 반응이다 : 여기서

코드이다

>>> runfile('C:/Users/Mike/modbustest2.py', wdir='C:/Users/Mike') 
18283 

올바른 출력되어야한다 2043 또한에서 동일한 번호 "18283"를 읽어 다른 레지스터들. 나는 다른 프로그램/장치에서 레지스터를 읽을 수 있기 때문에 문제가 코드와 관련되어야한다는 것을 안다. 어떤 도움을 주셔서 감사합니다.

답변

0

잘못된 레지스터 또는 잘못된 유닛 ID 또는 두 가지 조합을 읽었을 수 있습니다.

Wireshark를 사용하여 타사 소프트웨어와 자신의 소프트웨어가 무엇을하고 있는지 파악하면 차이를 매우 빠르게 파악할 수 있습니다.

+0

Modbus Poll의 그림을 추가했습니다. –

+0

이 주소에서 +/- 1을 읽으려고 시도 했습니까? 257 대신 40257을 읽으려고 했습니까? 나는 당신이 사용하고있는 Modbus Poll 유틸리티에 익숙하지 않아서 파이썬 코드가하는 일과 실제로 무엇을하는지 확신 할 수 없다. Wireshark가 이상적입니다. –

+0

@mikec. 이걸 알아 냈어? –