modbus4jの最初の使用の要約



Summary First Use Modbus4j



監視システムを開発するには、modbusプロトコルを介して監視機器と通信する必要があります

まず、modbusプロトコルとは何かを説明します



Modbus シリアルです 同意書 、Modicon Corporation(現在は シュナイダーエレクトリック シュナイダーエレクトリック)は1979年に使用されました プログラマブルロジックコントローラー (PLC)通信。 Modbusは産業分野の通信プロトコルになりました 業界標準 (事実上)、そして現在、産業用電子機器間の一般的な接続方法です。 [1] Modbusが他の通信プロトコルよりも広く使用されている主な理由は次のとおりです。

公開され、著作権の要件はありません



導入と保守が簡単

サプライヤの場合、モバイルローカルビットまたはバイトの変更に制限はありません。

Modbusを使用すると、複数(約240)のデバイスを同じネットワークに接続して通信できます。たとえば、温度と湿度を測定し、結果をに送信するデバイス コンピューター 。に データ収集および監視制御システム (SCADA)、Modbusは通常、監視コンピュータを接続するために使用され、 リモート端末制御システム (RTU。。。



ウィキペディアから取得

私はJavaソリューションフレームワークを研究しました j2modjamod 、Modbus4jなど。比較してみると、modbus4jは良いと思いますので、modbus4jで実現しています。

テストハードウェアを入手しなかったため、プログラムのデバッグに使用できるのはシミュレーションツールのみです。インストールする必要のあるシミュレーションツールは次のとおりです。

仮想シリアルポートドライバーは、シリアルポートをシミュレートし、仮想COMペアを作成します

Modbusスレーブ

仮想シリアルポートドライバーは、シミュレートされたシリアルポートを作成するために使用され、Modbusスレーブはスレーブエンドをシミュレートします

仮想シリアルポートドライバーを使用してシリアルポートを作成すると、作成できないエラーが発生しました。その後、問題を解決するために新しいバージョン8.0をダウンロードしました。

プログラムのデバッグで注意が必要な問題について話しましょう

modbus4jのMasterTest.javaには、さまざまな操作のテストコードが含まれています

しかし、テストRTUモードを実行していると、nullポインターエラーが常に報告されることがわかり、最後に、Javaシリアル通信操作をサポートするためにRXTXcomm.jarパッケージを使用する必要があるjarパッケージを見つけました。後で、このパッケージの構成が非常に煩わしく、jdkビンにもあることがわかりました。ディレクトリにrxtxSerial.dllファイルを追加します。 Windowsオペレーティングシステムはこのファイルです。その他のオペレーティングシステムについては、https://github.com/rxtx/rxtxを参照して特定の設定を確認してください。最後に、この方法をあきらめて、他の解決策を探します。

最後に、TestSerialPortWrapper.javaが疑わしいことが判明しました。このクラスはSerialPortWrapperインターフェイスを実装しましたが、対応するメソッドを実装しませんでした。したがって、SerialPortWrapperの実装から始めて、後で 自由主義 このオープンソースアーキテクチャでSerialPortWrapperインターフェイスの実装を見つけ、これらのクラスのいくつか、主にcom.freedomotic.plugins.devices.modbus.gatewaysディレクトリのSerialPortWrapperImpl.javaを直接移行しました。 SerialInputStream.java .java、 SerialOutputStream.java 3つのクラス。どちらにあります SerialInputStream.java .javaクラスの125行目で、System.arraycopy(readBuf、0、buf、offset、length)の長さの値により、配列の範囲外エラーが発生します。これをSystem.arraycopy(readBuf、0、buf、offset)に変更してください。 、readBuf。length)これで、これらのクラスはjSSCを使用してシリアル通信を解決し、RXTXの複雑な構成を行わずに、パッケージを直接インポートするだけです。

MasterTest.javaクラスでさまざまな操作メソッドをテストするときは、ModbusスレーブのFunctionパラメーターを調整して2つを対応させることに注意する必要があります。

プロジェクト全体で参照する必要のあるパッケージは次のとおりです。

依存関係{

コンパイルグループ: 'org.slf4j'、名前: 'slf4j-api'、バージョン: '1.7.25'

// modbus

コンパイルグループ: 'com.infiniteautomation'、名前: 'modbus4j'、バージョン: '3.0.3'

コンパイルグループ: 'org.scream3r'、名前: 'jssc'、バージョン: '2.8.0'

}

参照文書:

https://zh.wikipedia.org/wiki/Modbus

仮想シリアルポートドライバー

https://www.eltima.com/cn/products/vspdxp/

自由主義

https://github.com/freedomotic/freedomotic

modbus4j

https://github.com/infiniteautomation/modbus4j

jSSC

https://github.com/scream3r/java-simple-serial-connector

RXTX

https://github.com/rxtx/rxtx

http://www.cnblogs.com/Dreamer-1/p/5523046.html

https://blog.csdn.net/u013150916/article/details/78065479

https://www.cnblogs.com/Dn9x/p/4298146.html

https://github.com/infiniteautomation/modbus4j/issues/5