Files
ReinLoopTest/ReinLoop
..
2026-07-30 11:12:31 +08:00
2026-07-30 13:55:54 +08:00
2026-07-30 11:12:31 +08:00
2026-07-30 11:40:00 +08:00
2026-07-30 11:12:31 +08:00
2026-07-30 13:55:54 +08:00
2026-07-30 11:12:31 +08:00
2026-07-30 11:40:00 +08:00
2026-07-30 11:12:31 +08:00
2026-07-30 11:12:31 +08:00
2026-07-30 11:12:31 +08:00
2026-07-30 11:40:00 +08:00
2026-07-30 11:12:31 +08:00
2026-07-30 11:12:31 +08:00
2026-07-30 11:40:00 +08:00
2026-07-30 13:55:54 +08:00
2026-07-30 11:12:31 +08:00
2026-07-30 11:12:31 +08:00
2026-07-30 11:40:00 +08:00
2026-07-30 11:12:31 +08:00
2026-07-30 11:12:31 +08:00
2026-07-30 11:12:31 +08:00
2026-07-30 11:12:31 +08:00
2026-07-30 11:12:31 +08:00

ReinLoop V1.0 — 收敛有界

基于 Modbus 通讯的压力控制 GUI,支持 PID / 强化学习 / 手动三种控制模式。

项目结构

pressure_control_gui/
├── main.py                  # 应用入口
├── PcControl.py             # Modbus 通讯类
│                            #   MT2AM8Client           - MT2-AM8 模块 TCPAI 读压力/流量,AO 写电机)
│                            #   Easy521ModbusClient    - PLC TCP(读压力/流量,备用)
│                            #   MotorModbusRTUClient   - 电机 RTU(直接写位置,备用)
│                            #   PressureModbusRTUClient - 压力变送器 RTU(备用)
├── controllers.py           # 增量式 PID 控制器
├── api.py                   # Express Server API 配置
├── styles.py                # 全局 QSS 样式表
├── ind_collector.py         # PRBS 辨识数据采集
├── get_V.py                 # 容积测量
├── license_utils.py         # 许可证签发与校验
├── core/
│   ├── control_engine.py    # 控制主循环(PID / RL / 手动),含 EMA 压力滤波
│   ├── connection_manager.py# 连接管理器(封装 MT2AM8Client
│   ├── model_manager.py     # RL 模型管理
│   ├── data_collector.py    # 数据采集与云服务器上传
│   └── identification.py    # 系统辨识与容积测量管理
├── ui/
│   ├── main_window.py       # 主窗口(布局与信号槽绑定)
│   ├── connection_tab.py    # 连接设置页(Modbus TCP
│   ├── control_tab.py       # 控制设置页
│   ├── debug_tab.py         # 模型调试页(高级参数:死区/限幅/模拟量映射)
│   ├── status_bar.py        # 底部状态栏
│   └── plot_window.py       # 数据绘图窗口
├── src/                     # SVG 图标资产
├── model_config/            # RL 模型配置文件
├── ind_data/                # 辨识数据本地输出目录
└── tool/                    # 本地调试与诊断工具

环境要求

 

运行

python main.py

控制模式

模式 说明
PID 增量式 PID,参数可在线调整,死区/限幅可配置
RL 强化学习模型实时预测 Kp/Ki,需先加载模型
手动 直接设定阀门开度百分比

控制周期由 PID 的 dt 参数决定(默认 0.1s),QTimer 驱动主线程执行,每周期末自动 sleep 补足时长保证精确周期。

硬件连接

GUI 主程序使用 MT2-AM8 模拟量模块(艾莫迅),通过 Modbus TCP 统一 IO

  • MT2-AM8 模块Modbus TCP,默认 192.168.1.12:502,模块地址 1
    • AI(输入寄存器 0x00~0x03):读压力传感器(4-20mA → 0-4095 → kPa)、读流量计
    • AO(保持寄存器 0x00~0x03):写电机伺服驱动器(0-10V 模拟量控制行程)
    • 模拟量映射范围、压力/流量量程可在界面中配置

PcControl.py 中其他可用通讯类

以下类在 GUI 主循环中未直接使用,但可供独立脚本(如 get_V.pymain())或调试调用:

协议 默认参数 用途
Easy521ModbusClient Modbus TCP 192.168.1.88:502 读 PLC 压力寄存器 50432-bit float)、写线圈控制
MotorModbusRTUClient Modbus RTU /dev/cu.usbserial-BG02B0IX,站号 4115200 通过 RS-485 直接读写电机驱动器寄存器
PressureModbusRTUClient Modbus RTU /dev/cu.usbserial-D30JITMY,站号 19600 读压力变送器保持寄存器(备用)

数据上传

控制数据(Episode)、辨识数据和容积测量结果通过 Express Server 的上传接口保存, 服务地址与设备目录配置在 api.py。许可证、模型和公司/产线等管理操作由 ControlPanel 完成,不由客户端工具执行。