PID仿真可视化程序 —— 基于 PyQt5 的 PID 控制器参数调优与系统响应仿真工具。
该项目提供直观的图形界面,允许用户实时调整 PID 参数(Kp、Ki、Kd),并即时观察被控系统(如热辐射耗散系统)对阶跃目标的响应曲线。
- 三参数滑块调节:为 Kp、Ki、Kd 分别提供垂直滑块,并可独立设置上下限,支持精细调节(精度 1/10000)。
- 实时数值显示:当前参数值同步显示在数字框中,支持键盘输入微调。
- 物理模型仿真:内置多种物理系统模型,包括:
- 零延迟传递系统
- 延迟传递系统
- 积分系统
- 耗散积分系统
- 辐射耗散系统(专用于激光焊接加热模拟,基于四次方辐射定律)
- 动态响应绘图:每当 PID 参数发生变化,自动重新计算并绘制系统输出(测量值)随时间的变化曲线,并叠加上目标值虚线。
- 曲线自适应缩放:纵坐标根据初始值与目标值自动调整,保证曲线始终居中显示。
- 高性能绘图:使用 Matplotlib 绘制并转换为 OpenCV 图像,再通过 QGraphicsView 高效显示。
- PID 控制原理教学与实验
- 控制系统参数整定练习(如齐格勒-尼科尔斯法)
- 特定物理对象(如热过程)的 PID 控制效果预研
- Python 3.6+
- PyQt5
- numpy
- opencv-python (cv2)
- matplotlib
建议使用虚拟环境安装。
# 1. 克隆仓库
git clone https://github.com/Zixu-Toby-He/python-pid-simulation.git
cd python-pid-simulation/pid仿真
# 2. 安装依赖(推荐使用 pip)
pip install PyQt5 numpy opencv-python matplotlib
# 3. 运行程序
python main.pyw若系统默认关联 .pyw 文件,亦可直接双击
main.pyw启动。
- 启动程序后,主窗口分为左右两区:
- 左侧:三个垂直滑块,分别对应 Kp(红色)、Ki(绿色)、Kd(蓝色)。每个滑块上方有上限调节框,下方有下限调节框,可拖动滑块或直接输入数值改变 PID 参数。
- 右侧:上方信息面板显示当前参数值,下方为曲线显示区。
- 调节参数:拖动任一滑块或修改数字框数值,曲线会自动重新生成并刷新。
- 观察响应:曲线图显示系统从初始状态(默认 0 mV)跟踪目标值(默认 3200 mV)的过程,并包含一条水平虚线表示目标值。
- 调整物理模型(高级):若需更换物理模型或修改参数,可在
main.pyw中修改物理系统的实例化参数(如热辐射系数、绝对零度电压值等)。
pid仿真/
├── main.pyw # 程序入口,构建主窗口并控制模拟循环
├── 窗口界面.py # 定义 PID窗口 类,包含所有 GUI 控件和显示逻辑
├── 控制系统.py # 基础PID控制系统 类,生成响应数据并绘制曲线
├── 物理系统.py # 定义各类物理系统模型(基类及派生类)
├── 旧版本/ # 早期实现代码(仅作参考)
├── LICENSE # MIT 许可证
└── README.md # 本文件
- 更换物理模型:在
main.pyw的功能窗口.__init__中,将物理系统替换为其他类(如积分系统),并调整相应参数。 - 修改目标值:更改
self.目标测量值即可。 - 调整仿真时长与精度:在
控制系统.生成测量量变化曲线调用中修改结束时刻和控制精细度参数。
本项目采用 MIT License 授权,详情请参阅 LICENSE 文件。
欢迎提交 Issue 或 Pull Request。
若有任何疑问,请联系作者:Zixu-Toby-He。