当前位置:首页>python>工业通信实战:Python 读取 Modbus TCP 与 RTU 数据

工业通信实战:Python 读取 Modbus TCP 与 RTU 数据

  • 2026-10-11 07:54:58
工业通信实战:Python 读取 Modbus TCP 与 RTU 数据
“工业现场中,PLC、变频器、温湿度变送器及各类仪表设备普遍采用 Modbus 协议进行通信。而在工业数据采集系统中,通常需要将现场设备数据上传至数据库或上位机系统,用于状态监控、历史记录、数据分析及可视化展示。本文将基于 Python,实现对 Modbus TCP 与 Modbus RTU 设备的数据读取,为后续数据库存储、Web可视化、上位机监控及工业数据平台开发奠定基础。”
01
通信结构
一.Modbus TCP

Python(客户端)

                                   ↓ TCP/IP(端口5000)

  PLC(服务器)

  ↓

寄存器(D区 / Holding Register)

二.Modbus RTU

Python

                   ↓ USB转485

RS485总线

  ↓

     设备(PLC / 仪表)

02
Python 环境准备
    我这里用的PyCharm,首先要用到依赖pymodbus
pip install pymodbus==3.5.4   //安装版本为3.5.4的pymodbus支持库pip install pyserial  //安装串口驱动支持库

    上图则为成功。

03
 支持库简单介绍

下面是支持库常用读写命令的介绍:

命令
功能
常见用途
返回数据
read_holding_registers()
读取保持寄存器
读取 D 寄存器、4xxxx
result.registers
read_input_registers()
读取输入寄存器
读取模拟量输入、3xxxx
result.registers
read_coils()
读取线圈
读取 M/Y 位、DO输出
result.bits
read_discrete_inputs()
读取离散输入
读取 X 输入、DI输入
result.bits
write_register()
写单个寄存器
修改 D 寄存器参数
无
write_registers()
写多个寄存器
批量写寄存器
无
write_coil()
写单个位
控制启停、开关量
无
write_coils()
写多个位
批量控制输出
无
connect()
建立连接
TCP/RTU连接设备
True/False
close()
关闭连接
断开设备连接
无
isError()
判断通信是否异常
判断是否读取成功
True/False
04
Modbus TCP 数据读取
读取结果如下:
具体的连接方法和报文解析请见基于 Modbus TCP 的PLC寄存器数据读取与报文解析。
其中:
address=0→ D0寄存器
            count=1 → 读取1个寄存器
slave=1→ 站号
05 
Modbus RTU 数据读取
    接线和COM口以及波特率等各参数与基于Modbus RTU的温湿度变送器通信调试与数据解析一致。
参数
含义
baudrate
波特率
bytesize
数据位(通常8)
parity
校验(N/E/O)
stopbits
停止位
    通过COM5端口读取温度变送器的值,波特率为9600,分别储存在变量value和value1中,将值缩小十倍打印。

最新文章

随机文章