問題タブ [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 - jamod ライブラリを使用して Java で Register オブジェクトをインスタンス化するにはどうすればよいですか?
私は現在、作業用の小さな制御システムをセットアップするために、jamod を使用しています。私たちは複数の PLC を使用しており、通信には MODBUS プロトコルを使用する必要があります。コントローラーで測定された値を読み取ることはできましたが、コントローラーへの書き込み (アンペア数の調整) に失敗しました。
私の質問は、jamod を使用して Register オブジェクトをインスタンス化するにはどうすればよいですか?
これはうまくいきません。基本的に、位置0のレジスタの値を整数16000に設定したいと思います。また、使用してみました
私はjamodのドキュメントを調べてきましたが、適切なレジスタオブジェクトを作成する方法も、適切なレジスタを設定して書き込む方法の例も見つかりません。
誰かに何かアイデアがあれば、私はとても感謝しています。:)
java - Java (JAMOD) で Modbus を継続的にクエリする正しい方法
JAMOD ライブラリを使用して、毎秒 Modbus を照会する方法を尋ねたかったのです。Modbus への予備接続を作成し、ループ内で while(true) Modbus をクエリすることにしました。デバイスに問い合わせた後、Thread.sleep (1000) を使用します。正しい方法ですか?ありがとうございました。
java - net.wimpi.modbus.ModbusSlaveException: Modbus プロトコルを使用してユニットを接続しようとしたときのエラー コード = 2
ModBus プロトコルをサポートするユニットがあり、'Jamod' を使用してユニットに接続してレジスタ値を読み取ろうとすると、エラー コード 2 が表示されます。
ユニット構成:
このユニットは、RS-485 およびイーサネット インターフェイスを介して Modbus プロトコルをサポートします。RS-485 インターフェイスでは、Modbus ネットワーク上に構成可能な Modbus アドレスがあります。デフォルトでは、これは 99 に設定されています。ユニットはブロードキャスト アドレス 0 にも応答します。
RS-485 インターフェイスは、デフォルトで 9600 ボーのボー レートで動作し、8 ビットおよび偶数パリティを使用します。1200、2400、4800、9600、19200、38400、57600、または 15200 ボーに設定できます。
イーサネット インターフェイスは RJ45 コネクタを使用します。このインターフェイスは、ポート 502 で TCP/IP イーサネット接続をサポートします。スレーブ アドレスは 0 です。
このユニットは、Modbus Read Input Registers 機能コード 4 を使用してデータを返します。また、Modbus 保持レジスタ アクセス機能 3 および 16 を使用して構成パラメータの読み取りと書き込みを行うこともできます。また、Modbus 診断機能コード 8 のサブセットもサポートされています。
ユニットに接続して読む方法を教えてください、ありがとう
エラー:
c - modbus 16 進アドレス変換
GE-PQM II エネルギー メーターからデータを読み取ろうとしています。エネルギー メーターは、2 線 RS-485 MODBUS 接続によるリアルタイム監視をサポートします。c で libmodbus ライブラリを使用して、modbus レジスタを読み取ります。
GE コミュニケーション ガイド ( https://www.ccontrols.com/support/dp/GEK-113532.pdf ) では、レジスタのアドレスは 16 進数で示されています。16 進数を 10 進数に変換しました。
Modbus レジスタ (02F0,02F1) から値を読み取ろうとしています - 対応する 10 進数値は 752,753 です
私のコード:
出力:
16進変換で何か問題がありますか? または他のどこか?
tcp - Pymodbus が PLC スレーブおよび Raspberry Pi マスターとの接続に失敗しました
Raspberry Pi 3 Model B を使用して Allen Bradly PLC から値を読み取ろうとしています。それらの間の通信に Pymodbus Modbus TCP プロトコルを使用しています。
テスト クライアントを実行すると、次のエラーが表示されます。
テスト クライアントのコードは次のとおりです。
PLC のイーサネット カード (10.0.0.237) の IP アドレスに問題なく ping を実行できます。(PLC はオンで、RSLinx と RSLogix5000 に表示されます。)しかし、コマンドでポート 502 (Modbus が使用する) をチェックしようとすると:
エラーが発生します:
私が行った調査では、そのポートが開いているかどうかを確認するように言われましたが、それは PC の場合です。PLC のポートを確認/構成する方法がわかりません。
さらに、Modbus を使用して Raspbery Pi と PLC の間を移動しようとしていることが問題なのかどうか疑問に思っています。インターフェイスを行うプロソフト ゲートウェイを見つけました。しかし、それらが単なる別のオプションなのか、必要なのかについての情報は見つかりませんでした。
私はPLCとネットワークに慣れていないので、助けていただければ幸いです。
python-2.7 - scapy で MODBUS パケットを構築しようとしています
scapy で MODBUS パケットを構築しようとしています が、Wireshark が認識できません。つまり、MODBUS は TCP データとして解釈されます。
Scapy の Python コードは次のとおりです。
誰かがそれを修正する方法を知っていますか?