前回に続いてMATLABで離散モデルに対しPID制御器を構築する。与えられたモデルを離散化するには
G=c2d(omega^2/(s^2+2*zeta*omega*s+omega^2),Ts);
を使えばいい。例では二次遅れ系をサンプル時間Tsで離散化している。
コード全体はこれ
N=200;
simulationtime=10;
Ts=simulationtime/N;
s=tf("s");
omega=1;
zeta=0.1;
G=c2d(omega^2/(s^2+2*zeta*omega*s+omega^2),Ts);
C0 = pid(1,1,1,'Ts',Ts);
[C,info] = pidtune(G,C0);
P=feedback(C*G,1);
r=ones(1,N);
t=linspace(0,10,N);
y=lsim(P,r);
figure;
plot(t,r);
hold on
plot(t,y);
grid on
結果。サンプル時間を十分とらない場合はうまくいかない様子が確認できる。
コメント