UFES

PÓS GRADUAÇÃO ENGENHARIA ELÉTRICA

Guilherme Lima Barbarioli

TRABALHO 3

VITÓRIA

2017

1) ( ) ( ) .

O método Cohen-Coon é para sistemas com atraso muito alto sendo que .A diferença do IAE na resposta das três primeiras sintonias são próximos pois a planta que se deseja controlar estava no escopo destes métodos. logo o sistema fica mais suscetível a instabilizar quando 2) . como neste caso e este método tem uma característica de sintonia agressiva.

A única restrição feita a este método é que o sistema não tenha . Percebe-se que é exatamente entorno de que estão as sintonias de menor Integral do erro absoluto (IAE) e com constante de tempo aproximadamente 4. . pois caso ocorra irá gerar uma sintonia instável.O comportamento dos sistemas com a sintonia no método IMC foi condizente com o esperado. De acordo com o método quando obtém-se uma sintonia que segue a dinâmica de primeira ordem dada pelo método IMC.

a função de transferência padrão de um sistema sub amortecido é: ( ) (1) ( ) Como . : Com o valor de é possível retirar do gráfico abaixo o valor do tempo de resposta Tr: Fonte: Control Systems Engineering (Nise) Como deve ser menor que tempo de estabelecimento ( ) de malha aberta ( ): . 177 .6a ed. no protótipo de segunda ordem .). 3) De acordo com Nise (pg. logo B=2: Para sobressinal menor que 5%.

de ser no mínimo 5 vezes da parte real dos polos de ( ): Logo: Então: ( ) ( ) ( )( ) Sendo a função de transferência do controlador PID: ( ) ( ) ( ) ( ) ( ) Logo para um PID: .Como Ts<10Tr: Assim foi escolhido que: O protótipo de segunda ordem de malha fechada mais um polo rápido: ( )( ) Sendo que uma regra de ouro comumente utilizada é que para manter o polo rápido .

Deve-se considerar também que os efeitos dos zeros adicionais e o erro de estado estacionário só podem ser cancelados caso seja adicionado um pré- filtro.al a dinâmica da planta em malha aberta é considerada o que permite definir claramente o desempenho desejado. Mesmo com a aplicação de um pré-filtro.Simulando : Analisando a dinâmica no tempo de Y(t): RiseTime: 0. sendo que o projetado foi a 5%.0129% Fica claro que o tempo de subida está menor do projetado Tr=2.467>0. Sendo o pré-filtro : ( ) . antes de . O mau desempenho do controlador pode ser explicado pelas características do projeto de alocação de polos. Entretanto o tempo de estabelecimento (Ts=5) está maior. Também não há neste método nenhum artifício que considera a dinâmica de malha aberta para calculo dos parâmetros. O sobressinal está a 22%.7818. Para isto o sinal de controle pode saturar e a dinâmica projetada se perde. há situações em que o projetista crie um controlador que impõe uma dinâmica muito rápida a uma planta lenta. Já no método IMC de Rivera et.7818 s SettlingTime: 6.3782 s Overshoot: 22. O projeto de alocação de polos somente calcula os parâmetros do denominador de modo que polos tenham a equação característica do protótipo de segunda ordem.

. 3o. para o controlador PID .Com base no polinômio do denominador é calculado o pré-filtro de modo a eliminar os zeros da função de transferência e assim garantir a dinâmica do protótipo de segunda ordem.5072 Adicionando o pré-Filtro para cancelar os zeros percebe-se que a dinâmica do sistema está de acordo com o calculado Ts<5 e sobressinal<4%. RiseTime: 2. 4) Sendo a função de transferência de malha fechada para . e a planta Tmm: ( ) ( ) ( ) ( ) Há três passos para sintonizar o controlador de malha fechada pelo método ITAE: 1o .4936 SettlingTime: 4.8984 Overshoot: 1.Determinar o valor de Wn com base no tempo de estabelecimento 2o – Com o valor de Wn e a ordem do denominador do polinômio de malha fechada é definido os coeficientes deste polinômio para desempenho ótimo ITAE.

determinação do pré-filtro para anular os zeros de garantindo que mantenha a dinâmica projetada. Pela tabela abaixo: ( ) ( ) ( ) ( ) Falta então o passo 3 do método ITAE. ( ) Assim obtém-se a função de transferência total do sistema T : .Serão utilizados os valores de e especificados no item anterior para um tempo de estabelecimento Ts=5s.

