• 大小: 37KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-01
  • 语言: Matlab
  • 标签: 模糊pid  

资源简介

大时滞系统的模糊控制MATLAB仿真\大时滞系统的模糊控制MATLAB仿真.rar

资源截图

代码片段和文件信息

function [sysx0strts]=fuzzy01(txuflag)
switch flag
case 0 % 初始化
    [sysx0strts] = mdlInitializeSizes;
    case 2 
        sys=mdlUpdates(xu);
    
    

case 3 % 计算输出量,亦即控制率和权值
    sys = mdlOutputs(x);
case {1 4 9} % 未定义的 flag 值
    sys = [];
otherwise % 错误处理
    error([‘Unhandled flag = ‘num2str(flag)]);
end;
function [sysx0strts] = mdlInitializeSizes
sizes = simsizes; % 读入系统变量的默认值
sizes.NumContStates = 0; % 没有连续状态
sizes.NumDiscStates = 3; % 设置三个离散状态,亦即权值
sizes.NumOutputs = 3; % 设置四路输出,分别为控制率和归一化的权值
sizes.NumInputs = 2; % 设置四路输入,分别为误差的三个时刻值即控制率
sizes.DirFeedthrough = 0; % 输入信号直接在输出中反映出来
sizes.NumSampleTimes = 1; % 单采样速率系统
sys = simsizes(sizes); % 设置系统模型变量
x0 = [0;0;0]; % 初始状态变量,亦即权值,设置成随机数
str = []; ts = [10 0]; % 继承输入信号的采样周期




function sys = mdlUpdates(xu)
if  u(1)>200
    sys=[12.5;0;1250]
else





a=newfis(‘fuzzpid‘);

a=addvar(a‘input‘‘e‘[010]); %Parameter e
     
;
a=addmf(a‘input‘1‘Z‘‘zmf‘[03]);
a=addmf(a‘input‘1‘PS‘‘trimf‘[036]);
a=addmf(a‘input‘1‘PM‘‘trimf‘[3610]);
a=addmf(a‘input‘1‘PB‘‘smf‘[610]);

a=addvar(a‘input‘‘ec‘[-33]); %Parameter ec


a=addmf(a‘input‘2‘Z‘‘zmf‘[01]);
a=addmf(a‘input‘2‘PS‘‘trimf‘[012]);
a=addmf(a‘input‘2‘PM‘‘trimf‘[123]);
a=addmf(a‘input‘2‘PB‘‘smf‘[23]);

a=addvar(a‘output‘‘kp‘[03]); %Parameter kp

      
a=addmf(a‘output‘1‘Z‘‘zmf‘[01]);
a=addmf(a‘output‘1‘PS‘‘trimf‘[012]);
a=addmf(a‘output‘1‘PM‘‘trimf‘[123]);
a=addmf(a‘output‘1‘PB‘‘smf‘[23]);

a=addvar(a‘output‘‘ki‘[00.0003]); %Parameter ki


a=addmf(a‘output‘2‘Z‘‘zmf‘[00.0001]);
a=addmf(a‘output‘2‘PS‘‘trimf‘[00.00010.0002]);
a=addmf(a‘output‘2‘PM‘‘trimf‘[0.00010.00020.0003]);
a=addmf(a‘output‘2‘PB‘‘smf‘[0.00020.0003]);

a=addvar(a‘output‘‘kd‘[0300]); %Parameter kp


a=addmf(a‘output‘3‘Z‘‘zmf‘[0100]);
a=addmf(a‘output‘3‘PS‘‘trimf‘[0100200]);
a=addmf(a‘output‘3‘PM‘‘trimf‘[100200300]);
a=addmf(a‘output‘3‘PB‘‘smf‘[200300]);

rulelist=[
1 1 1 4 1 1 1;
1 2 4 4 1 1 1;
1 3 4 4 1 1 1;
1 4 3 4 1 1 1;


2 1 2 3 2 1 1;
2 2 4 3 2 1 1;
2 3 4 4 2 1 1;
2 4 3 3 1 1 1;


3 1 3 1 3 1 1;
3 2 3 1 3 1 1;
3 3 3 2 3 1 1;
3 4 2 2 3 1 1;
%*******************************************

4 1 4 1 4 1 1;
4 2 4 1 4 1 1;
4 3 4 1 4 1 1;
4 4 2 1 2 1 1;]


a=addrule(arulelist);
a=setfis(a‘DefuzzMethod‘‘mom‘);
writefis(a‘fuzzpid‘);



a=readfis(‘fuzzpid‘);

k_pid=evalfis([u(1)u(2)]a)
kp0=10;kd0=1250;ki0=0.000289;

sys(11)=kp0+k_pid(11)*2
sys(21)=ki0+k_pid(12)
sys(31)=kd0+k_pid(13)*2
end

 
function sys = mdlOutputs(x)
sys=x




 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      21821  2007-12-22 22:56  大时滞系统的模糊控制MATLAB仿真\新建文件夹\fu1.mdl

     文件       2884  2007-12-21 21:58  大时滞系统的模糊控制MATLAB仿真\新建文件夹\fuz2164.m

     文件       1212  2007-12-25 12:10  大时滞系统的模糊控制MATLAB仿真\新建文件夹\fuzzpid.fis

     文件      40826  2007-12-25 12:11  大时滞系统的模糊控制MATLAB仿真\新建文件夹\fuzzypid.mdl

     文件      35293  2007-12-25 12:11  大时滞系统的模糊控制MATLAB仿真\新建文件夹\putongpid.mdl

     文件      64512  2007-12-22 22:55  大时滞系统的模糊控制MATLAB仿真\新建文件夹\基于S函数实现的参数自整定模糊PID控制器.doc

     文件        146  2007-12-21 11:27  大时滞系统的模糊控制MATLAB仿真\新建文件夹\附2.txt

     文件       3543  2009-02-01 16:19  大时滞系统的模糊控制MATLAB仿真\使用帮助:新手必看.htm

     文件        183  2009-02-02 09:47  大时滞系统的模糊控制MATLAB仿真\Matlab中文论坛--助努力的人完成毕业设计.url

     目录          0  2009-04-09 16:37  大时滞系统的模糊控制MATLAB仿真\新建文件夹

     目录          0  2009-04-09 16:46  大时滞系统的模糊控制MATLAB仿真

----------- ---------  ---------- -----  ----

               170420                    11


评论

共有 条评论