Você está na página 1de 11

Fig.

1 Diagrama de blocos do sistema de segunda ordem com um zero

Y(s) = sZ(s)+ 10Z(s)

y(t) =

ento

TRABALHO PRTICO CONTROLO DIGITAL I


Departamento de Engenharia Electrotcnica e de Computadores da Universidade de Agora utilizando a funo de transferncia Coimbra 15 de Dezembro de 2006 Cludia C. Cruz V. Ramos n 975010735, Rui Orlando Martins Arajo n 985010950

fazendo a transformada de Laplace inversa temos Considerando sistema descrito pela funo transferncia G(s)=Y(s)/U(s) representado na figura 1,

Obtemos ento o modelo de estado pretendido: a) E escolhendo como variveis de estado y(t)=[2 1]x(t) determinou-se o modelo de estado com as seguintes matrizes: C=[2 1] Do diagrama de blocos podemos escrever B=

fazendo a transformada de Laplace inversa temos

como

b) Considere-se G(s)= Para um perodo de amostragem de h=0.5, o equivalente discreto de G(s) precedido por ZOH dado pela expresso da tabela:

Partindo da expresso

em que , da tabela retira-se que e C=2

e =0,6065 Assim o equivalente discreto de G(s) precedido por ZOH fica

onde os plos so dados pela seguinte expresso

com O zero dado pela expresso com .

Para os plos do sistema o polinmio caracterstico

no nosso caso , assim o polinmio caracterstico vem

Com h=0,5 e mantendo e

o modelo de estado discreto equivalente do sistema

em que e

em que

Ficando o modelo de estado discreto

Resoluo usando o MatLab:


h=0.5; %numerador e denominador do Sistema Contnuo num=[1 10]; den=[1 1 1]; % FTC do processo: disp('Sistema Continuo:'); Gs=tf(num,den) disp('Sistema Discreto:'); Gz=c2d(Gs,h,'zoh') %zeros polos e ganho do equivalente discreto: Gz1=minreal(Gz); Gz_zpk=zpk(Gz1) %extraco da informao contida no objecto do tipo zpk hd1 para cada variavel: [Zeros,Polos,Ganho] = ZPKDATA(Gz,'v') %Modelo de estado discreto disp('Modelo de estado discreto:'); [phi, gama]=c2d(A,B,h)

c) A frmula de Ackermann diz que controlador deadbeat, o polinmio e a matriz de controlabilidade .

, como o

Obtemos ento a matriz dos ganhos do contrlolador deadbeat, de realimentao linear das variveis de estado: . Resoluo usando o MatLab:
% matriz de controlabilidade: Wc=[gama phi*gama]; %como temos controlador deadbeat(tem todos os polos em z=0) p1 e p2 so igual a p1=0; p2=0; % L - formula de Ackerman( L=[0 ... 1]*inv(Wc)*P(phi) ) : disp('Ganho de Realimentao L (alinea c):'); L=[0 1]*inv(Wc)*(phi^2+p1*phi+p2*eye(2)) %matriz de transio de estados em malha fechada: phic=phi-gama*L; % ganho de avano Lc: disp('Ganho de Avano Lc (alinea c):'); Lc=1/(C*inv(eye(2)-phic)*gama) % matrizes do primeiro modelo: Ca=[1 0; 0 1]; Da=[0; 0]; sim('sim_bc') figure plot(y1.time,y1.signals.values); xlabel('Tempo(s)'); ylabel('Amplitude'); grid 0

Utilizando o esquema de Simulink seguinte:

Fig. 2 - Esquemtico da simulao

Obteve-se a seguinte curva de resposta:

Fig. 3 Resposta a escalo para o caso de controlador deadbeat

d) Para o controlador que conduz uma dinmica de regulao com

, mantendo h=0.5s

d1) variveis de estado acessveis

Resoluo usando o MatLab:


%coeficiente de amortecimento e frequencia natural no amortecida do modelo continuo: zeta=0.9;wn=0.5; %calculo de p1 e p2, Coeficientes do polinomio P(phi): p1=-2*exp(-zeta*wn*h)*cos(wn*h*sqrt(1-zeta^2)); p2=exp(-2*zeta*wn*h); %L - formula de Ackerman( L=[0 ... 1]*inv(Wc)*P(phi) ): disp('Ganho de Realimentao L (alinea d1):'); L=[0 1]*inv(Wc)*(phi^2+p1*phi+p2*eye(2)) %matriz de transio de estados em malha fechada: phic=phi-gama*L; % Ganho de avano Lc: disp('Ganho de Avano Lc (alinea d1):'); Lc=1/(C*inv(eye(2)-phic)*gama) sim('sim_d1') figure plot(y1.time,y1.signals.values); xlabel('Tempo (s)'); ylabel('Amplitude y(t)'); grid

Utilizando o esquema de Simulink seguinte:

Temos ento de calcular os coeficientes p1 e p2 do polinmio caracterstico :

em que

Ento
Fig. 4 Esquemtico da simulao

e o ganho de avano

Obteve-se a seguinte curva de resposta:

Fig. 5 Resposta a escalo para o caso do controlador com variveis de estado acessveis

d2)variveis de estado no acessveis

estim=xobs;

Utilizando o esquema de Simulink seguinte:

Fig. 6 Esquemtico da simulao

