Expand description
§Voltage Modbus - High-Performance Industrial Modbus Library
Author: Evan Liu liuyifanz.1996@gmail.com Version: 0.4.3 License: MIT
A comprehensive, high-performance Modbus TCP/RTU implementation in pure Rust designed for industrial automation, IoT applications, and smart grid systems.
§Features
- High Performance: Async/await support with Tokio, stack-allocated PDU
- Complete Protocol Support: Modbus TCP and RTU protocols
- Memory Safe: Pure Rust implementation with zero unsafe code
- Zero-Copy Operations: Optimized for minimal memory allocations
- Industrial Features: Command batching, read merging, device limits
- Built-in Monitoring: Comprehensive statistics and metrics
§Supported Function Codes
| Code | Function | Client |
|---|---|---|
| 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 | ✅ |
§Quick Start
use voltage_modbus::{ModbusTcpClient, ModbusClient, ModbusResult};
use std::time::Duration;
#[tokio::main]
async fn main() -> ModbusResult<()> {
// Connect to Modbus TCP server
let mut client = ModbusTcpClient::from_address("127.0.0.1:502", Duration::from_secs(5)).await?;
// Read holding registers
let values = client.read_03(1, 0, 10).await?;
println!("Read registers: {:?}", values);
// Write single register
client.write_06(1, 100, 0x1234).await?;
client.close().await?;
Ok(())
}Re-exports§
pub use client::GenericModbusClient;pub use client::ModbusClient;pub use client::ModbusTcpClient;pub use error::ModbusError;pub use error::ModbusResult;pub use bytes::ByteOrder;pub use protocol::ModbusFunction;pub use protocol::ModbusRequest;pub use protocol::ModbusResponse;pub use protocol::SlaveId;pub use value::ModbusValue;pub use batcher::BatchCommand;pub use batcher::CommandBatcher;pub use codec::ModbusCodec;pub use device_limits::DeviceLimits;pub use transport::ModbusTransport;pub use transport::TcpTransport;pub use transport::TransportStats;pub use utils::PerformanceMetrics;pub use constants::MAX_PDU_SIZE;pub use constants::MAX_READ_COILS;pub use constants::MAX_READ_REGISTERS;pub use constants::MAX_WRITE_COILS;pub use constants::MAX_WRITE_REGISTERS;pub use logging::CallbackLogger;pub use logging::LogCallback;pub use logging::LogLevel;pub use logging::LoggingMode;pub use pdu::ModbusPdu;pub use pdu::PduBuilder;pub use tokio;
Modules§
- batcher
- Command batching for optimized write operations
- bytes
- Byte order handling for multi-register data types
- client
- Modbus client implementations High-level Modbus client implementations
- codec
- Encoding and decoding of Modbus data with byte order support
- constants
- Modbus protocol constants based on official specification Modbus protocol constants based on official specification
- device_
limits - Device-specific protocol limits configuration
- error
- Core error types and result handling
- logging
- Logging system for the library
- pdu
- High-performance PDU with stack-allocated fixed array Optimized Modbus PDU data structure
- protocol
- Modbus protocol definitions and message handling
- transport
- Network transport layer for TCP and RTU communication
- utils
- Utility functions and performance monitoring
- value
- Industrial data value types for Modbus
Macros§
- console_
logger - Convenience macro for creating a simple console logger
- custom_
logger - Convenience macro for creating a custom logger
Constants§
- DEFAULT_
TCP_ PORT - Modbus TCP default port
- DEFAULT_
TIMEOUT_ MS - Default timeout for operations (5 seconds)
- VERSION
- Library version
Functions§
- info
- Get library information