Primeiramente é necessário verificar se o sistema é controlável e observável. Os polos desejados para protótipo de segunda ordem: √ Devido ao princípio da separação os polos do controlador e estimador em espaço de estados podem ser projetados separadamente. Com a realimentação de estados + compensador integral o sistema tem a forma: . Sendo o espaço de estado abaixo a realização de Tmm na forma canônica controlável [ ] [ ] [ ] Como Tmm é controlável e o seu polinômio é coprimo.3198 SettlingTime: 8. Tmm também é observável.3614 Overshoot: 1. mantendo sempre o estimador rápido o suficiente para que os estados estimados não alterem a dinâmica do sistema em malha fechada. logo. RiseTime: 2. ou seja o numerador de Tm não possui zeros que anulam polos do denominador.6567 5) Para que o sistema tenha o mesmo desempenho em malha fechada do item anterior deve-se ter os valores de constante de amortecimento e frequência natural respectivamente e .

como feito no item 3: ( ) ( ) ( )( ) ( ) ( ) Para o observador é utilizado a mesma estratégia de alocação de polos. ̇ [ ̇ ] [ ][ ] +[ ] [ ][ ] ̇ ( ) ( ) ̇ [ ̇ ] [ ][ ̇ ] [ ] ̇ ̇ [ ][ ] [ ] [ ] [ ] Sendo A função de transferência de malha fechada para realimentação integral de estados: ( ) ( ) ( ) ( ) ( ) ( ) Igualando ( ) ao protótipo de segunda ordem com polo adicional rápido. Sendo que para o queremos minimizar o erro de saída do estimador abaixo: .

logo os autovalores de (A-LC) devem estar no semi-plano esquerdo e devem ser mais rápidos que . .Logo de acordo com o livro Nise(pag. Escolheu-se que os autovalores de (A-LC) estariam a uma distancia da origem 10 vezes maior que a parte real dos polos de . é possível aplicar o observador estimador para realimentação de estado integral. Assim: [ ( ) ( )] [ ] Usando a função L=place(A’. )’ obtém-se: [ ] Como o efeito do observador pode ser negligenciado caso este seja mais rápido que o sistema malha fechada ( ). 685): ̇ ( ) Como o erro dever tender a 0.C’. logo.

4544 Considerando somente a malha interna de realimentação: ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) [( ( ) ) ( )] ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) [ ( ) ] ( ) . RiseTime: 2.5114 SettlingTime: 4.9142 Overshoot: 1.

ou seja os polos e os zeros dos compensadores são anulados entre eles e com os da planta e a FTgeral tem a dinâmica projetada. .Assim os compensadores são C1’ e C2’ são: ̂( ) Utilizando minreal() da função de transferência Y(s)/U(s) obtém-se a função de transferência mínima.

.

