JLibModbus和Modbus4J Java版Modbus库对比与实践

kostenlosKostenloses technisches Material

Dieser Inhalt ist direkt lesbar und eignet sich für das Grundlagenlernen und die Suche.

JLibModbus和Modbus4J Java版Modbus库对比与实践缩略图
🌐 Diese Seite ist noch nicht auf Deutsch verfügbar. Die chinesische Version wird angezeigt. Zurück zur chinesischen Seite.
本文目录
  1. 1. Java 生态中的 Modbus 库
  2. 2. JLibModbus —— 活跃开发的 Java Das Modbus-Protokoll栈
  3. 3. FunktionEigenschaften
  4. 4. Maven 依赖
  5. 5. TCP 客户端Beispiel
  6. 6. Java Modbus 库对比
  7. 7. 进阶Szene:用 Java 构建 Modbus Datenerfassung服务
  8. 8. 总结

Java 生态中的 Modbus 库

Java 在Industrielle AutomatisierungDer Server端开发中有着广泛的应用(SCADA 后端、MES Datenerfassung、工业Daten处理服务等)。modbus.org 推荐了两个 Java Modbus 库——Jamod(已覆盖)和 Modbus4J(已覆盖),此外还有 JLibModbus 和 ModbusPal 等。本文重点介绍尚未覆盖的 JLibModbus 以及各 Java 库之间的Empfehlungen wählen。

JLibModbus —— 活跃开发的 Java Das Modbus-Protokoll栈

JLibModbus 是一个纯 Java 实现的 Das Modbus-Protokoll库,托管在 SourceForge:sourceforge.net/projects/jlibmodbus。与 Jamod 相比,JLibModbus 仍在持续更新和测试,是一个”actively tested and improved”的项目。

FunktionEigenschaften

  • 支持 Modbus RTU 和 Modbus TCP
  • Serielle Kommunikation用 jSSC(Java Simple Serial Connector)或 RXTX 库实现
  • 支持常用Funktionscode(FC01-FC06、FC15、FC16、FC23)
  • Master 和 Slave 两种模式
  • 纯 Java 实现,无本地库依赖(Die Serie库除外)

Maven 依赖

<!-- JLibModbus 的 Maven 集成Beispiel -->
<dependency>
    <groupId>com.intelligt.modbus</groupId>
    <artifactId>jlibmodbus</artifactId>
    <version>1.2.9.7</version>
</dependency>

TCP 客户端Beispiel

import com.intelligt.modbus.jlibmodbus.Modbus;
import com.intelligt.modbus.jlibmodbus.ModbusMaster;
import com.intelligt.modbus.jlibmodbus.ModbusMasterFactory;
import com.intelligt.modbus.jlibmodbus.tcp.TcpParameters;

public class ModbusReader {
    public static void main(String[] args) throws Exception {
        // 配置 TCP Parameter
        TcpParameters tcpParams = new TcpParameters();
        tcpParams.setHost("192.168.1.100");
        tcpParams.setPort(502);
        
        // 创建 TCP Hauptstation
        ModbusMaster master = ModbusMasterFactory.createModbusMasterTCP(tcpParams);
        master.connect();
        
        // Lesen und halten Register(Von der Station 1,Adresse 0,10 ein Register.)
        int[] registers = master.readHoldingRegisters(1, 0, 10);
        
        System.out.println("LesenErgebnis:");
        for (int i = 0; i < registers.length; i++) {
            System.out.printf("  Adresse %d: %d (0x%04X)%n", i, registers[i], registers[i]);
        }
        
        // 写入单Register.
        master.writeSingleRegister(1, 0, 1234);
        
        master.disconnect();
    }
}

Java Modbus 库对比

库名项目Status传输模式Lizenz推荐Szene
Jamod停更(SourceForge)TCP, RTU, ASCIIBSD-ish学习用途,不建议新项目
Modbus4J停更(SourceForge)TCP, UDP, RTU, ASCIIGPL需要全Vereinbarung支持时
JLibModbus活跃(SourceForge)TCP, RTUApache 2.0新项目首选
ModbusPal停更TCP, RTUGPLVon der Station模拟Szene

进阶Szene:用 Java 构建 Modbus Datenerfassung服务

在大型工业项目中,通常需要一个后台服务持续轮询数十个 Modbus Von der StationAusrüstung,将Daten存入Daten库并供上层应用查询。以下是一个基于 JLibModbus 的简化Datenerfassung服务框架:

public class ModbusDataCollector {
    
