Do Regulador ao Servosistema

O regulador por alocação de polos leva os estados à origem: \(u = -Kx\)

Limitação: e se a referência desejada for \(r(t) \neq 0\)?

Regulador puro

\[u(t) = -Kx(t)\]

  • Objetivo: \(x(t) \to 0\)
  • Referência: \(r = 0\)
  • Em regime: \(y_{ss} = 0\)

Servosistema (sem integrador)

\[u(t) = -Kx(t) + k_r\,r(t)\]

  • Objetivo: \(y(t) \to r(t)\)
  • Referência: \(r \neq 0\)
  • Em regime: \(y_{ss} = r\) (se \(k_r\) correto)

Questão central

Como calcular \(K\) (alocação de polos) e \(k_r\) (pré-compensação) para que \(y_{ss} = r\)?

Estrutura do Servosistema Sem Integrador

A lei de controle incorpora a referência \(r\) diretamente via ganho de pré-compensação \(k_r\):

\[\boxed{u(t) = -Kx(t) + k_r\,r(t)}\]

Substituindo em \(\dot{x} = Ax + Bu\):

\[\dot{x}(t) = \underbrace{(A - BK)}_{\text{malha fechada}}\,x(t) + \underbrace{B\,k_r\,r(t)}_{\text{entrada ref.}}\]

\[y(t) = Cx(t)\]

\(K\) — alocação de polos:

determina a dinâmica transitória (\(\omega_n\), \(\zeta\), tempo de assentamento)

\(k_r\) — pré-compensação:

ajusta o ganho DC para que \(y_{ss} = r\) em regime permanente

Diagrama de Blocos

Observação

O ganho \(k_r\) escala a referência na entrada da malha — não há realimentação do erro. A estrutura é idêntica ao regulador com um bloco de pré-filtro adicionado.

Análise do Regime Permanente

Para uma referência constante \(r(t) = r_0\), em regime permanente \(\dot{x} = 0\):

\[(A - BK)\,x_{ss} + B\,k_r\,r_0 = 0\]

\[x_{ss} = -(A - BK)^{-1}\,B\,k_r\,r_0\]

A saída em regime é:

\[y_{ss} = C\,x_{ss} = -C(A - BK)^{-1}B\,k_r\,r_0\]

Erro estacionário:

\[e_{ss} = r_0 - y_{ss} = \left[1 + C(A-BK)^{-1}B\,k_r\right]r_0\]

Condição para erro nulo

\[e_{ss} = 0 \quad \Longleftrightarrow \quad C(A-BK)^{-1}B\,k_r = -1\]

Cálculo do Ganho de Pré-compensação \(k_r\)

Da condição \(e_{ss} = 0\), impõe-se \(y_{ss} = r_0\):

\[-C(A - BK)^{-1}B\,k_r = 1\]

Isolando \(k_r\):

\[\boxed{k_r = \dfrac{-1}{C\,(A - BK)^{-1}\,B}}\]

Em R

kr <- -1 / (C %*% solve(A - B %*% K) %*% B)

Em MATLAB

kr = -1 / (C * inv(A - B*K) * B);

Atenção

\(K\) deve ser calculado primeiro pela alocação de polos — \(k_r\) depende de \(K\).

Abordagem de Ogata

Quando \(x_1 = y\) (primeiro estado é a saída), a lei de controle pode ser escrita em termos do erro \(e = r - y\):

\[u = -k_1(x_1 - r) - k_2 x_2 - \cdots - k_n x_n\]

\[= -\underbrace{\begin{bmatrix}k_1 & k_2 & \cdots & k_n\end{bmatrix}}_{K}\,x + k_1\,r\]

Portanto, nesta estrutura: \(k_r = k_1\)

Interpretação

O ganho \(k_1\) faz dois papéis simultaneamente:

  • retroalimenta o estado \(x_1 = y\)
  • escala a referência \(r\)

Restrição

Isso é equivalente a \(u = -Kx + k_r r\) apenas quando \(k_r = k_1\).

Em geral, \(k_r\) deve ser calculado pela fórmula geral — a coincidência \(k_r = k_1\) depende do sistema.

Procedimento de Projeto

  1. Modelar o sistema em espaço de estados: \((A, B, C)\)
  2. Verificar controlabilidade: \(\text{rank}(\mathcal{C}) = n\)
  3. Especificar os polos desejados \(\{p_1, p_2, \ldots, p_n\}\) com base nos requisitos de desempenho
  4. Calcular \(K\) por alocação de polos (Ackermann, equação de Sylvester, ou comparação de coeficientes)
  5. Calcular \(k_r\): \(\quad k_r = -1\,/\,\bigl[C(A-BK)^{-1}B\bigr]\)
  6. Verificar: simular a resposta ao degrau e confirmar \(y_{ss} = r\)

