使用Spring Boot集成Modbus进行デバイス通信

freeFree Technical Resource

This content is free to read, suitable for basic learning and search traffic.

使用Spring Boot集成Modbus进行デバイス通信

摘要:
在自動化和工业控制系统中,デバイス之间的高效通信是基础且关键的要素。本記事旨在介绍如何経由Spring Boot集成Modbus,実装高效的デバイス通信。Modbus是一种广泛应用于工业自動化领域的串行通信プロトコル,特别适合于モニタリング和控制系统。我们将探讨Modbus的核心概念、其在Spring Boot中的実装方法,以及如何経由这种集成読み書き設備のデータ。

Modbusプロトコル概述:
Modbus是由Modicon公司开发的一种通信プロトコル,主要用于可プログラミング逻辑コントローラーは(PLC)之间的通信。它以其简单性、实时性和作为开放標準的互操作性而著称。Modbusサポート多种形式,包括Modbus RTU、Modbus ASCII和基于イーサネット(イーサネット)的Modbus TCP/IP,能够满足不同的通信需求。

集成Spring Boot和Modbus:
在Spring Boot应用中集成Modbus主要涉及以下几个步骤:

  1. 依赖設定: 在项目的pom.xml文件中追加Java Modbus Library的依赖,以便実装ModbusCommunication。
<dependency>
    <groupId>com.intelligt.modbus</groupId>
    <artifactId>modbus-core</artifactId>
    <version>1.2.0</version>
</dependency>
  1. Modbus設定: 作成一个設定类,設定Modbusmaster(Master)的连接信息,如シリアルポート路径、ボーレート等。
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;

@Configuration
public class ModbusConfig {

    @Value("${modbus.serialPort}")
    private String serialPort;

    @Value("${modbus.baudRate}")
    private int baudRate;

    @Value("${modbus.dataBits}")
    private int dataBits;

    @Value("${modbus.stopBits}")
    private int stopBits;

    @Value("${modbus.parity}")
    private int parity;

    // ...其他設定参数

    @Bean
    public ModbusMaster modbusMaster() {
        ModbusFactory modbusFactory = new ModbusFactory();
        Transport transport = new SerialTransport(serialPort, baudRate, dataBits, stopBits, parity);
        ModbusMaster master = modbusFactory.createRtuMaster(transport);
        master.init();
        return master;
    }
}
  1. データ読み書き: 実装Service类,封装読み取り和写入Modbus設備のデータ的方法。経由调用这些方法,可以実装对Modbusslave(Slave)的読み取り和控制。
@Service
public class ModbusService {

    @Autowired
    private ModbusMaster modbusMaster;

    public int readHoldingRegister(int slaveId, int offset) {
        try {
            //作成一レジスタを保持する。的データポジショニング器(Locator)对象
            BaseLocator<Integer> locator = BaseLocator.holdingRegister(slaveId, offset, DataType.TWO_BYTE_INT_SIGNED);
            return modbusMaster.getValue(locator);
        } catch (ModbusTransportException | ErrorResponseException e) {
            e.printStackTrace();
            return -1;
        }
    }
}

サンプル应用:
我们将表示一个简单的应用サンプル,表示如何経由Spring BootreadModbusデバイス保持レジスタです。データ。这涉及到作成データポジショニング器(Locator)和执行Modbus読み取り命令。

参数説明:

  1. slaveId:这是 Modbus 通信中駅からの住所。每个 Modbus スレーブデバイス都有一个唯一的アドレス,通常在 1 to 247 之间。slaveId 参数用于指定要与之通信的目标スレーブデバイス的アドレス。通常,Modbus マスター向特定的スレーブデバイスリクエストの送信,スレーブデバイス根据其アドレス来判断は、否需要レスポンスリクエスト。因此,slaveId 参数指定了通信的目标。
  2. offset:这个参数用于指定要読み取り保持レジスタです。的開始アドレス。Modbus protocol中的レジスタ通常是一个 16 位的データユニット,可以存储整数、浮動小数点数または他のデータ型。offset パラメータテーブル示从哪1つのレジスタ読み始めました取データ。経由指定 offset,您可以确定要読み取り的レジスタ的位置。

例如,もし您调用 readHoldingRegister(1, 100),这表示要読み取り駅からの住所为 1 的デバイス保持レジスタです。,从レジスター·アドレス 100 読み始めました取データ。这2つ参数共同确定了要読み取り的レジスタ的位置和目标デバイス。通常,您会根据特定的スレーブデバイス設定和通信需求来传递不同的 slaveId 和 offset 值,以実装对不同デバイス和不同レジスタ的読み取り操作。这2つ参数是 Modbus 通信中的关键参数,用于指定通信的目标和データ的位置。

写入Modbusdata

もし需要写入Modbusデバイス的データ,可以作成一个方法来执行写入操作。以下是一个サンプル:

public void writeHoldingRegister(int slaveId, int offset, int value) {
    //slaveId:这是 Modbus 通信中駅からの住所
    //offset:用于指定要写入保持レジスタです。的開始アドレス
    //value:这是要写入到指定レジスタ的数值
    try {
        BaseLocator<Integer> locator = BaseLocator.holdingRegister(slaveId, offset, DataType.TWO_BYTE_INT_SIGNED);
        modbusMaster.setValue(locator, value);
    } catch (ModbusTransportException | ErrorResponseException e) {
        e.printStackTrace();
    }
}

这个方法允许您写入Modbusレジスタを保持する。的值。

設定文件

根据项目需要,您可以在application.propertiesapplication.yml中設定Modbus连接信息,例如シリアルデバイス路径、ボーレート等。以下是一个サンプルYAML設定:

modbus:
  #シリアルデバイス路径
  serialPort: /dev/ttyUSB0
  #Baud rate
  baudRate: 9600
  #データ·ビット数
  dataBits: 8
  #ストップ·ビット数
  stopBits: 1
  #check digit,例如0(0表示検証なし。,1表示奇数チェック,2表示ダブルチェック)
  parity: 0

结论:
集成Spring Boot与Modbus为开发人员提供了一个强大且灵活的プラットフォーム,用于构建和管理工业通信系统。経由本記事提供的方法和サンプル,您可以早速スタート。実装基于Modbus的デバイス通信。

Put this resource to use in a real project?

Go to the Tool Center for message parsing, CRC verification and device debugging, or submit your requirements for selection and integration advice.

Engineer Membership

Turn this article into actionable debugging resources

After activation, you can use advanced message parsing, resource pack downloads, code examples, engineering cases and priority technical support, suitable for real project delivery.

Unlimited Advanced Tools
Resource & Code Packs
Complete Engineering Case Library
Priority Technical Support

《 “使用Spring Boot集成Modbus进行デバイス通信” 》 有 2 条コメント

Leave a Reply

Your email address will not be published. Required fields are marked *.