問題タブ [minimalmodbus]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python-3.x - minimalmodbusを使用してPythonでスレーブを実現するにはどうすればよいですか?
私はこのライブラリを使用してpython minimamlmodbusライブラリを使用しています。スレーブとマスターの通信を実現したいので、私はスレーブになり、機器はマスターになります
マスターが私でスレーブが機器であるminimalmodbusを使用して、マスターとスレーブの通信を成功裏に達成しました。
次のコードを使用して、マスターとスレーブの通信を実現しました
計測器をマスターにし、python インターフェイスをスレーブにしたいのですが、それは可能ですか。
python - Python での最小限の modbus 例外の処理
小さな家庭用監視システムを作成しようとしています。測定データを基地局に送信する一連のワイヤレス送信機があります。Modbus RTU を使用してその基地局にクエリを実行し、各送信機からの最新の測定値を見つけることができます。
測定値を保存して視覚化するために、InfluxDB と Grafana を使用しています。基地局への RS-485 通信を含め、Raspberry Pi Model 3B+ ですべてを実行しています。
Python を使用して Modbus RTU からデータを読み取り、それをストレージ用に InfluxDB に転送することにしました。これは、Python には両方の既製のライブラリがあるためです。ただし、Python スクリプトを安定させるのに苦労しています。必然的に、Modbus 送信で時々 CRC エラーが発生し、minimalmodbus ライブラリがこれらの例外の 1 つを発生させると、スクリプトが動かなくなるようです。
この問題にどのように取り組むべきかわかりません。
現時点では、try-except-else 構造を使用していますが、Python の完全な初心者であるため、思い通りに動作させることができません。測定点が一つ無くなっても大丈夫。これは、CRC エラーが発生した場合、その測定を忘れて、何事もなかったかのように続行できることを意味します。
現在使用しているコード (最小化) は次のようになります。
最終的に何が起こるかというと、スクリプトは夢のように何時間も実行できるということです。その後、送信で 1 つの CRC エラーが発生すると、次のような終わりのない例外のループに入ります。
CTRL-C を使用してこれを取り消すと、スクリプトは実際には sleep コマンドにあるように見えます。
したがって、実際にプログラムループにある場合、通常の印刷コマンドをコンソールに出力しない理由について困惑しています。
実際のスクリプトでは、3 ダースの instrument.read_register 呼び出しがあるため、read_register 呼び出しごとに例外を処理する別の関数を作成する必要があるかどうかわかりません。この 1 週間で、このコードの 6 つのバリエーションを試しましたが、Grafana で取得したデータは、スクリプトが例外ループでスタックしているため、ひどいものです。
助言がありますか?