simulink实现模糊PID控制

simulink实现模糊PID控制

  • 模糊系统建立
  • simulink实现
    • 主程序设计
    • 模糊PID模块
    • 结果展示

LabVIEW实现模糊PID控制可参考博客LabVIEW实现模糊PID控制

模糊系统建立

在matlab命令行输入fuzzy打开模糊系统设计器,设定输入个数为2,范围均为[-3,3],输出个数为3,范围均为[-1,1],模糊系统如下图。根据相关文献定义规则,将建立好的模糊文件命名为Fuzzy_PID并保存到本地文件中,用于下一步的导入。
simulink实现模糊PID控制_第1张图片

simulink实现

主程序设计

通过阶跃函数模拟输入信号,将输入信号分别传入自带PID模块与编写的模糊PID模块,将两个模块的控制结果及阶跃信号值通过scope函数进行展示,整体程序框图如下。
simulink实现模糊PID控制_第2张图片
PID模块参数设置为P:0.05,I:0.01,D:0.005。

模糊PID模块

将阶跃信号传入系统,系统通过反馈计算误差及误差变化率,将误差及误差变化率乘以各自的量化因子,模糊系统的误差及误差变化率的值域均为[-3,3],假设实际的误差范围为[-8,8],误差变化率范围为[-16,16],则量化因子分别为0.375和0.1875。量化后的值通过saturation函数处理后传入模糊系统,模糊系统设定如下图,其中Fuzzy_PID应在命令行通过如下语句导入到系统中。

Fuzzy_PID = readfis(‘Fuzzy_PID’)

simulink实现模糊PID控制_第3张图片
模糊系统设定输出的范围均为[-1,1],因此也应根据相关经验乘以量化因子,并于初始PID参数,即P:0.05,I:0.01,D:0.005求和,处理后的参数传入PID系统中,结合了模糊规则及PID控制的系统即为模糊PID控制系统,系统的程序框图如下。
simulink实现模糊PID控制_第4张图片

结果展示

运行程序,点击scope可查看运行结果如下图,可以看出模糊PID比单独PID更早到达设定值,具有更好的响应速度。
simulink实现模糊PID控制_第5张图片

你可能感兴趣的:(模糊PID,simulink,pid,人工智能)