基于模糊pid的双容水箱设计 1.双容水箱液位控制系统 基于模糊PID控制 进行 simulink仿真 pid控制对比实验好仿真效果如下图所示. 2.有课程报告仿真文件仿真视频 3.有16页6200字左右课程报告 4.相关内容见下图双容水箱液位控制这活儿搞过自动化的同学都懂——上下水箱之间水流交互复杂传统PID参数调得人头皮发麻。这次咱们玩点花的把模糊控制算法和PID揉在一起搞了个混合控制器直接在Simulink里和经典PID正面刚。先看硬件结构上水箱出水阀门开度控制下水箱进水中间还夹着个水泵搞流量扰动。传统PID遇到这种耦合系统就像新手开手动挡的车油门离合配合不好就疯狂振荡。我们给PID控制器加装了个模糊大脑用误差和误差变化率实时调整Kp、Ki、Kd三个参数仿真模型里特别设置了±10%的流量阶跃扰动来检验抗干扰能力。模糊规则库是关键中的关键这里用了49条if-then规则。举个栗子当液位误差大且误差变化率为正时直接拉满比例系数加速响应。代码层面用MATLAB的FIS编辑器生成规则矩阵核心代码长这样fis newfis(fpid); % 输入变量定义 fis addvar(fis,input,e,[-1 1]); fis addmf(fis,input,1,NB,trapmf,[-1.5 -1 -0.8 -0.5]); fis addmf(fis,input,1,NM,trapmf,[-1 -0.6 -0.4 -0.2]); ...省略7个隶属函数 % 输出变量及模糊规则 fis addvar(fis,output,Kp,[0 2]); ruleList [1 1 1 1 1; % 第一条规则 1 2 2 1 1; % 第二条规则 ... % 共49条规则 7 7 3 1 1]; fis addrule(fis,ruleList);仿真对比结果相当打脸传统PID——在设定值跟踪测试中模糊PID的上升时间缩短了38%超调量压到5%以内抗扰动测试时恢复时间直接腰斩。特别是在水箱耦合作用最强的中液位区域传统PID会出现明显的跷跷板现象而咱们的混合控制器稳如老狗。基于模糊pid的双容水箱设计 1.双容水箱液位控制系统 基于模糊PID控制 进行 simulink仿真 pid控制对比实验好仿真效果如下图所示. 2.有课程报告仿真文件仿真视频 3.有16页6200字左右课程报告 4.相关内容见下图项目包里除了仿真模型.slx文件还带着自动生成实验视频的脚本。跑完仿真直接调用VideoWriter生成.mp4方便在课程答辩时展示动态效果。有个小技巧是在Simulink里设置触发式截图关键性能指标出现时自动保存对比图simOut sim(tank_system); frame getframe(gcf); videoObj.writeVideo(frame); % 液位误差小于2%时触发截图 if abs(error(end)) 0.02 exportgraphics(gcf,steady_state.png,Resolution,300) end整个系统最骚的操作在于参数自整定模块。初始PID参数随便给个差不多的值模糊推理机运行5个周期后就能自动收敛到最优区间。这相当于给控制器装了个自动驾驶模式再也不用熬夜调参了。课程报告里详细拆解了隶属函数形状对控制性能的影响。比如三角形隶属函数虽然计算简单但在规则切换时容易引起小幅振荡后来换成高斯型就顺滑多了。附录里还埋了个彩蛋——用MATLAB的深度学习工具箱训练了个LSTM网络来预测水箱动态特性不过这是后话了。需要源码的小伙伴注意看GitHub仓库里的tank_fuzzy.slx文件记得把Simulink的求解器改成ode45步长设成0.01秒。跑仿真时盯着右上角的水泵流量扰动曲线那玩意儿会随机给你搞事情测试控制器的抗干扰能力可不是闹着玩的。