Python PyModbus 模块详解
一、详解
pymodbus 是一个基于 Python 的开源库,用于实现 Modbus 通信协议。Modbus 是一种广泛应用于工业自动化领域的串行通信协议,支持主从架构(客户端 - 服务器模型)。pymodbus 库提供了完整的 Modbus 客户端(主站)和服务器(从站)功能,支持多种传输方式,包括 Modbus RTU(串行通信)和 Modbus TCP(以太网通信)。
1、基础概念
Modbus 协议定义了一套标准的数据模型和通信规则:
- 数据模型:使用寄存器存储数据,分为:
- 线圈(Coils):1 位读写寄存器,用于布尔值(如开关状态)。
- 离散输入(Discrete Inputs):1 位只读寄存器。
- 保持寄存器(Holding Registers):16 位读写寄存器,用于整数值(如传感器读数)。
- 输入寄存器(Input Registers):16 位只读寄存器。
- 地址范围:每个寄存器类型有独立地址空间,范围从 0 到 65535(即 0 ≤ address ≤ 65535)。
- 功能码:Modbus 操作使用功能码(Function Code),例如:
- 读线圈:功能码 1。
- 写单个寄存器:功能码 6。
- 完整列表可参考 Modbus 标准文档。
pymodbus 库实现了这些概念,支持 Python 3.6 及以上版本,并兼容多种操作系统(Windows、Linux、macOS)。
2、核心功能
pymodbus 提供模块化设计,主要组件包括:
- 客户端(Client):作为主站发起请求,支持同步和异步模式。
- 支持 Modbus TCP 和 RTU 传输。
- 提供读写 API,如
read_coils、write_register。
- 服务器(Server):作为从站响应请求,可模拟设备行为。
- 支持数据存储上下文(如
ModbusServerContext)。 - 内置线程或异步事件处理。
- 支持数据存储上下文(如
- 协议处理:
- 自动处理 Modbus PDU(协议数据单元)格式。
- 支持异常响应(如非法地址时返回错误码)。
- 扩展性:允许自定义数据处理器和传输层(如通过串口或 Socket)。
关键优势:
- 轻量级:纯 Python 实现,无需外部依赖。
- 灵活:支持同步(
pymodbus.client)和异步(pymodbus.async)编程。 - 兼容性:遵循 Modbus 标准,可与 PLC、HMI 等工业设备互操作。
3、安装与设置
安装 pymodbus 简单,通过 pip 命令即可:
pip install pymodbus
安装后,导入所需模块:
from pymodbus.client import ModbusTcpClient # TCP 客户端
from pymodbus.server import StartTcpServer # TCP 服务器
pymodbus.datastore ModbusSlaveContext, ModbusServerContext


