Python实现Modbus TCP客户端:基于modbus_tk库的配置与调试指南

Mia
Mia
发布时间:2026-10-13| 2人浏览过
原创

本文详细介绍如何使用Python中的modbus_tk库实现Modbus TCP客户端。通过配置从站ID、功能码、寄存器地址及数量等关键参数,结合ModbusSlave仿真工具进行联调,展示了读取保持寄存器和线圈数据的完整代码示例,旨在帮助开发者快速掌握工业通信协议的客户端开发流程。

Modbus协议背景与仿真工具介绍

前言

Modbus协议由Modicon公司(现隶属于施耐德电气Schneider Electric)开发,主要运行于物理串口及以太网TCP/IP层之上。目前,它已成为工业领域通信协议的行业标准,广泛应用于各类工业电子设备之间的互联与数据交换。

Modbus Poll和Modbus Slave是两款广受好评的Modbus设备仿真软件,支持Modbus RTU/ASCII以及Modbus TCP/IP协议。它们常用于测试和调试Modbus设备,帮助开发者观察通信过程中的各类报文细节。

在支持Modbus RTU/ASCII协议时,ModbusPoll充当主站设备,而ModbusSlave作为从站设备,从站接收主站命令并返回数据。若用于支持Modbus TCP/IP协议,则ModbusSlave作为服务器,ModbusPoll作为客户端,服务器接收客户端指令并返回数据。客户端需配置远程服务器的IP地址和端口号以建立连接。


Python实现Modbus TCP客户端

本文重点介绍如何利用Python实现Modbus TCP客户端功能,并配合ModbusSlave模拟服务器环境,以进行互联调试。

关键参数配置说明

Python中提供了支持Modbus协议的第三方库——modbus_tk,其下载地址为:https://pypi.org/project/modbus_tk/。使用时需先导入modbus_tk库,随后按照Modbus协议规范配置相关参数。实现客户端功能时,需配置以下关键参数:

slave:指定Modbus从站的ID地址。

function_code:指定寄存器的功能码,主要寄存器功能码如下所示:


starting_address:寄存器起始地址,编号从0开始。

quantity_of_x:指定连续寄存器的数量。

output_value:执行写命令时写入的数值。

Scan Rate:数据读取周期,在程序中体现为执行execute()方法的频率。

以下示例代码实现了通过01和03两条命令读取服务器数据,具体实现如下所示:

代码实现与数据读取示例


import modbus_tk.modbus_tcp as mt
import modbus_tk.defines as md
# 远程连接到服务器端
master = mt.TcpMaster("192.168.1.10", 502)
master.set_timeout(5.0)
# @slave=1 : identifier of the slave. from 1 to 247. 0为广播所有的slave
# @function_code=READ_HOLDING_REGISTERS:功能码
# @starting_address=1:开始地址
# @quantity_of_x=3:寄存器/线圈的数量
# @output_value:一个整数或可迭代的值:1/[1,1,1,0,0,1]/xrange(12)
# @data_format
# @expected_length
Hold_value = master.execute(slave=1, function_code=md.READ_HOLDING_REGISTERS, starting_address=1, quantity_of_x=3, output_value=5)
Hold_value = master.execute(slave=1, function_code=md.READ_HOLDING_REGISTERS, starting_address=1, quantity_of_x=3, output_value=5)
Coils_value = master.execute(slave=1, function_code=md.READ_COILS, starting_address=1, quantity_of_x=3, output_value=5)
print(Hold_value) # 取到的寄存器的值格式为元组(55, 12, 44)
print(Hold_value) # 取到的寄存器的值格式为元组(1, 1, 1)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。