問題タブ [modbus-tcp]
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.
vb.net - リモートターミナルユニット用のカスタムMODBUSプログラムの作成
ここに King Pigeon S275 リモート ターミナル ユニットのユニットがあります。この RTU には、GSM、GPRS、および TCP/IP 用の通信モジュールがあります (RJ45 接続経由)。この RTU を USB 経由でコンピュータに接続することで、この RTU と通信することもできます。
このリンクにアップロードしたマニュアル... https://www.mediafire.com/?gnfzfz5l7pess1p
この RTU は、購入に含まれているコンフィギュレータ ソフトウェアを使用して設定できます。そのコンフィギュレーター ソフトウェアを使用すると、それに接続されているすべてのセンサーのデータ/読み取り値も表示できます。また、RTU に接続されているすべてのデジタル入力/接点の状態も表示できます...
ここ数日、MODBUS について調べていて、S275 RTU がセンサーのデータやすべての I/O データを自分のプログラムに送信できるように、独自の MODBUS プログラムを作成したいと考えています。
しかし…どこから始めたらいいのかわからない… このModbusプログラムをVBで1.作ってもいいですか?2. PHP を使用していますか?
他に知っておくべきパラメータは何ですか? この modbus ソフトウェアを作成するためのチュートリアル...
S275 もここにアップロードしました。1. GPRS カスタム プロトコル 2. MODBUS TCP ハンドシェイク通信プロトコル 3. レジスタ アドレス
https://www.mediafire.com/?khnfu53a4p12nrd
ありがとう
c - float として再解釈するときにエンディアンを指定できますか?
Modbus TCP を介して通信する C プログラムを作成しています。3.14
の 16 進表現で、modbus クライアントにfloat を送信します0x4048F5C3
。私の C コードは modbus パケットを正しく受信しておりunsigned char *buffer
、値を取得できるように を float として再解釈する必要があります3.14
。これが私のコードです
これで、この問題はエンディアンが原因であることがわかります。バッファが次のようになるようにエンディアンを交換すると、次のようになります。
その後、すべて正常に動作します。でもこれはちょっと面倒くさい気がします。エンディアンを交換する必要がありますか? または、エンディアンを指定する方法はありますか:
python - twisted.application.internet.ClientService で再接続を処理するにはどうすればよいですか?
を使用して単純な modbus-tcp ポーリングを行うねじれたアプリケーションで、最近導入され たクラスを利用しようとしています。私の問題は、私が使用している modbus プロトコルとは何の関係もないと感じています。低レベルのツイスト API を使用して、他にもかなりの数の実用的なプロトタイプを作成したからです。しかし、この新しいものは私のニーズにぴったり合っているように見えるので、コードのフットプリントを削減し、機能させることができればきれいに保つ必要があります.twisted.application.internet.ClientService
pymodbus
ClientService
私のテストClientService
では、期待どおりにハンドルの再接続が示され、最初の接続に簡単にアクセスできますProtocol
。私が抱えている問題は、再接続のために後続のProtocol
オブジェクトを取得することです。これは、私が問題を抱えているコードの簡略版です。
接続が(何らかの理由で)失敗するerrback
と、deferred
返された fromread_holding_registers()
が呼び出され、サービスがそれを放棄し、新しい接続がコールバックによって返されるのProtocol
を待つ状態に戻ることができます...しかし、どう思われますか起こっているのは、ClientService が接続が切断されたことをまだ認識しておらず、同じ切断されたプロトコルを返し、次のようなログが表示されることです。Protocol
whenConnected()
または非常に似ています。ModbusClientProtocol オブジェクト アドレスの繰り返しに注意してください。
おそらくこの API のパターンの選択を誤っただけだと確信していますが、独自のパターンを作成し、そのクラス内で完全にポーリング メカニズムに基づいて処理するProtocol
などFactory
、いくつかの異なる可能性を繰り返しました。ModbusClientProtocol
しかし、ポーリングされたデータをそのように保存するための永続的な構成とメカニズムを渡すのは少し面倒だと感じました.ClientServiceレベル以上でこれを処理することはよりクリーンなアプローチのようですが、現在接続されているプロトコル。私が本当に探しているのは、拡張ポーリングの状況でクラスを使用するためのベスト プラクティスの推奨事項だと思います。ClientService
raspberry-pi - rj45上のラズベリーパイmodbus
こんにちは (母国語ではない英語で申し訳ありません) RJ45 ポートを介してMODBUS形式でデータを送信する一種の「ブラックボックス」があり、Raspberry Pi 2 でデータを読み取りたいと考えています。 Googleでたくさん検索しましたが、modbusを聞くための唯一の解決策は、RX / TXポートを使用してRPI2の上にカードを置くことです。
arduino - Arduino での Modbus TCP/IP
次のコードを使用して、Arduino uno + イーサネット シールドに Modbus TCP を実装しようとしています。PCでmodbusスレーブシミュレーターを使用して、次のコードを確認しています。ただし、コードは機能していないようです。http://myarduinoprojects.com/modbus.htmlからコードとライブラリをダウンロードしました。必要に応じて修正を提案してください。また、arduino の modbus tcp/ip で使用できる別の実例があります。
ありがとう。
python - Modbus TCP Python サーバーが動作しない
modbus
複数の値のデータをストリーミングするために非同期サーバー ベースを使用しようとしていますが、単にゼロが表示されます。助けてください。私のコードはに基づいています
https://pymodbus.readthedocs.io/en/latest/examples/asynchronous-server.html
java - Modbus TCP スレーブ スレッド - レジスタ値の設定と取得
このhowToModbusSlaveによると、選択した値のレジスタを使用して独自の modbus スレーブを構築しようとしています (後で、python/jython を使用して監視対象デバイスからのデータをこれらの値に入力し、Predix (クラウド プラットフォーム) を使用して送信します)。私は modbus のグリーンホーンであるため、選択した値をレジスターホルダーに追加する方法をまだ見つけることができません。
localhost:502 でマスターにデータを提供するために使用するスレーブ スレッドを次に示します。
データノード構成:
私はこれらの転送を取得します(「出力」):
主な質問:
1) ノード 1-2 および 2-2 からのデータはどこにありますか (出力にない)。
2) レジスタから送信された値を編集するにはどうすればよいですか? (なぜ「値」:655370 を取得するのですか?)
オプションの質問: (ドキュメントで理解できなかったこと)
3) simpleDigitalOut/In クラスは何の略ですか?
4) ModbusCoupler.getReference().setUnitID(value) は何を表していますか? (明らかに、データノードの unitID と共通することは何もする必要はありません
5) SimpleInputRegister と SimpleRegister クラスの違いは何ですか?