[0 0 0]).T_i(i.tal=4.5.1)=Ti. % Zieger Nichols i=1.[0 0 0]).time.[1 1 1]).33*theta.theta=1.signals.signals.20). 'Sinal de Controle'.2) title('Zieger Nichols'.'TextColor'. Tempo_Subida(i.1)=Ti.'FontSize'. Sobre_elevacao(i.1)=Kp. set(leg.Overshoot. K=0.values. set(leg.1)=IAE_VALUE(end). xlabel('Tempo(s)') ylabel('Sinal') din=stepinfo(ScopeData.3). % CHR sem sobressinal figure i=2.'TextColor'.20) leg=legend({'Entrada'.1)=IAE_VALUE(end).time).'EdgeColor'.'Linewidth'. Kp=0.values.1)=din.2) title('CHR sem Sobressinal'.[0 0 0]).RiseTime. set(leg.20).[1 1 1]).'FontSize'.'FontSize'.ScopeData. Tempo_Estabelecimento(i.ScopeData.1)=din. Sobre_elevacao(i.values(:.20).Overshoot.'Color'. set(leg.1)=din.'Color'.RiseTime. xlabel('Tempo(s)') ylabel('Sinal') din=stepinfo(ScopeData. set(leg.1)=din.T_i(i.20).SettlingTime.3). sim('questao1_simul') plot(ScopeData.signals.35*tal/(K*theta). set(leg. Ti=3.'Linewidth'. Ti=1.1)=Kp. Kp=0.ScopeData. IAE(i. K_p(i.[0 0 0]).9*tal/(K*theta). K_p(i.1)=din.16*tal. set(leg. .'FontSize'.'Saída Y(t)'}.time).time. Códigos %% questao 1 close all Td=0.'EdgeColor'. 'Sinal de Controle'.20) leg=legend({'Entrada'. Tempo_Subida(i. IAE(i.ScopeData. sim('questao1_simul') plot(ScopeData.'Saída Y(t)'}.'FontSize'.values(:.signals.SettlingTime. Tempo_Estabelecimento(i.1)=din.'FontSize'. set(leg.

signals.RowNames.[0.3).RiseTime. T = table(Tempo_Subida.1)=din.'FontSize'.'FontSize'. Tempo_Estabelecimento(i. set(leg.1)=Kp.[0 0 0]).values.Tempo_Estabelecimento.signals.2) title('Cohen-Coon'. 'Normalized'.time.'EdgeColor'.[0 0 0]).[1 1 1]).SettlingTime. Tempo_Subida(i.1)=IAE_VALUE(end).[0 0 0]). 'Sinal de Controle'.'FontSize'.'FontSize'. Sobre_elevacao(i.20).083*theta/tal))/(1.'Color'.20).'ColumnName'. % tabela figure Metodos = {'Zieger Nichols'. Ti=tal.ScopeData. set(leg. K_p(i.:}.'RowName'.6*tal/(K*theta).'CHR sem sobressinal'.ScopeData.SettlingTime.3). xlabel('Tempo(s)') ylabel('Sinal') din=stepinfo(ScopeData.'ColumnWidth'.time).2) title('CHR com 20% Sobressinal'. xlabel('Tempo(s)') ylabel('Sinal') din=stepinfo(ScopeData. Kp=(0.'FontSize'.6*theta/tal)))*theta. set(leg.IAE.T. % Cohen-Coon figure i=4.signals.T{:.ScopeData.ScopeData.values.time).Overshoot.1)=din. K_p(i. 'Position'.time.9+(0. 'Sinal de Controle'.1)=din.{150 }. Sobre_elevacao(i. set(leg.20).'TextColor'. 0.[0 0 0]).T_i(i.signals.20) leg=legend({'Entrada'.'Color'.'CHR com sobressinal'. Ti=((0.1)=din.values(:.RiseTime.'Cohen- Coon'}. Tempo_Subida(i. IAE(i. 1.'FontSize'.T_i(i.Properties.1)=IAE_VALUE(end).% CHR com sobressinal figure i=3.1)=din. sim('questao1_simul') plot(ScopeData.1)=din. 1]).'Saída Y(t)'}.20).'RowNames'.Sobre_elevacao. set(leg. Kp=0.1)=Kp. set(leg.13.'EdgeColor'. set(leg.1)=Ti.Metodos) uitable('Data'.9+(0.[1 1 1]).Properties.'Linewidth'.values(:. Tempo_Estabelecimento(i.'Units'. IAE(i.VariableNames.1)=Ti. sim('questao1_simul') plot(ScopeData.Overshoot. .'TextColor'.'Saída Y(t)'}.083*theta/tal))*(tal/(K*theta)).'FontSize'.T.20) leg=legend({'Entrada'.'Linewidth'. set(leg.27+(0.

den_pre3=[Kp*Td*Ti*0.'Color'.1).{150 }.20).IAE. num=[0.time) mF=minreal(tf([Kp*Td*Ti*0.8:5.5:0.time).tal=4.'FontSize'.'Color'. set(leg.1)=din.ScopeData.VariableNames.values.25.'Units'. set(leg.[1 1 1]). sim('questao3_simul') plot(ScopeData.'Saída Y(t)'}. end % Metodos = {'Zieger Nichols'.25])) C=pid(Kp.3).1)=IAE_VALUE(end).'Saída Y(t)'}. set(leg. Ti=1.Ti=T_i(i.'FontSize'.values.'EdgeColor'.5+Kp*Td*Ti*0. Tempo_Estabelecimento(i.25.'ColumnName'.25.Kp*Td.Kp*0. 0.[1 1 1]). for i=1:1:size(lambda.time.signals.20) leg=legend({'Entrada'.'Cohen-Coon'}.6715.'FontSize'.[Ti.1) .:}.signals. xlabel('Tempo(s)') ylabel('Sinal') din=stepinfo(ScopeData.1)=(tal. set(leg.25] num_pre3=[Kp*0.0.20).2.3. xlabel('Tempo(s)') ylabel('Sinal') stepinfo(Y.[0 0 0]). T_i(:.20).'TextColor'.'Linewidth'.signals.[0.ScopeData.5 .[0 0 0]). set(leg.Y.lambda=0.'EdgeColor'.values. 'Sinal de Controle'.num2str(lambda(i))].RowNames.['Lambda='.Kp/Ti.25].'FontSize'. Td=0. Tempo_Subida(i.'CHR sem sobressinal'.values(:.Sobre_elevacao. 'Normalized'. set(leg.ScopeData.25]. p=tf([0. 1.signals.'FontSize'.'RowName'.5 0.RiseTime.'TextColor'.0).1)=din. Kp*0.25].'RowNames'.[0 0 0]).'CHR com sobressinal'.13.Metodos={} K_p(:. 'Position'.T{:.20) leg=legend({'Entrada'.20)./(K*lambda)).'Linewidth'. 'Sinal de Controle'. set(leg.25]).25].Tempo_Estabelecimento.Properties.time.theta=1.Overshoot.SettlingTime.1)=lambda.num2str(lambda(i))]).Kp*Ti*0.Metodos) uitable('Data'.'FontSize'.% Questão 2 close all clear all Td=0.1).[1 . % Questão 3 Kp=54.Ti*0. set(leg. T = table(Tempo_Subida.'FontSize'.25.Properties.5. Sobre_elevacao(i.2) title(['Metodo IMC (Lambda) Lambda='. IAE(i.T. K=0. Metodos=vertcat(Metodos. pc_back=feedback(p*C. sim('questao1_simul') plot(ScopeData.25*Ti+Kp*Ti*0. Kp*0.6937.25]. 1]).'ColumnWidth'.Kp*Ti*0.25.[0 0 0]).1)=din.25.2) title('PID método alocação de polos + pré-filtro'.T.2) figure Kp=K_p(i.den=[1 0.

denC1) C2=tf(numC2. xlabel('Tempo(s)') ylabel('Sinal') stepinfo(Y.B.25*Ti+Kp*Ti*0. 'Sinal de Controle'.'Color'.'Pré- Filtro'}. set(leg.Kp*Ti*0.1) figure step(FT).time) mF=minreal(tf([Kp*Td*Ti*0. set(leg.1) % Questão 5 close all num=[0. set(leg.[-8 -7.'Color'.den=[1 0.6578.den)%planta K=[9.'TextColor'. sim('questao5_simul') plot(ScopeData.1.Kp*0.denC2]=ss2tf([A-(L*C)-B*K].25].1].20) leg=legend({'Entrada'.[1 0])*FT.den=[1 0.values. set(leg.denC2) FT=C1*feedback(tf(num.5 0.[Ti.C2).'FontSize'.signals.25].20).C'.denC1]=ss2tf([A-(L*C)-B*K].values.ScopeData.'FontSize'.'Saída Y(t)'.'FontSize'.2) title('Controle Integral de realimentação de estado'.25.% Questão 4 close all Kp=7.20).25].2) title('PID método ITAE'. set(leg.Y.25]).9.B.'EdgeColor'. L=place(A'.den_pre=[1. sim('questao4_simul') plot(ScopeData.'TextColor'. Kp*0.0) [numC2.[1 1 1]).0).[0 0 0]).K.[0 0 0]).[0 0 0]).[1 .'Saída Y(t)'.'Linewidth'. [A.25].values. Td=0.9.25.Y.'EdgeColor'.'Linewidth'.[1 1 1]).'Pré- Filtro'}.D]=tf2ss(num. set(leg. FT=feedback(tf(Ke.signals.C.0.values.time. Ti=1. set(leg. 'Sinal de Controle'. pc_back=feedback(p*C.25])) C=pid(Kp. set(leg.[0 0 0]).'FontSize'.signals.Ti*0.25.25] num_pre=1.ScopeData.20).Kp*Td.0) C1=1-tf(numC1.'FontSize'.5+Kp*Td*Ti*0.Kp/Ti. minreal(FT) .'FontSize'.1 13. p=tf([0.time) [numC1.25]. Ke=32.92])'. num=[0.time.55].5 .25.5 0.signals.K. xlabel('Tempo(s)') ylabel('Sinal') stepinfo(Y.20) leg=legend({'Entrada'.L.6.20).den).25.