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.