Crate voltage_modbus

Crate voltage_modbus 

Source
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

CodeFunctionClient
0x01Read Coils
0x02Read Discrete Inputs
0x03Read Holding Registers
0x04Read Input Registers
0x05Write Single Coil
0x06Write Single Register
0x0FWrite Multiple Coils
0x10Write 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