概要:
オートメーションおよび産業用制御システムでは、デバイス間の効率的なCommunicationが基本的かつ重要な要素です。この記事では、Spring BootでModbusを統合して効率的なデバイスCommunicationを実現する方法を説明します。Modbusは、産業オートメーションの分野で広く使用されているシリアルCommunicationプロトコルであり、特に監視および制御システムに適しています。Modbusのコアコンセプト、Spring Bootでの実装方法、およびこの統合を通じてデバイスデータを読み書きする方法について説明します。
Modbusプロトコルの概要:
ModbusはModicon社によって開発されたCommunicationプロトコルで、主にプログラマブル·ロジック·コントローラPLC間のCommunicationに使用されている。オープン標準としてのシンプルさ、リアルタイム性、相互運用性で知られています。Modbusは、Modbus RTU、Modbus ASCI I、イーサネットベースのModbus TCP/IPなど、さまざまな通信要件を満たす複数のフォーマットをサポートしています。
Spring BootとModbusの統合:
Spring BootアプリケーションへのModbusの統合には、以下の手順があります。
- 依存構成:ModbusCommunicationのために、プロジェクトのpom.xmlファイルにJava Modbus Libraryの依存関係を追加します。
<dependency>
<groupId>com.intelligt.modbus</groupId>
<artifactId>modbus-core</artifactId>
<version>1.2.0</version>
</dependency>- Modbusの構成:シリアルパス、ボーレートなど、ModbusマスタMasterの接続情報を設定するコンフィギュレーションクラスを作成します。
import org.springframework.beans.factory.annotation.Value;
インポートorg.springframework.context.annotation.Configuration;
Configuration
public class modbusConfig {
@Value "${modbus.serialPort}"
private String serialPort;
@Value "${modbus.baudRate}"
プライベートint baudRate;
@Value "${modbus.dataBits}"
プライベートintデータセット;
@Value "${modbus.stopBits}"
プライベートint stopBits;
@Value "${modbus.parity}"
プライベート·パリティ
// ...追加の構成パラメータ
@Bean
public modbusMaster modbusMaster {
ModbusFactory modbusFactory = new modbusFactory;
Transport transport = new SerialTransport(serialPort, baudRate, dataBits, stopBits, parity);
ModbusMaster = modbusFactory. createRMaster sport;
master.init;
マスターに戻る。
}
}- データの読み書き:Modbusデバイスからデータを読み書きするメソッドをカプセル化するServiceクラスを実装します。これらのメソッドを呼び出すことで、スレーブ(Slave)への読み出しと制御を実现できる。
@Serviceさん
パブリッククラスModbus Service
Auto
プライベートモジュールバスマスターモジュールバスマスター;
public int readingRegister int slId int {
Try {
//レジスタを保持するデータロケータLocatorオブジェクトを作成する
BaseLocator Integer> locator = BaseLocator.holdingRegister slaveId offset DataType. TWO_BYTE_INT_SIGNED;
return modbusMaster.getValue locator;
} catch ModbusTransportException| ErrorResponseException e {
e. Stack;
リターン-1;
}
}
}アプリケーション例:
Spring Boot経由でModbusデバイスのキートレジスタデータを読み取る方法を示す簡単なアプリケーション例を示します。これには、データロケータLocatorの作成と、Modbus読み取りコマンドの実行が含まれます。
パラメータの説明:
slaveId:Modbus Communicationにおけるスレーブアドレスです。各Modbusスレーブデバイスには固有のアドレスがあり、通常は1から247の間です。slaveIdパラメータは、Communicationするターゲット·スレーブ·デバイスのアドレスを指定するために使用します。通常、Modbusマスタは、特定のスレーブ装置に要求を送信し、スレーブ装置は、そのアドレスに基づいて要求に応答する必要があるかどうかを判断する。したがって,slaveIdパラメータはCommunicationの宛先を指定します。offset:このパラメータは、読み込む保持レジスタの開始アドレスを指定するために使用されます。Modbusプロトコルのレジスタは通常16ビットのデータユニットであり、整数、浮動小数点数、その他のデータ型を格納できる。offsetパラメータは、どのレジスタからデータの読み込みを開始するかを示す。指定によりoffset読み取りたいレジスタの位置を決定できます。
例えば、電話した場合。 readHoldingRegister(1, 100)と、これは、スレーブアドレスが1のデバイスの保持レジスタを読み出したいということを示し、レジスタアドレス100からデータを読み出し始める。この2つのパラメータは、読み出すレジスタの位置とターゲットデバイスを決定します。通常、特定のスレーブデバイス構成とCommunicationニーズに応じて異なるものを配信します。 slaveId そして、 offset 異なるデバイスと異なるレジスタの読み取りOperationを可能にする値。これら2つのパラメータはModbus Communicationにおいて重要なパラメータであり、Communicationの宛先とデータの位置を指定するために使用される。
Modbusデータの書き込み
Modbusデバイスにデータを書き込む必要がある場合は、書き込みOperationを実行するメソッドを作成できます。以下に例を示します。
public void writeHoldingRegister int slaveId int offset int value {
//slaveId:Modbus Communicationにおけるスレーブアドレスです。
//offset:書き込む保持レジスタの開始アドレスを指定します。
//value:指定されたレジスタに書き込む値です。
Try {
BaseLocator Integer> locator = BaseLocator.holdingRegister slaveId offset DataType. TWO_BYTE_INT_SIGNED;
modbusMaster.setValue locator value;
} catch ModbusTransportException| ErrorResponseException e {
e. Stack;
}
}このメソッドでは、Modbus保持レジスタの値を書き込むことができます。
プロファイル
プロジェクトのニーズに応じて、application.propertiesまたはapplication.ymlシリアルデバイスパス、ボーレートなどのModbus接続情報を設定します。以下はサンプルのYAML構成です。
modbus
#シリアルデバイスパス
serialPort/dev/ttyUSB0
#ボーレート
baudRate:96 00
#データの数
dataBits 8
#数字を止める
stopBits 1
0のようなチェックビット(0はチェックなし、1は奇数、2は偶数)
parity 0結論:
Spring BootとModbusの統合は、産業用通信システムを構築および管理するための強力で柔軟なプラットフォームを開発者に提供します。この記事で提供する方法と例を使用すると、ModbusベースのデバイスCommunicationの実装をすばやく開始できます。
maven官方好像找不到这个依赖?
我也是,不知道怎么解決