⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ss.m

📁 关于matlab对一个典型的三阶系统在simulink工具箱下的仿真
💻 M
字号:
function [sys,x0,str,ts]=exp_pidf(t,x,u,fiag,T,kp,ki,kd,MTab)
switch flag,
    case 0
      [sys,x0,str,ts]=mdlInitializeSizes(T);
    case 2
        sys =mdlUpdates(x,u,T);
    case 3
        sys =mdlOutputs(t,x,u,kp,ki,kd,MTab);
    case {1,4,9}
        sys =[];
    otherwise
        error(['Unhandled fiag=',num2str(flag)]);
end;

function[sys,x0,str,ts]=mdlInitializeSizes(T)
Sizes=simSizes;
Sizes.NumContStates=0;
Sizes.NumDiscStates=3;
Sizes.NumOutputs=2;
Sizes.NumInputs=4;
Sizes.DirFeedthrough=1;
Sizes.NumSampleTimes=1;
sys=simsizes(sizes);
x0=[0;0;0];
str=[];
ts=[-1 0];

function sys=mdlUpdates(x,u,T)
sys =[u(1);x(2)+u(1)*T;(u(1)-u(2))/T];

function  sys =mdlOutputs(t,x,u,kp,ki,kd,MTab)
i=find(abs(x(1))>MTab(:,1));
if length(i)>0
    sys=MTab(i(1),2);
else sys=[kp,ki,kd]*x;
end

if x(1)*x(3)>0|(abs(x(3)<eps))
    if abs(x(1))>=0.05;
        sys=u(3)+2*kp*x(1);
    else
         sys=u(3)+0.4*kp*x(1);
    end
end

if x(1)*x(3)<0&x(3)*x(4)<0
    if abs(x(1))>=0.05
        sys=u(3)+2*kp*u(2);
    else
        sys=u(3)+0.6*kp*u(2);
    end
end
if abs(x(1))<=0.001
    sys=0.5*x(1)+0.010*x(2);
end
sys=[sys;x(3)];

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -