In questo paragrafo si riporta un esempio per mostrare cosa succede quando si usano due diversi periodi di campionamento.
1) Data la funzione di trasferimento
compensata dal seguente controllore:
si determini la risposta al gradino del sistema in anello chiuso (retroazione negativa) per il sistema continuo. Il seguente m-file genera la risposta impulsiva riportata in Fig. 1.2
Matlab code - drag and drop:
% m-file: rimpsc.m
hold off
numG=1; denG=[1 1 0];
Ko=70;
numD=Ko*[1 2];
denD=[1 10];
num=conv(numG,numD);
den=conv(denG,denD);
[numcl,dencl]=feedback(num,den,1,1);
tf=1;
t=0:.01:tf;
yc=step(numcl,dencl,t);
axis([0 1 0 1.5])
plot(t,yc,'-'),grid
xlabel('tempo')
ylabel('risposta al gradino, sistema tempo continuo')
hold off
Figure 1.2: Risposta al gradino di
Quindi si effettui la discretizzazione del sistema con uno ZOH ed una frequenza di campionamento pari a 20Hz e 40Hz. Il campionameto a 40Hz fornisce una migliore approssimazione (discreta) della funzione di risposta al gradino del sistema in retroazione, come si evince da un confronto della Fig. 1.3 e Fig. 1.4 generate rispettivamente con i seguenti codici Matlab.
Matlab code - drag and drop:
% m-file: twenty.m
hold off
numG=1; denG=[1 1 0];
Ko=70;
numD=Ko*[1 2];
denD=[1 10];
num=conv(numG,numD);
den=conv(denG,denD);
[numcl,dencl]=feedback(num,den,1,1);
tf=1;
t=0:.01:tf;
yc=step(numcl,dencl,t);
axis([0 1 0 1.5])
% digitale
Ws= 20; % Hz
T=1/Ws;
[numGd,denGd]=c2dm(numG,denG,T,'zoh');
a=2;
b=10;
numDd=Ko*[1 -(1-a*T)];
denDd=[1 -(1-b*T)];
numd=conv(numGd,numDd);
dend=conv(denGd,denDd);
[numcld,dencld]=feedback(numd,dend,1,1);
N=tf*Ws;
yd=dstep(numcld,dencld,N);
td=0:T:(N-1)*T;
plot(td,yd,'*')
hold on
plot(td,yd,'-')
plot(t,yc)
xlabel('tempo (sec)')
ylabel('risposta sis. tempo continuo e discreto (Ws=20)')
hold off
Figure 1.3: Risposta al gradino del sistema tempo continuo e tempo discreto. Frequenza di campionamento: 20Hz.
Matlab code - drag and drop:
% m-file: forty.m
hold off
numG=1; denG=[1 1 0];
Ko=70;
numD=Ko*[1 2];
denD=[1 10];
num=conv(numG,numD);
den=conv(denG,denD);
[numcl,dencl]=feedback(num,den,1,1);
tf=1;
t=0:.01:tf;
yc=step(numcl,dencl,t);
axis([0 1 0 1.5])
% digitale
Ws= 40; % Hz
T=1/Ws;
[numGd,denGd]=c2dm(numG,denG,T,'zoh');
a=2;
b=10;
numDd=Ko*[1 -(1-a*T)];
denDd=[1 -(1-b*T)];
numd=conv(numGd,numDd);
dend=conv(denGd,denDd);
[numcld,dencld]=feedback(numd,dend,1,1);
N=tf*Ws;
yd=dstep(numcld,dencld,N);
td=0:T:(N-1)*T;
plot(td,yd,'*')
hold on
plot(td,yd,'-')
plot(t,yc)
xlabel('tempo (sec)')
ylabel('risposta sis. tempo continuo e discreto (Ws=40)')
hold off
Figure 1.4: Risposta al gradino del sistema tempo continuo e tempo discreto. Frequenza di campionamento: 40Hz.