Apostila (notas de aula) Teoria de Controle Digital (ou Discreto no tempo)...

4.290 visualizações

Publicada em

Apostila (notas de aula) sobre teoria de controle digital (ou discreto no tempo).
Material ainda em preparação - versão atualizada até Jun 2, 2014.

Publicada em: Educação
0 comentários
4 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
4.290
No SlideShare
0
A partir de incorporações
0
Número de incorporações
3
Ações
Compartilhamentos
0
Downloads
328
Comentários
0
Gostaram
4
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Apostila (notas de aula) Teoria de Controle Digital (ou Discreto no tempo)...

  1. 1. Controle Automático III (Controle Digital) Fernando Passold Last Updated: 2 de junho de 2014
  2. 2. . Este material foi desenvolvido para a disciplina de “Controle Automático III” do curso de Enge- nharia Elétrica da UPF, que poderia ser chamada também de “Controle Discreto no Tempo” ou simplesmente de “Controle Digital”. Este material não pretende ser auto-suficiente em si mesmo, apesar da quantidade de Apên- dices, mas visa ser usado como continuidade para disciplinas anteriores na área de Controle Automático, uma vez que pressupõe que o leitor já tenha adquirido fundamentos anteriores na área de Controle Automático “clássico”. Isto é, que esteja ao menos familiarizado com trans- formadas de Laplace e projetos de controladores (analógicos) usando Diagrama do Lugar das Raízes (Root-Locus) e preferencialmente que também, domine o projeto de controladores de Avanço-Atraso (Lead-Lag) no domínio frequência. Este material foi criado usando software livre e de domínio público: LaTeX (pacote MiKTeX / MacTeX) e editor TeXmaker. Foi adotada a fonte: KP Fonts Serif (kpfonts – baseada em URW Palladio), tamanho 10. ©Prof. Dr. Eng. Fernando Passold, 2 de junho de 2014. 2
  3. 3. Sumário 1 Teoria de Erros 5 1.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.2 Sistema “padrão” de realimentação unitária . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.2.1 Caso 1) Entrada Degrau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.2.2 Caso 2) Entrada Rampa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.3 Tabela Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2 Estabilidade 11 2.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.2 Resposta Entrada Limitadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.3 Representação de Pólos no Plano Complexo (Z) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.3.1 Caso 1) F(z) com Pólos Reais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.3.2 Caso 2) F(z) com Pólos Complexos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.4 Método de Jury . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.4.1 Exemplo de Sistema de Segunda Ordem . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.4.2 Exemplo de Sistemas de Terceira Ordem . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.4.3 Exemplo de Planta de Segunda ordem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.5 Efeitos do Período de Amostragem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.6 Diagrama do Lugar das Raízes (RL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.6.1 Construindo o Diagrama do Lugar das Raízes . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.6.2 Exemplos de Traçados de RL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3 Controladores Digitais 31 3.1 Simples Controlador Proporcional, K . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.1.1 Determinando Km ´ax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 3.2 Controlador (polinomial) cancelando pólo(s) dominante(s) . . . . . . . . . . . . . . . . . . . . . . 39 3.3 Cancelamento imperfeito de pólos-zeros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 3.4 Projeto de Controlador Digital usando Root Locus . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 3.4.1 Compensador por Avanço de Fase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 3.5 Projeto de Controlador PI usando Root Locus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 3.6 Controlador Dead-beat (Controle por tempo mínimo, finito) . . . . . . . . . . . . . . . . . . . . . 57 3.6.1 Exemplo1: O controlador Deadbeat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 3.6.2 Exemplo2: Projeto de Controlador Deadbeat . . . . . . . . . . . . . . . . . . . . . . . . . . 58 3.6.3 Exemplo2: Outro projeto de Controlador Deadbeat . . . . . . . . . . . . . . . . . . . . . . 64 4 Projeto de Controladores Digitais 67 4.1 Método dos Pólos Dominantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 4.2 Metodologia de Projeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 4.3 Comentários . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 5 Projeto por Emulação 75 5.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 5.2 Método de Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 5.2.1 Exemplo1: Caso de um Controlador de 1a-ordem . . . . . . . . . . . . . . . . . . . . . . . 77 5.2.2 Exemplo2: Caso de um Controlador por Avanço de Fase . . . . . . . . . . . . . . . . . . . 77 5.3 Relação entre o plano-s e plano-z . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 5.4 Método de Tustin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 5.4.1 Exemplo1: Equação de diferenças usando o Método de Tustin . . . . . . . . . . . . . . . . 83 5.4.2 Exemplo2: Projeto de Controlador Digital usando o Método de Tustin . . . . . . . . . . . 83 3
  4. 4. 5.5 Outras Transformações Bilineares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 A Equações Auxiliares 87 A.1 Tabela de Derivadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 A.2 Equação do Segundo Grau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 A.3 Relações de Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 A.4 Progressão Geométrica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 A.5 Definição da Transformada Z . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 A.6 Propriedades da Transformada Z . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 A.7 Tabela de Transformadas Z . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 B Respostas temporais no Plano-Z 91 B.1 Casos de Pólos Reais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 B.2 Caso de Pólos Complexos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 C Transformada Z - Uso do MATLAB 93 C.1 Transformada Z Inversa (Usando o MATLAB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 C.2 Sistemas com Sustentador de Ordem Zero [B0G(z)] . . . . . . . . . . . . . . . . . . . . . . . . . . 96 D Respostas Típicas de Sistemas de 2a-ordem 97 D.1 Sistemas com 0 < < 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 D.2 Relação entre posição do pólo e sobrepasso (%OS) . . . . . . . . . . . . . . . . . . . . . . . . . . 100 D.3 Relação entre posição do pólo e Ts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 D.4 Relação entre posição do pólo e Tp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 D.5 Relação entre posição do pólo e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 E Revisão Controladores Clássicos 101 E.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 E.2 Melhorando o erro em regime permanente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 E.3 Melhorando o Erro Estacionário (PI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 F MATLAB: Comandos 105 4
  5. 5. Capítulo 1 Teoria de Erros 1.1 Introdução Relação com as características desejáveis num sistema de controle. As especificações de um sistema de controle incluem: • desempenho em regime permanente (precisão); • desempenho em regime transitório (formas de onda); • robustez (degradação do controle frente à mudanças no sistema). 1.2 Sistema “padrão” de realimentação unitária Seja um típico sistema de controle em malha fechada do tipo SISO (single-input, single-output) como o mostrado na figura 1.1. yr(t) Algoritmo de Controle C(z) T e(kT)+ u(kT) T Bo Atuador + Processo + Medidor G(z) y(t) (realimentação unitária) - Figura 1.1: Sistema “padrão” de realimentação unitária. Note que: • este sistema controla o valor medido do erro, não a variável de saída. • a unidade para medição de Y é a mesma que a adotada para a referência Yr, para que o bloco somador atue de fomra conveniente. • qualquer sistema em malha fechada com realimentação unitária (H(s) = 1), tende a igualar a entrada e a saída (Ogata, 1995, p. 99 e 210). • H(s) atua como um “conversor de unidades” entre Y e Yr. Podemos redesenhar o diagrama anterior (figura 1.1) como o mostrado na figura 1.2 e então: yr(t) C(z) + BoG(z) y(t) - Figura 1.2: Sistema “padrão” no formato digital. 5
  6. 6. Y(z) Yr(z) = C(z) · BoG(z) 1 + C(z)BoG(z) = FTMA(z) 1 + FTMA(z) = F(z) 1 + F(z) isolando o erro: E(z) = Yr(z) − Y(z) = Yr(z) · 1 − F(z) 1 + F(z) = Yr(z) 1 + F(z) − F(z) 1 + F(z) notamos então que o comportamento do erro é dado por: E(z) = 1 1 + F(z) · Yr(z) (1.1) ou seja, que o erro é função de Yr e da FTMA(z), ou: Erro = f[Yr,F] O que acontece então como o erro em regime permanente (precisão)? Procedendo com o cálculo do erro em regime permanente (quando t → ∞): lim k→∞ e(kT) = lim z→1 (z − 1) · E(z) Para o nosso caso: lim k→∞ e(kT) = lim z→1 (z − 1) · 1 1 + F(z) · Yr(z) (1.2) Para continuar com a análise, necessitamos levantar hipóteses sobre entradas (referências) do sistema. Normalmente se trabalha com: entrada degrau, rampa e parábola. 1.2.1 Caso 1) Entrada Degrau Yr(z) = U(z) = z z − 1 neste caso: lim k→∞ e(kT) = lim z→1 (z − 1) · 1 1 + F(z) · Yr(z) = lim z→1 (z − 1) · 1 1 + F(z) · z (z − 1) lim k→∞ e(kT) = 1 1 + limz→1 F(z) (1.3) Este limite é conhecido como Kp=ganho de posição (similar ao ganho estático dos sistemas contínuos no tempo), ou seja: Kp = lim z→1 F(z) (1.4) Falta agora analisar Kp para alguns tipos de sistema F(z). Note que nos resta calcular limz→1 F(z). Se F(z) possui termos com pólo em z = 1, isto é, possui integradores, e(kT)|k→∞ = 0. Demonstração O que seria uma integração numérica? Supondo que se esteja interessado numa integração numérica retangular – ver figura 1.3 onde: i(k)= integral de 0 à k. Então: i(0) = 0 i(T) = g(0) · T = i(0) + g(0) · T i(2T) = i(0) + g(0) · T + g(T) · T = i(1) + T g(T) ... i(k) = i(k − 1) + T · g(k − 1) (1.5) 6
  7. 7. % Gráfico criado no MATLAB: >> k=0:5; >> y=1.2.^k; >> plot(k,y,’k--’) >> hold on >> stem(k,y,’mo’) >> stairs(k,y,’b-’) >> xlabel(’kT’); >> ylabel(’g’) Figura 1.3: Método de integração numérica retangular. Note que a expressão (1.5) está no formato de uma equação de diferenças, então: I(z) = z−1 · I(z) + T · z−1 · G(z) I(z)[1 − z−1 ] = T z−1 G(z) I(z) = T z−1 1 − z−1 G(z) ou: I(z) = T (z − 1) · G(z) (1.6) Note o pólo em z = 1. Se fosse adotado outro método de integração numérica, ainda assim teríamos o termo (z −1) aparecendo no denominador da função. Exemplo: integração numérica trapezoidal Acompanhando pela figura 1.4, agora temos algo como: >> % Gráfico no MATLAB: >> % fplot(@(t) 1.4.^t-0.9.^t-0.2.^t+2, [0 5]) >> t=0:0.1:5; % tempo variando de 0,1 segundos >> k=0:5; % amostras a cada T=1 seg >> y=1.4.^t-0.9.^t-0.2.^t+2; >> yd=1.4.^k-0.9.^k-0.2.^k+2; % versão discreta >> figure; plot(t,y,’k--’); >> hold on; >> stem(k,yd,’mo’) >> plot(k,yd,’b-’) Figura 1.4: Método de integração numérica trapezoidal. i(kT) = i[(k − 1)T] + T 2 [g[(k − 1)T] + g(kT)] (1.7) lembrando que a área de um trapézio é dada por: A = (B + b) · h 2 7
  8. 8. Transformando (1.7) numa expressão em Z, obtemos: I(z) = z−1 · I(z) + T 2 (z−1 + 1) · G(z) = T/2 (1 − z−1) (1 + z−1 ) · G(z) I(z) = T/2 (z − 1) (z + 1)G(z) (1.8) Note novamente em (1.8) o termo (z − 1) no denominador, ou seja, que volta a aparecer o pólo em z = 1. Assim, de maneira geral, se pode afirmar que uma equação característica com integradores é do tipo: F(z) = N(z) (1 − z−1) · D (z) com pólo em z = 1. Voltando ao cálculo do erro para provar que e(kT)|k→∞ = 0 quando existe pelo menos um integrador em F(z), temos: e(kT)|k→∞ = 1 1 + limz→1 F(z) onde: limz→1 F(z) = Kp (ganho de posição). Então: 1. Se F(z) não possui integradores, então: f(z) = N(z) D(z) , (D(z) 0) então: limk→∞ e(kT) = 1 1 + Kp = Cte = número finito e portanto, e(kT)|k→∞ 0. 2. Se F(z) contêm pelo menos 1 integrador, então F(z) é do tipo: F(z) = N(z) (z − 1) · D (z) e o erro é dado por: lim k→∞ e(kT) = 1 1 + limz→1 N(z) (z − 1)D (z) = 1 1 + Kp neste caso, Kp → ∞ e consequentemente, e(∞) = 0. Isto significa que se meu sistema possuir pelo menos um integrador, é bem provável (depende da quantização do sistema), que seu erro em regime permanente seja nulo. 1.2.2 Caso 2) Entrada Rampa Neste caso: Yr(z) = T z (z − 1)2 e neste caso e(∞) fica: lim k→∞ e(kT) = lim z→1 (z − 1) · 1 1 + F(z) · T z (z − 1)2 = lim z→1 T z (z − 1) + (z − 1)F(z) = T limz→1(z − 1) · F(z) = T Kv (1.9) 8
  9. 9. onde Kv= ganho de velocidade. Da mesma forma que procedemos para o caso anterior, vamos analisar o comportamento do erro, depen- dendo da função F(z). 1. Considerando F(z) sem integradores (um sistema do tipo “0”): lim k→∞ e(kT) = ∞ isto é, não converge. 2. Se F(z) possui 1 integrador (sistema do tipo “1”): D(z) = (z − 1) · D (z) limk→∞ e(kT) = T Kv = cte = valor finito, mas 0. 3. Se F(z) possui 2 integradores (sistema do tipo “2”): lim k→∞ e(kT) = 0 Isto significa que acrescentamos tantos integradores (D(z) = (z − 1)) na FTMA do processo quanto o necessário para tornar o erro nulo. 1.3 Tabela Resumo Segue uma tabela resumo sobre Teoria de Erros (ou Precisão): Entradas: Degrau Rampa Parábola Sistema: z z − 1 T z (z − 1)2 T2 z (z + 1) 2(z − 1)3 Tipo 0 F(z) = N(z) D(z) 1 + Kp ∞ ∞ Tipo 1 F(z) = N(z) (z − 1)D (z) 0 T Kv ∞ Tipo 2 F(z) = N(z) (z − 1)2D (z) 0 0 T2 ka onde: Kp = limz→1 FTMA(z) = ganho de posição. Kv = limz→1 (z − 1)FTMA(z) = ganho de velocidade. Ka = limz→1 (z − 1)2 FTMA(z) = ganho de aceleração. Tabela 1.1: Tabela resumo sobre erros.(Ogata, 1995, pág. 355) 9
  10. 10. 10
  11. 11. Capítulo 2 Estabilidade 2.1 Introdução Trata-se do objetivo mais importante para um sistema de controle. Para sistemas lineares e invariantes no tempo são BIBO estáveis (entrada limitada e saída limitada) se a aplicação de uma entrada limitada produz uma saída limitada. Mas atenção, este conceito é suficiente para sistemas contínuos no tempo. Para sistemas discretos (amostrados) ainda depende do período de amostragem adotado! A estabilidade de um sistema em malha fechada depende de: • Ganhos; • Pólos; • Zeros; • Atrazos; • T, período de amostragem. 2.2 Regime transitório de um sistema submetido a uma entrada limi- tada (degrau) Suponha que temos o sistema mostrado na figura 2.1. Yr + - G(z) H(z) Y Figura 2.1: Sistema em malha fechada. onde: Y Yr = G 1 + GH = FTMF(z) = F(z) = N(z) D(z) conforme mostra a figura 2.2. F(z) Yr(z) Y(z) Figura 2.2: Função de malha-fechada. Da figura 2.2 percebemos que: Y(z) = F(z) · Yr(z) = z (z − 1) · N(z) D(z) (2.1) 11
  12. 12. onde: z (z − 1) é a transformada Z do degrau. Os zero finitos de F(z) são as raízes de N(z) = 0. E os pólos de F(z) são as raízes de D(z) = 0. Se o método da decomposição em termos simples (frações parciais) for aplicado sobre a equação 2.1 teremos: Y(z) z = c0 z − 1 + Pólos Reais ci z − pi + Pólos Complexos cj (z − pj) + cj (z − pj) (2.2) Lembrando que: Z−1 ci z z − pi = ci · pk i obtemos: y(kT) = c0 + Pólos Reais ci pk i + Pólos Complexos cj pk j + cj pk j (2.3) onde: c0 = termo em função da entrada (define o regime permanente da saída); os outros termos ( ’s) = função das características de F(z), definem o regime transitório que depende dos pólos de F(z) ponderados pelos coeficientes ci ou cj, cujas magnitudes são determinadas pelo numerador de F(z). 2.3 Representação de Pólos no Plano Complexo (Z) A seguir estudaremos como os pólos contribuem na resposta y(KT) 2.3.1 Caso 1) F(z) com Pólos Reais Neste caso, y(KT) depende dos termos ci pk i . A figura 2.3 mostra os mapeamentos possíveis para pólos no plano Z e suas respectivas repercussões no domínio amostrado. 1-1 -1 1 Im{Z} Re{Z} xxxxxx Caso 2: Caso1: Caso 3: Caso 4: Caso 5: Caso 6: Figura 2.3: Respostas transientes para casos de simples pólos reais. Analisando a figura 2.3 nota-se: Caso 1 : pi > 1, pólo instável, saída divergente, tanto mais quanto mais distante o pólo estiver de z = 1. Caso 2 : pi = 1, sistema em ressonância, o pólo se encontra sobre z = 1. Este tipo de sistema corre o risco de não ser estável para certas entradas. 12
  13. 13. Caso 3 : 0 < pi < 1, saída convergente (decrescente), apresentando valores decrescentes tão rápidamente quanto mais próximo de z = 0 estiver este pólo. Caso 4 : −1 < pi < 0, saída converge (decresce com o tempo), mas como pi é negativo, forma-se uma se- quencia convergente alternada. Caso 5 : p = −1, sistema oscilando com amplitude constante (enquanto |pi | = 1) na frequencia de f = 1/(2T). Caso 6 : pi < −1, outro pólo instável, sistema apresenta saida divergente (crescente) e alternada (sinal ne- gativo para pi ). 2.3.2 Caso 2) F(z) com Pólos Complexos Neste caso, F(z) apresenta pólos conjugados complexos: cj pk j + ¯cj ¯pk j , onde: cj = a + jb pj = + j Representando o pólo na forma polar, resulta em: pj = ej cj = Aej onde: = 2 + 2 = tan−1 Im{z} Re{z} x ⇢ ✓ pj ↵ então: cj pk j + ¯cj ¯pk j = A k ej(k + ) + A k e−j(k + ) (2.4) = A k ej(k + ) + e−j(k + ) = 2A k cos(k + ) ou seja, a saída se tranforma numa exponencial sobreposta com uma senóide amostrada nos instantes k. Supondo que k = 2 (múltiplos cossenos), temos: t = k T ∴ k = tpp T . Isolando em tpp e substituindo em k = 2 , obtemos tpp = 2 T , onde tpp significa um pseudo-período. A figura 2.4 mostra o efeito amostrado da eq. (2.5). ✓ "a medida que 6,28*T Figura 2.4: Impacto de sobre a eq. (2.5). A figura 2.5 mostra diferentes casos de pólos complexos no plano-z e respectivas respostas transientes no tempo discreto. 13
  14. 14. z z − eaT cos( T) z2 − 2e−aT z cos( T) + e−2aT = Z e−akT cos( kT) Figura 2.5: Representações gráficas da Transformada Inversa Z.[Cadzow (1973),Kuo (1992)] 14
  15. 15. 2.4 Método de Jury Este método permite determinar a estabilidade de um sistema discreto linear através da análise dos coeficientes da sua equação característica. Seria uma analaogia num sistema discreto ao critério de estabilidade de Routh-Hurwitz. Seja o polinômino D(z) extraído da equação característica de um sistema discreto: D(z) = anzn + an−1zn−1 + ... + a1z + a0 = 0 o sistema é estável se e somente se suas raízes estiverem contidas dentro do círculo unitário no plano Z. Isto implica em 3 condições preliminares1 (i) |a0| < an (ii) D(z)|z=1 = D(1) > 0 (iii) D(z)|z=−1 = D(−1) > 0 para n par < 0 para n ímpar , ou: (−1)nD(−1) > 0. Uma vez atendidas as condições anteriores parte-se para o arranjo (ou Tabela) de Jury (similar ao do método de Routh-Hurwittz): Linha z0 z1 z2 ... zn−1 zn 1 a0 a1 a2 ... an−1 an 2 an an−1 an−2 ... a1 a0 3 b0 b1 b2 ... bn−1 4 bn−1 bn−2 bn−3 ... b0 ... ... ... ... ... ... 2n − 5 p0 p1 p2 p3 2n − 4 p3 p2 p1 p0 2n − 3 q0 q1 q2 A tabela de Jury é construída da seguinte forma: • A tabela consiste em (2n − 3) linhas. Para um sistema de segunda-ordem, a tabela possui apenas 1 linha. • Primeira linha: seus elementos consistem dos coeficientes de D(z) arranjados em potências ascenden- tes em z. • Segunda linha: seus elementos consistes nos coeficientes de D(z) arranjados em potências descenden- tes de z. Os outros elementos dependem dos determinantes: bk = a0 an−k an ak , k = 0,1,2,...,n − 1 ck = b0 bn−1−k bn−1 bk , k = 0,1,2,...,n − 2 dk = c0 cn−2−k cn−2 ck , k = 0,1,2,...,n − 3 q0 = p0 p3 p3 p0 , q2 = p0 p1 p3 p2 Note que: • Os elementos de qualquer linha par (linhas 2, 4, ...) são simplesmente o reverso da linha imediatamente precedente ímpar (linhas 1, 3, ...). • A última linha (2n − 3) possui apenas 3 elementos. 1Atenção: Ogata (1995) referencia a equação característica como: P(z) = a0zn + a1zn−1 + ... + an−1z + an – o que faz inverter a primeira pré-condição (no caso dele) para: |an| < a0. 15
  16. 16. Uma vez finalizado o arranjo, pode-se concluir que o sistema será estável se: |a0| < |an| |b0| > |bn−1| |c0| > |cn−2| |d0| > |dn−3|    (n − 1) restrições ... |p0| > |p3| |q0| > |q2| 2.4.1 Exemplo de Sistema de Segunda Ordem Exemplo 1: Num sistema de 2a-ordem, n = 2 e neste caso, a tabela de Jury contêm apenas 1 linha. Assim, para estabilidade: D(1) > 0 D(−1) > 0 |a0| < |a2| Por exemplo, para o sistema: D(z) = z2 − 0.25 = 0, as pré-condições necessárias para estabilidade são: Condições Sistema Satisfeito ou não? 1) D(1) > 0 D(1) = 1 − 0.25 = 0.75 > 0 Satisfeito 2) D(−1) 0 D(−1) = 1 − 0.25 = 0.75 0 Satisfeito 3) |a0| |a2| |a0| = 0.25 a2 = 1 Satisfeito Desta forma, percebe-se que todas as condições foram satisfeitas, ou seja, o sistema é estável. 2.4.2 Exemplo de Sistemas de Terceira Ordem Exemplo 2: Determinar a estabilidade de um sistema discreto cuja equação característica é: D(z) = z3 − 1,2z2 − 1,375z − 0,25 = 0 As pré-condições para estabilidade são: Condições Sistema Satisfeito ou não? 1) D(1) 0 D(1) = 1 − 1,2 − 1,375 − 0,25 = −1,875 0 Não Satisfeito 2) D(−1) 0 D(−1) = −1 − 1,2 + 1,375 − 0,25 = −1,125 0 Satisfeito 3) |a0| a3 |a0| = 0.25 a3 = 1 Satisfeito Exemplo 3: Seja a equação característica: D(z) = z3 + 3,3z2 + 4z + 0,8 = 0 As pré-condições para estabilidade são: Condições Sistema Satisfeito ou não? 1) D(1) 0 D(1) = 1 + 3,3 + 4 + 0,8 = 9,1 0 Satisfeito 2) D(−1) 0 D(−1) = −1 + 3,3 − 4 + 0,8 = −0,9 0 Satisfeito 3) |a0| a3 |a0| = 0.8 a3 = 1 Satisfeito O arranjo de Jury resulta em: Linha z0 z1 z2 z3 1 0,8 4,0 3,3 1,0 2 1,0 3,3 4,0 0,8 3 b0 b1 b2 16
  17. 17. onde: b0 = a0 a3 a3 a0 = a2 0 − a2 3 = −0,36 b1 = a0 a2 a3 a1 = a0a1 − a2a3 = −0,1 b2 = a0 a1 a3 a2 = a0a2 − a1a3 = −1,36 A condição suficiente para estabilidade é: |b0| |b2|. Assim, observando-se os valores obtidos para b0 e b2, nota-se que esta condição não foi satisfeita e consequentemente, este sistema não é estável. De fato, as raízes de D(z) estão em: D=[1 3.3 4 0.8] D = 1.0000 3.3000 4.0000 0.8000 roots (D) ans = −1.5268 + 0.9574 i −1.5268 − 0.9574 i −0.2463 2.4.3 Exemplo de Planta de Segunda ordem Analize a estabilidade do seguinte sistema em malha-fechada (fig 2.6) [Phillips and Nagle (1994); pág. 191, 231]: Bo(s) K s(s + 1) YR + - Y T ou Bo(s) YR + - Y T 1 s(s + 1) K T Figura 2.6: Sistema exemplo. Sua função transferência é dada por: Y(z) YR(z) = BoG(z) 1 + BoG(z) onde BoG(z) é na forma: BoG(z) = K(b0 + b1z) (z − 1)(z − a) Determinando BoG(z): Z {Bo(s)G(s)} = (1 − z−1 )Z 1 s2(s + 1) = (1 − z−1 )Z 1 1s2 − 1 1s + 1 1(s + 1) = (z − 1) z Tz (z − 1)2 − z (z − 1) + z (z − e−T ) BoG(z) = K[z(T + e−T − 1) + (1 − Te−T − e−T )] (z − 1)(z − e−T ) Nota que segue o formato: BoG(z) = K(b0 + b1z) (z − 1)(z − a) = K b1 b1 b1 z + b0 b1 (z − 1)(z − a) 17
  18. 18. A equação característica do sistema é então: D(z) = 1 + BoG(z) = 0 D(z) = (z − 1)(z − a) + K(b0 + b1z) = 0 Expandindo os termos de D(z), se obtêm: D(z) = z2 − (1 + a)z + a2 + Kb0 + Kb1z D(z) = z2 − (1 + a − Kb1)z + (a2 + Kb0) Usando-se o método de Jury para identificar os requisitos para estabilidade do sistema temos: D(z) = z2 −(1 + a − Kb1)z +(a2 + Kb0) = a2 a1 a0 Pelos critérios de Jury: 1) D(1) 0 → 1 − 1 + a + Kb1 + a + Kb0 0 se obtêm: Kb1 + Kb0 0, que pode ser escrito como: K 0, Se (b1 + b0) 0 2) D(−1) 0 → 1 + 1 + a − Kb1 + a + Kb0 0 ∴ K(b0 − b1) −2a − 2 K −2(1 + a) b0 − b1 , Se (b0 − b1) 0 e 3) |a0| a2 → a + Kb0 1 ∴ K 1 − a b0 , Se b0 0 2.5 Efeitos do Período de Amostragem Verificando para o caso do sistema anterior, os efeitos causados por diferentes valores para o período de amostragem T: a) Suponha que T = 0,1 (segundos): Então: a = e−T = 0,9048374 b1 = e−T + T − 1 = 0,0048374 b0 = 1 − e−T − Te−T = 0,0046788 Aplicando os critérios de estabilidade, temos: 1) K 0, b1 + b2 0 2) K 1 − a b0 ,K 0,0952 0,0047887 , K 20,3389 3) K 2(1 + a) b0 − b1 , K −2.4024 × 104 (Desconsiderada – a menos restritiva) então, a condição para estabilidade se resume à: 0 K 20,3389 b) Supondo que T = 1,0 (segundos): teremos: a = e−T = 0,3679 b1 = e−T + T − 1 = 0,3679 b0 = 1 − e−T − Te−T = 0,2642 18
  19. 19. Aplicando os critérios de estabilidade, temos: 1) K 0, b1 + b2 0 2) K 1 − a b0 , K 2.3922 3) K 2(1 + a) b0 − b1 , K −26.3972 (Desconsiderada – a menos restritiva) então, a condição para estabilidade se resume à: 0 K 2.3922 Comportamento de um sistema na situação do ganho máximo Vamos verificar o que acontece quando T = 1,0 (segundos) e K = 2,3922: Para este valor de K a equação do sistema fica: BoG(z) = K(b0 + b1z) (z − 1)(z − a) = K(0,3679z + 0,2642) z2 − 1,3679z + 0,3679 assim, a função transferência em malha-fechada fica: FTMF(z) = BoG(z) 1 + BoG(z) e sua equação característica fica: D(z) = 1 + BoG(z) = 0 = 1 + K(0,3679z + 0,2642) z2 − 1,3679z + 0,3679 = 0 = z2 + (0,3679K − 1,3679)z + (0,3679 + 0,2642K) = 0 = z2 − 0,4878z + 1 = 0 ou seja, as raízes para D(z) (pólos do sistema) ficam em: z1 = 0,2439 + j0,9698 z2 = 0,2439 − j0,9698 que equivale à z = 1,0∠1,3244(rad) = 1,0∠ ± T. Ou seja, o sistema oscila e na frequência de 1,3244 (rad/s) (ou 8,3214 (Hz)). Usando o MATLAB para realizar os cálculos fica: T=1.0; a=exp(−T) a = 0.3679 b1=exp(−T )+T−1 b1 = 0.3679 b0=1−exp(−T )−T exp(−T ) b0 = 0.2642 K=(1−a ) /b0 K = 2.3922 %Montando BoG(z): num=K [ b1 b0 ] num = 0.8800 0.6321 den=conv ([1 −1] ,[1 −a ] ) den = 1.0000 −1.3679 0.3679 BoG=t f (num, den , T ) ; zpk (BoG) Zero/ pole / gain : 0.88005 ( z+0.7183) 19
  20. 20. −−−−−−−−−−−−−−−−−− ( z −1) ( z −0.3679) Sampling time : 1 %Fechando a malha para obter D(z): FTMF=feedback (BoG , 1 ) Transfer function : 0.88 z + 0.6321 −−−−−−−−−−−−−−−−−− z^2 − 0.4878 z + 1 Sampling time : 1 %Recuperando D(z): [num_mf , den_mf , T]= tfdata (FTMF , ’ v ’ ) num_mf = 0 0.8800 0.6321 den_mf = 1.0000 −0.4878 1.0000 T = 1 %Encontrando as raizes de D(z): p_mf=roots ( den_mf ) p_mf = 0.2439 + 0.9698 i 0.2439 − 0.9698 i %Determinando polo em coordenadas polares: [ theta , rho ]= cart2pol ( real ( p_mf (1) ) , imag ( p_mf (1) ) ) theta = 1.3244 rho = 1.0000 freq=theta (2 pi ) freq = 8.3214 Conclusão Nota-se que a medida que aumenta o período de amostragem T, se é obri- gado a abaixar o ganho K do controlador, para manter a estabilidade do sis- tema. ↑ T ⇒↓ K Notar que o acontece é que o sistema fica em malha-aberta entre instantes de amostragem, isto é, o sistema está evoluindo entre os instantes de amostragem. Esta evolução é função do ganho e tamanho do período de amostragem adotado. 2.6 Diagrama do Lugar das Raízes (RL) • O efeito do Ganho (K) num sistema e/ou do período de amostragem na estabilidade absoluta ou rela- tiva do sistema em malha fechada deve ser investigada adicionalmente às características da resposta transitória. O método do Lugar das Raízes (RL) é muito útil neste sentido. • O método do Lugar das Raízes (Root Locus (RL)) para sistemas contínuos no tempo pode ser estendido para os sistemas de tempo discreto sem muitas modificações uma vez que a equação característica do sistema de controle discreto segue o mesmo formato que no sistema de controle contínuo no tempo. Em muitos sistemas LTI (Lineares e Invariantes no Tempo), a equação característica pode seguir um dos seguintes formatos: 1 + G(z)H(z) = 0 1 + GH(z) = 0 combinando ambas as equações anteriores, podemos definir a equação característica como sendo: 1 + L(z) = 0 (2.5) onde L(z) = G(z)H(z) ou L(z) = GH(z). L(z) é popularmente conhecida como a função transferência do impulso para o laço aberto. A equação 2.5 pode ser escrita como: L(z) = −1 uma vez que L(z) expressa uma quantidade complexa ela pode ser dividida em 2 equações, uma equação relacionada com os ângulos e outra com a magnitude. Isto resulta em 2 critérios à serem seguidos: 20
  21. 21. • Critério Angular: ∠L(z) = ±180o(2k + 1), k = 0,1,2,... • Critério da Magnitude: |L(z)| = 1 Os valores de z que satisfazem ambos os critérios correspondem às raízes da equação característica ou aos polos de malha-fechada. Antes de construir o diagrama do Lugar das Raízes, a equação 1 + L(z) = 0 deve ser reorganizada na seguinte forma: 1 + K (z + z1)(z + z2)···(z + zm) (z + p1)(z + p2)···(z + pn) = 0 (2.6) onde zi ’s e pi ’s correspondem respectivamente aos zeros e polos da função transferência em malha aberta (FTMA(z)), m é o número de zeros e n é o número de pólos. 2.6.1 Construindo o Diagrama do Lugar das Raízes As regras para construção do RL para sistemas digitais são as mesmas que as usadas para sistemas no tempo contínuo: 1. O diagrama de RL é simétrico com relação ao eixo real. O número de traçados do RL corresponde ao número de polos de malha aberta. 2. Os traçados do RL partem dos polos de malha aberta com K = 0 e terminam nos zeros de malha aberta, com K = ∞. Na ausência de zeros de malha aberta, o RL tende para −∞ quando K → ∞. O número de traçados que tendem para −∞ corresponde a diferença entre o número de polos e de zeros. 3. Uma região do eixo real fará parte do RL se o número de polos mais o número de zeros à direita desta parte for ímpar. 4. Se existem n polos de malha aberta e m zeros de malha aberta, então n − m traçados do RL vão tender para −∞ ao longo de linhas retas assintóticas desenhadas à partir de um único ponto s = que é chamado de centro do loci: = (Partes reais dos pólos de malha aberta) − (Partes reais dos zeros de malha aberta) n − m (2.7) O ângulo de partida das assintotas é dado por: = 180o(2q + 1) n − m , q = 0,1,...,n − m − 1 (2.8) 5. As raízes da equação abaixo definem os pontos de partida (breakaway) e chegada (break in) dos traça- dos de RL: dK dz = 0 (2.9) onde K é expresso em função de z da equação característica do sistema. Esta é uma condição neces- sária porém, não é suficiente. Devemos verificar se as soluções encontradas recaem sobre o RL sendo traçado. 6. A interseção (se existe) do RL com o círculo unitário pode ser determinada à partir do arranjo de Routh(- Hurwitz). 7. O ângulo de partida para pólos complexos de malha aberta é dado por: p = 180o + (2.10) onde corresponde à contribuição final de todos os ângulos dos pólos e zeros de malha aberta para este polo: = i i − j p j (2.11) onde i ’s correspondem às contribuições dos ângulos gerados pelos zeros e j’s correspondem às con- tribuições dos ângulos gerados pelos polos. 8. O ângulo de chegada relacionado com o zero complexo é dado por: z = 180o − (2.12) onde é o mesmo valor determinado pela regra anterior. 21
  22. 22. 9. O ganho no ponto zo sobre o RL é determinando através de: K = n j=1 |zo + pj| m i=1 |zo + zi | (2.13) 2.6.2 Exemplos de Traçados de RL Exemplo_1 Para o caso do exemplo anterior, reproduzido novamente na figura 2.7 (ver seção 2.4.3, pág. 17, Bo(s) YR + - Y T 1 s(s + 1) K T Figura 2.7: Sistema exemplo de 2a-ordem. Com T = 1,0 (segundos), temos: BoG(z) = K(b0 + b1z) (z − 1)(z − a) = 0,36788K(z + 0,7183) (z − 1)(z − 0,3679) = K(0,3679z + 0,2642) z2 − 1,3679z + 0,3679 O lugar das raízes se origina em z = 1 e z = 0,3679 e termina em z = −0,7183 e z = −∞. O número de assíntotas equivale à: np − nz, então (2 − 1) = 1, temos 1 assíntota. O ângulo de partida da assíntota é dado por: Ângulo da assíndota = = (2N + 1) 180o (np − nz) , N = 0,1,2,... onde: N = 0 corresponde a assíntota com o menor ângulo com respeito ao eixo real. Embora N assuma um número infinito de valores, o ângulo repete a si mesmo a medida que N aumenta. O número de diferentes assíntotas é dado por: np − nz. Neste caso: = (2N + 1) · 180 np − nz = 180o 1 = 1800 , p/N=0 = 3 · 180o 1 = 540o , p/N=1 Os pontos de partida (break-way) e chegada (break-in) podem ser determinados à partir das raízes de: d K d z = A (z)B(z) − A(z)B (z) B2(z) = 0 onde: o apóstrofe indica diferenciação em relação à z e A(z) e B(z) são extraídos à partir da equação carac- terística: Se a equação característica D(z) = 0 for escrita como: D(z) = 1 + F(z) = 0 = 1 + K · B(z) A(z) então: K = − A(z) B(z) 22
  23. 23. Para o caso do nosso sistema, os pontos de partida/chegada são dados por: d dz BoG(z) = 0 ← du dv = vdu − udv v2 neste caso: d dz BoG(z) = d dz 0,36788K(z + 0,7183) (z − 1)(z − 0,3679) = (z2 − 1,3368z + 0,368)(0,368K) − (0,368Kz + 0,264K)(2z − 1,368) (z2 − 1.368z + 0.3679)2 = 0 trabalhando esta equação, temos: 0,368Kz2 − 0,503424Kz + 0,135424K − 0,736Kz2 + 0,503424Kz − 0,528Kz + 0,361152K = 0 0,368Kz2 − 0,503424Kz + 0,135424K − 0,736Kz2 − 0,024576Kz + 0,461152K = 0 −0,368Kz2 − 0,538Kz + 0,496576K = 0 descobrindo as raízes para a equação anterior obtemos: = b2 − 4ac ∴ = 0,278784 − 4(−0,368)(0,496576) = 1,0097439 z = −b ± √ 2a ∴ z = 0,528 ± 1,0048601 −(2 · 0,368) z1 = −2,0826904 z1 = +0,6479077 e nestes pontos K vale: • p/z = z1 = −2,0826904, BoG(z) = 1, então: 0,368K(z + 0,717) (z2 − 1,368z + 0,368) z=−2,0826904 = 1 0,368K(−2,08 + 0,717) (−2,08)2 − 1,368(−2,08) + 0,368) = 1 −0,501584K 7,53984 = 1 K = 7,53984 0,501584 K = 15,03 • p/z = z1 = 0,6479077, BoG(z) = 1, então: 0,368K(z + 0,717) (z2 − 1,368z + 0,368) z=0,6479077 = 1 0,368K(0,65 + 0,717) (0,65)2 − 1,368(0,65) + 0,368) = 1 −0,503056K −0,0987 = 1 K = 0,0987 0,503056 K = 0,196 Usando o MATLAB, obtemos a figura 2.8: T=1.0; %Entrando com dados do sistema a=exp(−T) ; b1=exp(−T )+T −1;; b0=1−exp(−T )−T exp(−T ) %Montando BoG(z): num=[b1 b0 ] ; den=conv ([1 −1] ,[1 −a ] ) ; BoG=t f (num, den , T ) Transfer function : 0.3679 z + 0.2642 −−−−−−−−−−−−−−−−−−−−−− 23
  24. 24. z^2 − 1.368 z + 0.3679 Sampling time : 1 zpk (BoG) Zero/ pole / gain : 0.36788 ( z+0.7183) −−−−−−−−−−−−−−−−−− ( z −1) ( z −0.3679) Sampling time : 1 rlocus (BoG) axis equal Figura 2.8: Lugar das raízes para o sistema usado como exmeplo Verificando a resposta do sistema para entrada degrau usando o ganho máximo K = 2.3922, obtemos, usando o MATLAB, a figura 2.9 que confirma a resposta oscilatória do sistema. K=(1−a ) /b0 K = 2.3922 FTMF=feedback (K BoG , 1 ) Transfer function : 0.88 z + 0.6321 −−−−−−−−−−−−−−−−−− z^2 − 0.4878 z + 1 Sampling time : 1 zpk (FTMF ) Zero/ pole / gain : 0.88005 ( z+0.7183) −−−−−−−−−−−−−−−−−−− ( z^2 − 0.4878z + 1) Sampling time : 1 figure ; step (FTMF ) Ajustando o sistema anterior para outros valores de ganho Se fosse desejada uma resposta com sobrepasso máximo de 20% poderíamos ter ajustado o ganho no correspondente valor para : 24
  25. 25. Figura 2.9: Resposta ao degrau unitário usando ganho máximo. Lembrando que: = −ln%OS/100 2 + ln2 (%OS/100) = = 0,4559 este valor de pode ser “impresso” no diagrama do Lugar das Raízes deste sistema para servir como guia para definição da posição desejada para os pólos de malha-fechada do sistema e consequente valor K do ganho necessário – no MATLAB: zeta=(−log (20/100) ) /( sqrt ( pi ^2+( log (20/100) ^2) ) ) zeta = 0.4559 figure ; %abre nova janela grafica rlocus (BoG) ; hold on zgrid ( zeta , 0 ) axis equal r l o c f i n d (BoG) Select a point in the graphics window selected_point = 0.5787 + 0.4183 i ans = 0.5547 %Encontramos o ganho como sendo: k=0.5547; %Fechamos a malha com este ganho e verificamos resposta do sistema novo_mf=feedback ( k BoG , 1 ) Transfer function : 0.2041 z + 0.1466 −−−−−−−−−−−−−−−−−−−−−− z^2 − 1.164 z + 0.5145 Sampling time : 1 zpk ( novo_mf ) 25
  26. 26. Zero/ pole / gain : 0.20406 ( z+0.7183) −−−−−−−−−−−−−−−−−−−−−−− ( z^2 − 1.164z + 0.5145) Sampling time : 1 %Verificando resposta para entrada degrau: step ( novo_mf ) A figura 2.10 mostra o diagrama do Lugar das Raízes com a linha guia para o = 0,4559 selecionado e a figura 2.11 mostra a correspondente resposta do sistema para um degrau unitário aplicado à sua entrada com K = 0,5547 que satisfaz o valor desejado para . −3 −2.5 −2 −1.5 −1 −0.5 0 0.5 1 1.5 2 −2 −1.5 −1 −0.5 0 0.5 1 1.5 2 0.456 Root Locus Real Axis ImaginaryAxis K=0,5547 Figura 2.10: Determinando o valor do ganho para %OS ( ) desejado através do RL. Step Response Time (sec) Amplitude 0 5 10 15 20 25 0 0.2 0.4 0.6 0.8 1 1.2 1.4 System: novo_mf Peak amplitude: 1.19 Overshoot (%): 18.8 At time (sec): 5 System: novo_mf Settling Time (sec): 11.7 Figura 2.11: Resposta para o degrau unitário do sistema com ganho ajustado com K = 0,5547. Exemplo_2 Seja o sistema mostrado na figura 2.12. 26
  27. 27. Figura 2.12: Sistema de controle discreto no tempo – exemplo 2. Para T = 0,5 segundos teremos: Z Gh0(s)Gp(s) = Z 1 − e−Ts s · 1 s + 1 = (1 − z−1 )Z 1 s(s + 1) = (1 − z−1 )Z 1 s − 1 s + 1 = z − 1 z z z − 1 − z z − e−T = 1 − e−T z − e−T Vamos supor que será usado um controlador integral – PI, isto é, GD (z) = Kz z − 1 , assim teremos: G(z) = GD (z) · GhGp(z) = Kz z − 1 · 1 − e−T z − e−T A equação característica fica então: 1 + G(z) = 0 1 + Kz(1 − e−T ) (z − 1)(z − e−T ) = 0 que para T = 0,5 resulta em: L(z) = 0,3935Kz (z − 1)(z − 0,6065) L(z) possui polos em z = 1 e z = 0,6065 e um zero em z = 0. Os pontos de partida e chegada podem ser calculados a partir de dK dz = 0: K = − (z − 1)(z − 0,6065) 0,3935z dK dz = − z2 − 0,6065 0,3935z2 = 0 cujas raízes resultam em: z2 = 0,6065 z1 = 0,7788 z2 = −0,7788 O ganho crítico Ku pode ser encontrado usando o critério da magnitude: 0,3935z (z − 1)(z − 0,6065) = 1 K o ganho crítico Ku corresponde ao ponto em que z = −1, então: 0,3935z (−2)(−1,6065) = 1 Ku Ku = 8,165 27
  28. 28. Assim, a faixa de estabilidade para este sistema está na faixa de K para: 0 K 8,165. A figura 2.13 representa o diagrama de RL. Dois traços partem dos dois polos em K = 0. Se vamos aumentando o valor de k, um dos traços segue até o zero e o outro tende a infinito (negativo). −2.5 −2 −1.5 −1 −0.5 0 0.5 1 1.5 −1 −0.8 −0.6 −0.4 −0.2 0 0.2 0.4 0.6 0.8 1 Root Locus Real Axis ImaginaryAxis Figura 2.13: RL do sistema do exemplo 2 para T = 0,5. A figura 2.13 pode ser obtida usando o MATLAB como mostra a listagem à seguir: clear a l l num=1; den=[1 1 ] ; G=t f (num, den ) Transfer function : 1 −−−−− s + 1 T=0.5; BoG=c2d (G, T ) Transfer function : 0.3935 −−−−−−−−−− z − 0.6065 Sampling time : 0.5 num_c=[1 0 ] ; den_c=[1 −1]; c=t f (num_c , den_c , T ) Transfer function : z −−−−− z − 1 Sampling time : 0.5 FTMA=series ( c , BoG) Transfer function : 0.3935 z −−−−−−−−−−−−−−−−−−−−−− z^2 − 1.607 z + 0.6065 Sampling time : 0.5 zpk (FTMA) Zero/ pole / gain : 28
  29. 29. 0.39347 z −−−−−−−−−−−−−−−− ( z −1) ( z −0.6065) Sampling time : 0.5 rlocus (FTMA) Se para o sistema anterior fosse usado T = 1 segundo, teríamos: G(z) = 0,6321Kz (z − 1)(z − 0,3679) com os pontos de partida e chegada dados por: z2 = 0,3679 → z1 = 0,6065 e z2 = −0,6065 e o ganho crítico, seria: Ku = 4,328. Se para o sistema anterior fosse usado agora T = 2 segundo, teríamos: G(z) = 0,8647Kz (z − 1)(z − 0,1353) e o ganho crítico, seria agora: Ku = 2,626. Note como a medida que aumenta T, diminui a faixa para o ganho K. 29
  30. 30. 30
  31. 31. Capítulo 3 Controladores Digitais De modo geral, os controladores digitais a serem estudados nesta seção obedecem ao formato genérico: C(z) = K · (z − a) (z − b) e todos serão aplicados sobre o seguinte tipo de planta (ver figura 3.1): G(s) = 1 s(s + 1) com T = 1 (segundo). Bo(s) YR + - Y T 1 s(s + 1) C(z) T BoG(z) G(s) u(kT)e(kT)e(t) y(t) ou Bo(s) + - Y T 1 s(s + 1) C(z) T BoG(z) G(s) u(kT)e(kT) y(t)r(kT) Sistema Digital Planta ZOH y(kT) Figura 3.1: Sistema usando como exemplo. Este sistema acompanhado de um sustentador de ordem zero, B0G(z), se transforma em: B0G(s) = (1 − e−sT ) · 1 s2 − 1 s + 1 s + 1 31
  32. 32. transformando para plano Z temos1: BoG(z) = (1 − z−1 ) · Z 1 s2 − 1 s + 1 s + 1 = (1 − z−1 ) · Tz (z − 1)2 − z z − 1 + z z − e−T = (ze−T − z + Tz) + (1 − e−T − Te−T ) (z − 1)(z − e−T ) para T = 1, temos então: B0G(z) = 0,3678z + 0,2644 (z − 1)(z − 0,3678) = 0,3678 · (z + 0,7183) z2 − 1,3678z + 0,3678 = a(z + b) (z − 1)(z − a) onde a=pólo da planta resultado da digitalização da mesma (a = e−T ); e b=zero da planta. Esta expressão também pode ser obtida no MATLAB fazendo-se: num=1; den=[1 1 0 ] ; T=1; [numd, dend]=c2dm(num, den , T ) numd = 0 0.3679 0.2642 dend = 1.0000 −1.3679 0.3679 printsys (numd, dend , ’ z ’ ) num/den = 0.36788 z + 0.26424 −−−−−−−−−−−−−−−−−−−−−−−− z^2 − 1.3679 z + 0.36788 roots (numd) ans = −0.7183 roots ( dend ) ans = 1.0000 0.3679 Ou também podemos usar outros comandos no MATLAB para obter os mesmos resultados: num=1; den=[1 1 0 ] ; T=1; G=t f (num, den ) Transfer function : 1 −−−−−−− s^2 + s zpk (G) Zero/ pole / gain : 1 −−−−−−− s ( s+1) BoG=c2d (G, T ) Transfer function : 0.3679 z + 0.2642 −−−−−−−−−−−−−−−−−−−−−− z^2 − 1.368 z + 0.3679 Sampling time : 1 zpk (BoG) Zero/ pole / gain : 0.36788 ( z+0.7183) −−−−−−−−−−−−−−−−−− ( z −1) ( z −0.3679) Sampling time : 1 1A dedução apresentada de forma mais completa aparece na seção 2.4.3, pág. 17 32
  33. 33. A resposta deste sistema para um impulso unitário, R(z)=1 seria: Y(z) = G(z) · 1, cuja resposta inicial no tempo poderia ser obtida pelo método da divisão longa em Z, ou seja: 0,3678z +0,2644 z2 − 1,3678z + 0,3678 −0,3678z +0,5031 +0,1353z−1 0,3678z−1 + 0,7675z−2 + 0,9145z−3 + ... +0,7675 −0,1353z−1 −0,7675 +1,0497z−1 +0,2823z−2 0,9145z−1 −0,2823z−2 ou seja, y(kT) = 0z0 + 0,3678z−1 + 0,7675z−2 + 0,9145z−3 + ..., ou ainda, y(0)=0; y(1)=0,3678; y(2)=0,7675; y(3)=0,9145; tendendo para 1. Note que pelo teorema do valor final (ver ??, pág. ??): f(∞) = lim k→∞ f(k) = lim z→1 (1 − z−1 )F(z) a resposta da planta em regime permanente para um impulso unitário aplicado à sua entrada resulta em: y(∞) = lim k→∞ y(kT) = lim z→1 (1 − z−1 ) · Y(z) que neste caso nos dá: y(∞) = lim z→1 (1 − z−1 ) · Y(z) = lim z→∞ z − 1 z · 0,36788z + 0,26424 (z − 1)(z − 0,36788) y(∞) = lim z→1 0,36788z + 0,26424 z(z − 0,36788) = 0,6321 0,6321 = 1 3.1 Simples Controlador Proporcional, K Fechando uma malha de realimentação unitária, este sistema resulta em: FTMF(z) = Y(z) R(z) = FTMA(z) 1 + FTMA(z) = F(z) 1 + F(z) onde FTMA(z) = F(z) tem o seguinte formato: F(z) = K(az + b) z2 − (1 + a)z + a com a = 0,3678 (a = eT ) e b= 0,2644. Os pólos em malha fechada serão as raízes da equação: [1 + F(z)] = 0. Esta também é a equação carac- terística deste sistema: EC(z): FTMF(z) = 0,36788(z + 0,7183) z2 − z + 0,6321 = 0,36788(z + 0,7183) (z − 0,5 − j0,6182)(z − 0,5 + j0,6182) Portanto, se obtêm um equação característica no formato: EC(z) = 1 + F(z) = z2 − (1 + a)z + a + Kaz + Kb = 0 Quando K = 1, obtêm-se: EC(z) = z2 − z + 0,6321 cujos pólos estarão em: z = 0,5 ±j0,6182 ou z = 0,8907 ±45,55o, portanto, ainda dentro do círculo unitário – este sistema responde então de forma subamortecida para uma entrada degrau. Resolvendo no MATLAB temos: ftmf=feedback (BoG , 1 ) %fechando malha com H(s)=1 e realimentacao unitaria Transfer function : 0.3679 z + 0.2642 −−−−−−−−−−−−−−−−− z^2 − z + 0.6321 Sampling time : 1 zpk ( ftmf ) Zero/ pole / gain : 33
  34. 34. 0.36788 ( z+0.7183) −−−−−−−−−−−−−−−−−− ( z^2 − z + 0.6321) Sampling time : 1 [num_mf , den_mf]= tfdata ( ftmf , ’ v ’ ) %Separando numerador e denominador da TF num_mf = 0 0.3679 0.2642 den_mf = 1.0000 −1.0000 0.6321 polos_mf=roots ( den_mf ) %Descobrindo onde foram parar os polos de MF: polos_mf = 0.5000 + 0.6182 i 0.5000 − 0.6182 i [ theta , rho ]= cart2pol ( real ( polos_mf (1) ) , imag ( polos_mf (1) ) ) %Verificando se estao fora do circulo unitario em Z theta = 0.8907 rho = 0.7951 deg=(rho 180) / pi %transformando de (rad) – (deg) deg = 45.5536 Note que como este é um sistema do tipo 1 (planta com 1 integrador), ele responde com erro nulo para a entrada degrau, depois que realimentamos este sistema com um simples controlador proporcional: Lembrando da definição do erro em regime permanente (eq. (1.2) – seção 1, pág. 5), temos: lim k→∞ e(kT) = lim z→1 (z − 1) · 1 1 + F(z) · Yr(z) O e(∞) para entrada degrau unitário fica: e(∞)|u(t) = lim z→1 (z − 1) · 1 1 + F(z) · z (z − 1) = 1 1 + lim z→1 F(z) = 1 1 + Kp onde: Kp = ganho de posição; e F(z) = FTMA(z). Neste caso em particular, BoG(z) ou FTMA(z) é um sitema do tipo 1 (com 1 integrador – pólo em z = 1): B0G(z) = FTMA(z) = 0,36788(z + 0,7183) (z − 1)(z − 0,3679) então: lim k→∞ e(kT) = 1 1 + limz→1 N(z) (z − 1)D (z) = 1 1 + Kp onde, Kp → ∞ e consequentemente, e(∞) = 0. Simulando no MATLAB, se obtêm a resposta mostrada na figura 3.2: step ( ftmf ) 3.1.1 Determinando Km ´ax Note porém que este ganho (K = 1), gera um overshoot muito elevado para a resposta esperada para o sistema. Podemos calcular qual o valor de Km ´ax que podemos incorporar neste sistema antes de que ele fique instável, usando o método de Jury. Analisando: EC(z) = anzn + an−1zn−1 + ... + a1z + a0 = 0, temos Neste caso: EC(z) = z2 − (1 + a)z + a + Kaz + Kb = 0, onde a = 0,3679 e b= 0,2642, então: EC(z) = z2 + (Ka − 1 − a)z + (a + Kb) EC(z) = z2 + (0,3678K − 1,3679)z + (0,3678 + 0,2644K) = 0 Observando as pré-condições de estabilidade: 34
  35. 35. Time (sec.) Amplitude Step Response 0 5 10 15 20 25 0 0.2 0.4 0.6 0.8 1 1.2 1.4 From: U(1) To:Y(1) Figura 3.2: Resposta ao degrau unitário de BoG(z) em malha-fechada quando K = 1. a) |a0| a2, que neste caso, se transforma em: |a + Kb| 1, que resulta em: K 1 − a b , ou seja, K 2,3922, e: K 1 − a b , ou seja, K 2,3922 (condição desprezada). b) EC(1) 0, para sistemas de ordem par, então: EC(1) = 1 + Ka − 1 − a + a + Kb 0, daqui concluímos que: K 0; c) (−1)nEC(−1) 0, então: EC(−1) 0, verificando: EC(−1) = 1 − Ka + 1 + a + a + Kb 0, K(b − a) −2 − 2a, K 2 + 2a b − a , que neste caso, nos fornece: K −12.1986 (condição refutada: ganho negativo). Analisando as condições, chegamos à conclusão de que o ganho neste caso (note que T = 1), deve ficar entre: 0 K 2,3992. Usando-se o MATLAB para comprovar estes resultados, temos: rlocus (numd, dend ) x =[ −1:0.1:1]; y=sqrt ( ones (1 , length ( x ) )−x .^2) ; hold on plot ( x , y , ’ : ’ , x , −y , ’ : ’ ) axis ( ’ equal ’ ) que gera o gráfico mostrado na figura 3.3. Podemos confirmar o valor máximo que poderia ser adotado para K, fazendo no MATLAB: r l o c f i n d (numd, dend ) Select a point in the graphics window selected point = 0.2615 + 0.9455 i ans = 2.2789} Conferindo no gráfico gerado na figura 3.4. Se para o K = 1 pode ser percebido um overshoot de 40%, diminuindo-se este ganho, este valor pode ser baixado se levarmos em consideração ainda que este sistema em malha fechada responde como um sistema 35
  36. 36. -3 -2.5 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 -1.5 -1 -0.5 0 0.5 1 1.5 Real Axis ImagAxis Figura 3.3: RL para BoG(z) = 0.3678(z+0.7183) (z−1)(z−0.3678) . -3 -2.5 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 -1.5 -1 -0.5 0 0.5 1 1.5 Real Axis ImagAxis K=2.2789 K=3.1892 K=0.9186 K=0.1964 Figura 3.4: Sintonizando o controlador proporcional no RL. de segunda ordem, então basta definir valores convenientes para o fator de amortecimento (principalmente), , e para a freqüência natural, n. Um valor melhor tolerado, seria um overshoot de 5% que se obtêm com 0,7. Podemos graficar no MATLAB uma linha guia para este valor a fim de descobrir que valor de ganho K deveria ser adotado: zgrid (0.7 ,0.5 , ’new ’ ) rlocus (numd, dend ) axis ( ’ equal ’ ) hold on r l o c f i n d (numd, dend ) Select a point in the graphics window selected point = 0.6077 + 0.2537 i ans = 0.3284 36
  37. 37. O gráfico gerado pelo MATLAB é mostrado na figura 3.5. -3 -2.5 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 -1.5 -1 -0.5 0 0.5 1 1.5 Real Axis ImagAxis K=0.3284 =0.7 wn =0.5 Figura 3.5: Ajustando ganho do controlador proporcional para limitar %OS. Comprovando a saída no domínio tempo, podemos fazer no MATLAB: K=0.32; [num_mf , den_mf]= feedback (K numd, dend ,1 ,1 , −1) ; printsys (num_mf , den_mf , ’ z ’ ) num/den = 0.11772 z + 0.084557 −−−−−−−−−−−−−−−−−−−− z^2 − 1.2502 z + 0.45244 dstep (num_mf , den_mf ) } o que gera o gráfico mostrado na figura 3.6. Time (sec.) Amplitude Step Response 0 5 10 15 20 25 0 0.2 0.4 0.6 0.8 1 1.2 1.4 From: U(1) To:Y(1) Figura 3.6: Resposta ao degrau depois de nova sintonia do controlador proporcional – note o menor overshoot. 37
  38. 38. O valor em regime permanente para y(kT) quando R(z) = entrada degrau unitário, resulta em: y(∞) = lim z→1 (z − 1) · FTMF(z) · z z − 1 = lim z→1 FTMF(z) usando o MATLAB para calcular y(∞)Degrau: polyval (num_mf , 1 ) / polyval ( den_mf , 1 ) ans = 1.0000} Se fosse desejado simular um outro tipo de entrada ao sistema, poderíamos fazê-lo facilmente no MA- TLAB. Supondo o caso de se querer simular uma entrada parabólica: for i =0:10 , u ( i +1)= i ^2; end plot (u , ’b : ’ ) hold on dlsim (num_mf , den_mf , u ) Que gera o gráfico mostrado na figura 3.7. Time (sec.) Amplitude Linear Simulation Results 0 2 4 6 8 10 12 0 10 20 30 40 50 60 70 80 90 100 To:Y(1) u(k)=k2 y(k) Figura 3.7: Resposta do sistema a uma entrada parabolica. Simulando uma entrada rampa para o caso anterior: R(z) = Tz (z − 1)2 , temos: num_r=[1 0 ] ; den_r=conv ([1 −1] ,[1 −1]) [num_mf2 , den_mf2]= series (num_mf , den_mf , num_r , den_r ) ; printsys (num_mf2 , den_mf2 , ’ z ’ ) ; num/den = 0.11772 z^2 + 0.084557 z −−−−−−−−−−−−−−−−−−−−−−−−−− z^4 − 3.2502 z^3 + 3.9528 z^2 − 2.155 z + 0.45244 Determinando o erro em regime permanente temos: y(∞) = cte que no MATLAB pode ser calculado fazendo-se: Falta revisar esta parte (7 nov 2013) 38
  39. 39. ou seja, observamos que este controlador (proporcional) não é suficiente para garantir erro nulo para entrada rampa, falta um integrador. Simulando a entrada rampa no sistema para comprovar o erro em regime permanente; neste caso: r(kT) = Z−1 Tz (z − 1)2 = k · T: for i =0:25; k ( i +1)= i ; r ( k+1)=k T ; end ; plot ( k , r , ’b : ’ ) hold on dlsim (num_mf , den_mf , r ) se gera o gráfico mostrado na figura 3.8. Time (sec.) Amplitude Linear Simulation Results 0 5 10 15 20 25 0 5 10 15 20 25 To:Y(1) Figura 3.8: Resposta do sistema à uma entrada rampa. 3.2 Controlador (polinomial) cancelando pólo(s) dominante(s) Continuando com o projeto de um controlador digital no formato C(z) = K · z − a z − b ; podemos fazer que a = pólo mais dominante da planta, ou seja: C(z) = K(z − 0,36788) (z + 0,24) lembrando que: B0G(z) = 0,36788 · (z + 0,7183) (z − 1)(z − 0,36788) 39
  40. 40. Pólos Dominantes no Plano-Z Assim como ocorre no plano-s, algumas raízes no plano-z geram efeito mais preponderante que outros. É importante no projeto de um controlador separar estas raízes consideradas dominantes. No plano-se, as raízes localizadas próximas do eixo j no semi-plano esquerdo eram consideradas dominantes porque sua correspondente resposta temporal mostra um decaimento mais lento. As raízes que estão localizadas mais longe do eixo j correspondem à responstas que decaim mais rápido. No plano-z, as raízes dominantes são aquelas que estão dentro e próximas do círculo unitário enquanto a região (no plano-z) menos significativa é que está próxima da origem do plano-z. O eixo real negativo é geralmente evitado uma vez que sua resposta temporal é naturalmente oscilatória (sinal alternando entre instantes de amostragem). A figura AA mostra as regiões para raízes dominantes e menos, tanto no plano-s quanto no plano-z. Obs.: Extraído de: Kar and Majhi[Module 4, Lecture 2]. Figura AA: Mapeamento de pólos e zeros de um sistema de segunda ordem. No plano-z, as raízes próximas da origem são menos significativas do ponto de vista de overshoot e fator amortecimento.. Entretanto, estas raízes não podem ser completamente desconsideradas uma vez que um número excessivo de pólos em relação à zeros gera um efeito de delay na região inicial da resposta no tempo. Isto é, adicionar pólos em z = 0 não vai afetar nem o overshoot e nem o fator amortecimento, mas o tempo de resposta vai apresentar um delay adicional de um período de amostragem. A melhor maneira de simplificar (tonar menos complexo, com menor ordem) um sistema no plano-z é trocar os pólos próximos da origem por pólos em z = 0 o que vai simplificar a análise uma vez que pólos em z = 0 correspondem à puros atrasos no tempo. A idéia é via controlador se cancelar o polo da planta em z = −0,36788. O que torna a função transferên- cia em malha aberta deste sistema em: F(z) = K · 0,36788 · (z + 0,7183) (z − 1)(z + 0,24) que dá como lugar das raízes um gráfico como o mostrado pela figura 3.9. Seguem comandos no MATLAB usados para gerar a figura 3.9. fnum=numd; fden=conv ([1 textbf { { } − 1 } ] , [ 1 textbf { 0 . 2 4 } ] ) ; printsys ( fnum , fden , ’ z ’ ) num/den = 0.36788 z + 0.26424 −−−−−−−−−−−−−−−−−−− z^2 − 0.76 z − 0.24 rlocus ( fnum , fden ) hold on 40
  41. 41. zgrid ( 0 . 7 , 0 . 5 ) ; axis ( ’ equal ’ ) ; r l o c f i n d ( fnum , fden ) Select a point in the graphics window selectedpoint = −0.4795 + 0.8538 i ans = 4.6445 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 Real Axis ImagAxis K=4,6445 Figura 3.9: RL do Controlador cancelando pólo dominante de BoG(z). Mas se queremos que o sistema responda com %OS de no máximo 5%, fazemos = 0.7 e então obtemos a figura 3.10. Assim, fazendo K = 1.2, obtemos a resposta no tempo para entrada degrau: K=1.2; [num_mf , den_mf]= feedback (K fnum , fden ,1 ,1 , −1) ; printsys (num_mf , den_mf , ’ z ’ ) num/den = 0.44146 z + 0.31709 −−−−−−−−−−−−−−−−−−−−− z^2 − 0.31854 z + 0.077089 dstep (num_mf , den_mf ) que resulta no gráfico mostrado na figura 3.11. 41
  42. 42. -3 -2.5 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 -1.5 -1 -0.5 0 0.5 1 1.5 Real Axis ImagAxis K=1.2828 =0.7 Figura 3.10: Sintonizando controlador por cancelamento de pólo dominante. Time (sec.) Amplitude Step Response 0 1 2 3 4 5 6 7 8 9 10 0 0.2 0.4 0.6 0.8 1 1.2 1.4 From: U(1) To:Y(1) Figura 3.11: Resposta à entrada degrau para controlador cancelando pólo dominante. 42
  43. 43. Time (sec.) Amplitude Linear Simulation Results 0 5 10 15 20 25 0 5 10 15 20 25 To:Y(1) Figura 3.12: Resposta à entrada rampa para controlador por cancelamento de pólo dominante. O valor em regime permanente de y(kT) pode ser calculado como: polyval (num_mf , 1 ) / polyval ( den_mf , 1 ) } ans = 1.0000 ou seja, erro nulo para entrada degrau. Mas este controlador ainda não resolve o problema de anular o erro para entrada rampa, que resulta no gráfico da figura 3.12. 3.3 Cancelamento imperfeito de pólos-zeros Detalhe: na prática não se consegue realizar um cancelamento perfeito de pólos-zeros, seja porque nem sempre nosso sistema digital de controle opera com números em ponto flutuante, seja porque o cálculo não éexecutado com precisão suficiente ou seja porque o conversor final de digital para analógico trabalha com poucosbits de resolução (baixa quantização do sinal). No caso real, o que poderia acontecer? Levando em conta o exemplo anterior, vamos supor que o pólo que gostaríamos de cancelar seria em z = 0,36788 que note, é proporcional à: a = e−T (ou seja, o pólo ainda se desloca em função do período de amostragem adotado). Vamos super que consigamos sintetizar no máximoum valor de a = 0,36 – o que acontece? Então nosso controlador fica: C(z) = K · (z − a) (z + 0,24) = 1,20 · (z − 0,36) (z + 0,24) A função transferência em malha aberta fica: FTMA(z) = F(z) = C(z) · B0G(Z) = 1,20 · 0,3678 · (z − 0,36) · (z + 0,7183) (z − 1) · (z − 0,3678) · (z + 0,24) No MATLAB: K=1.2; cnum=[1 −0.36]; cden=[1 0. 24] ; printsys (cnum, cden , ’ z ’ ) num/den = z − 0.36 −−−−−−−−−− z + 0.24 roots (cnum) ans = 0.3600 43
  44. 44. roots ( dend ) ans = 1.0000 0.3679 [ fnum , fden ]= series (cnum, cden , numd, dend ) ; printsys ( fnum , fden , ’ z ’ ) ; num/den = 0.36788 z^2 + 0.1318 z − 0.095127 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− z^3 − 1.1279 z^2 + 0.039588 z + 0.088291 roots ( fnum ) ans = −0.7183 0.3600 roots ( fden ) ans = 1.0000 0.3679 −0.2400 O diagrama de lugar das raízes para este sistema fica: rlocus ( fnum , fden ) zgrid (0 ,0) ; axis ( ’ equal ’ ) hold on zgrid ( 0 . 7 , 0 . 5 ) ; rlocus ( fnum , fden , K) axis ([ −2 1.5 −1.1 1 . 1 ] ) o que gera o gráfico monstrado da figura 3.13. -2 -1.5 -1 -0.5 0 0.5 1 1.5 -1 -0.5 0 0.5 1 Real Axis ImagAxis K=1.2 =0.7 Figura 3.13: RL para o caso de cancelamento imperfeito de pólos-zeros. Um “zoom” sobre a região onde o cancelamento não foi perfeito é mostrado na figura 3.14. A resposta para a entrada degrau fica então: axis ([ −2 1.5 −1.1 1 . 1 ] ) [num_mf , den_mf]= feedback (K fnum , fden ,1 ,1 , −1) ; printsys (num_mf , den_mf , ’ z ’ ) num/den = 0.44146 z^2 + 0.15817 z − 0.11415 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− z^3 − 0.68642 z^2 + 0.19775 z − 0.025861 dstep (num_mf , den_mf ) e se obtêm o gráfico mostrado na figura 3.15. 44
  45. 45. 0 0.2 0.4 0.6 0.8 1 1.2 -0.2 -0.1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 Real Axis ImagAxis K=1.2 =0.7 Figura 3.14: Ampliação sobre região de interesse da figura 3.13. Time (sec.) Amplitude Step Response 0 1 2 3 4 5 6 7 8 9 10 0 0.2 0.4 0.6 0.8 1 From: U(1) To:Y(1) Figura 3.15: Resposta à entrada degrau no caso do cancelamento imperfeito de pólos-zeros. Nota-se que a resposta sofreu um ligeiro atraso. Mas este não é todo o problema envolvido com o mundo real. Devemos ficar atentos ao esforço de controle que foi realizado neste caso, ou seja, é interessante analizar a variação do sinal de controle, u(kT). Valores elevados podem causar a saturação de um estágio de potência que esteja ligado na saída do conversor D/A, ou saturação do próprio D/A. A figura 3.16 mostra uma simulação do sistema anterior no MATLAB/Simulink. Atenção para alguns ajustes necessário no Simulink, por exemplo, nas propriedades para os blocos To Workspace, notar que para facilidade de uso a caixa Save Format deve ficar ajustada para matrix, como mostra a figura 3.17. Os parâmetros da simulação devem ser ajustadas para o tempo máximo de 10 segundos, conforme mostra a figura 3.18. Depois de usar os blocos “To Workspace”, pode-se visualizar melhor os resultados graficamente, no MA- 45
  46. 46. Zero-Order Hold t To Workspace4 r To Workspace3 e To Workspace2 u To Workspace1 y To Workspace Step 1 s +s2 Planta 1.2 Gain 12:34 Digital Clock z-0.36 z+0.24 Controlador Figura 3.16: Simulação do controlador por cancelamento de pólos dominantes. ! Figura 3.17: Parâmetros dos blocos “To Workspace” que devem ser ajustados. ! Figura 3.18: Parâmetros de simulação. TLAB, usando os vetores criados e os comandos plot(·) e stairs(·): subplot (211) } s t a i r s ( t , r , ’b : ’ ) ; hold on ; s t a i r s ( t , y , ’k− ’ ) ; axis ([0 10 0 1 . 1 ] ) 46
  47. 47. 0 1 2 3 4 5 6 7 8 9 10 0 0.2 0.4 0.6 0.8 1 r(kT) y(kT) 0 1 2 3 4 5 6 7 8 9 10 0 0.5 1 e(kT) u(kT) u(max)=1.2 Figura 3.19: Resultados da simulação realizada no Simulink. legend ( ’ r ( kT ) ’ , ’ y ( kT ) ’ ) subplot (212) ; s t a i r s ( t , e , ’b : ’ ) ; hold on s t a i r s ( t , u , ’k− ’ ) ; legend ( ’e ( kT ) ’ , ’u ( kT ) ’ ) max( u ) ans = 1.2000 Desta forma se obtêm os gráficos mostrados na figura 3.19. Note que se a saída do controlador para este sistema estivesse normalizada, tentaríamos impor ao atu- ador na planta um sobrevalor de 20% (u(.)=1.2). Na prática, nem sempre isto é aceitável e nosso sinal de controle deve variar dentro de parâmetros fixos (conhecidos para o sistema em questão). 47
  48. 48. 3.4 Projeto de Controlador Digital usando Root Locus Quando se projetava controladores no domínio tempo usando o diagrama de Lugar das Raízes (Root Locus) o projeto se baseava em aproximar o comportamento do sistema em malha fechada para um sistema de malha fechada com um par de polos complexos conjugados que domina o seu comportamento (pólos dominantes complexos – sistema de 2a-ordem, sobre-amortecido, 0 1). Tipos de Controladores: Diferentes tipos de controladores já foram estudados (controle automático con- tínuo no tempo), como os controladores PI, PD e PID. Sabemos que o controlador PI era adotado quando se deseja melhorar a resposta em regime permanente (anular o erro em regime permanente). O controlador PD era usado para melhorar o desempenho (ou estabilidade relativa) da resposta transitória. Do mesmo modo, um controlador por Avanço de Fase servia para melhorar a resposta dinâmica enquanto um controlador por Atraso de Fase melhorava a resposta em regime permanente. Cancelamento Polo-Zero: Um método comum de projeto de controladores no plano-s ou plano-z consiste em cancelar os polos indesejados (lentos) ou zeros da função transferência da planta através dos zeros e polos do controlador. Com os controladores digitais, podemos agora, acrescentar polos e zeros em algumas posições vantajosas. Entretanto, devemos levar em consideração que a abordagem de cancelamento de polos e zeros nem sempre resulta numa solução satisfatória. Por exemplo, se os polos indesejáveis estão próximos do eixo j , se ocorre cancelamentos inexatos o que é praticamente inevitável na prática (por erros de arredondamento, precisão numérica de cálculo, truncagem de resultados), o resultado pode conduzir a um sistema de malha fechada marginalmente estável ou mesmo num sistema instável em malha fechada. Por esta razão, não se deve tentar cancelar um polo instável. 3.4.1 Compensador por Avanço de Fase Considere um compensador no formato: C(z) = K z + a z + b . Ele se tornará um compensador de avanço de fase se seu zero se localizar à direita do seu polo. Procedimento: 1. Calcule a posição desejada para os polos de malha fechada baseado nos critérios fornecidos para o projeto do controlador. 2. Mapeie os polos do plano-s para o plano-z (usando a definição da Transformada Z). 3. Verifique se a frequência de amostragem é de 8 à 10 vezes maior que a frequência de oscilação amor- tecida desejada. 4. Calcule a contribuição dos ângulos relativa à todos os polos e zeros de malha aberta com relação à desejada posição para os polos de malha fechada. 5. Calcule a contribuição exigida pela função transferência do controlador para que o ângulo desejado (contribuição necessária) seja satisfeita. 6. Posicione o zero do controlador numa posição adequada (cancelando algum polo dominante da planta) e calcule a contribuição angular que deve vir do polo do controlador. 7. Determine a localização do polo do controlador de forma a proporcionar o ângulo necessário. 8. (Finalmente) descubra o valor do ganho K usando o critério da Magnitude. Segue um exemplo para ilustrar este procedimento. Exemplo Considere um sistema de controle discreto como o mostrado na figura 3.20. Projete um controlador cujos polos dominantes resultem num fator de amortecimento, = 0,5 e um tempo de ajuste (settling time), ts = 2 segundos. Use como valor para o período de amostragem, T = 0,2 segundos. Solução: O par de polos dominantes complexos no domínio contínuo devem estar em: − n ± j n 1 − 2, onde n 48
  49. 49. Figura 3.20: Sistema de controle discreto – projeto do controlador por avanço de fase. corresponde à frequência natural de oscilação não amortecida. Sabemos que: ts = 4 n = 2 segundos, então, n = 4 (rad/s). 49
  50. 50. 3.5 Projeto de Controlador PI usando Root Locus Deseja-se projetar um controlador digital para garantir erro nulo ao regime permanente para entrada degrau acompanhado de uma resposta dinâmica satisfatória. A constante de erro de velocidade deve ser pelo menos 5. O período de amostragem adotado é de 0,1 segundos. A planta é dada por: G(s) = 10 (s + 1)(s + 2) Usando o MATLAB podemos determinar boG(z): num=10; den=conv ([1 1] ,[1 2]) ; G=t f (num, den ) ; zpk (G) ans = 10 −−−−−−−−−−− ( s+2) ( s+1) Continuous−time zero / pole / gain model . T=0.1; BoG=c2d (G, T ) BoG = 0.04528 z + 0.04097 −−−−−−−−−−−−−−−−−−−−−− z^2 − 1.724 z + 0.7408 Sample time : 0.1 seconds Discrete −time transfer function . zpk (BoG) ans = 0.04528 ( z+0.9048) −−−−−−−−−−−−−−−−−−−−− ( z −0.9048) ( z −0.8187) Sample time : 0.1 seconds Discrete −time zero / pole / gain model . Assim temos que: BoG(z) = 0,04528(z + 0,9048) (z − 0,9048)(z − 0,8187) Uma forma de garantir erro nulo em regime permanente para entrada degrau é usar um controlador do tipo Proporcional-Integral, ou doravante PI. A função transferência de um controlador PI no domínio-Z usando integração retangular resulta em: C(z) = kp + Ki T z − 1 = Kp z − (Kp − Ki T) z − 1 O parâmetro Ki pode ser determinado com base na constante de erro relacionada com o ganho de velocidade deste sistema, ou seja, sistemas que reagem com erro não nulo mas finito para entradas de primeira ordem (rampa). Lembrando que: Entrada Rampa = Tz (z − 1)2 o erro em regime permanente é dado por: ess = lim z→1 (1 − z−1 ) 1 1 + FTMA(z) R(z) = lim z→1 T (z − 1)FTMA(z) = 1 Kv onde Kv = 1 T limz→1 [(z − 1)FTMA(z)] é conhecido como a constante de erro de velocidade. Neste caso Kv ≥ 5: Kv = 1 T lim z→1 (z − 1) Kpz − (Kp − Ki T) · (0,04528z + 0,04097) (z − 1) · (z2 − 1,724z + 0,7408) Kv = 1 T Kp − Kp + Ki T (0,04528 + 0,04097) (z − 1,724 + 0,7408) 50
  51. 51. Kv = 1 T (Ki T)0,0863 0,0173 Kv = 5,0Ki onde os fatores 0,0863 e 0,0173 podem ser determinados com o auxílio do Matlab: [numd, dend]= tfdata (BoG , ’ v ’ ) numd = 0 0.0453 0.0410 dend = 1.0000 −1.7236 0.7408 lim1=polyval (numd, 1 ) lim1 = 0.0863 lim2=polyval ( dend , 1 ) lim2 = 0.0173 lim1 / lim2 ans = 5.0000 Desta forma, os requisitos de desempenho dinâmico para este sistema serão satisfeitos se Ki ≥ 1. Se Ki = 1 a função transferência em malha aberta fica: FTMA(z) = C(z) · BoG(z) FTMA(z) = [Kp(z − 1) + Ki T 0,1 ][0,04528(z + 0,9048)] (z − 1)(z − 1,724z + 0,7408) FTMA(z) = 0,04528Kp (z − 1)(z + 0,9048) + 0,1 (Ki T) 0.04528(z + 0,9048) z3 − 2,7235z2 + 2,4643z − 0,7408 FTMA(z) = (0,04528Kp)z2 + (0,004528 − 0,0043Kp)z + (0,004097 − 0,04097Kp) z3 − 2,7235z2 + 2,4643z − 0,7408 (3.1) Onde a FTMA(z) pode ser obtido com a ajuda do Matlab (neste caso Kp = 1 e Ki = 1): notar que: C(z) = Kpz − (Kp − Ki T) (z − 1) se transforma em: C(z) = z − (1 − 0,1) z − 1 = z − 0,9 z − 1 e então: [numd, dend]= tfdata (BoG , ’ v ’ ) %separando numerador e denominador de BoG(z) numd = 0 0.0453 0.0410 dend = 1.0000 −1.7236 0.7408 FTMA_dend=conv ([1 −1] ,dend ) %determinando denominador de FTMA(z) FTAM_dend = 1.0000 −2.7236 2.4644 −0.7408 FTMA_dend=conv ([1 −1] ,dend ) FTAM_dend = 1.0000 −2.7236 2.4644 −0.7408 K_i =1; K_p=1; %parâmetros do PI num_c=[K_p −(K_p−K_i T) ] num_c = 1.0000 −0.9000 C=t f (num_c , den_c , T ) C = z − 0.9 −−−−−−− z − 1 Sample time : 0.1 seconds Discrete −time transfer function . zpk (C) ans = ( z −0.9) −−−−−−− ( z −1) Sample time : 0.1 seconds Discrete −time zero / pole / gain model . %determinando FTMA(z): FTMA=series (C, BoG) FTMA = 0.04528 z^2 + 0.000219 z − 0.03687 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− z^3 − 2.724 z^2 + 2.464 z − 0.7408 Sample time : 0.1 seconds Discrete −time transfer function . 51
  52. 52. −6 −5 −4 −3 −2 −1 0 1 2 −3 −2 −1 0 1 2 3 Root Locus Real Axis ImaginaryAxis (a) RL sem zoom. 0.8 0.85 0.9 0.95 1 −0.15 −0.1 −0.05 0 0.05 0.1 0.15 Root Locus Real Axis ImaginaryAxis (b) Zoom sobre o gráfico original. Figura 3.21: Lugar das raízes para sistema com controlador PI. zpk (FTMA) ans = 0.04528 ( z+0.9048) ( z −0.9) −−−−−−−−−−−−−−−−−−−−−−−−−−− ( z −1) ( z −0.9048) ( z −0.8187) Sample time : 0.1 seconds Discrete −time zero / pole / gain model . %Podemos obter o RL para a FTMA(z): rlocus (FTMA) O diagrama do lugar das raízes pode ser visto na figura 3.21. Note que temos 2 zeros (de malha-aberta) nas posições: z = −0,9048 e z = 0,9 e pólos (de malha-aberta) em z = 1, z = 0,9048 e z = 0,08187 – ver detalhe na figura 3.21(b). Trabalhando-se sobre o RL mostrado na figura 3.21(a) percebe-se que o sistema é estável para uma pequena faixa de valores de K, K 4,81 – ver figura 3.22. Note que o ganho K (usado para gerar o RL) não corresponde diretamente ao ganho Kp, uma vez que alterações no valor de Kp fazem variar a posição dos zeros do controlador PI, fazendo variar o RL conforme se altera Kp – ver eq. (3.1). Perceber pela figura 3.22 que o sobressinal (overshoot) aumenta rapidamente para pequenos valores de ganho de K. A figura 3.23 mostra o mesmo RL considerando = 0,5912 válido para %OS=10% – note que o ganho neste caso deve ser bem pequeno, da ordem de K 0,252. Fazendo-se K = 0,4 na função transferência em malha-aberta – (3.1) obtemos os resultados mostrados na figura 3.24. Este resultado foi obtido seguindo as seguintes instruções no MATLAB: %Se Kp=0.4 e Ki=1: Kp=0.4; num_c3=[Kp −(Kp−Ki T ) ] ; den_c3=[1 −1]; C3=t f (num_c3 , den_c3 , T ) C3 = 0.4 z − 0.3 −−−−−−−−−−− z − 1 Sample time : 0.1 seconds Discrete −time transfer function . zpk (C3) ans = 0.4 ( z −0.75) −−−−−−−−−−−− ( z −1) Sample time : 0.1 seconds Discrete −time zero / pole / gain model . ftma3=series (C3 , BoG) ftma3 = 0.01811 z^2 + 0.002804 z − 0.01229 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− z^3 − 2.724 z^2 + 2.464 z − 0.7408 Sample time : 0.1 seconds 52
  53. 53. 0.5 0.6 0.7 0.8 0.9 1 1.1 1.2 1.3 1.4 −0.2 0 0.2 0.4 0.6 0.8 System: ftma Gain: 1.37 Pole: 0.881 + 0.322i Damping: 0.18 Overshoot (%): 56.3 Frequency (rad/s): 3.57 System: ftma Gain: 4.81 Pole: 0.803 + 0.613i Damping: −0.0155 Overshoot (%): 105 Frequency (rad/s): 6.52 System: ftma Gain: 10.8 Pole: 0.666 + 0.907i Damping: −0.125 Overshoot (%): 149 Frequency (rad/s): 9.45 Root Locus Real Axis ImaginaryAxis Figura 3.22: RL aumentado com valores de ganhos para o controlador PI. 0.5 0.6 0.7 0.8 0.9 1 1.1 1.2 1.3 1.4 −0.2 0 0.2 0.4 0.6 0.8 System: ftma Gain: 4.81 Pole: 0.803 + 0.613i Damping: −0.0155 Overshoot (%): 105 Frequency (rad/s): 6.52 System: ftma Gain: 1.37 Pole: 0.881 + 0.322i Damping: 0.18 Overshoot (%): 56.3 Frequency (rad/s): 3.57System: ftma Gain: 0.252 Pole: 0.908 + 0.112i Damping: 0.588 Overshoot (%): 10.2 Frequency (rad/s): 1.52 Root Locus Real Axis ImaginaryAxis ζ=0,5912 Figura 3.23: RL com alguns valores de ganho e = 0,5912 (%OS=10%). 53
  54. 54. Discrete −time transfer function . zpk ( ftma3 ) ans = 0.018112 ( z+0.9048) ( z −0.75) −−−−−−−−−−−−−−−−−−−−−−−−−−−− ( z −1) ( z −0.9048) ( z −0.8187) Sample time : 0.1 seconds Discrete −time zero / pole / gain model . ftmf3=feedback ( ftma3 , 1 ) ftmf3 = 0.01811 z^2 + 0.002804 z − 0.01229 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− z^3 − 2.705 z^2 + 2.467 z − 0.7531 Sample time : 0.1 seconds Discrete −time transfer function . ftmf3=feedback ( ftma3 , 1 ) ftmf3 = 0.01811 z^2 + 0.002804 z − 0.01229 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− z^3 − 2.705 z^2 + 2.467 z − 0.7531 Sample time : 0.1 seconds Discrete −time transfer function . figure ; step ( ftmf3 ) Notar pela figura 3.24, que tanto o sobressinal gerado foi elevado, %OS=70%, quanto o tempo de acomodação do sistema: ts = 19,2 segundos. Step Response Time (seconds) Amplitude 0 5 10 15 20 25 30 0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 System: ftmf3 Peak amplitude: 1.7 Overshoot (%): 69.7 At time (seconds): 1.6 System: ftmf3 Settling time (seconds): 19.2 Figura 3.24: Resposta do sistema com PI ajustado com Kp = 0,4 e Ki = 1,0. A figura 3.25 mostra o RL para o PI anterior. Se por outro lado fizermos Ki = 10 (Ki 1) para garantir Kv 5, C(z) se torna: C(z) = Kp (z − 1) − 1 z − 1 e então podemos usar MATLAB para determinar a FTMA(z) considerando Kp = 1: K_i =10; K_p=1; num_c=[K_p −(K_p−K_i T) ] num_c = 1 0 den_c=[1 −1]; C=t f (num_c , den_c , T ) 54
  55. 55. 0.6 0.7 0.8 0.9 1 1.1 1.2 −0.1 0 0.1 0.2 0.3 0.4 System: ftma3 Gain: 0.46 Pole: 0.961 + 0.133i Damping: 0.214 Overshoot (%): 50.3 Frequency (rad/s): 1.41 System: ftma3 Gain: 1.86 Pole: 0.958 + 0.263i Damping: 0.0245 Overshoot (%): 92.6 Frequency (rad/s): 2.68 System: ftma3 Gain: 0.114 Pole: 0.957 + 0.057i Damping: 0.579 Overshoot (%): 10.7 Frequency (rad/s): 0.73 System: ftma3 Gain: 0.114 Pole: 0.957 + 0.057i Damping: 0.579 Overshoot (%): 10.7 Frequency (rad/s): 0.73 System: ftma3 Gain: 0.114 Pole: 0.957 + 0.057i Damping: 0.579 Overshoot (%): 10.7 Frequency (rad/s): 0.73 System: ftma3 Gain: 0.0446 Pole: 0.955 + 0.00148i Damping: 0.999 Overshoot (%): 0 Frequency (rad/s): 0.465 Root Locus Real Axis ImaginaryAxis Figura 3.25: RL para PI com Kp = 0,4 e Ki = 1,0. C = z −−−−− z − 1 Sample time : 0.1 seconds Discrete −time transfer function . FTMA=series (C, BoG) FTMA = 0.04528 z^2 + 0.04097 z −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− z^3 − 2.724 z^2 + 2.464 z − 0.7408 Sample time : 0.1 seconds Discrete −time transfer function . zpk (FTMA) ans = 0.04528 z ( z+0.9048) −−−−−−−−−−−−−−−−−−−−−−−−−−− ( z −1) ( z −0.9048) ( z −0.8187) Sample time : 0.1 seconds Discrete −time zero / pole / gain model . OS=10; %percentual de sobrepasso zeta=(−log (OS/100) ) /( sqrt ( pi ^2+( log (OS/100) ^2) ) ) zeta = 0.5912 rlocus (FTMA) hold on zgrid ( zeta , 0 ) O RL obtido com o código anterior é mostrado na figura 3.26. Notar que neste caso, a faixa de valores do ganho K que pode ser usado para o sistema ainda ser estável (K 0,0655) e para baixo sobressinal é mais baixo (K 0,00769), ver figura 3.27. 55
  56. 56. −7 −6 −5 −4 −3 −2 −1 0 1 2 −3 −2 −1 0 1 2 3 Root Locus Real Axis ImaginaryAxis Figura 3.26: RL para controlador PI com Kp = 1 e Ki = 10. Root Locus Real Axis ImaginaryAxis −0.2 0 0.2 0.4 0.6 0.8 1 1.2 −0.5 −0.4 −0.3 −0.2 −0.1 0 0.1 0.2 0.3 0.4 0.5 System: FTMA Gain: 0.0655 Pole: 0.992 + 0.146i Damping: −0.017 Overshoot (%): 105 Frequency (rad/s): 1.47 0.591 System: FTMA Gain: 0.00769 Pole: 0.965 + 0.0433i Damping: 0.614 Overshoot (%): 8.68 Frequency (rad/s): 0.569 Figura 3.27: RL expandido mostrando faixa para baixos valores de K. 56
  57. 57. 3.6 Controlador Dead-beat (Controle por tempo mínimo, finito) Idéia: fazer o sistema em malha fechada atingir o regime permanente no menor tempo possível (no tempo mínimo absoluto, k = 1) ou dentro de um número finito de períodos amostrados. Para tanto, C(z) deve conter todos os pólos e zeros de BoG(z), isto é: • Os pólos de C(z) contêm os zeros de BoG(z); • Os zeros de C(z) contêm os pólos de BoG(z); e além disto, são acrescentados tantos integradores quanto os necessários para anular (zerar) o erro em regime permanente para o tipo de entrada especificado, ou: C(z) = Kc · PE n=1 z − pBoG(z)n ZE m=1 z − zBoG(z)m · (z − 1)w (3.2) onde: Kc = ganho do controlador; ZE = quantidade de zeros estáveis da planta (BoG(z)); PE = quantidade de pólos estáveis da planta; zBoG(z)n = n-ésimo zero da planta; pBoG(z)m = m-ésimo pólo da planta; (z − 1) = são integradores impostos pelo integrador no sistema em malha fechada; w = número de integradores necessários para tornar nulo o erro em regime per- manente – depende do tipo de entrada com a qual se está esperando operar a planta (degrau, rampa, parábola, etc). Note que o controlador não cancela pólos ou zeros instáveis da planta. Se estes existirem, estes são desconsiderados na equação de C(z). 3.6.1 Exemplo1: O controlador Deadbeat Seja a função transferência de uma planta digital dada por: BoG(z) = z + 0,6 3z2 − z − 1 Suponha que acrescentaremos o controlador digital em cascata com a planta: C(z) = 3z2 − z − 1 (z − 1)(z + 0,6 Desta forma, a função transferência de malha aberta torna-se: FTMA(z) = C(z)BoG(z) = 1 z − 1 E assim a função transferência de malha-fechada fica: FTMF(z) = FTMA(z) 1 + FTMA(z) = 1 z (3.3) Note que a eq. (3.3) quando excitada por uma entrada degrau unitário resulta em: Y(z) = 1 z · z (z − 1) = z−1 + z−2 + ... ou seja, a saída y(k) representa a resposta do sistema em malha-fechada para uma entrada degrau unitário e que inicia em k = 1, ou seja, um período de amostragem seguinte ao acionamento do sistema. Note que y(k) alcança a resposta desejada igual a 1 com apenas 1 período de amostragem de atraso e que a saída permanece neste estado indefinidamente. Ou seja, que logo após 1 único período de amostra- gem, o sistema já se encontra em regime permanente. Este tipo de resposta é conhecida como resposta “dead beat”. Entretanto deve ser percebido que o controlador C(z) não garante que oscilações (ripples) não vão ocorrer entre dois instantes de amostragem de y(k), ou seja, entre os instantes amostrados da resposta do sistema. 57
  58. 58. 3.6.2 Exemplo2: Projeto de Controlador Deadbeat Seja a planta indicada à seguir, projetar um controlador pelo critério do tmepo mínimo, garantindo ainda erro nulo em regime permanente para entrada degrau unitário. Dados da planta: G(s) = 10 (s + 1)(s + 10) Solução: 1. Primeiramente determinamos a função transferência amostrada da planta: BoG(z). Usando o MATLAB, podemos fazer: num=10; help poly POLY Convert roots to polynomial . POLY(A) , when A i s an N by N matrix , i s a row vector with N+1 elements which are the c o e f f i c i e n t s of the characteristic polynomial , DET( lambda EYE ( SIZE (A) ) − A) . den=poly ([ −1 −10]) ; G=t f (num, den ) ; zpk (G) %confirmando que entramos corretamente com os dados para G(s) Zero/ pole / gain : 10 −−−−−−−−−−−− ( s+10) ( s+1) %Resta discretizar G(s): T=0.1; %guardando o período de amostragem adotado. BoG=c2d (G, T ) %aplicando o ZOH sobre G(s) Transfer function : 0.0355 z + 0.02465 −−−−−−−−−−−−−−−−−−−−−− z^2 − 1.273 z + 0.3329 Sampling time : 0.1 zpk (BoG) %mostrando dados expandidos Zero/ pole / gain : 0.035501 ( z+0.6945) −−−−−−−−−−−−−−−−−−−−− ( z −0.9048) ( z −0.3679) Sampling time : 0.1 Então BoG(z) assume o formato: BoG(z) = 0.035501(z + 0.6945) (z − 0.9048)(z − 0.3679) . 2. Baseado na eq. (3.2) notamos que neste caso, necessitamos que nosso controlador tenha o seguinte formato: C(z) = Kc · (z − 0.9048)(z − 0.3679) (z + 0.6945)(z − 1) (3.4) note que com o objetivo de anular o erro em regime permanente para uma entrada degrau foi introduzido um integrador (termo (z − 1)) no controlador. De qualquer forma, seria necessário acrescentar algum pólo extra ao controlador a fim de garantir sua realizabilidade (grau do denominador ≥ grau do numerador). Usando o MATLAB para especificar C(z) podemos fazer: %para compor C(z). Ou separar os polos e zeros help tfdata −−− help for l t i / tfdata −−− TFDATA Quick access to transfer function data . [NUM, DEN] = TFDATA(SYS ) returns the numerator ( s ) and denominator ( s ) of the transfer function SYS . For a transfer function with NY outputs and NU inputs , NUM and DEN are NY−by−NU c e l l arrays where the ( I , J ) entry specifies the transfer function from input J to output I . SYS i s f i r s t converted to transfer function i f necessary . For a single SISO model SYS , the syntax [NUM, DEN] = TFDATA(SYS , ’ v ’ ) returns the numerator and denominator as row vectors rather than c e l l arrays . [num_BoG , den_BoG]= tfdata (BoG , ’ v ’ ) %extraindo dados de BoG(z) num_BoG = 58
  59. 59. 0 0.0355 0.0247 den_BoG = 1.0000 −1.2727 0.3329 roots (num_BoG) ans = −0.6945 polos_BoG=roots ( den_BoG ) polos_BoG = 0.9048 0.3679 zeros_BoG=roots (num_BoG) zeros_BoG = −0.6945 num_c=poly ( polos_BoG ) ; %construindo numerador de C(z), polinomialmente den_c=poly ([1 zeros_BoG ] ) ; %montando o numerador de C(z), incluindo o integrador C=t f (num_c , den_c , T ) Transfer function : z^2 − 1.273 z + 0.3329 −−−−−−−−−−−−−−−−−−−−−−− z^2 − 0.3055 z − 0.6945 Sampling time : 0.1 zpk (C) %verificando formato do controlador... Zero/ pole / gain : ( z −0.9048) ( z −0.3679) −−−−−−−−−−−−−−−−−−−−− ( z −1) ( z+0.6945) Sampling time : 0.1 3. O passo seguinte é fechar a malha de realimentação, incluindo a determinação de Kc. Usando o MATLAB: FTMA=series (C, BoG) %determinando primeiro a FTMA(z) Transfer function : 0.0355 z^3 − 0.02053 z^2 − 0.01956 z + 0.008206 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− z^4 − 1.578 z^3 + 0.02728 z^2 + 0.7821 z − 0.2312 Sampling time : 0.1 zpk (FTMA) %confirmando localizacao final dos polos e zeros de C(z)BoG(z): Zero/ pole / gain : 0.035501 ( z+0.6945) ( z −0.9048) ( z −0.3679) −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− ( z+0.6945) ( z −0.9048) ( z −1) ( z −0.3679) Sampling time : 0.1 %note que usando o comando minreal(..) se poderia cancelar polos-zeros numericamente, por exemplo: FTMAr=minreal (FTMA,1e−4) ; zpk ( FTMAr ) %versao numerica com polos-zeros cancelados Zero/ pole / gain : 0.035501 −−−−−−−− ( z −1) Sampling time : 0.1 %mas continuar com FTMA(z) permite vizualizar os cancelamentos polos-zeros %no diagrana do lugar das raizes Notamos então que a função transferência em malha-aberta, FTMA(z) fica: FTMA(z) = C(z) · BoG(z) = 0.035501 (z − 1) (3.5) ou seja, resultou exatamente no que se pretendia. Inspecionando a eq. (3.5) percebe-se que nosso sistema em malha-aberta contêm apenas 1 pólo em z = 1. Quando o laço de realimentação for fechado, com a introdução do ganho do controlador, Kc, se percebe que este pólo de malha-aberta partirá do ponto z = 1 e “caminhará” até z = −∞, a medida que Kc aumenta. Ou seja, teremos como resultado apenas 1 pólo, real, em malha-fechada. Lembrando a forma como pólos simples reais reagem no tempo para uma entrada degrau, fica fácil perceber que quanto mais próximo da origem do plano-z estiver o pólo de malha-fechada, tão mais rápido será a resposta do sistema (ver Apêndice: B.1). Como queremos que a planta entre em regime permanente no menor tempo possível, tentaremos fixar o pólo de malha-fechada em z = 0, ajustando de forma adequada o ganho do controlador. 59
  60. 60. Usando novamente o MATLAB para determinador o Kc teremos: %continuando com o RL da FTMA completa para confirmar os cancelamentos rlocus (FTMA) axis equal Os últimos comandos no MATLAB geram o gráfico mostrado na figura 3.28. -3 -2 -1 0 1 2 -1 -0.5 0 0.5 1 Root Locus Real Axis ImaginaryAxis Figura 3.28: RL para sitema com controlador Deat-beat. Procedemos com mais comandos no MATLA para “sintonia” do controlador: hold on %mantem RL anterior na janela grafica [K , polos_MF ]= r l o c f i n d (FTMA) Select a point in the graphics window selected_point = 0.0036 − 0.0031 i K = 28.0686 polos_MF = −0.6945 0.9048 0.3679 0.0035 %Se tentou posicionar os polos de MF sobre a origem do plano-z %verificando o resultado obtido... figure ; %abre nova janela grafica FTMF=feedback (K FTMA, 1 ) ; %fechando a malha com o ganho encontrado zpk (FTMF ) %confirmando polos e zeros de MF Zero/ pole / gain : 0.99645 ( z+0.6945) ( z −0.9048) ( z −0.3679) −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− ( z+0.6945) ( z −0.9048) ( z −0.3679) ( z −0.00355) Sampling time : 0.1 %Hum... notamos um polo em z=-0.6945 (gera oscilação saída controlador) step (FTMF ) Os últimos comandos geram as figuras 3.29(a) e (b). Se percebe pela figura 3.29(b) que a planta entrou em regime permanente praticamente depois da pri- meira amostra (k = 1). Podemos ainda determinar algebricamente o valor de regime permanente da saída do sistema em malha fechada: y(∞) = lim k→infty FTMF(z)R(z) = lim z→1 (1 − z−1 )FTMF(z) 1 (1 − z−1) Usando o MATLAB para determinar o valor de y(∞): 60
  61. 61. -3 -2 -1 0 1 2 -1 -0.5 0 0.5 1 Root Locus Real Axis ImaginaryAxis Kc =28.0689 (a) Ajustando o ganho no RL. 0 0.5 1 1.5 2 0 0.2 0.4 0.6 0.8 1 Step Response Time (sec) Amplitude Note: regime permanente a partir de k=1 (t=0.1) (b) Correspondente resposta ao degrau. Figura 3.29: RL ajustado e resultado da saída do sistema com controlador deat-beat sintonizado. [num_mf , den_mf]= tfdata (FTMF , ’ v ’ ) num_mf = 0 0.9965 −0.5762 −0.5490 0.2303 den_mf = 1.0000 −0.5818 −0.5489 0.2331 −0.0008 y_infty=polyval (num_mf , 1 ) / polyval ( den_mf , 1 ) y_infty = 1.0000 Mas este tipo de resposta têm sua contraparte: um elevado eforço de controle. Para comprovar as ampli- tudes envolvidas com o sinal de controle, u(k) podemos simular este sistema no MATLAB/Simulink – ver figura 3.30. Zero-Order Hold To Workspace4 t To Workspace3 u To Workspace2 e To Workspace1 r To Workspace y Step Gain 28.0689 G(s) 10 s +11s+102 Clock C(z) (z-0.9048)(z-0.3679) (z-1)(z+0.6945) Figura 3.30: Simulação do controlador Dead-beat no MATLAB/Simulink. Note que os blocos relacionados com C(z) (Discrete Zero Pole Transfer Fcn no Simulink) e o sustentador de ordem zero devem explicitamente terem seus parâmetros editados para confirmar que são discretos, isto é, com período de amostragem definido em T = 0.1 – ver figuras 3.31(a) e (b). E também devemos ajustar os parâmetros de simulação no Simulink. Selecione Simulation Configu- ration Parameters e ajute o campo Solver options Type: Fixed-step, Solver: ode4 (Runge-Kutta) (conforme sugestão de (Nise, 2012)) e Fixed step size: para 0.1 – conforme mostra a figura 3.32. Uma vez feito os ajustes no Simulik é possível visualizar os resultados obtidos através dos comandos a seguir, que geram os gráficos da figura 3.33(a) e (b): 61
  62. 62. (a) Parâmetros de C(z). (b) Parâmetros do ZOH. Figura 3.31: Ajuste de parâmetros de blocos discretos no Simulink. Figura 3.32: Parâmetros de Simulação para o controlador dead-beat. 62
  63. 63. 0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 0 0.2 0.4 0.6 0.8 1 1.2 1.4 tempo (s) y(k) Resposta malha fechada, entrada degrau [y(k)] (a) Saída da planta em MF, y(k). 0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 -30 -20 -10 0 10 20 30 A ªo de Controle [u(k)] tempo (s) u(k) (b) Correspondente ação de controle, u(k). Figura 3.33: Saída do sistema e correspondente ação de controle para o controlador dead-beat. figure ; plot ( t , y ) t i t l e ( ’Acao de Controle [ u ( k ) ] ’ ) xlabel ( ’tempo ( s ) ’ ) ; ylabel ( ’u ( k ) ’ ) figure ; s t a i r s ( t , u ) t i t l e ( ’Ação de Controle [ u ( k ) ] ’ ) xlabel ( ’tempo ( s ) ’ ) ; ylabel ( ’u ( k ) ’ ) Onservando a figura 3.33(b) se percebe que o sinal de controle oscilou entre 27.0489 ≤ u(k) ≤ 28.0689 (foram usados os comandos » max(u) e » min(u) para descobrir os maiores valores de oscilação de u(k)) – uma faixa de excursão provavelmente muito maior que a suportada pelo converssor D/A ou driver de potência conectado fisicamente entre a saída do controlador digital e a entrada da planta. 63
  64. 64. Efeitos Adversos do Controlador Dead-Beat Notar que este controlador: 1. Gera uma ação de controle, u(kT), com aplitudades excessivamente elevadas nos primeiros instantes de amostragem do sistema. Muito provavelmente saturando o converssor D/A pre- sente à sua saída ou ultrapassando limites físicos (ou economicamente viáveis) para o amplifi- cador de potência (driver de potência) que normalmente segue o controlador digital. 2. E gera “inter sampling ripples” na saída do sistema. Ou seja, entre os instantes de amostra- gem, o sistema (planta) continua evoluindo no tempo (é um sistema contínuo no tempo) como resposta às fortes atuações de controle realizadas, o que faz a planta oscilar ou apresentar um ripple na sua saída. Tanto o “ripple” do sinal de controle ou do sinal de saída da planta implica em redução da vida útil do sistema, tanto pior quanto maiores forem descontínuas as derivadas de ordem superior (até terceira ordem, os chamados “jerks”) – se traduzindo por vezes até de maneira audível como vibrações ou “zumbidos” durante a operação do sistema. 3.6.3 Exemplo2: Outro projeto de Controlador Deadbeat Seja a planta indicada à seguir, baseada em [Nise (2012), Cap. 2, pág. 113, 197] – estudo de caso para controle de posição de uma antena – ver figuras 3.34 e 3.35. Sua função transferência, para controle de posição angular de posição, é dada por: G(s) = Ea(s) o(s) = 0,2083 s(s + 1,71) = [rad] [Volts] onde: Ea(s): tensão elétrica (Volts) apresentada na entrada do driver de potência do motor elétrico da antena. Pode variar entre −5,0 à 5,0 (Volts). o(s): orientação final da antena (posição angular), saída em (radianos). notar ainda que esta planta possui certas limitações físicas (reais) como: Zona-morta: o motor não responde para baixas voltagens de entrada, isto é, não move abaixo de certa voltagens. No caso, para a faixa entre −2,0 à 2,0 (Volts); Folga: (ou backslash) presente nas engrenagens acompladas entre o eixo de saída do motor e o eixo rotor da antena. Isto significa que tão logo o motor reverte sua rotação, o eixo de saída da antena (depois de ter passado pela acoplamento entre as engrenagens saindo do motor), permanece estático enquanto o motor prossegue na sua reversão. Quando os dentes das engrenagens finalmente se conectam, o eixo de saída da antena começa a girar na direção da reversão (sem mais nenhum efeito de backslash). Neste caso, o conjunto motor-antena possui folga de ±0,15 (radianos). Supondo que o período de amotragem à ser adotado é de T = 0.1 (segundos), temos: BoG(z) = 0,00098459(z + 0,9446) (z − 1)(z − 0,8428) que resulta num sitema do tipo 1. Neste caso, a própria planta já possui seu integrador o que garante erro nulo em regime permanente para entrada degrau. Projetando o controlador dead-beat para este sistema, C(z), temos: C(z) = 1 0,00098459 Kc · (z − 0,8428) (z + 0,9446) Com isto a FTMA(z) fica: FTMA(z) = C(z) · BoG(z) = 1(z − 0,8428)(z + 0,9446) (z − 1)(z − 0,8428)(z + 0,9446) = 1 z − 1 64
  65. 65. e assim a FTMF(z) fica: FTMF(z) = FTMA(z) 1 + FTMA(z) = 1 z−1 1 + 1 z−1 = 1 z − 1 + 1 = 1 z = z−1 como: Y(z) R(z) = FTMF(z) ∴ Y(z) = FTMF(z) · R(z) então se R(z) é uma entrada degrau, teremos: Y(z) = 1 z · z (z − 1) = 1 z − 1 = 1z−1 + 1z−2 + 1z−3 + ... ou seja, o sistema entra em regime permanente 1 instante de amostragem depois de ativado (em k = 1), como seria o esperado com a entrada do controlador dead-beat no sistema. Os cálculos para determinar C(z) usando MATLAB seguem à seguir: Primeiramente o sistema foi simulando considerando um sistema ideal, isto é, sem limitações – ver figura XX. 65
  66. 66. (a) Layout detalhado. (b) Esquemático. Figura 3.34: Sistema de controle de posição (azimute) de uma antena (Extraído de [Nise (2012), Cap. 2, pág. 32]). Figura 3.35: Diagrama em blocos referente a um estudo de caso de controle de posição (azimute) de uma anterna (Ex- traído de [Nise (2012), pág. 3]). 66
  67. 67. Capítulo 4 Projeto de Controladores Digitais 4.1 Método dos Pólos Dominantes Objetivos: determinar C(z) tal que o processo em malha-fechada se comporte como o especificado. Especificações: • Precisão (erro em regime permanente); • Forma do transitório. Num sistema comum com malha de realimentação unitária fechada pelo controlador C(z) temos: FTMA(z) = C(z) · BoG(z) que deve atender as especificações de precisão, isto é, o e(∞) está associado com a FTMA(z). Fechando a malha obtemos: FTMF(z) = Y(z) R(z) = C(z)BoG(z) 1 + C(z)BoG(z) cuja equação característica, EC(z) resulta em: EC(z) = 1 + C(z)BoG(z) = 0 de onde se percebe que a presença de C(z) permite que possamos atuar na resposta do sistema em malha-fechada (regime transitório), através de C(z). Formas aceitáveis de transitórios: 0,5 0,7 (para sistemas de 2a-ordem) – resultam nos gráficos mostrados na figura 4.1. Step Response Time (seconds) Amplitude 0 0.5 1 1.5 2 0 0.2 0.4 0.6 0.8 1 1.2 1.4 System: G Peak amplitude: 1.05 Overshoot (%): 5 At time (seconds): 0.868 ζ=0,6901 Step Response Time (seconds) Amplitude 0 0.5 1 1.5 2 2.5 0 0.2 0.4 0.6 0.8 1 1.2 1.4 System: G Peak amplitude: 1.2 Overshoot (%): 20 At time (seconds): 0.707 ζ=0,4559 (a) 0,7. (b) 0,5. Figura 4.1: Respostas típicas de sistemas de 2a-ordem. 67

×