問題タブ [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.
java - ソケットが間違った値を数回読み取る入力ストリームを取得する
デバイスから常にデータを読み取る Java Modbus/TCP アプリケーションがあります。
これは 99.9% の時間正常に動作していますが、週末に動作した後、数秒間、Read Multiple Holding Registers 関数の偽の値を取得する奇妙なモードに入る可能性があります。
Modscan アプリケーションを使用して確認したところ、クライアント サイトに偽の値が表示されました。これは、サーバー デバイスが正しく応答していることを意味します。
私が得ることができる答えは、0、1、およびその他のランダムな値で満たされた Byte 配列です。
これが私のModbus / TCPの回答の読みです:
return null は関数外で間違った例外として処理されます。
私は2つの保護を追加しました:
read() メソッドは EOF の後に -1 を返すので、以下を追加します。
/li>サポートされていない Modbus/TCP メソッドに対しては null を返します。
/li>
ストリームの読み取りで、保護されていない何かが足りないのかもしれません。
c++ - Modbus プロトコルを使用した Kepware への投稿
modbus を使用して kepware にデータを送信しようとしています。これは上司から与えられたまったく新しいプロジェクトで、知識が限られているためどこから始めればよいかわかりません。これを C++ でどのように実現できるかについての洞察をいただければ幸いです。
java - Modbus4J Modbus RTU マスター
現在、Schneider Power Logic の電気デバイスを使用しています。デバイスからデータを読み取り、システムに値を表示したいと考えています。これまでのところ、J2mod、Jamod、および Modbus4Java ライブラリを発見しました。すべての modbus4java を使用して接続し、デバイスのデータを取得しました。
実際、Master 側と Slave 側のどちらを作成するか、いまだに迷っています。私の理解に基づいて、デバイスはスレーブになり、私のシステムはマスターになります(最初の質問)。
以下はAT MY DEVICEの設定です。スレーブ モードのデバイスとそのプロトコルが Modbus RTU であることを示します。それで、ModbusRTUプロトコルを使用しているマスターアプリと通信するためのマスターアプリを作成する必要がありますか? (2問目)
- モード: スレーブ
- プロトコル: Modbus RTU
- 住所(1
- ボーレート: 38400
- パリティ: なし
以下は、マスターとして機能し、ModbusRTU プロトコルを使用する私のアプリのコードです。
これは、Modbus4Java ページで提供されているサンプル コードから取得したコードです。私が気になるもう1つのparams.setCommPortId("COM6");
ことは、そこに置くことができる「COM6」以外の値です。基本的に文字列値を受け取るためです。それで、任意の文字列値をそれに入れることができますか? そして、この特定の setCommPortID の機能は何ですか。(3問目)
Modbus4Javaのページで提供されているサンプルコードを見ると、デバイスのIPアドレスが記載されていません。しかし、私の場合、私のデバイスは IP アドレスを取得しました。また、IP アドレスはスレーブ アプリでのみ使用されます。システムはどのようにデバイスの IP アドレスを認識する必要がありますか? (4番目の質問)。
このコード スニペットを実行した後、エラーが発生しました。
安定したライブラリ
ネイティブ ライブラリ バージョン = RXTX-2.1-7
Java lib バージョン = RXTX-2.1-7
Modbus マスター初期化エラー: com.serotonin.io.serial.SerialPortException: gnu.io.NoSuchPortException
どうか、どうか、どうか私を助けてください。私はこれでほぼ1か月立ち往生しています。誰かが私を助けてくれることを本当に願っています。あらゆる種類のヘルプと提案を事前にありがとうございます。
c++ - typedef 構造体で shared_ptr をブーストする
libmodbusでコンパイルの問題が発生しています。次のコードがあります
しかし、次のエラーが表示されます
modbus.hのこの行を指しています
問題のトラブルシューティングを行うには、これについて十分に理解していません。それは何だと思いますか?このライブラリはスマート ポインタと互換性がありませんか? 通常のポインターを使用するように指示されます
ありがとうございました。
ios - modbus通信でIPアドレスを取得するには?
プロジェクトが既にgithubに存在するため、wifiに存在するすべてのIPアドレスではなく、UDPソケットプログラムによってModbus通信デバイスを介してIPアドレスにアクセスするiOSアプリケーションを作成しています。Objective-C platform で必要なのと同じ基本ロジックを Java で記述した Android コードがあります。j2objc コンバーターでも動作しません。iOS プラットフォーム用に同じコードが必要なため、Android プロジェクト用の Java のコードを次に示します。
c# - 組み込み C での Modbus RTU の実装
私の質問は奇妙ですので、お詫び申し上げます。
「DiGi Module Connect Me 9210」という電子機器に Modbus RTU Master を実装する予定です。このデバイスから、PIC からのデータ、ノードや温度などのデータ、およびその他のデータを要求します。自分のデバイスに FC 04/03/16 を実装したいだけです。
Digi モジュールは電子デバイスであるため、この目的のために、Digi モジュールを介して GUI を使用して PIC からデータを要求する C# GUI を作成します。これは、Digi が Modbus RTU プロトコルを使用して PIC に接続されるためです。Digi でデータを取得したら、REST API を使用してそのデータをクラウドに送信します。
GUI から DIgI へは TCP/IP を使用し、DIGI から PIC へは Modbus RTU を使用し、Cloud と DiGi の間には REST AP を使用します。
C# でデータを削除したいので、GUI から PIC に DIGI を介して要求を送信するだけで (私の DIGI は GUI と PIC の間のブリッジになります)、ノードを構成するか、PIC からノード データを取得します。3X / 4X レジスターからデータを取得するには、80 リクエストなどを使用して、ほぼ 9999 レジスターを一度に読み取る必要があります。質問は次のとおりです。
☺ Modbus RTU をデバイスまたはシステムに実装する方法。
☺ 3X レジスターからすべてのランタイム データを読み取りたい場合、GUI を介してすべての 9999 レジスターを読み取るにはどうすればよいでしょうか?
☺ どうすればすべての 4X レジスターを 1 回で読み書きできますか?
また、ページング手法も実装しているため、ページ 0 には 9999 個のレジスタがあり、ページ 1 には 9999 個のレジスタがあります。したがって、温度を読み取りたい場合は、ページ 0 に移動してレジスタを読み取る必要があり、速度値を読み取りたい場合は、ページ 1 に移動してすべてのレジスタをチェックする必要があります。
GUIは何かのように見えます
ユーザーはノード番号、次に温度を追加し、リクエストを送信します。