Sobre a escolha dos polos

Os polos de malha fechada determinam \(\omega_n\) e \(\zeta\). Regras práticas: \(\zeta \approx 0{,}7\) para compromisso sobressinal/tempo de assentamento; polos complexos conjugados com parte real suficientemente negativa para atender ao tempo de assentamento desejado.

Exemplo: Sistema de 2ª Ordem

Planta: \(G(s) = \dfrac{1}{s^2 + 3s + 2}\) — polos de malha aberta em \(s = -1\) e \(s = -2\)

Representação em espaço de estados (forma canônica controlável):

\[A = \begin{bmatrix} 0 & 1 \\ -2 & -3 \end{bmatrix}, \quad B = \begin{bmatrix} 0 \\ 1 \end{bmatrix}, \quad C = \begin{bmatrix} 1 & 0 \end{bmatrix}\]

Especificação: polos desejados \(p_1 = -4\), \(p_2 = -5\)

Polinômio desejado: \((s+4)(s+5) = s^2 + 9s + 20\)

Polinômio de malha fechada:

\[\det(sI - (A - BK)) = s^2 + (3 + k_2)s + (2 + k_1) = s^2 + 9s + 20\]

Comparando coeficientes: \(\quad k_1 = 18, \quad k_2 = 6 \quad \Rightarrow \quad K = \begin{bmatrix}18 & 6\end{bmatrix}\)

Exemplo: Cálculo de \(k_r\)

Com \(K = [18,\; 6]\):

\[A - BK = \begin{bmatrix} 0 & 1 \\ -20 & -9 \end{bmatrix}\]

\[(A - BK)^{-1} = \frac{1}{20}\begin{bmatrix} -9 & -1 \\ 20 & 0 \end{bmatrix}\]

\[C(A-BK)^{-1}B = \begin{bmatrix}1 & 0\end{bmatrix} \cdot \frac{1}{20}\begin{bmatrix} -9 & -1 \\ 20 & 0 \end{bmatrix} \cdot \begin{bmatrix}0\\1\end{bmatrix} = \frac{1}{20}\begin{bmatrix}-9 & -1\end{bmatrix}\begin{bmatrix}0\\1\end{bmatrix} = -\frac{1}{20}\]

\[\boxed{k_r = \dfrac{-1}{-1/20} = 20}\]

Verificação

\(y_{ss} = -C(A-BK)^{-1}B \cdot k_r \cdot r = \dfrac{1}{20} \cdot 20 \cdot r = r \quad \checkmark\)

Simulação em R

library(deSolve)

A  <- matrix(c(0,-2, 1,-3), 2, 2)
B  <- matrix(c(0, 1), 2, 1)
C  <- matrix(c(1, 0), 1, 2)
K  <- matrix(c(18, 6), 1, 2)
Acl <- A - B %*% K
kr <- -1 / as.numeric(C %*% solve(Acl) %*% B)  # kr = 20

servo <- function(t, x, p) list(as.vector(Acl %*% x + B * kr))

sol <- ode(y = c(0, 0), times = seq(0, 3, 0.01), func = servo, parms = NULL)
y <- C %*% t(sol[, 2:3])

plot(sol[,1], y, type="l", lwd=2, col="#2563eb",
     xlab="Tempo (s)", ylab="y(t)", ylim=c(0, 1.2),
     main=sprintf("Resposta ao degrau  |  K = [18, 6],  kr = %.0f", kr))
abline(h=1, col="#dc2626", lty=2, lwd=1.5)
legend("bottomright", c("y(t)", "referência r = 1"),
       col=c("#2563eb","#dc2626"), lty=c(1,2), lwd=2, bty="n")

Limitações do Servosistema Sem Integrador

A pré-compensação \(k_r\) garante \(y_{ss} = r\) apenas com o modelo exato e sem perturbações.

Perturbação na entrada

\[\dot{x} = (A-BK)x + Bk_r r + Bd\]

A perturbação \(d\) desloca o ponto de operação — o \(k_r\) calculado não elimina o erro residual causado por \(d\).

Incerteza paramétrica

Se os parâmetros reais de \((A, B, C)\) diferem do modelo, \(k_r\) é calculado incorretamente e \(y_{ss} \neq r\).

Conclusão

O servosistema sem integrador é adequado quando:

  • O modelo é preciso
  • Não há perturbações estacionárias
  • Aceita-se pequeno erro residual

Para rejeição de perturbações e erro nulo robusto → servosistema com integrador

Prof. Dr. Raphael Teixeira

raphaelbt@ufpa.br