Obteve-se a seguinte curva de resposta: No tendo as variveis de estado disponveis, ento temos de incluir um observador predictor de ordem plena com dinmica deadbeat. Resoluo usando o MatLab:
% OBSERVADOR PREDITOR (de ordem plena com dinamica deadbeat) % matriz de observabilidade Wobs=[C; C*phi]; Woinv=inv(Wobs); % vector de ganhos do observador (deadbeat) Kobs=phi^2*Woinv*[0;1]; % valor inicial do estado observado xobs=[0;0]; sim('sim_d2') figure plot(y2.time,y2.signals.values,'k', x1_est2.time,x1_est2.signals.values,'r',x2_est2.time,x2_est2.signals.values,'g'); xlabel('Tempo (s)'); Fig. 7 Resposta a escalo ylabel('Amplitude ');para o caso do controlador com variveis de estado no acessveis; em sobreposio com as variveis de estado grid

Da anlise das figuras 5 e 7, correspondentes as respostas do controlador, para o caso das Funo do observador: variveis acessveis e no acessveis respectivamente, podemos concluir que as mesmas so function estim=obscorr(ent) prticamente iguais .CQuando no temos as variveis acessveis, o observador predictor consegue global xobs Kobs phi gama; fazer uma boa uk1=ent(1); estimativa das mesmas.
yok=ent(2); %Predio do Estado aumentado %(actualizao da estimativa do estado:) xobs=phi*xobs+gama*uk1+Kobs*(yok-C*xobs); %Devoluo do estado Observado (Devoluo da estimativa);

Resoluo de todo o problema, usando o MatLab:


clear, clc global xobs Kobs C phi gama; % alinea a) % %modelo de estados do sistema continuo (calculado na alinea a)) A=[0 1; -1 -1]; B=[0; 1]; C=[10 1]; D=[0]; %alinea b) h=0.5; %numerador e denominador do Sistema Contnuo num=[1 10]; den=[1 1 1]; % FTC do processo: disp('Sistema Continuo:'); Gs=tf(num,den) disp('Sistema Discreto:'); Gz=c2d(Gs,h,'zoh') %zeros polos e ganho do equivalente discreto: Gz1=minreal(Gz); Gz_zpk=zpk(Gz1) %extraco da informao contida no objecto do tipo zpk hd1 para cada variavel: [Zeros,Polos,Ganho] = ZPKDATA(Gz,'v') %Modelo de estado discreto disp('Modelo de estado discreto:'); [phi, gama]=c2d(A,B,h) % alinea c) - matriz dos ganhos do controlador "deadbeat" - L(com P=phi^2) % matriz de controlabilidade: Wc=[gama phi*gama]; %como temos controlador deadbeat(tem todos os polos em z=0) p1 e p2 so igual a p1=0; p2=0; % L - formula de Ackerman( L=[0 ... 1]*inv(Wc)*P(phi) ) : disp('Ganho de Realimentao L (alinea c):'); L=[0 1]*inv(Wc)*(phi^2+p1*phi+p2*eye(2)) %matriz de transio de estados em malha fechada: phic=phi-gama*L; % ganho de avano Lc: disp('Ganho de Avano Lc (alinea c):'); Lc=1/(C*inv(eye(2)-phic)*gama) % matrizes do primeiro modelo: Ca=[1 0; 0 1]; Da=[0; 0]; sim('sim_bc') figure plot(y1.time,y1.signals.values); xlabel('Tempo(s)'); ylabel('Amplitude'); grid 0

% alinea d) - d1 %coeficiente de amortecimento e frequencia natural no amortecida do modelo continuo: zeta=0.9;wn=0.5; %calculo de p1 e p2, Coeficientes do polinomio P(phi): p1=-2*exp(-zeta*wn*h)*cos(wn*h*sqrt(1-zeta^2)); p2=exp(-2*zeta*wn*h); %L - formula de Ackerman( L=[0 ... 1]*inv(Wc)*P(phi) ): disp('Ganho de Realimentao L (alinea d1):'); L=[0 1]*inv(Wc)*(phi^2+p1*phi+p2*eye(2)) %matriz de transio de estados em malha fechada: phic=phi-gama*L; % Ganho de avano Lc: disp('Ganho de Avano Lc (alinea d1):'); Lc=1/(C*inv(eye(2)-phic)*gama) sim('sim_d1') figure plot(y1.time,y1.signals.values); xlabel('Tempo (s)'); ylabel('Amplitude y(t)'); grid % alinea d) - d2 % OBSERVADOR PREDITOR (de ordem plena com dinamica deadbeat) % matriz de observabilidade Wobs=[C; C*phi]; Woinv=inv(Wobs); % vector de ganhos do observador (deadbeat) Kobs=phi^2*Woinv*[0;1]; % valor inicial do estado observado xobs=[0;0]; sim('sim_d2') figure plot(y2.time,y2.signals.values,'k', x1_est2.time,x1_est2.signals.values,'r',x2_est2.time,x2_est2.signals.values,'g'); xlabel('Tempo (s)'); ylabel('Amplitude '); grid

Funo Obscorr.m function estim=obscorr(ent) global xobs Kobs C phi gama; uk1=ent(1); yok=ent(2); %Predio do Estado aumentado %(actualizao da estimativa do estado:) xobs=phi*xobs+gama*uk1+Kobs*(yok-C*xobs); %Devoluo do estado Observado (Devoluo da estimativa); estim=xobs;

Você também pode gostar