PID控制算法(四)

近日,我看了一篇论文《Continuous gradient temperature control of microfluidic chip based on thermoelectric cooler》是关于基于模糊PID控制算法对微流控芯片温度进行控制,其中讲述模糊PID控制算法,相比于通常的PID控制算法,模糊PID控制算法是一种基于模糊逻辑的控制算法,它结合了模糊控制和PID控制的优点。与传统的PID控制算法相比,模糊PID控制算法能够更好地适应复杂的非线性系统,并且在控制效果和稳定性方面表现出更好的性能。

但是由于在这篇论文中没有阐述具体传递函数以及控制规则,于是我换了一篇论文进行复现,原文地址在,题目为《基于模糊PID的水下航行器运动控制研究》,本文是在学习b站相关视频后进行复现与学习的,视频地址在这里

在文章中,由水下航行器的动力学模型得到深度控制传递函数为

G(s)=\frac{z}{\delta _{e}}=\frac{0.3559s^2+5.226s+35.2459}{s^4+10.0997s^3+8.3879s^2}

根据传统的PID控制算法搭建得到的simulink系统以及得到的仿真结果如下图所示,并且设置的kp,ki,kd初始值为20,0.5,15。我们发现传统PID得到仿真结果也很好,但是调参难度很大,在前文我们也介绍过了。

下面重点来介绍模糊PID控制算法。

模糊PID控制算法主要有两个输入,分别是EECE表示当前值与设定值之间的误差,EC表示误差变化率;主要有三个输出\Delta k_p\Delta k_i\Delta k_d。模糊PID算法主要有三个步骤:输入量的模糊化、建立模糊规则和输出量的反模糊化。

步骤一:输入量的模糊化

模糊化是根据模糊集的隶属函数确定精确输入值隶属度的过程。输入量归一化处理,输入量论域离散化处理, 转变成论域上的对应变量值。 模糊规则采取Mamdani创建的标准化设计,定义输入EEC以及输出 \Delta k_p\Delta k_i\Delta k_d 的范围为模糊集上的论域[-3,3],选择七级模糊子集\left \{ NB,NM,NS,ZO,PS,PM,PB \right \},其中N表示负,P表示正,B表示大,M表示中,S表示小,ZO表示0,模糊子集的隶属度函数均采用常用的三角函数形式,其中e的隶属度函数所下图示。

 步骤二:建立模糊规则

建立模糊控制规则是设计模糊PID控制器最重要的步骤。为了获得最优的控制性能,需要对模糊控制规则、隶属度函数和比例因子进行适当的调整。模糊控制规则的形式为“IF输入THEN输出”,即标准 的Mamdani形式。下图表示表示编写的49条模糊规则。需要注意的是,原文中的表格第一第二多了一组数据,大家可以自行选择其中一组。

在Matlab中建立模糊PID发方法如下,首先在命令行中输入fuzzy,回车后得到如下界面

然后在Edit中添加一个输入和两个输出,界面如下

 然后清除原有的隶属函数,新建上述描述的七级模糊子集,并将范围改成[-3,3],改名为\left \{ NB,NM,NS,ZO,PS,PM,PB \right \}结果如下,重复以上操作将一共五个输入输出全部更改(该过程比较繁琐)。

接着,设置模糊规则,点击Edit中的Rules,按照上述模糊规则一一添加,该过程比较无聊而且容易出错,需要耐心和细致,最终的结果如下图所示。

步骤三:输出量的反模糊化

完成上述模糊规则建立后,输出量即是反模糊化之后的数据。

根据文章给出的simulink系统图,自行搭建如下,有搭建疑问的可以直接参考b站视频,网址放在这里

最后得到的仿真结果为

根据仿真结果我们可以得到,模糊PID的控制效果更好,振荡范围小,振荡次数少,系统可以很快的达到稳定。但是模糊PID也有缺点:参数调整困难、计算复杂度高和对模糊集的选择敏感,需要根据实际情况进行选取和使用。

  • 30
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值