文档导航

新手入门

⚡ 30秒快速体验

几分钟内开始使用ModbusLink。学习基础知识并实现您的第一次Modbus通信。

快速开始
🛠️ 安装说明

详细的安装指南,包括系统要求、依赖项和环境配置。

安装指南

核心功能

📖 用户指南

全面的使用指南,涵盖从基本操作到高级配置的所有功能。

用户指南
🏗️ 架构设计

深入了解ModbusLink的分层架构和设计原理。

架构设计
📚 API参考

完整的API文档,包含详细的类和方法描述。

API 参考

实战应用

💡 代码示例

丰富的实际示例,涵盖各种工业应用场景。

示例
⚡ 性能优化

性能调优技巧和并发处理最佳实践。

performance
🔧 故障排除

常见问题解决方案和调试技巧。

故障排除指南

核心特性

ModbusLink 核心特性

特性

描述

优势

🏗️ 分层架构

关注点清晰分离

易于维护和扩展

🔌 通用传输

支持TCP、RTU、ASCII

兼容所有Modbus设备

异步性能

原生asyncio支持

处理1000+并发连接

🛠️ 开发体验

直观API和完整类型提示

更快开发,更少bug

📊 丰富数据类型

float32、int32、字符串等

处理复杂工业数据

🔍 高级调试

协议级监控

快速故障排除

🖥️ 完整服务器

全功能服务器实现

构建自定义Modbus设备

🎯 生产就绪

全面错误处理

放心部署

支持的Modbus功能码

功能码

功能名称

描述

0x01

读取线圈

读取一个或多个线圈的状态(布尔值)

0x02

读取离散输入

读取一个或多个离散输入的状态(只读布尔值)

0x03

读取保持寄存器

读取一个或多个保持寄存器的值(16位整数)

0x04

读取输入寄存器

读取一个或多个输入寄存器的值(只读16位整数)

0x05

写单个线圈

向指定地址写入单个线圈值

0x06

写单个寄存器

向指定地址写入单个寄存器值

0x0F

写多个线圈

向连续地址写入多个线圈值

0x10

写多个寄存器

向连续地址写入多个寄存器值

30秒快速体验

安装ModbusLink

# 从 PyPI 安装
pip install modbuslink

简单示例

TCP客户端(以太网设备)

from modbuslink import ModbusClient, TcpTransport

# 连接到Modbus TCP设备
transport = TcpTransport(host='192.168.1.100', port=502)
client = ModbusClient(transport)

with client:
    # 读取温度传感器
    temp = client.read_float32(slave_id=1, start_address=100)
    print(f"温度: {temp:.1f}°C")

    # 控制水泵开关
    client.write_single_coil(slave_id=1, address=0, value=True)
    print("水泵已启动!")

串口客户端(RTU设备)

from modbuslink import ModbusClient, RtuTransport

# 连接到串口设备
transport = RtuTransport(port='COM3', baudrate=9600)
client = ModbusClient(transport)

with client:
    # 读取流量计数据
    flow = client.read_float32(slave_id=5, start_address=0)
    print(f"流量: {flow:.2f} L/min")

高性能异步操作

import asyncio
from modbuslink import AsyncModbusClient, AsyncTcpTransport

async def read_multiple_plcs():
    """同时读取多个PLC数据"""
    plc1 = AsyncModbusClient(AsyncTcpTransport('192.168.1.10', 502))
    plc2 = AsyncModbusClient(AsyncTcpTransport('192.168.1.11', 502))

    async with plc1, plc2:
        # 并发读取
        results = await asyncio.gather(
            plc1.read_holding_registers(1, 0, 10),
            plc2.read_holding_registers(1, 0, 10)
        )
        print(f"PLC1: {results[0]}, PLC2: {results[1]}")

asyncio.run(read_multiple_plcs())

立即开始

🚀 准备好了吗?前往 安装指南 安装ModbusLink,然后查看 快速开始 获取详细的入门教程!

社区和支持

📖 GitHub项目

源代码、问题报告和功能请求

https://github.com/Miraitowa-la/ModbusLink
📦 PyPI包

官方发布包和版本历史

https://pypi.org/project/modbuslink/

版本信息

索引和表格