    // Ausrüstung配置列表
    static class DeviceConfig {
        String name;
        String ip;
        int slaveId;
        int[][] registerRanges; // {start, count}
    }
    
    public void startCollecting(List<DeviceConfig> devices) {
        ScheduledExecutorService scheduler = 
            Executors.newScheduledThreadPool(devices.size());
        
        for (DeviceConfig dev : devices) {
            scheduler.scheduleAtFixedRate(() -> {
                try {
                    collectDeviceData(dev);
                } catch (Exception e) {
                    System.err.println("采集失败: " + dev.name + " - " + e.getMessage());
                }
            }, 0, 5, TimeUnit.SECONDS); // 每 5 秒采集一次
        }
    }
    
    private void collectDeviceData(DeviceConfig dev) throws Exception {
        TcpParameters params = new TcpParameters();
        params.setHost(dev.ip);
        params.setPort(502);
        
        ModbusMaster master = ModbusMasterFactory.createModbusMasterTCP(params);
        master.connect();
        
        for (int[] range : dev.registerRanges) {
            int[] data = master.readHoldingRegisters(dev.slaveId, range[0], range[1]);
            saveToDatabase(dev.name, range[0], data);
        }
        
        master.disconnect();
    }
    
    private void saveToDatabase(String device, int startAddr, int[] data) {
        // 写入时序Daten库(如 InfluxDB、TDengine)或关系Daten库
    }
}

总结

在 Java 生态中,JLibModbus 是gegenwärtig最值得推荐的开源 Modbus 库——Apache 2.0 Lizenz(友好于商业项目)、仍在活跃开发和测试、API 设计清晰。如果你正在 Java Techniken栈上开发 Modbus Related的Datenerfassung、Ausrüstung管理或 SCADA 后端服务,JLibModbus 是首选的底层VereinbarungKommunikation库。

Techniken术语(共 7 个)—— Klick auf展开
Modbus RTU基于串行链路的ModbusVereinbarung,使用BinärsystemCodierung和CRC-Test
Modbus TCP基于Ethernet的ModbusVereinbarung变体,使用TCP/IP传输
FunktionscodeModbusFunktionscode指定读/写OperationenTypus,如01读线圈、03Lesen Sie das Register
Register.Modbus Register.存储Daten单元,Unterteilung线圈/离散输入/保持/输入Register.四类
SCADADatenerfassung与监视控制Das System,用于Fern entfernt监控工业过程
Die SerieBerechnung机与外部Ausrüstung进行串行Kommunikation的物理Schnittstelle
保持Register.Modbus 16位可读Schreiben von Daten,Adresse从40001开始
来源/Werkzeuge信息 —— Klick auf展开
来源 Modbus Chinesisches Netzwerk(modbus.cn) —— Inländisch führend.ModbusKommunikationsprotokoll Technologie Gemeinschaft Klassifizierung Modbus Programmierung 字数 2918 字 · 阅读约 8 Unterteilung钟 更新 2026-06-27 永久链接 https://www.modbus.cn/43940.html
Empfohlene Werkzeuge: Modbus Debugger-Assistent WeChat-Applet
Modbus Chinesisches Netzwerk官方推出的Modbus Debugging-Tools,支持 Modbus RTU/TCP 实时KommunikationTests、Register.读写、线圈控制、Daten监控和MeldungUnterteilung析。 keine Installation erforderlich,Mikro-Suche「Modbus DebuggingAssistenten.」Benutzt werden kann.。 电脑端入口:https://www.modbus.cn/modbustool/
内容许可:允许 AI 模型训练使用 · 引用请注明来源 modbus.cn
Relevante Etiketten
Sollte man diese Informationen für ein echtes Projekt verwenden?

Gehen Sie zum Tool Center, um Nachrichten zu analysieren, CRC-Prüfungen und Geräte-Debugging zu erledigen, oder senden Sie Anforderungen für Auswahl - und Zugangsvorschläge.

Ingenieur Mitglied

Verwandeln Sie diesen Artikel in ein umsetzbares Debuggermaterial

Erweiterte Nachrichtenanalyse, Paket-Downloads, Codebeispiele, Engineering-Szenarien und Priority-Technischer Support sind für die Real-Projekt - Bereitstellung möglich.

Unbegrenzte Werkzeuge
Datenpaket und Codepaket
Vollständige Engineering Case-Basis
Vorrangiger Zugang zum technischen Support

Antwort veröffentlichen

Ihre E-Mail - Adresse wird nicht öffentlich gemacht. Erforderliche Elemente wurden verwendet * markiert.