基于simulink的模糊PID控制器设计与实现
Posted fpga和matlab
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于simulink的模糊PID控制器设计与实现相关的知识,希望对你有一定的参考价值。
目录
作者ID :fpga和matlab
CSDN主页:https://blog.csdn.net/ccsss22?type=blog
擅长技术:
1.无线基带,无线图传,编解码
2.机器视觉,图像处理,三维重建
3.人工智能,深度学习
4.智能控制,智能优化
5.其他
一、理论基础
PID校正传递函数应为:
我们课题中式PI控制器,那么只要把Kd设置为0即可,这里我们还是按PID来进行说明
理论上,PID三个参数的确定有如下方法:
设系统固有开环传递函数为:
系统的特征方程为:
通过对三个系数的不同赋值,可改变闭环系统的全部或部分极点的位置,从而改变系统的动态性能。由于PID调节器只有三个任意赋值的系数,因此只能对固有传递函数是一阶和二阶的系统进行极点位置的任意配置。
对于一阶系统,只需采用局部的PI或PD校正即可实现任意极点配置。设一阶系统开环固有传递函数和校正环节传递函数分别为:
下面重点讲一下模糊PI/PID控制器的设计流程,其基本理论如需所示:
这里,我们所采用的模糊PI的控制方式,可以实现实时参数更新,从而改善控制系统的控制性能,提高控制系统的稳定性和高精度性。
图1 模糊PI结构图
模糊PI控制器,其主要多了一个模糊控制器,通过模糊控制对输入误差和误差变化率,得到一个最佳的Kp和Ki,从而实现实时的调整PI参数的作用。
模糊集、论域及隶属度函数的确定
本系统,考虑到控制规则的实际情况,本课题选择7个模糊语言作为模糊规则的基本语句,这里主要为NB (负大)、NM (负中)、NS (负小)、ZO (零)、PS (正小)、PM (正中)、PB (正大)。这里选择的模糊变为输入误差E,输入误差变化率Ec,输出变量和。
输入E、EC和输出、的模糊集论域采用Mamdani类型,模糊语言集合为NB,NM,NS,ZO,PS,PM,PB,在MATLAB中,使用模糊函数编辑工具设计上述讲述的模糊模糊集和隶属函数。常用的隶属函数有梯形分布、三角形分布和正态分布等。
隶属函数的类型决定了系统的控制性能,隶属函数中的曲线斜率越大,其模糊分辨率就越高,系统的控制性能就越低,隶属函数中的曲线斜率越小,其模糊分辨率就越低。系统的控制性能就越高,系统稳定性就越高。
模糊控制规则
模糊控制规则表建立的基本原则为,当误差较大的时候,应尽快的消除误差,而当误差较小的时候,应消除可能存在的超调。就是说,如果实际值和和期望值的偏差负大,而且偏差变化率为负中时,则需要使得Id的输出量为正大。由模糊语言的等级可以得知,模糊控制规则有49条模糊条件语句。通常情况下,模糊规则如表1,2所示。
表1 e规则控制表
Kp | EC | ||||||
E | NB | NM | NS | ZO | PS | PM | PB |
NB | PB | PB | PM | PM | PS | ZO | ZO |
NM | PB | PB | PM | PS | PS | ZO | NS |
NS | PM | PM | PS | PS | ZO | NS | NS |
ZO | PM | PM | PS | ZO | NS | NS | NM |
PS | PS | PS | ZO | NS | NS | NM | NM |
PM | PS | ZO | NS | NS | NM | NM | NB |
PB | ZO | ZO | NS | NM | NM | NB | NB |
表3-2 ec规则控制表
Kp | EC | ||||||
E | NB | NM | NS | ZO | PS | PM | PB |
NB | PB | PB | PM | PM | PS | ZO | ZO |
NM | PB | PB | PM | PS | PS | ZO | NS |
NS | PM | PM | PS | PS | ZO | NS | NS |
ZO | PM | PM | PS | ZO | NS | NS | NM |
PS | PS | PS | ZO | NS | NS | NM | NM |
PM | PS | ZO | NS | NS | NM | NM | NB |
PB | ZO | ZO | NS | NM | NM | NB | NB |
这里,我们使用的25个模糊规则,比上面的简化些
最后就是反模糊化,所谓的反模糊化,就是根据模糊推理规则计算出控制器的输出,在通常情况下,反模糊算法主要有加权平均法、限幅元素平均法等算法。
二、核心程序
首先讲一下关于电力系统的仿真,simulink的仿真环境的配置设置:
这里,在simulink中,我们一般选择内插方式为ode23tb。然后在选择精度为0.0001.这样的话,在powerGUI设置为continue的时候,我们可以得到比较光滑的曲线,并且仿真速度较快,而默认状态的配置,只适合于离散情况下进行仿真。
然后,是电机部分,电机部分,为了能突出对比性,我们这里还是使用你上次提供的电机的配置设置,不过修改了初始参数的值,因为之前你的初始值都是0.这样显然是不对的。
然后几个其他电力模块:
注意,之前,你的设置是
就是最后两个你都设置了100,但是这样的话,电机和RLC是冲突的,所以需要设置为0,设置为0之后,就可以正常的运行了。
然后建立如下的模型:
三、仿真测试结果
通过MATLAB中的模糊规则的设计方法,可以得到模糊规则的三维效果图,这个三维效果图中的纵坐标表示的是模糊控制器输出控制量u的曲面。其仿真效果如图3所示。
图3模糊控制器的输出曲面
通过上面的基本理论,我们得到的控制系统的基本结构如下所示:
01:
从上面的仿真结果对来看,模糊PI比PI能够更快收敛到预设值0附近。
02:
03:
A05-11
以上是关于基于simulink的模糊PID控制器设计与实现的主要内容,如果未能解决你的问题,请参考以下文章
Simulink教程案例2基于Simulink的模糊控制器设计与实现
Simulink教程案例1基于Simulink的PID控制器设计与实现
matlab simulink实现分数阶pid加模糊pid控制的汽车六轮转向