問題タブ [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 投票する
2 に答える
6487 参照

java - CommPortIdentifierを介してCOMポートを見つける方法

私はmodbusとシリアル通信の概念全体に慣れていないので、これが本当に初心者の質問であっても、我慢してください!

さて、modbusプロトコルとRS 232ポートを使用して、レジスタに保存されている値を読み取ろうとしています。このコードを書きましたが、シリアルポートが見つかりません"COM 4"。私は何が間違っているのですか?

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

java - シリアル通信によるマイコンへのデータ書き込みの不具合

シリアル通信を使用してコマンドをマイクロコントローラに送信しようとしています。次のコードをエラーなしでコンパイルして実行できますが、レジスタに値が書き込まれません。私は何を間違っていますか?

コード

問題はこの行にあると思われます

これは、マイクロコントローラにコマンドを送信する正しい方法ですか?

コマンドの意味

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

c# - SerialPort Write()は、送信バッファーよりも多くのバイトを送信します

非常に奇妙な問題があります。105バイト[]のバッファを送信していて、反対側で常に116バイトを受信して​​います。

元のデータの最後の2バイトはCRC16です

私が送信に使用しているコードは、永遠にループしています。

私が常に反対側で取得しているのは、次の116バイトです(メッセージが元のCRCバイトで終了するのはどのくらい奇妙ですか??)

この問題を解決するために助けをいただければ幸いです。

ありがとうございました

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

c# - 複数のスレーブとの通信 (Modbus プロトコルベース)

私は、50 ~ 60 台の Modbus サポート デバイス (スレーブ) が、要求応答メカニズムでアプリケーションと通信している Com ポートに接続されていると言うアプリケーションを開発しています。

15分ごとに欲しい。要求はすべてのメーターに送信され、応答はメーターから 1 つずつ受信されます。複数のスレーブとの通信 (Modbus プロトコルベース)

このために、System.Timers.timer を使用してメソッドを呼び出し、15 分ごとに ReadAllSlave() と言います。ReadAllSlave() では、For ループを使用して要求を送信し、応答を受信し、thread.sleep を使用して遅延を維持しました..! しかし、それは機能していないようで、ループは有線の方法で実行されています。

同じことを実装するための最良のアプローチを教えてください。

前もって感謝します。

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

asynchronous - plc modbus ascii 複数命令

Modbus ASCII プロトコル (RS485) を使用するアプリケーションを実行しています。

クライアントは、シリアル ポートを介して PLC と通信する PLC サービスと通信します。

毎回 1 つのコマンドを送信することに制限があるのか​​、それとも次のコマンドを送信する前に PLC から応答が返ってくるのを待つ必要があるのか​​どうかはわかりません。

一度に 1 つの命令しか処理できない場合、私のクラスの設計では 1 つの非同期メソッド呼び出しがサポートされ、IsBusy プロパティが公開されるため、これは PLC サービスのアーキテクチャに影響します。それ以外の場合は、同時メソッド呼び出しをサポートし、呼び出しごとに stateId を渡す必要があります (EAP: イベント ベースの非同期パターンを使用します)。

前もって感謝します。

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

python - TCPシリアル接続を介したPymodbus(シリアル)

Linux サーバーとセルラー モデムの間の接続を作成します。モデムはシリアル オーバー TCP のサーバーとして機能します。

モデム自体は、RS232 接続を介して modbus デバイス (産業用プロトコル) に接続されています。

エンド modbus デバイスとの通信を容易にするために pymodbus を使用したいと思います。ただし、エンドデバイスがシリアル modbus (Modbus RTU) を話すため、PyModbus で TCP modbus オプションを使用できません。また、Linuxサーバーで実際のローカルシリアルポート(ttyデバイス)を開くことを期待しているため、Pymodbusでシリアルmodbusオプションを使用できません。

pymodbus ライブラリが接続をローカル シリアル デバイスとして認識するように、シリアル接続をブリッジするにはどうすればよいですか?

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

python - シリアルオーバー TCP 接続から偽の TTY デバイスを作成する

シリアル接続を使用してデバイスと通信するため、tty デバイスを必要とする使用したいライブラリ (PyModbus) があります。ただし、これから話すデバイスは、serial over tcp をサポートするモデムの背後にあります (デバイスはモデムの COM ポートに接続されます)。

途中でモデムがなければ、それは些細なことです。USBシリアルケーブルをデバイスに接続し、もう一方の端をコンピューターに接続します。モデムが邪魔になると、サーバーはモデムの tcp ポートに接続し、そこからシリアル データを送信する必要があります。モデムは受信したデータを com ポートに接続されたデバイスに渡します。

Linux で、「serial over tcp 接続」から一時的な使用のために偽の tty を作成し、その後破棄する最良の方法は何ですか。これは定期的に発生し、個々の Linux サーバーでは、これらのエミュレートされたデバイスが常に 10 ~ 500 個開いている可能性があります。

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

python - pyserial 経由で 16 進数 (Modbus パケット) を送信する際のトラブル

次の 16 進コード 0x01 0x03 0x00 0x00 0x00 0x01 0x0a 0x84 を、Python と pyserial を使用して現在の電圧の int を返すシリアル デバイス (電圧センサー) に送信する際に問題が発生しています。私のコードは次のとおりです。

問題は、Python が各バイトを個別のパケットとして送信しているように見えることです。シリアル モニターからの以下の画像を参照してください。

http://www.centralinfo.com.au/images/SerialOutput.pngで画像を参照してください。

最初の 8 バイト (00 - 07) は、python アプリからのものです (異なるパケットの代替色に注意してください)。次の 8 バイト (08 - 0f) は、動作する同じデータを送信する VB.net アプリです。

私の質問は、上記の 16 進数の 8 バイトを送信して、vb.net アプリに従って 1 つのパケット (Modbus プロトコル) にする方法です。

比較のための VB コード:

お時間をいただきありがとうございますクリス

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

c - UDP sendto と recvfrom は異なるポートで

職場でいくつかの機器と通信しようと決心した後、ソケットがどのように機能するかについて頭を悩ませようとしています。基本的な詳細は、機器が UDP 経由で ModBus RTU プロトコルを使用することです。データシートによると、機器はポート 2001 でリッスンし、ポート 2000 に応答します。サンプル コードを見つけようとした後、modbus ライブラリを見つけ、送信と受信が同じように見えるいくつかのシミュレータで動作させることができました。ポート。しかし、私はそれを私の機器で動作させることができないようです。問題はポートに関係していると思います。私はすべてを見てきましたが、有用なものを見つけることができないようです (おそらく、十分に理解していないだけです)。これが私が取り組んでいるコードです。誰かポインタがありますか。