项目定位
PipeMonitor 是一套围绕 STM32H562 与 RT-Thread 完整版 的边缘管道状态监测系统。系统作为 Modbus RTU 主站接入传感器网络,能够高频轮询底层管路运行状态,实现数据采集、LCD 实时显示与本地持久化存储。
整套系统在没有上位机和网络的情况下也可以独立工作:现场 LCD 直接显示压力/温度/流量实时值,本地 LittleFS 文件系统按 CSV 格式落盘历史数据,方便事后离线导出与溯源。
版本演进
仓库里保留了几个历史版本作为对照:
STM32F103—— 早期裸机/前后台架构STM32F407—— 引入更多外设支持STM32H562—— 升级到 H 系列性能与平台STM32H562_RT-Thread_nano—— 演进到轻量级 RTOSSTM32H562_RT-Thread—— 当前主线版本
早期版本只做历史多版本备份,后续开发与维护只保留主线
STM32H562_RT-Thread。
接入的传感器矩阵
目前系统原生支持轮询的传感器:
| 传感器 | 来源 | 采集量 |
|---|---|---|
| PXW 系列一体式压力温度变送器 | Modbus 从站 | 实时压力、温度 |
| 超声波流量计 | Modbus 从站 | 瞬时流量、流速、累积总流量 |
| PT100 测温模块(4 通道 / 5 通道) | Modbus 从站 | 多节点多路温度 |
每一类传感器都在 applications/PipeMonitor/ 下有自己的测点映射文件,例如 Flowmeter.*、PXW_Pressure.*、PT100_4.*、PT100_5.*。
架构与线程模型
RT-Thread 提供了多线程分离的调度架构。三大类线程互相解耦,通过互斥锁与消息队列交互,避免串口阻塞导致 UI 卡顿:
- 采集线程:负责 Modbus 主站轮询,按测点表分配采集间隔,处理超时与异常节点
- 显示线程:负责 LCD 渲染,仅在数值变化时局部重绘动态行
- 存储线程:负责 LittleFS 上的 CSV 写入,定时刷盘并 Rotate 老文件
目录结构
业务代码集中在 applications/,BSP 与 RT-Thread 内核保持标准布局:
STM32H562_RT-Thread/
├── applications/
│ ├── main.c
│ └── PipeMonitor/
│ ├── Flowmeter.*
│ ├── PXW_Pressure.*
│ ├── PT100_4/5.*
│ ├── Modbus_Master.*
│ ├── Modbus_Service.*
│ ├── nanomodbus.*
│ └── LCD/
├── board/
├── packages/
├── rt-thread/
└── rtconfig.h
开发环境
- 主控:STM32H562
- 操作系统:RT-Thread 完整版
- 工具链:Keil MDK (ARM Compiler 6) / GCC
- 外设:RS485/UART、FSMC/SPI LCD、Flash(用于 LittleFS)
可以通过 RT-Thread ENV 工具用 scons 重新构建依赖树,也可以直接打开 project.uvprojx 用 MDK 编译下载。