Expand description
§tokio-modbus
A pure Rust Modbus library based on tokio.
Modbus is based on a master/slave communication pattern. To avoid confusion with the Tokio terminology the master is called client and the slave is called server in this library.
§Features
- Pure Rust library
- Modbus TCP or RTU at your choice
- Both
async
(non-blocking, default) andsync
(blocking, optional) - Client API
- Server implementations
- for out-of-the-box usage or
- as a starting point for a customized implementation
- Open source (MIT/Apache-2.0)
§Installation
Add this to your Cargo.toml
:
[dependencies]
tokio-modbus = "*"
§Cargo Features
"rtu"
: Asynchronous RTU client (default)"tcp"
: Asynchronous TCP client (default)"rtu-sync
: Synchronous RTU client"tcp-sync"
: Synchronous TCP client"rtu-server"
: (Asynchronous) RTU server"tcp-server"
: (Asynchronous) TCP server"rtu-over-tcp-server"
: (Asynchronous) RTU over TCP server
§Examples
If you only need an asynchronous TCP client add the following line to your Cargo.toml file:
[dependencies]
tokio-modbus = { version = "*", default-features = false, features = ["tcp"] }
For an asynchronous RTU client:
[dependencies]
tokio-modbus = { version = "*", default-features = false, features = ["rtu"] }
For an RTU server:
[dependencies]
tokio-modbus = { version = "*", default-features = false, features = ["rtu-server"] }
For a TCP server:
[dependencies]
tokio-modbus = { version = "*", default-features = false, features = ["tcp-server"] }
§Examples
Various examples for Modbus RTU and TCP using either the asynchronous or synchronous API can be found in the examples folder.
§Testing
The workspace contains documentation, tests, and examples for all available features.
cargo test --workspace
cargo test --workspace --all-features
§Protocol-Specification
- Modbus Application Protocol Specification v1.1b3 (PDF)
- Modbus over serial line specification and implementation guide v1.02 (PDF)
- Modbus Messaging on TCP/IP Implementation Guide v1.0b (PDF)
§License
Copyright (c) 2017-2024 slowtec GmbH
Re-exports§
Modules§
Structs§
- Exception
Response - A server (slave) exception response.
- Slave
Request - A Modbus request with slave included
Enums§
- Error
- Protocol or transport errors.
- Exception
Code - A server (slave) exception.
- Function
Code - A Modbus function code.
- Protocol
Error - Modbus protocol error.
- Request
- A request represents a message from the client (master) to the server (slave).
- Response
- The data of a successful request.
Type Aliases§
- Address
- A Modbus protocol address is represented by 16 bit from
0
to65535
. - Quantity
- Number of items to process.
- Result
- Specialized
std::result::Result
type for type-checked responses of the Modbus client API.