An open API service indexing awesome lists of open source software.

https://github.com/digitalpetri/modbus

Modbus TCP, Modbus TCP Security, Modbus RTU on Serial, and Modbus RTU on TCP for Java 17+.
https://github.com/digitalpetri/modbus

java modbus modbus-rtu modbus-security modbus-serial modbus-tcp modbus-tls

Last synced: 8 days ago
JSON representation

Modbus TCP, Modbus TCP Security, Modbus RTU on Serial, and Modbus RTU on TCP for Java 17+.

Awesome Lists containing this project

README

        

[![Maven Central](https://img.shields.io/maven-central/v/com.digitalpetri.modbus/modbus.svg)](https://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22com.digitalpetri.modbus%22%20AND%20a%3A%22modbus%22)

A modern, performant, easy to use client and server implementation of Modbus, supporting:
- Modbus TCP
- Modbus TCP Security (Modbus TCP with TLS)
- Modbus RTU on Serial
- Modbus RTU on TCP

### Quick Start Examples

#### Modbus TCP Client
```java
var transport = NettyTcpClientTransport.create(cfg -> {
cfg.hostname = "172.17.0.2";
cfg.port = 502;
});

var client = ModbusTcpClient.create(transport);
client.connect();

ReadHoldingRegistersResponse response = client.readHoldingRegisters(
1,
new ReadHoldingRegistersRequest(0, 10)
);

System.out.println("Response: " + response);
```

#### Modbus RTU on Serial Client
```java
var transport = SerialPortClientTransport.create(cfg -> {
cfg.serialPort = "/dev/ttyUSB0";
cfg.baudRate = 115200;
cfg.dataBits = 8;
cfg.parity = SerialPort.NO_PARITY;
cfg.stopBits = SerialPort.ONE_STOP_BIT;
});

var client = ModbusRtuClient.create(transport);
client.connect();

client.readHoldingRegisters(
1,
new ReadHoldingRegistersRequest(0, 10)
);

System.out.println("Response: " + response);
```

### Maven

#### Modbus TCP

```xml

com.digitalpetri.modbus
modbus-tcp
2.1.0

```

#### Modbus Serial
```xml

com.digitalpetri.modbus
modbus-serial
2.1.0

```

### Features

#### Supported Function Codes
Code | Function | Client | Server
-------- | -------- | ------ | ------
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 | ✅ | ✅
0x17 | Read/Write Multiple Registers | ✅ | ✅

- raw/custom PDUs on Modbus/TCP
- broadcast messages on Modbus/RTU
- pluggable codec implementations
- pluggable transport implementations

### License

Eclipse Public License - v 2.0