問題タブ [modbus]

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.

0 投票する
1 に答える
1921 参照

c# - 1 回のリクエストで複数の modbus アドレスを読み取る

C#、VS2010 を使用して MODBUS デバイスを読み取っています。テレメトリ アプリケーションで作業しています。デバイスには数百のアドレスがあり、現在使用しているアドレス x とアドレス x+130 で何かを読み取る必要があります。次のコードで 135 バイトを読み取ることができますが、必要なのは 2 つのアドレスだけですが、効率的ではありません。1 つの MODBUS 要求を使用して 2 つの別々のアドレスを読み取る方法はありますか? 私の現在のコードは次のとおりです。

これらのバイトを、MODBUS デバイスに接続されている COM ポートに書き込みます。

0 投票する
2 に答える
291 参照

java - メーターデバイスからのmodbusメッセージを回避する

直列に接続されたさまざまな電気メーターのレイディングをキャプチャするためにJamodRTUを使用しています。modbus timeoutexception=1200msを設定しました。何が起こっているのか、1つのメーターにpingを実行していて、結果(または読み取り)が得られない場合、同じシリーズで接続されている次のメーターに移動します。ただし、前のメーターが読み取り値をアプリケーションに送り返し、そのメーターの読み取り値が新しいメーターまたは次のメーターのために保存される場合があります。

この問題を解決するために、nport管理者(comポートを管理するため)のネットワークタイムアウトを5000ミリ秒から500ミリ秒に短縮しました。しかし、それが恒久的な解決策だとは思いません。遅れて届くメッセージを回避したり、対応するメーターですべてのメッセージにマークを付けたりする方法はありますか?

0 投票する
2 に答える
5879 参照

java - jamodを使用してデバイスに接続し、データを解釈するにはどうすればよいですか

私のクライアントは、カスタムソリューションを使用してサイトにインストールされているHVACシステムを制御したいと考えています。HVACデバイスは、MODBUS TCP/IP接続を提供します。私はこの分野に不慣れで、MODBUSの知識がありません。インターネットを検索したところ、MODBUSのJavaライブラリとしてjamodが見つかりました。それでは、jamodを使ってプログラムを書きたいと思います。しかし、私の混乱は、接続したいデバイスのアドレスを取得する方法です。そして、私の2番目の問題は、デバイスを接続できたとしても、MODBUSから必要なデータ(温度などの工学単位)を取得するにはどうすればよいかということです。私の質問はひどいように聞こえるかもしれませんが、私はこの分野の初心者なので、ご容赦ください。

0 投票する
1 に答える
9087 参照

modbus - JAMOD を使用したコイルの読み取り

JAMOD を使用してコイルにアクセスする方法を理解するために、次のプログラムを作成しました。残念ながら、エラーがスローされています-

プログラムの 27 行目は「trans.execute()」です。読み取ろうとしているコイル アドレスは 0x7D1 (2001) またはチャネル 0 です。データ タイプは 2 ワードです。-

もちろん、エラーはModbusTCPTransportクラスで設定されているように3回繰り返されます(クラスソースを確認しました)。つまり、終了してプログラムが終了する前に3回試行されます。

どこが間違っていますか?

0 投票する
1 に答える
3781 参照

java - Modbus プロトコルはスレッドをエスケープします (Android、Jamod)

ModBus プロトコルを使用して PLC に接続しようとしています。スレッドから ModBus connect メソッドを呼び出していますが、メイン スレッドで通信を実行しているという例外が発生しています...どこでエスケープするのだろうか...

例外:

コード:

0 投票する
1 に答える
5209 参照

sockets - Modbus TCP/IP デバイスの通信の問題

Modbus TCP/IP を使用してデバイスと通信しようとしています。C# 4.0 .NET ソケットを使用していますが、デバイスからの応答を取得する際に問題が発生しました。デバイス/ネットワークの性質上、非同期通信でなければなりません。

これで、デバイスに接続できます。コマンドが実行されるConnectと、デバイスの LED が点灯し、アクティブな接続があることを示します。次に、Sendコマンドを実行するとライトが消え (接続が失われたことを意味します)、受信しても何も得られません。さまざまなデータ パケットを試しましたが、いずれの場合も成功しませんでした。私は考えています、それSocketTypeはソケットを初期化するときの何かですか?使用しようとしているポート (現在ポート 4 を使用) でしょうか?

これが私が使用しようとした Modbus TCP/IP ドキュメントです: Modbus Documentation

ここに私のコードがあります:

0 投票する
2 に答える
476 参照

python - ajax によるツイスト TCP 接続の開始/停止と接続状態の取得方法

ねじれたアプリケーションでは、ajax POST 経由で (modbus への) TCP 接続を開始/停止したいと考えています。接続ステータスに応じて、[接続] または [切断] というタイトルのボタンが 1 つあります。

今私のコードは次のようになります:

接続を開始すると「接続中」になり、接続を停止すると「接続済み」になります。接続が確立または切断されるまで応答で待機し、接続ステータス (接続または切断 + オプションでエラーの説明) を返します。

ありがとうございました。

0 投票する
1 に答える
7145 参照

putty - Putty を使用した modbus メッセージング

Modbus 計測デバイスがあります。パテまたはハイパーターミナルを使用して modbus メッセージを送信するにはどうすればよいですか? これらの測定データを取得したいだけです。

0 投票する
2 に答える
14212 参照

android - Modbus tcp Android アプリケーション

私は tcp/ip modbus の助けを借りて plc を制御する Android アプリケーションを開発しています。
Modbus プロトコルはスレッドをエスケープします (Android、Jamod)

0 投票する
1 に答える
4452 参照

java - Android から PLC にブール値を送信する

PLCと接続してデータを読み込むことができました。ここで問題が 1 つあります。それは、PLC からのデータを変更するメソッドを作成する必要があることです。これを実現するには、int 値と boolean 値の 2 つの値を PLC に送信する必要があります。net.wimpi.modbus パッケージのクラスを介して解決された int 値を取得しました。しかし、ブール値に関しては、どうすればよいかわかりません。

誰かが私と同じ問題を抱えている場合は、私の問題を解決するための解決策または本当に優れたチュートリアルのリンクを見つけることができるリファレンスを送っていただけますか? 誰かがこの質問にいくつかのリンクを投稿しましたが、PLC との通信や PLC のデータの処理方法とはあまり関係のないチュートリアルに移動します。

編集

Modicon M340 PLC と接続し、接続には net.wimpi.modbus パッケージのクラスを使用します。クラス とを介してコード内で接続を確立し、クラスModbusTCPTransactionとをTCPMasterConnection介して値を読み取りました。ReadMultipleRegistersRequestReadMultipleRegistersResponse

接続用に作成したコード:

そして、値を読み取るために、次のコードを常に呼び出します。PLC で宣言されたオフセットから読み取った単語を介して、int、String、および float 値の読み取りと書き込みのみを行いました。

編集2

やりたいことはできたと思います。コイルを読み取るために使用する 4 つのクラスがあります。

ReadCoilsRequest ReadCoilsResponse WriteMultipleCoilsRequest WriteMultileCoilsResponse

私が行ったことは、コイルを読み込んで PLC に書き込むための 2 つの方法です。

また、Coils クラスを使用して BitVector 変数を読み取るメソッドを作成しました。

この後、ビットを 1 または 0 に設定するために使用したのは、コードで net.wimpi.modbus.util パッケージの BitVector クラスのネイティブ関数を使用することです。

注: PLC に対して値の読み取りまたは書き込みを行う場合は常に、PLC への接続を閉じて開くことが最善の方法であることを覚えておくことが重要です。