2016-09-09 52 views
0

pymodbus、python 2.7、およびWindowsを使用して、WAGO 750-881 PLCからレジスタを読み込む際に問題があります。私はModbus Pollユーティリティでうまく読めるので、問題はPythonコードにあると思います。私はエラーを取得し、次のコードを使用する:runfile('C:/Users/Mike/modbustest2.py', wdir='C:/Users/Mike') Exception Response(131, 3, IllegalValue)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 

私は私のコードを実現することはprint response.registersを読む必要がありますが.registers拡張子は私には利用可能ではないようです。 print response.registersはこのエラーをスローします:AttributeError: 'ExceptionResponse' object has no attribute 'registers'私はそれが何らかの形で役に立つかもしれないと思ったので、私はprint responseエラーだけを含んでいました。誰でも問題が何であるか知っていますか?

答えて

1

ExceptionResponseオブジェクトが戻ってきました。例外コードは「IllegalValue」です。

おそらく、PLCが存在しないと思われるレジスタを読んでいる可能性があります。

もちろん、このオブジェクトにはReadHoldingRegistersレスポンスではないため、このオブジェクトにはレジスタ属性はありません。

+0

私はあなたの助けを借りて問題を見つけました。何らかの理由で、一度に複数のレジスタを読み込もうとすると、プログラムが動作しません。ですから 'chk = c.read_holding_registers(257,1、unit = 1)'と書くと、エラーは発生しません。私は、私に間違った出力を与える応答と別の問題を抱えていますが、それは別の質問です。私は他の質問[ここ](http://stackoverflow.com/questions/39418049/unexpected-number-when-reading-plc-using-pymodbus)を投稿しました。 –

関連する問題