模糊pid 订阅
PID算法与模糊控制理论相结合的一种控制理论。 展开全文
PID算法与模糊控制理论相结合的一种控制理论。
信息
应    用
工业控制等
外文名
Fuzzy PID
中文名
模糊PID
模糊PID模糊PID控制器
通常,对于温度控制的理解,是觉得其技术成熟且改变不大。有一些工业的应用(如,注塑工业),不仅对时间进行精确的控制,而且在当设定值改变时,对于快速加温阶段和扰动的快速响应形成最小程度的过冲(overshoot)和下冲(undershoot)。一般采用的PID控制技术难以满足这些特殊的场合。控制器由两个部分组成:传统PID控制器、模糊化模块。PID模糊控制重要的任务是找出PID的三个参数与误差e和误差变化率ec之间的模糊关系,在运行中不断检测e和ec,根据确定的模糊控制规则来对三个参数进行在线调整,满足不同e和ec时对三个参数的不同要求。存在2种的复杂温度控制器。一种方案是基于增加特殊性能的PID,另一种方案是模糊逻辑控制。
收起全文
精华内容
下载资源
问答
  • 模糊PID

    千次阅读 2018-01-28 00:04:49
    模糊PID其实就是相当于对误差e和误差变化率ec的分段PID控制。执行时: (1)将PID参数Kp,Ki,Kd设定为一段连续离散的区间内,即论域。  (2)将e和ec分段,计算实时的e和ec并通过查找的方式确定一组合适的PID参数...

      模糊PID其实就是相当于对误差e和误差变化率ec的分段PID控制。执行时:

    (1)将PID参数Kp,Ki,Kd设定为一段连续离散的区间内,即论域。

     (2)将e和ec分段,计算实时的e和ec并通过查找的方式确定一组合适的PID参数区间。

     (3)通过去模糊化(如加权平均滤波法),确定一组合适的PID参数,并输出。


    展开全文
  • pid与模糊pid比较

    2020-05-05 19:59:26
    pid与模糊pid比较
  • 模糊PID算法及其MATLAB仿真(2)

    万次阅读 多人点赞 2019-04-16 18:05:07
    MATLAB进行模糊PID仿真 1、准备工作 2、模糊控制器的设计 补充内容:如何计算临界稳定下的开环增益 Ku 和震荡周期 Tu 学过控制工程或者相关理论的同学应该比较了解,判断系统稳定性的条件一般用到劳斯表(劳斯...

    上一篇写了模糊自整定PID的理论,这篇来做MATLAB仿真。

    目录

    补充内容:如何计算临界稳定下的开环增益 Ku 和震荡周期 Tu

    MATLAB进行模糊PID仿真

    1、准备工作

    2、模糊控制器的设计


    补充内容:如何计算临界稳定下的开环增益 Ku 和震荡周期 Tu

        学过控制工程或者相关理论的同学应该比较了解,判断系统稳定性的条件一般用到劳斯表(劳斯判据)。而PID控制和模糊PID控制极大地依赖系统传递函数的建立,因此如果对于系统复杂,难以建立模型的,还是需要考虑一下。

    (1)通过自己对所需要控制的系统进行建模,拉普拉斯变换得到传递函数Gc(s),然后求得其特征方程(形式如下):

     其闭环系统特征方程可以表示为:

    特征方程的计算就是要求闭环系统传递函数的分母为0,如果是开环系统,就将传递函数的分子和分母加起来作为特征方程。

    (2)将系统特征方程中的s用(-jw)代替,然后令实部和虚部分别等于0,解出特征根。特征根 w 就是震荡频率,K 为开环增益。

    则,周期 Td = 2PI/w 。这样就可以用来求取PID参数的论域了。

    MATLAB进行模糊PID仿真

    1、准备工作

        首先需要选取传递函数,设系统传递函数方程如下:

    纯属为了计算方便。解得 K=8,w^2=3。

    先看使用 Simulink 自带的仿真结果,其PID参数整定的情况:

    接下来设计模糊自整定PID。

    2、模糊控制器的设计

    步骤:

    (1)打开 MATLAB ,选择一个工作目录,这里一般选择一个可写的磁盘即可。为什么要可写的呢,因为C盘有些目录下你的用户权限是不可写的,所以就算你设计的没有问题也没法运行。

    (2)命令行输入fuzzy,打开模糊规则编辑器。

    (3)Edit -> Add variables -> Input;Edit -> Add variables -> Output;Edit -> Add variables -> Output。单击选中,分别对 input1 、input2、output1、output2、output3 进行隶属度编辑。对于输入进行命名,分别为误差 E 和误差变化率 EC。输出分别命名为P、I、D,其他不变。

    (4)双击 Input1 进入隶属度编辑器,Edit -> Add MFS 。添加隶属度函数,这里采用三角形隶属度函数,添加4个,实际应该对每一个都添加4个,并进行编辑。

    (5)其中 E 和 EC 的论域(Range)取 [-6 6],然后对每个隶属度曲线进行编辑。这里有两个小问题(或者说是小技巧)。

      a. 论域的划分,抛开模糊PID理论来说,其实论域的划分很大程度上取决于个人的方法,灵活性很大。你可以认为身高180的人很高、也可以认为较高,甚至可以认为较矮,只是隶属度不同。这些都取决于你的系统,但是常规是均匀划分的,例如这篇博客。然后我自己想了一种方法(适用于7隶属度):半区间宽度=(论域总长度/12)*2,也就是说一个大三角由两个半区间组成。

      b. 还有就是隶属度函数命名的时候,最好是有顺序的,单击隶属度函数曲线,设计顺序:mf1->NL;mf2->NM;mf3->NS;mf4->ZE;mf5->PS;mf6->PM;mf7->PL。这样设置的好处是后面添加模糊规则的时候很方便。 

    (6)设计PID三个参数的输出隶属度

       按照上一篇的介绍,三个参数的隶属度选择范围如下,近似的话建议扩大论域区间:

    Kp = [0.32Ku 0.6Ku] = [2.56 4.80] \approx [2,5]

    Ki = [0.32Tu 0.47Tu] = [1.1608 1.7050] \approx [1 2]     // 这里用[1 2]可能存在结果1的情况,结果2用的[1 3]

    Kd = [2Tu 5Tu] = [7.2552 18.1380] \approx [7 19]

    按照之前的方法进行划分,获得隶属度函数分布区间:

                                                                                   Kp 的论域划分

    隶属度 NL NM NS ZE PS PM PL
    区间 [1.5 2 2.5] [2 2.5 3] [2.5 3 3.5] [3 3.5 4] [3.5 4 4.5] [4 4.5 5] [4.5 5 5.5]

                                                                                  Ki 的论域划分

    隶属度 NL NM NS ZE PS PM PL
    区间 [0.833 1 1.167] [1 1.167 1.333] [1.167 1.333 1.5] [1.333 1.5 1.667] [1.5 1.667 1.833] [1.667 1.833 2] [1.833 2 2.167]

                                                                                 Kd 的论域划分

    隶属度 NL NM NS ZE PS PM PL
    区间 [5 7 9] [7 9 11] [9 11 13] [11 13 15] [13 15 17] [15 17 19] [17 19 21]

    直接复制上去吧!!!!

    其实这里还有很多不严谨的地方,比如隶属度论域的计算方法。

    (7)设计模糊规则,这里的设计规则选取的是一篇文献中的规则表,我主要是考虑方便,实际上,这种模糊规则表是决定模糊PID效果的关键之一(还有就是隶属度函数的确定)。如果这里设计的不好,最后出来的PID阶跃响应可能还不如手工调整PID,虽然这种方式对于在线调整是不太可能实现的。调整规则如下,参考文献 [2]。

    双击下图圈中方框:

    调整规则: 

    第一个隶属度图中的圈内换成PL,第二个图换成ZE(其实这里不确定,我换的ZE)。

    根据隶属度规则表挨个添加进 Rule Editor 即可

    (8)导入工作空间

    关闭规则编辑器。单击 file-> export -> To file... 命名为Fuzzy_PID.fis -> 保存。

    单击 File -> Export -> To workspace -> OK。

    我们会发现在MATLLAB的工作区(Workspace)有来了一个1*1 struct的值。

    (9)Simulink中进行仿真。

        在命令行里输入simulink,或者在MATLAB主页点击Simulink,打开Simulink工具箱。新建一个空白Blank。

    在库里面找到Fuzzy Logic Controlller模块,拖到Blank里面。相关的还需要step(阶跃信号),sum(输入输出反馈),PID(一个完整的控制算法块,也可以自己写),mux(用于整合图形),scope(显示结果)。

    (10)然后一步一步设置:

    双击sum,将sum的配置改为下图:

    双击PID Controller,使source为external,也就是PID接收外部参数。

    PID改完之后是这样的:

    双击传递函数(Transfer Fun),修改如下:

    如果显示 num(s)/den(s) 的形式,可以把它放大,和你放大窗口是一样的。

    设置Fuzzy controller,同样双击。

    这个名字要和你工作空间的一样才行,有些同学虽然改了,但是还是不成功,可能就是你没能导入到工作空间里面。自寻解决办法(readfis()函数)。

    结果1:

    结果2:Ki 的区间从[1,2] 修改为[1,3].

     

     

    目前结果是这样,我再调一调看看。

    不妥之处恳请广大朋友指出。

    增加:评论区有位指出积分时间常数和PID系数Ki的问题,这里贴个PID的方程:

    典型PID控制器的传递函数为:

    G_{c}(s)=K_{p}(1+\frac{1}{T_{i}s}+T_{d}s)

    而离散PID控制方程可以表示为:

    U(n)=K_{p}[e(n)+\frac{T}{T_{i}}\sum e(i)+\frac{T_{d}}{T}(e(n)-e(n-1)))]

    源程序!源程序!https://github.com/NidhoghostX/Fuzzy-PID-on-Matlab

    CSDN 要收费下载,资源转到Github了。

    ——————————————————————————————————————————————

    更新:

    二维模糊PID的matlab仿真(官网教程):https://www.mathworks.com/help/fuzzy/fuzzy-pid-control-with-type-2-fis.html

    现在在忙,没有时间研究,今后可能会做一下。

    参考文献

    [1] https://sci-hub.tw/10.1115/1.2899060 (最早经典的PID参数整定文章,大部分文献都会用到)

    [2] S. krishna, S. Vasu,Fuzzy PID based adaptive control on industrial robot system,Materials Today: Proceedings,Volume 5, Issue 5, Part 2,2018,Pages 13055-13060.
     

     

     

    展开全文
  • Fuzzysimulink有关模糊PID问题概述-自适应模糊PID.rar 最近很多人问我关于模糊PID的问题,我就把模糊PID的问题综合了一下,希望对大家有所帮助。 一、模糊PID就是指自适应模糊PID吗? 不是,通常模糊控制和PID...
  • MATLAB 模糊PID

    2018-10-07 09:18:22
    这是一个模糊PID针对飞行应用的程序,该程序对学习MATLAB的同学,或者正在做模糊PID的同学以及正在做飞行模拟仿真的同学都有很大的帮助,
  • 有关模糊pid的相关知识就把自己从刚接触到仿真出结果看到的大部分资料总结一下,以及一些自己的ps   以下未说明的都为转载内容   1.转自 https://blog.csdn.net/weixin_36340979/article/details/79168052 ...

    有关模糊pid的相关知识就把自己从刚接触到仿真出结果看到的大部分资料总结一下,以及一些自己的ps

     

    以下未说明的都为转载内容

     

    1.转自  https://blog.csdn.net/weixin_36340979/article/details/79168052

    在讲解模糊PID前,我们先要了解PID控制器的原理(本文主要介绍模糊PID的运用,对PID控制器的原理不做详细介绍)。PID控制器(比例-积分-微分控制器)是一个在工业控制应用中常见的反馈回路部件,由比例单元P、积分单元I和微分单元D组成。PID控制的基础是比例控制;积分控制可消除稳态误差,但可能增加超调;微分控制可加快大惯性系统响应速度以及减弱超调趋势。

     

    1.1传统PID控制

     

     

     

     传统PID控制器自出现以来,凭借其结构简单、稳定性好、工作可靠、调整方便等优点成为工业控制主要技术。当被控对象的结构和参数具有一定的不确定性,无法对其建立精确的模型时,采用PID控制技术尤为方便。PID控制原理简单、易于实现,但是其参数整定异常麻烦。对于小车的速度控制系统而言,由于其为时变非线性系统不同时刻需要选用不同的PID参数,采用传统的PID控制器,很难使整个运行过程具有较好的运行效果。

     

    1.2模糊PID控制

     

     模糊PID控制,即利用模糊逻辑并根据一定的模糊规则对PID的参数进行实时的优化,以克服传统PID参数无法实时调整PID参数的缺点。模糊PID控制包括模糊化,确定模糊规则,解模糊等组成部分。小车通过传感器采集赛道信息,确定当前距赛道中线的偏差E以及当前偏差和上次偏差的变化ec,根据给定的模糊规则进行模糊推理,最后对模糊参数进行解模糊,输出PID控制参数。

     

     

     

    2.1模糊化

     

     模糊控制器主要由三个模块组成:模糊化,模糊推理,清晰化。具体如下图所示。而我们将一步步讲解如何将模糊PID算法运用到智能车上。(最好用笔一步步自己写一遍!!!)

     

     

     首先我们的智能车会采集到赛道的相关数据,例如摄像头车,其采集到的数据经过算法处理之后会得到与中线的偏差E,以及当前偏差和上次偏差的变化(差值)EC两个值(即此算法为2维输入,同理也可以是1维和3维,但2维更适合智能车)。例如此时车偏离中线的距离为150,而上一时刻偏离中线的距离为120,则E为150,EC为150 - 120 = 30。

     其次我们要对这两个值进行模糊化。这里我们对E进行举例。摄像头车采集回来的E是有范围的,即与中线的偏差是在一个区间内可行的。在这里我们假设该区间为-240到240,即小车偏离中线的最大距离为240,正负即为左右。再假设中线偏差变化率的可行区间为-40到+40。

     

            接着我们要对这两个值进行模糊化。我现在将E的区间(-240 到 240)分成8个部分,那么他们分别为-240 ~ -180,-180 ~ -120 ,-120 ~ -60,-60 ~ 0,0 ~ 60,60 ~ 120,120 ~ 180,180 ~ 240。然后我们把-180,-120,-60,0,60,120,180分别用NB,NM,NS,ZO,PS,PM,PB表示(个人理解N为negative,P为positive,B为big,M为middle,S为small,ZO为zero)。例如,当E = 170时,此时的E属于PM和PB之间,而此时的E也会对应2(或1)个隶属度。E隶属于PM(120)的百分比为(180 - 170) /  (180 - 120) = 1 / 6 ,而同理隶属于PB(180)的百分比为(170 - 120) / (180 - 120) = 5 / 6  。意思就是120到180进行线性分割了,E离PM和PB哪个更近,则隶属于哪个就更大(当输出值E大于180(PB)时,则隶属度为1,隶属度值为PB,即E完全隶属于PB,同理当E小于 - 180 (NB)时也一样)。同理也可以对EC进行模糊化。

     

    2.2 模糊推理

           对于采集回来的E和EC,我们可以推出它们各所占的隶属度,此时我们可以根据模糊规则表去找出输出值所对应的隶属度。

     

     

         我们假设为E的两个隶属度值为PM、PB,E属于PM的隶属度为a(a < 1),则属于PB的隶属度为(1 - a)。再假设EC的两个隶属度值为NB、NM,EC属于NM的隶属度为b,则属于NB的隶属度为(1 - b)。而在假设中,E属于PM的隶属度为a,EC属于NB的隶属度为( 1 - b ),则输出值属于ZO的隶属度为a *( 1 - b )(看图)。

     

     

           同理我们可以得出,当输出值属于ZO的另外两个隶属度为a * b, ( 1 - a ) * ( 1 - b) ,而输出值属于NS的隶属度为( 1 - a ) * 1 - b。

           在这里我们先证明一个条件,将这四个隶属度加起来,刚好等于1。这是因为

            (a + (1 - a)) * (b + (1 - b)) = a * b + ( 1 - a ) *  b  + a * ( 1 - b ) + ( 1 - a ) * ( 1 - b )   (下图)

           即一个十字相乘的概念。这个等式说明输出值的隶属度之和等于1(第三步求解的时候需要用到隶属度之和)。

     

     

    因此,我们知道了输出值为ZO的隶属度和为 a * b + a * ( 1 - b ) + ( 1 - a ) * ( 1 - b ) ,输出值为NS的隶属度为 ( 1 - a ) *  b 。

     

    2.3 清晰化

           对于输出值,我们同样采用给予隶属度的办法。例如,我们把输出值假设为[1000,1400](即舵机的摆角值范围)的区间同样划分为八个部分,即7个隶属值NB,NM,NS,ZO,PS,PM,PB。根据上一步所得出的结论,我们就可以用隶属度乘以相应的隶属值算出输出值的解,即 (a * b + a * ( 1 - b ) + ( 1 - a ) * ( 1 - b ) ) * ZO   +    ( 1 - a ) *  b * NS。到此为止,整个模糊过程就结束了。

         

    3 模糊PID

          我们已经知道了整个模糊的过程,但上述的过程还不够完美。因为我们的输出值只有一个输出,并没有实现PID。因此我们可以先对E和EC进行模糊化,然后分别对kp和ki和kd(PID的三个参数)进行求解,再套入公式。

     

     

         一般的我们也可以只用kp,kd,不用ki。而模糊规则表一般的论文已经基本给出。因此带入算法之后我们的难度也只是在于调节kp,kd,和适当调节规则表。当然调节的难度会大于普通的PID,因为还要定kp,kd的输出范围,调得不好可能效果并没有普通的PID好。

     

    4. 部分解释

         4.1对于部分论文所说的重心法解模糊,其实就是上述方法。公式如下。

     

          式中μ(Zi) * Zi相当于文章上面的(a * b + a * ( 1 - b ) + ( 1 - a ) * ( 1 - b ) ) * ZO   +    ( 1 - a ) *  b * NS,即隶属度乘以隶属度值之和,而μ(Zi)之和就是输出值的隶属度之和,我们已经证明它是等于1的

     

     

    PS:模糊控制表在相关书籍中都有,都是前辈的经验,一般的无需修改即可,不过如果自己要配自己的数据也可以自己配,逻辑关系理清楚就可以了,反正我自己理来理去还是挺锻炼对pid三个变量的理解的,当然不止pid,模糊控制也可以单独使用,很灵活的,重点就是各个参数范围确定,这是影响模糊控制最重要的因素。

     

     

    2.转自  https://blog.csdn.net/akunainiannian/article/details/41130347

    matlab版本:matlab2010b

    第一步:利用matlab模糊控制工具箱设计模糊控制器。

    1、在matlab命令窗口中输入 fuzzy ,产生如下窗口。

    2、确定模糊控制器结构,即根据具体的系统确定输入、输出量。

    这里我们可以选取标准的二维控制结构,即输入为误差e和误差变化ec,输出为控制量u。输入变量的添加通过 Edit -> Add Variable -> Input 实现。

    3、语言值及隶属函数的确定。

    首先我们要确定描述输入输出变量语言值的模糊子集,如{NB,NM,NS,ZE,PS,PM,PB},并设置输入输出变量的论域,例如我们设置误差E、误差变化EC的论域为[-6 6],控制量U的论域为[-10 10];然后为模糊语言变量选取相应的隶属度函数。通过 Edit -> Membership Functions 打开隶属度函数编辑器,然后分别对输入输出变量定义论域范围,添加隶属函数,以E为例,设置论域范围为[-6 6],添加隶属函数的个数为7。(注:隶属度函数编辑器初始时已为每个变量定义了3个隶属函数,再通过 Edit -> Add MFs 添加隶属函数时,个数选择4即可)

    4、模糊控制规则的制定。

    对于我们这个二维控制结构以及相应的输入模糊集,我们可以制定49条模糊控制规则。

    5、解模糊。

    模糊控制器的输出量是一个模糊集合,通过解模糊化方法判决出一个确切的精确量,解模糊化方法很多,我们这里选取重心法。

    6、保存建立的模糊控制器。

    File -> Export -> To File,文件名为 fuzzy_control。

    第二步:建立Simulink模型。

    1、在matlab命令窗口中输入simulink,产生如下窗口。

    2、新建模糊控制器模型,样式如下。

    3、在matlab命令窗口下输入 fuzzy = readfis('fuzzy_control') ,将之前建立的模糊控制器加载到工作空间,并将Fuzzy Logic Contrtoller的参数设置为fuzzy。

    4、保存该模型,命名为 fuzzy_model

    第三步:系统测试界面的设置。

    1、通过 Tools -> System Test -> Launch System Test 进入系统测试界面。

    2、添加测试模型。

    鼠标选中Main Test ,菜单栏 Insert -> Test Element -> Simulink ,选择第二步中建立的模型 fuzzy_model 。

    3、变量定义。

    在Test Vectors 项里定义两个测试向量,变量名分别为 input1、input2,input1 = [-6:1:6], input2 = [-6:1:6];在Test Variables 里定义测试变量,变量名为output。

    4、变量映射。

    把测试向量input1、input2分别映射到模糊控制器的输入口 in1、in2,做为输入测试信号。把测试变量 output 映射到模糊控制器输出口out1。设置后的界面如下:

    输入测试向量到模糊模型输入口映射:

     

    模糊控制器输出保存映射:

    5、测试数据保存。

    在测试界面点Save Results项,设置如下:

    6、运行测试,注意在Main Test(169 Iterations)(169次迭代,运算代价),等待测试结束。

    第四步:模糊控制查询表的生成

    1、系统测试结果保存在 stresults.ResultsDataSet.output 中,为169*1 cell的单元数组。(注:单元cell为 [n*1 double] 结构,表示系统被测试了n次)。

    2、在matlab命令窗口下输入 test_data = stresults.ResultsDataSet.output ,将测试结果另存在变量 test_data 中。

    3、测试结果格式转换。

    由于所建的二维查询表为13行13列,所需的数据应该为13*13 double数组,但因为test_data为 169*1 cell 的单元数组,无法直接作为表格数据输入,因此需先进行格式转换。

    在matlab命令窗口下输入 table_data = Cell2Array( test_data ,  1 , 13 , 13 ) ,调用Cell2Array函数,取每个单元数组中的第一行元素,即第一次测试数据,返回结果保存在 table_data 中。

    源码如下:

     

    4、新建二维查询表模型,样式如下:

    5、点开二维查询表进行如下设置:

    6、点 Edit 按钮,即可查看所生成的表格。 

     

    PS:以上两篇就是我基本完成的教程了,matlab因为自己不怎么熟,所以折腾了挺久的,基本就是从matlab什么都不懂到可以完成这个仿真,然后我也把新手可能出现的一些问题讲讲吧。

     

    看了第一篇之后到matlab模糊控制器的设置保存应该问题不大,之后就是建立仿真模型,因为从来没用过所以一窍不通,我的版本是2016b,界面也和上面的有些不同,可是吃了点苦头,所以以下就是给新手看看的,不要笑我教的简单哈

    首先,simulink界面不同,我的是新版的

    是这样的界面,刚开始一脸懵逼不知道怎么建立仿真模型

    之后随便点一个建立一个新的就好

    这个界面之后点那个Library Browser,里面有需要的元素,你就按上面那个图把元素都复制过来就好

    注意那个fuzzy的图标,改变输出的个数是双击它有选项,我当初找了半天硬是找不到,,

    把该加的东西都放进去,连接好

    然后在matlab命令行里把之前保存的模型读取出来

    用readfis命令把之前保存的数据赋给变量fuzzy,模型名字你们取得是什么就写什么

    之后在仿真fuzzy图形上双击,把参数设成fuzzy,就是上面的步骤

     

    最后就是test了,很坑啊,matlab2016a之后的版本就没有那个功能了,所以得用下别人的软件来做最后的测试,之后就看着慢慢设置就好,我只做到了测试运行那一步,因为参数还要调整所以就没到之后导表

     

    大概就这么多了,其实都是给新手讲的,也想给自己留着复习复习,还有感谢各位在csdn里留下的各种学习资料,谢谢

     

    展开全文
  • 但学习了解还是很有必要的,matlab/simulink有专门的模糊控制的库,足以说明其重要性,本文通过简单的simulink模糊PID控制为例,对matlab模糊控制进行介绍。模糊控制 之所以称为模糊,意思就是你的输入或对应的输出...

    前言

       模糊控制提出至今已有半个世纪,但在控制领域至今仍未工程上广泛应用。但学习了解还是很有必要的,matlab/simulink有专门的模糊控制的库,足以说明其重要性,本文通过简单的simulink模糊PID控制为例,对matlab模糊控制进行介绍。

    模糊控制

      之所以称为模糊,意思就是你的输入或对应的输出并不具体,具有模糊性。模糊控制器的构成主要包括输入模糊化,模糊推理,去模糊化三个主要环节。

    ad607a816463697f2c12dabec9a28a9c.png

    模糊控制系统结构

    模糊化

       模糊化主要将数字形式的输入转化为模糊语言标识的值,该过程一般隶属函数作为模糊化函数,函数由三角形、梯形、高斯型等等,在matlab命令窗口输入’fuzzy‘命令可打开模糊设计器界面。

    ffeaae475c6d6a226132bd26511ac686.png

    模糊设计器

    cdd2ee87f9aafde9cffaa317e0ddba01.png

    输入模糊化

    模糊推理(知识库)

    该部分主要根据输入的信号,建立相应的输出规则,模糊规则主要为‘if...then...’的条件语句形式,常用的模糊规则以表的形式表示出来如下(E和EC为输入):

    da1c7d5e0e72dd6691a1c190dad50d09.png

    模糊规则表

    常用的模糊语言变量符号意义如下:

      负大 NB(Negative Big)
      负中 NM(Negative Medium)
      负小 NS(Negative Small)
      零 ZE(Zero)
      正小 PS(Positive Small)
      正中 PM(Positive Medium)
      正大 PB(Positive Big)

    去模糊化

       该过程主要是反模糊的过程,即在前两步基础上,选择合适的输出值,一般有三种方法确定具体输出值:最大隶属度函数法、重心法、加权平均法。

    模糊PID

      模糊PID控制,即利用模糊逻辑并根据一定的模糊规则对PID的参数进行实时的优化,以克服传统PID参数无法实时调整PID参数的缺点,当然参数合适的情况下。

    7aa9a47a0914c3914992a283b9709ddc.png

    模糊PID控制框图

    simulink模型实现

       根据控制原理框图,搭建传统PID和模糊PID控制模型并进对比,模型如下:

    b370867eebbbbf757034e7574cc96683.png

    整体模型

    f65e2208255d90eee57e07336220fc1d.png

    模糊控制部分

    3327c8324c56669c57a5a4c233cfece5.png

    模糊控制部分

    ffeaae475c6d6a226132bd26511ac686.png

    FIS Edit界面

    ddc3cc2170da3a2d72236b0b34403356.png

    模糊规则

    ba7b4660c639ae0e5e0029460a779e7a.png

    仿真结果

       从图中(红色:原始信号,黄色:PID,蓝色:fuzzy PID)可以看出模糊PID控制的优势明显。

        最后,为方便初学者对模糊控制学习,matlab也提控了相应的例子,在matlab命令窗口输出sllookuptable便可打开,赶紧尝试起来:

    f9f04d3612eb1b5f1991036c5be9db29.png

    matlab模糊pid demo

    结语

       当然,限于篇幅及时间,作者仅仅,只能粗略地介绍一下模糊控制。另外还有模糊规则观察器、模糊曲面观察器、输入输出变量曲线,当然还可以通过查询表、m语言等方式实现模糊控制器,在此不作一一介绍。

    推荐阅读

    MMC最近电平逼近(NLM)算法及子模块均压算法仿真

    MMC环流抑制及子模块均压算法(一)

    [模型]基于Simulink的MMC仿真模型(二)

    一种定功率控制的光伏并网方法仿真

    基于级联H桥拓扑的SVG仿真

    整流器的直接功率控制(DPC)Simulink仿真

    AC-DC及AC-DC-AC变换电路仿真

    双级式储能并网仿真

    单级式三相光伏并网仿真

    基于simulink的静止无功发生器(SVG)仿真

    分布式光储互补系统建模与仿真介绍

    三相并联型有源滤波器(APF)控制仿真

    基于Simulink的单相有源滤波器(APF)仿真

    基于Simulink的三相逆变并网仿真

    三相光伏并网Simulink仿真介绍

    基于Simulink的光伏单相并网控制仿真

    基于Simulink的三电平VSC-HVDC仿真

    分布式光储互补系统建模与仿真介绍(2)

    电力电子变压器(PET)简单模型(一)

    基于Simulink的LCL型并网逆变器控制仿真

    daf02abd5bf66296e40263a14f900445.png

                      天青色等烟雨,而我在等你,等你轻轻点右下的   好看

    展开全文
  • 模糊PID介绍

    2015-10-02 16:41:24
    详细介绍了模糊PID相关知识,对模糊PID进一步加深认识。
  • 神经网络PID-模糊PID-专家PID-等高级PID.rar
  • 模糊PID轨迹跟踪

    2018-01-07 12:59:10
    基于模糊PID的轨迹跟踪,可直接在matlab上运行。 基于模糊PID的轨迹跟踪,可直接在matlab上运行。 基于模糊PID的轨迹跟踪,可直接在matlab上运行。 基于模糊PID的轨迹跟踪,可直接在matlab上运行。 基于模糊PID的...
  • PID控制器开发笔记之十二:模糊PID控制器的实现

    万次阅读 多人点赞 2018-11-10 19:14:06
    在现实控制中,被控系统并非是线性时不变的,往往需要动态调整PID的参数,而模糊控制正好能够满足这一需求,所以在接下来的这一节我们将讨论模糊PID控制器的相关问题。模糊PID控制器是将模糊算法与PID控制参数的自整...
  • 模糊PID控制算法

    2018-10-21 20:41:30
    模糊PID控制算法,里面有文档介绍,m文件,清晰解释模糊PID算法的过程
  • 模糊PID控制

    千次阅读 2020-05-15 22:24:02
    PID控制器学习笔记:模糊PID控制器的实现 在现实控制中,被控系统并非是线性时不变的,往往需要动态调整PID的参数,而模糊控制正好能够满足这一需求,所以在接下来的这一节我们将讨论模糊PID控制器的相关问题。模糊...
  • 模糊PID控制算法的C++实现

    万次阅读 多人点赞 2017-10-14 20:17:53
    模糊PID的C++实现方法
  • PID算法之模糊PID

    千次阅读 2020-10-10 10:33:58
    在实际的控制系统中,线性系统毕竟是...这里需要注意的是,专家PID 也好,模糊 PID 也罢,绝对不是专家系统或模糊算法与 PID 控制算法的简单加和,他是专家系统或者模糊算法在 PID 控制器参数整定上的应用。也就是说,
  • 目录1 控制框图2 概述3 基本原理3.1 一些基本的概念、定义3.2 模糊化3.3 模糊推理3.4 清晰化(解模糊、反模糊化)3.5 模糊PID4 利用matlab模糊控制工具箱设计模糊控制器 1 控制框图 2 概述 模糊控制PID又叫模糊...
  • simulink实现模糊PID控制

    千次阅读 多人点赞 2020-04-17 00:05:53
    simulink实现模糊PID控制模糊系统建立simulink实现主程序设计模糊PID模块结果展示 LabVIEW实现模糊PID控制可参考博客LabVIEW实现模糊PID控制 模糊系统建立 在matlab命令行输入fuzzy打开模糊系统设计器,设定输入个数...
  • 电机模糊pid控制

    2018-11-19 21:58:18
    用于串激电机的闭环控制,可以实现pid控制或模糊pid控制
  • 模糊pid控制C程序

    2019-01-25 21:17:58
    本人对模糊PID控制的两种理解的写法,模糊pid控制C程序,内有一定注释,欢迎交流本人对模糊PID控制的两种理解的写法,模糊pid控制C程序,内有一定注释,欢迎交流
  • 模糊PID C 算法

    2018-10-09 21:39:33
    模糊PID C 算法,温控 这个是非常好用的模糊PID温度控制算法,已经在自己的项目中使用,你只需要按照自己的控制对象修改误差变化率最大值和误差阈值即可。
  • CSTR模糊PID控制

    2019-04-27 10:37:57
    此程序为根据CSTR模型进行模糊PID控制,程序仿真等 (CSTR Model and Fuzzy PID Control)
  • 模糊PID.zip

    2019-06-29 23:38:46
    基于模糊PID的轨迹跟踪,可直接在matlab上运行。
  • 模糊PID matlab

    2014-08-25 17:33:05
    模糊PID matlab仿真程序 m文件
  • 模糊PID控制C语言代码

    2021-01-14 16:34:12
    模糊PID控制C语言代码,codeblock工程
  • 模糊PID控制器

    2018-12-08 18:01:51
    模糊PID控制器 基于simulink开发 有三个例子可供参考。
  • Takagi–Sugeno模糊系统的Hinf模糊PID控制综合
  • 经典与PID模糊PID控制

    2014-09-15 12:46:58
    介绍经典PID与模糊PID控制
  • 常规PID模糊PID神经网络PID控制效果比较-success.rar 最近做毕设,题目是智能励磁,做了个模糊PID和神经网络PID励磁控制,说白了,和励磁没任何关系,就是对一个三阶模型进行控制,现在与大家分享下。其中常规PID...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,880
精华内容 752
关键字:

模糊pid