模糊PID控制仿真
目前,传统控制在工业中应用最为广泛的是PID控制,它有天然的优势
它将误差的“过去”、“现在”、“未来”联系起来,可以使系统的动态性能得到改善,同时它对被控对象的数学模型不敏感,但是对于某些高阶系统、纯延迟、非线性的复杂对象,常规的PID控制很难实现调节时间和超调量的均衡,这时我们可以引入参数“自适应”PID控制,在这里指的就是模糊PID,它对不同的误差及误差变化率,可以调节PID的特征参数,由于这种调节往往是基于经验或者测试来获得相应的模糊规则表,又称为模糊PID控制。

其中模糊推理部分即上面的模糊控制器, PID 调节器才是真正起作用的控制器,而模糊控制
器的作用是在线实时调整 PID 参数。
(注:模糊控制与模糊PID还是有区别的)
模糊控制规则是模糊控制器的核心,是设计控制系统的主要内容。
一个基本模糊控制器主要有三个功能:
(1) 模糊化:把精确量(如偏差 e 和偏差变化 ec) 转化为相应的模糊量(E、 EC);
(2) 模糊推理:按总结的语言规则(模糊控制规划表) 进行模糊推理;
(3) 模糊判决:把推理结果(U) 从模糊量转化为可以用于实际控制的精确量(u)。
模糊规则是由一系列的模糊条件语句组成的,即由许多模糊蕴含关系构成。这些条件语
句是推理的出发点和得到的正确结论的根据和基础。每条模糊条件语句都给出模糊蕴含关
系,即一条控制规则。若有 n 条规则,就把它们表达的 n 个模糊蕴含关系(i=l, 2, ⋯, n)做
并运算,构成系统总的模糊蕴含关系。
下面我以一个锅炉液位控制系统为例,介绍模糊PID与常规PID控制的仿真,参考文献会放在文末。
锅炉液位控制系统被控对象的数学模型为

先搭建传统的PID控制器,如下图

下面在来搭建模糊PID控制,在这之前,先介绍一下matlab中的模糊逻辑工具箱
在matlab中键入 fuzzy

1、确定输入输出变量个数
一般来说,我们需要将反馈的偏差e和偏差变化率ec作为输入,模糊PID将模糊推理规则应用于Kp,Ki,Kd三个参数(精细调节时),所以需要三个输出变量

分别添加Input、Output,分别命名,每次选中再改

2、确定隶属度函数
这里选择三角形的,为每一个变量添加隶属度函数
将{ NB, NM, NS, ZO, PS, PM, PB} 设置为输入变量 e 及 ec、输出变量 Kp, Ki 和 Kd 的模糊子集,输入变量 e 和 ec 的量化论域均为[- 6, 6], 输出变量 Kp,Ki 和 Kd 的基本论域和量化论域均定为[- 3, 3], 比例因子均为 1。三角形函数在论域范围内分布均匀, 其灵敏度较高, 将其选作系统的隶属度函数。以e的设置为例
双击,删除原集合


依次选中,修改名字(取了Negative Positive Zero Big Middle Small)

修改论域为[-6,6]

其余变量,同理可设
3、根据模糊规则表,编写模糊规则文件
这一步实质是模糊控制的核心,但是模糊规则表的建立主要依靠经验和试验,我暂不具备这种能力,设计合适的模糊规则,详情参考文献

据此,编写Mamdani型模糊规则,共有7*7=49个


根据模糊规则表操作,这是一个体力话,也可以直接编写.fis文件
4、保存、命名、导出

可以保存为变量,也可以保存为文件
我这里保存为levelControl.fis

在simulink搭建模糊PID控制系统模型,选择建立好的文件levelControl.fis



将两者放在一起比较,观察其输出


单纯以这个例子不能轻下结论,PID参数调节没有检验,大家可以尝试不同的对象,如含有纯延迟的对象
参考文献
窦艳艳,钱蕾,冯金龙.基于Matlab的模糊PID控制系统设计及仿真[J].电子科技,2015,28(02):119-122.