問題タブ [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.

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

python - pymodbus: リクエストの作成とレスポンスの受信

Modbus TCP/IP経由でpymodbusを使用して、リクエストを作成し、正しい方法でレスポンスを取得する方法を誰かが説明できますか?

PLC をスレーブとして使用し、PC をマスターとして使用します。

私はそのような方法でそれをやろうとしています:

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

python - Pymodbus/Twisted 非同期クライアントの再接続

PLC の modbus サーバーからいくつかのコイル/レジスタを読み取るテスト コードを作成しました。1 つのリクエストを呼び出すと、コードが機能します。ケーブルを抜いた後、Twisted が clientConnectionLost 関数を呼び出すので、ケーブルを差し込んだときにクライアントが再接続されます。以下のコードのように複数のリクエストを行うと、処理が中断され、何も起こりません。何が問題を引き起こしているのかわかりません。

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

c# - この Modbus アドレスから正しい値を取得するには?

私は MOXA Modbus TCP モジュール (M-4210 と NA-4010 ネットワーキング モジュールの組み合わせで、他のモジュールも接続されています) を持っています。これは 2 チャンネルのアナログ出力として機能し、それぞれが 0 から 10 ボルトの電圧を持っています。

私の C# アプリケーションでは、これらの出力の現在の値を取得する必要があります。これは、Modbus 全体にまったく慣れていないため、簡単ではありません。

私のコードでは、すでにその仕事をする動作している modbus tcp クライアントがあり、別のデジタル出力モジュールの単一コイルを読み書きしてテストしました。ただし、アナログ出力モジュールは、コイルではなくレジスタで動作するようです。

最初に、このモジュール内の 2 つのチャネルの modbus 設定を次に示します (MOXA ioAdmin ツールから取得)。

ここに画像の説明を入力

およびアドレス:

ここに画像の説明を入力

また、Web インターフェースの別のスクリーンショットを次に示します。

ここに画像の説明を入力

だから私はこのような値を読み取ろうとしました:

このコードは 1 つの値を返しますが、次のように変更されています。

  • チャネル #0 が の (生の) 値に設定されている場合1139、返される int 値は次のとおりです。29440

  • チャネル #0 が に設定されて1140いる場合、戻り値は29696

私は正しい軌道に乗っているようですが、オフセットと、値が戻ってきたときにチャネルを分離する方法がよくわかりません。誰かがこれに光を当てることができれば素晴らしいでしょう、事前に感謝します!

0 投票する
0 に答える
280 参照

c++ - 応答を送信するポートを選択するにはどうすればよいですか

現在、Modbus/TCP を使用して PLC と通信しようとしていますが、PLC によって送信された Modbus フレームを読み取ることができると思っていても、Modbus 応答をポート 502 に送信し、使用するストリームを PLC が使用するポートに送信する必要があります。フレームを送ります。受信と送信に 2 つのストリームを使用しようとしましたが、最初のストリームを閉じると、PLC はそれをタイムアウト通信として取得し、2 番目の接続を拒否します。それがあなたを助けることができるなら、私が使用するコードはここにありますが、今のところ、接続をテストできるようにする以外はほとんど何もしません.

何か提案があれば。

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

c - C で Modbus を使用して単純なクライアント/サーバーを作成する

私は現在、さまざまな自動化が通信できるようにするプロジェクトに取り組んでいます。そのために、modbus プロトコルを使用して通信するクライアントとサーバーを作成したいと考えています。今のところ、ModBus/TCP、ModBus/RTU、または ModBus/ASCII のどれを使用したいのかわかりません。

C でクライアント/サーバーの例を検索しましたが、ライブラリは見つかりましたが、通信の簡単な例は見つかりませんでした。ゼロから始めたいので、ライブラリは探しているものではありません。

私が求めているのは、誰かが Modbus を使用して通信するクライアントおよび/またはサーバー用に C で書かれた簡単なコードをくれないかということです。どんなタイプの Modbus を何に使用するか分からないので、非常に助かります。 (RTU/TCP/ASCII)。

単純であればあるほど良いのですが、コードで示したいのは、たとえば、サーバーへの初期化、要求、応答、接続の終了です。

どうぞよろしくお願いいたします。

0 投票する
0 に答える
379 参照

java - Modbus シミュレータからレジスタ値を読み込もうとしていますが、実行できません

modbus シミュレーターへの接続は確立されていますが、シミュレーターからレジスター値を読み取ってコンソールに書き込もうとしていますが、できません。このコードは、modbus シミュレーターへの接続を正常に作成しますが、レジスター値を読み取る構文、つまりレジスター値を要求し、同じことについて応答しますが、レジスター値をフェッチできません。

以下は私が試したコードです。

0 投票する
0 に答える
607 参照

java - Modbus シミュレータからのレジスタ値の読み取り

modbus シミュレーターへの接続は確立されていますが、シミュレーターからレジスター値を読み取ってコンソールに書き込もうとしていますが、実行できません。このコードは、modbus シミュレーターへの接続を正常に作成しますが、レジスター値を読み取る構文、つまりレジスター値を要求し、同じことについて応答しますが、レジスター値をフェッチできません。レジスタ値と範囲を初期化しようとしましたが、コードも機能しません。以下は私が試したコードです。初期化してコード内のレジスタ値の範囲を入力しましたが、modbus シミュレータから値を取得できません。以下は私が試したコードです。

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

c# - PInvoke 署名がアンマネージド ターゲットの署名と一致しません

modbusm.dll (win-tech.com/html/mbusocx.htm) のラッパー C# ファイルを作成しようとしています。これには dumpbin 出力を使用しています。

modbusm.dll ファイルのダンプ

ファイルの種類: DLL

セクションには、modbusm.dll の次のエクスポートが含まれています

概要

私のC#ラッパーは

コードを実行しているとき

ビジュアルスタジオで、例外が発生しています

PInvoke 関数 'TestApp!TestApp.MbMasterV7::ConnectModbusTCP' の呼び出しにより、スタックのバランスが崩れています。これは、マネージド PInvoke 署名がアンマネージド ターゲット シグネチャと一致しないことが原因である可能性があります。PInvoke シグネチャの呼び出し規約とパラメーターがターゲットのアンマネージド シグネチャと一致することを確認します。

すべての呼び出し規約を試しましたが、同じエラーが発生しました。modbus プロトコルで使用できる .Net ライブラリは、私が使用している新しい plc タイプには十分ではありません。

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

python - PyModbus - Read_holding_coils が奇妙な値を返す

次の小さなコード ブロックを作成しました。

.

印刷から得られる出力は次のとおりです。

.

レジスタが保持している実際の値 (整数/文字列) ではなく、これを取得するのはなぜですか?

答えてくれてありがとう!