该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我照着网上的程序自己改出来的程序是这样的
clc;
clear ;
ts=0.001; %采样时间
sys=tf(-53,[19926,100],'ioDelay',540); %tf是传递函数,用来实现G(s); 在自动控制领域经常用到,
dsys=c2d(sys,ts,'z'); %把控制函数离散化,转化为拆分方程
[num,den]=tfdata(dsys,'v'); % 离散化后提取分子、分母 ,提取拆分方程系数
u_0=0.0;
u_1=0.0;
u_2=0.0;
y_1=0.0;
y_2=0.0;
x=[0,0,0]';
error_1=0;
error_2=0;
for k=1:1:1000000
time(k)=k*ts; %采样次数
S=1; %选择需要跟踪的函数
if S==1
kp=-2.5237;ki=-025316;kd=18.2627; %初始化PID
rin(k)=1; %Step Signal ,阶跃信号
end
if S==2
kp=x;ki=x;kd=x;
rin(k)=0.5*sin(2*pi*k*ts); %Sine Signal 正弦信号
end
if S==3 %三角波信号