喜んでいくつかのエンターテイメントが必要な退屈なPLCのModbusのエキスパートがいることを願っています。PLC/Modbusリードコイルの状態(modbus tk)
私は、teco SG2 20VR-Dの出力コイルQ1からQ8の状態を読み取ろうとしています。
私はPythonでModbus-TKを使用していますが、コイルに書き込んでレジスタなどを読み込むのは簡単です。しかし、出力コイルQ1-Q8を読み込む方法がわかりません彼らの状態を確認することができます。
アドレス表は添付のPDFの29/31ページにあります。私のユニットはV3タイプです。
29ページの小さな印刷物を読んだ場合、10hを乗算することについていくつかの目障りなメッセージがありますか?助けて!
このコマンドを使用すると、唯一の値としてゼロを持つ単純なタプルが得られます。
slave_address = 1
command = 1 #read coils
coil_address = 11312 # this is 2c30h converted to decimal. 2c30h is the address for Q1 according to the pdf
master.execute(slave_address, command, coil_address)
(私はPycharmで式を評価するとき..私は何を得るこの) 戻り値:
result = {tuple} <type 'tuple'>:()
__len__ = {int} 0
トラブルがQ1で通電する(閉じた状態)ので、それは1または65280ない0を示すべき、これは正しいことではありません。
コイルアドレスにある種の範囲を使用してください。どのようにこれを行う必要があります誰も説明できますか?
おかげで... ..私は良いドキュメントのためのハイとローを見てきたし、それを見つけることができませんでした。 –
スタンドアロンのドキュメントはありませんでしたが、ソース自体にはhttps://github.com/ljean/modbus-tk/blob/master/modbus_tk/modbus.pyにあるドキュメントストリングがあります – jasonharper
16の倍数になるコイルは、扱いにくく、非標準的な振る舞いです。とにかく、これはModbusです。それぞれの実装には癖があります。コイルの数として16を使用するだけで動作するはずですが、 – Ronaldo