模糊控制理论与应用专业:姓名:学号:指导教师:完成时间:二〇一一年八月1、设在论域e(误差)={-4,-2,0,2,4}和控制电压u={0,2,4,6,8}上定义的模糊子集的隶属度函数分别如图1、2所示。图1图2已知模糊控制规则:规则1:如果误差e为ZE,则u为ZE;规则2:如果误差e为PS,则u为NS。试应用玛达尼推理法计算当输入误差e=0.6时,输出电压u=?(精确化计算采用重心法)采用重心法去模糊化解答:(1)输入输出模糊化1)确定输入输出变量,2)确定输入输出变量的模糊语言值(模糊集合)3)建立隶属度函数方程对于误差来说:1()(2)022()1()022zeepsxxxxxxx对于控制电压来说:1022()1(4)242()1(2)242()1(6)462NSuZEyyyyyyyxyyy(2)根据经验建立模糊控制规则:IF(e)NBNSZEPSPBTHEN(u)PBPSZENSNB(3)1)根据规则1:规则1、如果误差e是ZE,则控制U为ZE;e1.042024NBNSZEPSPBeu1.002468NBNSZEPSPBuNBNSZEPSPB024-2-402468NBNSZEPSPB1.01.0eμuμ有:误差(0.6)0.7ZE由规则1得到故控制:10.7UZE解得:U11=3.4,U12=4.6;2)根据规则2、如果误差e是PS,则控制U为NS;NBNSZEPSPB024-2-402468NBNSZEPSPB1.01.0uμeμ误差(0.6)0.3PS由规则2得到故控制:20.3UPS解得:U21=0.6,U22=3.4;3)根据重心法,去模糊化输出电压为:00.73.40.74.60.30.60.33.43.40.70.70.30.3U2、已知某一加炉炉温控制系统,要求温度保持在600℃恒定。目前此系统采用人工控制方式,并有以下控制经验(1)若炉温低于600℃,则升压;低得越多升压越高。(2)若炉温高于600℃,则降压;高得越多降压越低。(3)若炉温等于600℃,则保持电压不变。设模糊控制器为一维控制器,输入语言变量为误差,输出为控制电压。两个变量的量化等级为七级、取五个语言值。隶属度函数根据确定的原则任意确定。试按常规模糊逻辑控制器的设计方法设计出模糊逻辑控制表。解答:两个变量的量化等级为七级、取五个语言值。量化等级为七级量化等级-3-2-10123五个语言值PB、PS、ZE、NS、NB给定值600℃模糊控制器选用的系统的实际温度T与温度给定值Td的误差deTT作为输入语言变量,把控制加热装置的供电电压u选作输出语言变量。温度900℃以上800℃700℃600℃500℃400℃300℃以下误差为E-300℃-200℃-100℃0100℃200℃300℃控制电压U10202530354050量化等级-3-2-10123状态变量相关的隶属度函数PB000000.31PS00000.410.4ZE000.110.100NS0.410.40000NB10.300000误差隶属度函数0.10.30.41.00123-1-2-3PBPSZENSNBe(量化等级)()x模糊输出量隶属度函数0.10.30.41.030354050252010PBPSZENSNB()xu规则1、如果误差e是NB,则控制U为NB;规则2、如果误差e是NS,则控制U为NS;规则3、如果误差e是ZE,则控制U为ZE;规则4、如果误差e是PS,则控制U为PS;规则5、如果误差e是PB,则控制U为PB;按照离散重心法:重心法重心法是取模糊隶属度函数的曲线与横坐标围城面积的重心为模糊推理最终输出值。连续:0()()vVvVvvdvvvdv模糊控制逻辑表离散:101()()mkvkkmvkkvvvv1)(3)e从误差隶属度图看到PB,PS规则4、如果误差e是PS,则控制U为PS;误差(3)0.4PS由规则4得到控制:10.4UPS规则5、如果误差e是PB,则控制U为PB;误差(3)1PB由规则5得到控制:21UPB最后的输出增量为上面两条控制量的合成,120.41UUUPSPB模糊输出量隶属度函数0.10.30.41.030354050252010PBPSZENSNB()xu精确化控制输出:00.4500.43515046.66670.40.41v2)(2)e从误差隶属度图看到PB,PS规则4、如果误差e是PS,则控制U为PS;误差(2)1PS由规则4得到控制:11UPS规则5、如果误差e是PB,则控制U为PB;误差(2)0.3PS由规则5得到控制:20.3UPB最后的输出增量为上面两条控制量的合成,120.31UUUPSPB模糊输出量隶属度函数0.10.30.41.030354050252010PBPSZENSNB()xu精确化控制输出:00.340140400.31v3)(1)e从误差隶属度图看到PS,ZE规则3、如果误差e是ZE,则控制U为ZE;误差(1)0.1ZE由规则3得到控制:10.1UZE规则4、如果误差e是PS,则控制U为PS;误差(1)0.4PS由规则4得到控制:20.4UPS最后的输出增量为上面两条控制量的合成,120.10.4UUUZEPS模糊输出量隶属度函数0.10.30.41.030354050252010PBPSZENSNB()xu精确化控制输出:00.4350.4500.1350.125400.40.40.10.1v4)(0)e从误差隶属度图看到ZE规则3、如果误差e是ZE,则控制U为ZE;误差(0)1ZE由规则3得到控制:11UZE最后的输出增量为上面一条控制量的合成,11UUZE模糊输出量隶属度函数0.10.30.41.030354050252010PBPSZENSNB()xu精确化控制输出:030v5)(1)e从误差隶属度图看到ZE,NS规则2、如果误差e是NS,则控制U为NS;误差(1)0.4NS由规则1得到控制:10.4UNS规则3、如果误差e是ZE,则控制U为ZE;误差(1)0.1ZE由规则3得到控制:20.1UZE最后的输出增量为上面两条控制量的合成,120.10.4UUUZENS模糊输出量隶属度函数0.10.30.41.030354050252010PBPSZENSNB()xu精确化控制输出:00.4100.4250.1250.135200.40.40.10.1v6)(2)e从误差隶属度图看到NS,NB规则1、如果误差e是NB,则控制U为NB;误差(2)0.3NB由规则1得到控制:10.3UNB规则2、如果误差e是NS,则控制U为NS;误差(2)1NS由规则2得到控制:21UNS最后的输出增量为上面两条控制量的合成,120.31UUUNBNS模糊输出量隶属度函数0.10.30.41.030354050252010PBPSZENSNB()xu精确化控制输出:00.320120200.31v7)(3)e从误差隶属度图看到NS,NB,规则1、如果误差e是NB,则控制U为NB;误差(3)1NS由规则1得到,控制:11UNB;规则2、如果误差e是NS,则控制U为NS;误差(3)0.4NS由规则2得到控制:20.4UNS,最后的输出增量为上面两条控制量的合成,120.41UUUNBNS模糊输出量隶属度函数0.10.30.41.030354050252010PBPSZENSNB()xu精确化控制输出:00.4250.41011013.33330.40.41v温度900℃以上800℃700℃600℃500℃400℃300℃以下误差为E-300℃-200℃-100℃0100℃200℃300℃因此模糊逻辑控制表E-3-2-10123控制电压U13.3333202030404046.66673、假设受控对象为32523500()87.3510470Gssss,选择K1=K2=Ku=1及[0.1,0.02,1]Tγ,这样可以建立起如图3所示的仿真框图,对该系统进行仿真则可以得出输出曲线和控制器参数曲线。图3解答:模糊PID控制器的典型结构如图4所示。由于直接用模块搭建前面的模糊PID控制器算法比较复杂,所以这里采用S-函数的形式来构造该模块。考虑到本题想显示变化的Kp,,Ki,Kd系数,所以暂时选择输出个数为4;输入信号可以选择两路,即[(),(1)]Tkuekek这样可以容易地编写出如下的S-函数来表示模糊PID控制器的核心部分。图4模糊PID控制器控制框图function[sys,x0,str,ts]=fuz_pid(t,x,u,flag,T,aFuz,fx0,gam)switchflag,case0,[sys,x0,str,ts]=mdlInitializeSizes(T);case2,sys=mdlUpdates(x,u);case3,sys=mdlOutputs(x,u,T,aFuz,fx0,gam);case{1,4,9},sys=[];otherwise,error(['Unhandledflag=',num2str(flag)]);end;function[sys,x0,str,ts]=mdlInitializeSizes(T)sizes=simsizes;sizes.NumContStates=0;sizes.NumDiscStates=3;sizes.NumOutputs=4;sizes.NumInputs=2;sizes.DirFeedthrough=0;sizes.NumSampleTimes=1;sys=simsizes(sizes);x0=zeros(3,1);str=[];ts=[T0];functionsys=mdlUpdates(x,u)sys=[u(1);x(2)+u(1);u(1)-u(2)];functionsys=mdlOutputs(x,u,T,aFuz,fx0,gam)Kpid=fx0+gam(:).*evalfis(x([1,3]),aFuz)';sys=[Kpid'*x;Kpid];有了核心的S-函数,则可以构造封装出模糊PID控制模块,其内部结构如图5所示,该图中引用了S-函数fuz_pid.m,其参数对话框如图6所示,整个PID控制器的参数设置对话框如图7所示。图5模糊PID控制器结构图6fuz_pid模块参数设置图7模糊PID控制器参数对话框在模糊P1D控制器中,根据经验可以构造出表1中给出的参数变化表,根据该模糊表可以MATLAB环境下输入该模糊推理系统,该系统仍有两输入,但和前面不同的是,该系统将有三路输出,分别对应于pΔK,iΔK,dΔK。根据模糊规则表,可以用fuzzy()函数可视地建立起整个模糊推理系统c7fuzpid.fis,该系统有两路输入和三路输出,如图8所示。该模型中选择输入和输出变量的范围均为(-3,3),为方便起见,应该保持该模糊推理系统的输入、输出变量范围,而推理结果可以由系数12(,,,)piduKKγ,γ,γK来修正。在模糊系统中,模糊规则编辑程序界面如图9所示,而得出的3个规则曲面在图10中给出。表1PID控制器模糊逻辑()/detdtpΔKiΔKdΔKNBNMNSZEPSPMPBNBNMNSZEPSPMPBNBNMNSZEPSPMPB()etNBPBPBPMPMPSZEZENBNBNMNMNSZEZEPSNSNBNBNBNMPSNMPBPBPMPSPSZEZENBNBNMNSNSZEZEPSNSNBNBNBNMPSNSPMPMPMPM