📡 Modbus 实战
传感器 · 上位机
⚡ 30章 完整目录
01
Modbus协议概述
起源
Modbus协议起源、发展历程、应用领域、协议特点(主从架构、寻址方式)
02
物理层与通信模式
RS-232/485/TCP
RS-232、RS-485、TCP/IP三种物理层对比,单播与广播模式
03
Modbus数据模型
寄存器映射
离散量输入、线圈、输入寄存器、保持寄存器的定义与地址映射
04
功能码详解 (上)
01-04
01读线圈、02读离散量输入、03读保持寄存器、04读输入寄存器
05
功能码详解 (下)
05/06/15/16
05写单个线圈、06写单个寄存器、15写多个线圈、16写多个寄存器
06
Modbus报文结构
RTU/ASCII
ADU与PDU格式,RTU与ASCII模式区别,CRC校验原理
07
Modbus TCP协议
MBAP
MBAP报文头结构,TCP端口502,与RTU模式的区别
08
Python环境搭建
Anaconda
Anaconda安装、虚拟环境创建、VS Code配置、minimalmodbus库安装
09
pymodbus库入门
同步客户端
安装pymodbus,同步客户端创建,连接与断开操作
10
pymodbus读取操作
read_*
read_coils、read_discrete_inputs、read_holding_registers、read_input_registers
11
pymodbus写入操作
write_*
write_coil、write_register、write_coils、write_registers
12
异常处理与调试
异常码
Modbus异常码解析,Python异常捕获,日志记录配置
13
传感器选型与接口
PT100/DS18B20
温度传感器(PT100、DS18B20)、压力传感器、流量计,Modbus接口参数
14
传感器数据手册解读
寄存器/缩放
寄存器地址、数据类型(16位/32位)、缩放因子、单位转换
15
实战:读取温湿度传感器
温湿度变送器
连接温湿度变送器,解析温度与湿度寄存器,数据校验
16
实战:读取压力变送器
4-20mA转Modbus
4-20mA转Modbus,压力值计算,量程配置
17
实战:控制继电器模块
05/15功能码
使用05功能码控制单路继电器,使用15功能码控制多路
18
数据采集频率控制
轮询策略
time.sleep与定时器,轮询策略,避免总线冲突
19
数据存储方案
CSV / SQLite / InfluxDB
CSV文件存储、SQLite数据库存储、InfluxDB时序数据库简介
20
CSV存储实战
csv模块
使用csv模块写入数据,文件名按日期命名,追加模式
21
SQLite存储实战
表结构/查询
创建表结构,插入数据,查询最近N条记录
22
上位机UI设计概述
PyQt5 vs Tkinter
PyQt5 vs Tkinter vs Web前端,选择建议
23
PyQt5基础
信号与槽
安装PyQt5,主窗口创建,信号与槽机制,布局管理
24
PyQt5控件实战
QPushButton/Table
QPushButton、QLabel、QLineEdit、QComboBox、QTableWidget
25
PyQt5图表显示
pyqtgraph
安装pyqtgraph,实时曲线绘制,历史数据回放
26
多线程编程
QThread
QThread实现后台数据采集,避免UI卡顿,线程安全队列
27
完整上位机开发 (上)
需求/封装
需求分析,界面布局设计,Modbus通信模块封装
28
完整上位机开发 (中)
采集/存储
数据采集线程实现,实时显示与存储联动
29
完整上位机开发 (下)
报警/导出
报警阈值设置,历史数据查询,导出Excel
30
项目部署与优化
PyInstaller
打包为exe(PyInstaller),配置文件管理,日志轮转,常见问题排查