JLib ModbusとModbus 4 J Modbusライブラリの比較と実践

freeFree Technical Resource

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

JLib ModbusとModbus 4 J Modbusライブラリの比較と実践

JavaエコシステムにおけるModbusライブラリ

Javaは、産業オートメーションのサーバーサイド開発(SCADAバックエンド、MESデータ収集、産業用データ処理サービスなど)で広く使用されています。modbus.orgでは、JLibModbusやModbusPalに加えて、Jamod(カバー済み)とModbus 4 J(カバー済み)の2つのJava Modbusライブラリを推奨している。この記事では、まだカバーしていないJLib ModbusとJavaライブラリ間の選択の推奨事項に焦点を当てます。

JLib Modbus-活発に開発されたJava Modbusプロトコルスタック

JLib Modbusは、SourceForgeでホストされている純粋なJava実装Modbusプロトコルライブラリです。sourceforge.net/projects/jlibmodbus。JLib ModbusはJamodとは対照的に継続的に更新されテストされており、“アクティブにテストされ改善された”プロジェクトである。

機能性の特徴

  • Modbus RTUとModbus TCPのサポート
  • シリアルインタフェースはjSSC(Java Simple Serial Connector)またはRXTXライブラリで実装されている。
  • 常用機能コード(FC01-FC06、FC15、FC16、FC 23)をサポートする
  • マスターとスレーブの2種類
  • ローカルライブラリ依存のない純粋なJava実装(シリアルライブラリを除く)

Maven依存関係

<!-- JLib ModbusのMaven統合の例-->
<依存関係は>
    <groupId com.intelligt.modbus/groupId>
    <aractId jlibmod/aractId>
    <バージョン1.2.7/バージョン>
</dependency>

TCPクライアントの例

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パラメータの設定
        TcpParameters tcpParams = new TcpParameters;
        tParams.setHost "192.168.1.100";
        tParams.setPort 502;
        
        //TCPマスターの作成
        ModbusMaster = ModbusMasterFactory.createModbusMasterTCP tcpParams;
        master.connect;
        
        //ホールドレジスタを読み込む(スレーブステーション1、アドレス0、10レジスタ)
        int[] registers = master.readHoldingRegisters 1 0 10;
        
        System. out.println "結果の読み取り";
        for int i = 0; i registers.length; i++{
            System. out.f "ロードアドレス%d % d 0x % 04X %n" i registers [i] registers [i];
        }
        
        //単一レジスタへの書き込み
        master.writeSingleRegister 1 0 1234;
        
        master.disconnect;
    }
}

Java Modbusライブラリの比較

クワの名前プロジェクトのステータストランスポートモードライセンスはおすすめシーン。
JamodStopSourceForgeTCP, RTU, ASCIIBSD-ish学習目的、新規プロジェクトは推奨しない
Modbus4JStopSourceForgeTCP, UDP, RTU, ASCIIGPL完全なサポートが必要な場合
JLibModbusアクティブSourceForgeTCP, RTUApache 2.0新規プロジェクトの優先順位
ModbusPalもっと止めろTCP, RTUGPLステーションからのシミュレーションシーン

高度なシナリオ:JavaでModbusデータ収集サービスを構築する

大規模な産業プロジェクトでは、バックエンドサービスが数十台のModbusスレーブデバイスを常時ポーリングし、データベースにデータを保存し、上位アプリケーションにクエリを提供する必要があります。JLib Modbusに基づく簡素化されたデータ収集サービスフレームワークを以下に示します。

public class ModbusDataCollector {
    
    // デバイス設定リスト
    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) {
        // 写入時系列データベース(如 InfluxDB、TDengine)或リレーショナルデータベース
    }
}

概要まとめ

Javaエコシステムでは、JLib Modbusは現在最も推奨されるオープンソースのModbusライブラリです。Apache 2.0ライセンス(商用プロジェクトに優しい)、活発な開発とテスト、明確なAPI設計です。Modbus関連のデータ収集、デバイス管理、またはJavaスタック上でSCADAバックエンドサービスを開発している場合、JLib Modbusは推奨される基盤プロトコルCommunicationライブラリです。

この資料を実際のプロジェクトに活用しませんか?

ツールセンターで電文解析、CRCチェック、デバイスデバッグを行うか、要件を送信して選定と接続のアドバイスを受けましょう。

エンジニア会員

この記事を実行可能なデバッグ資料に

登録すると、高度な電文解析、資料パックのダウンロード、コード例、エンジニアリングケース、優先技術サポートが利用可能に。実際のプロジェクト納品に最適です。

高度なツール無制限
資料パックとコードパック
完全なエンジニアリングケースライブラリ
優先技術サポート窓口

Leave a Reply

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