High-performance, non-blocking, zero-buffer-copying Modbus for Java
Switch branches/tags
Clone or download
kevinherron Revert releaseSharedResources() to be non-blocking and non-throwing
Add releaseSharedResources() overload that lets user specify the amount
of time to block waiting for shutdown.
Latest commit 4d376fe Jun 21, 2017

README.md

High-performance, non-blocking, zero-buffer-copying Modbus for Java.

Quick Start

ModbusTcpMasterConfig config = new ModbusTcpMasterConfig.Builder("localhost").build();
ModbusTcpMaster master = new ModbusTcpMaster(config);

CompletableFuture<ReadHoldingRegistersResponse> future =
        master.sendRequest(new ReadHoldingRegistersRequest(0, 10), 0);

future.thenAccept(response -> {
    System.out.println("Response: " + ByteBufUtil.hexDump(response.getRegisters()));

    ReferenceCountUtil.release(response);
});

See the examples project for more.

Maven

Modbus Master

<dependency>
    <groupId>com.digitalpetri.modbus</groupId>
    <artifactId>modbus-master-tcp</artifactId>
    <version>1.1.0</version>
</dependency>

Modbus Slave

<dependency>
    <groupId>com.digitalpetri.modbus</groupId>
    <artifactId>modbus-slave-tcp</artifactId>
    <version>1.1.0</version>
</dependency>

Supported Function Codes

Code Function
0x01 Read Coils
0x02 Read Discrete Inputs
0x03 Read Holding Registers
0x04 Read Input Registers
0x05 Write Single Coil
0x06 Write Single Register
0x0F Write Multiple Coils
0x10 Write Multiple Registers
0x16 Mask Write Register

Get Help

See the examples project or contact kevinherron@gmail.com for more information.

License

Apache License, Version 2.0