next up previous contents
Next: iM Sintesi del controllore: Up: Sintesi dei controllori discreti Previous: Proprietà del luogo delle

iM-Esempio: sintesi del controllore (dal tempo continuo al tempo discreto)

Sia dato un doppio integratore

displaymath3830

Si vuole sintetizzare un controllore digitale D(z) tale che la frequenza naturale tex2html_wrap_inline3542 e lo smorzamento tex2html_wrap_inline3540 siano rispettivamente pari a 0.3rad/sec e 0.7.

Come primo passo si progetta per tentativi nel dominio delle frequenze un controllore tempo continuo. Per verificare che la rete anticipatrice

displaymath3831

è tale che il sistema in anello chiuso soddisfi le specifiche richieste, si tracci il luogo delle radici di

displaymath3832

e si controlli in quale punto cadono i poli del sistema in anello chiuso quando la costante di proporzionalità è K=0.81. Il codice matlab che genera il lugo delle radici di questo sistema è:

Matlab code - drag and drop:

% M-file: rlocus1.m
clg
numG=1;
denG=[1 0 0];

numD=[1 .2];
denD=[1 2];

num=conv(numG,numD);
den=conv(denG,denD);
poles=roots(den);
zeros=roots(num);


K1=0:.05:1.22;
K2=[1.25 1.28];  % K for break-in and break-away points
K3=1.5:5:100;
K=[K1 K2 K3];
Ko=.81;

r=rlocus(num,den,K);
ro=rlocus(num,den,Ko);

axis('square')
axis([-2.5 .5 -1.5 1.5])
plot(r,'-'),grid
hold on
plot(ro,'*')
plot(-.2,0,'o')
plot(-2,0,'x')
plot(0,.01,'x')
plot(0,-.01,'x')
title('Piano s --- locus vs. K')
xlabel('Re(s)')
ylabel('Im(s)')

hold off
axis('normal')
Il risultato di questo matlab script è riportato in Fig. 1.8.

   figure2867
Figure 1.8: Luogo delle radici per D(s)G(s).

Al fine di discretizzare il controllore D(s) dobbiamo per prima cosa scegliere la frequenza di campionamento. Il sistema in anello chiuso ha una pulsazione naturale che è pari 0.3rad/sec e quindi la sua banda passante sarà di circa 0.3rad/sec. Cautelativamente scegliamo una pulsazione di campionamento venti volte più alta

displaymath3833

Con un tempo di campionamento di circa 1sec la tecnica di discretizzazione matched Z transform fornisce il seguente controllore digitale

displaymath3834

In Fig. 1.9 sono rappresentati entrambe le risposte al gradino dell'anello chiuso nella versione tempo continuo e tempo discreto. Il codice Matlab che lo genera è:

Matlab code - drag and drop:

% M-file: ver1.m
numGs=1;
denGs=[1 0 0];  % s^2

numDs=.81*[1 .2];
denDs=[1 2];

numC=conv(numGs,numDs);
denC=conv(denGs,denDs);

[numCL,denCL]=feedback(numC,denC,1,1);

tf=30;
t=0:.2:tf;
y=step(numCL,denCL,t);

axis([0 30 0 1.5])
plot(t,y),grid
hold on

T=1;
[numGz,denGz]=c2dm(numGs,denGs,T,'zoh');

numDz2=.389*[1 -.82];
denDz2=[1 -.135];

numz2=conv(numGz,numDz2);
denz2=conv(denGz,denDz2);

[numCLz2,denCLz2]=feedback(numz2,denz2,1,1);
N=tf/T+1;
td=0:1:tf;
yd2=dstep(numCLz2,denCLz2,N);
plot(td,yd2,'-',td,yd2,'*')
title('Risposte al gradino')
xlabel('Tempo (sec)')
ylabel('Uscita del sistema')
hold off

   figure2882
Figure 1.9: Risposte al gradino dell'anello chiuso nella versione tempo continuo e tempo discreto.



Domenico Prattichizzo
Wed Jun 25 08:08:49 MET DST 1997