Sistemas de Controle II
Universidade Federal do Pará
O sistema de 4ª ordem é representado no espaço de estados por:
\[\dot{x}(t) = A\,x(t) + B\,u(t), \qquad y(t) = C\,x(t) + D\,u(t)\]
com as matrizes:
\[A = \begin{bmatrix} 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \\ -10 & -35 & -50 & -24 \end{bmatrix}, \quad B = \begin{bmatrix} 0 \\ 0 \\ 0 \\ 1 \end{bmatrix}, \quad C = \begin{bmatrix} 1 & 0 & 0 & 0 \end{bmatrix}, \quad D = 0\]
A função de transferência equivalente é:
\[G(s) = \frac{1}{s^4 + 24s^3 + 50s^2 + 35s + 10}\]
Os autovalores de \(A\) - raízes do polinômio característico \(\det(sI - A) = 0\), sã0 os polos de \(G(s)\).
\[\det(sI - A) = s^4 + 24s^3 + 50s^2 + 35s + 10 = 0\]
O sistema é assintoticamente estável se e somente se todos os autovalores possuírem parte real negativa.
Tip
Verifique se \(\text{Re}(\lambda_i) < 0\) para todo \(i = 1,\ldots,4\).
A matriz de controlabilidade e a matriz de observabilidade são, respectivamente:
\[\mathcal{C} = \begin{bmatrix} B & AB & A^2B & A^3B \end{bmatrix}, \qquad \mathcal{O} = \begin{bmatrix} C \\ CA \\ CA^2 \\ CA^3 \end{bmatrix}\]
O sistema é completamente controlável se \(\text{rank}(\mathcal{C}) = n\) e completamente observável se \(\text{rank}(\mathcal{O}) = n\), onde \(n = 4\).
Important
Se \(\text{rank}(\mathcal{C}) < n\): projeto do controlador inviável.
Se \(\text{rank}(\mathcal{O}) < n\): projeto do observador inviável.
Resposta ao degrau em malha aberta:
Verificação de integrador na malha direta:
Um integrador corresponde a um polo de \(G(s)\) em \(s = 0\).
Note
A lei de controle por realimentação de estados é dada por:
\[u(t) = -K\,x(t) + N\,r(t)\]
onde \(K \in \mathbb{R}^{1 \times n}\) é o vetor de ganhos e \(N\) é o ganho de pré-compensação para rastreamento de referência.
A dinâmica de malha fechada fica:
\[\dot{x} = (A - BK)\,x + BN\,r, \qquad y = Cx\]
Os polos de malha fechada são os autovalores de \(A - BK\), que podem ser arbitrariamente alocados desde que o sistema seja controlável.
Dado um par dominante com \(\zeta\) e \(\omega_n\) desejados:
\[p_{1,2} = -\zeta\omega_n \pm j\,\omega_n\sqrt{1 - \zeta^2}\]
Os polos recessivos devem ser colocados 3 a 5 vezes mais rápidos (em módulo da parte real) que os dominantes, para que não interfiram na resposta transitória:
\[p_3,\, p_4 \approx -(3\text{ a }5)\,\zeta\omega_n\]
%% PARTE 2 — Projeto do Controlador
% Verificar controlabilidade antes de prosseguir
if rank(ctrb(A, B)) == size(A, 1)
K = place(A, B, polos_mf);
fprintf('K = '); disp(K)
else
error('Sistema NÃO completamente controlável!')
end
% Confirmar alocação
disp('Autovalores de (A - BK):')
disp(eig(A - B*K))
% Ganho de pré-compensação (erro nulo em regime permanente)
N = -1 / (C * inv(A - B*K) * B);
fprintf('N = %.4f\n', N)Tip
Para sistemas SISO também pode-se usar acker(A, B, polos_mf), porém place é numericamente mais robusto para polos distintos.
% Malha fechada
Acl = A - B*K; Bcl = B*N;
sys_mf = ss(Acl, Bcl, C, D);
t = 0:0.001:5;
% Resposta ao degrau e sinal de controle
[y_mf, t_out, x_mf] = step(sys_mf, t);
u_mf = N - K * x_mf';
figure;
subplot(2,1,1)
plot(t_out, y_mf, 'b', 'LineWidth', 2)
yline(1, 'k--'); title('Saída — Malha Fechada'); grid on
subplot(2,1,2)
plot(t_out, u_mf(1,:), 'r', 'LineWidth', 2)
title('Sinal de Controle u(t)'); grid onEntregáveis — Parte 2:
Como em geral os estados \(x(t)\) não são diretamente mensuráveis, projeta-se um observador de ordem plena que estima \(\hat{x}(t)\):
\[\dot{\hat{x}}(t) = A\,\hat{x}(t) + B\,u(t) + L\bigl[y(t) - C\,\hat{x}(t)\bigr]\]
onde \(L \in \mathbb{R}^{n \times 1}\) é o vetor de ganhos do observador.
Definindo o erro de estimação \(e(t) = x(t) - \hat{x}(t)\):
\[\dot{e}(t) = (A - LC)\,e(t)\]
O erro converge para zero se os autovalores de \((A - LC)\) tiverem parte real negativa.
Por dualidade, o projeto de \(L\) equivale ao projeto de \(K\) para o par \((A^\top,\, C^\top)\):
\[L = \bigl[\texttt{place}(A^\top,\; C^\top,\; \text{polos\_obs})\bigr]^\top\]
Os polos do observador devem ser escolhidos mais rápidos que os do controlador (tipicamente 3 a 5 vezes):
%% PARTE 3 — Projeto do Observador
% Verificar observabilidade
if rank(obsv(A, C)) < size(A, 1)
error('Sistema NÃO completamente observável!')
end
% Polos do observador (4x mais rápidos)
fator = 4;
polos_obs = fator * real(polos_mf) + 1j * imag(polos_mf);
L = place(A', C', polos_obs)';
fprintf('L = '); disp(L)
disp('Autovalores de (A - LC):')
disp(eig(A - L*C))O sistema de malha fechada com observador é descrito pelo sistema aumentado de ordem \(2n\):
\[\begin{bmatrix} \dot{x} \\ \dot{e} \end{bmatrix} = \begin{bmatrix} A - BK & BK \\ 0 & A - LC \end{bmatrix} \begin{bmatrix} x \\ e \end{bmatrix} + \begin{bmatrix} BN \\ 0 \end{bmatrix} r\]
Os polos de malha fechada são a união dos polos do controlador e dos polos do observador (princípio da separação).
Utiliza-se condição inicial assimétrica (\(x(0) = 0\), \(\hat{x}(0) \neq 0\)) para evidenciar a convergência do observador:
x0_aug = [zeros(4,1); 0.5*ones(4,1)];
[y_obs, t_obs, x_obs] = lsim(sys_aug, ones(size(t)), t, x0_aug);
figure;
estados = {'x_1','x_2','x_3','x_4'};
for k = 1:4
subplot(4, 1, k)
plot(t_obs, x_obs(:,k), 'b', 'LineWidth', 2); hold on
plot(t_obs, x_obs(:,4+k), 'r--', 'LineWidth', 2)
legend('Real','Estimado'); ylabel(estados{k}); grid on
endEntregáveis — Parte 3:
O tipo de um sistema é definido pelo número de polos de \(G(s)\) na origem.
| Tipo | Polos em \(s=0\) | \(e_{ss}\) ao degrau |
|---|---|---|
| 0 | 0 | \(\dfrac{1}{1 + K_p} \neq 0\) |
| 1 | 1 | \(0\) |
| \(\geq 2\) | \(\geq 2\) | \(0\) |
Se \(G(s)\) possui polo em \(s = 0\), o sistema já integra o erro na malha direta.
Para referência degrau, o erro em regime permanente é nulo por natureza:
\[e_{ss} = \lim_{s \to 0} \frac{s}{1 + G(s)} \cdot \frac{1}{s} = 0\]
Neste caso, basta garantir:
Important
Verificar que o estado integrador não está associado a um modo não controlável. Se o polo em \(s = 0\) for cancelado por um zero, o sistema pode ser instável internamente.
Se \(G(s)\) não possui polo em \(s = 0\) (Tipo 0), é necessário adicionar um integrador na malha para anular o erro ao degrau.
Define-se a variável de estado integral:
\[\dot{z}_i(t) = r(t) - y(t) = r - Cx\]
O sistema aumentado de ordem \(n+1\) é:
\[\begin{bmatrix} \dot{x} \\ \dot{z}_i \end{bmatrix} = \underbrace{\begin{bmatrix} A & 0 \\ -C & 0 \end{bmatrix}}_{\tilde{A}} \begin{bmatrix} x \\ z_i \end{bmatrix} + \underbrace{\begin{bmatrix} B \\ 0 \end{bmatrix}}_{\tilde{B}} u + \underbrace{\begin{bmatrix} 0 \\ 1 \end{bmatrix}}_{\tilde{B}_r} r\]
A lei de controle passa a ser:
\[u(t) = -K_c\,x(t) - K_i\,z_i(t)\]
%% PARTE 4 — Servomecanismo (Caso B: Tipo 0)
A_til = [A, zeros(4,1);
-C, 0 ];
B_til = [B; 0];
% Escolher polo adicional para o integrador
p5 = -5*wn;
polos_serv = [polos_mf; p5];
% Verificar controlabilidade do sistema aumentado
if rank(ctrb(A_til, B_til)) == size(A_til, 1)
K_til = place(A_til, B_til, polos_serv);
Kc = K_til(1:4); Ki = K_til(5);
fprintf('Kc = '); disp(Kc)
fprintf('Ki = %.4f\n', Ki)
else
error('Sistema aumentado NÃO controlável!')
end% Malha fechada do sistema aumentado
Acl_s = A_til - B_til * K_til;
Ccl_s = [C, 0];
sys_serv = ss(Acl_s, [B_til, [zeros(4,1); 1]], Ccl_s, 0);
% Simulação com entrada degrau
[y_serv, t_serv] = step(sys_serv(1,2), t);
% Comparação: com e sem ação integral
figure;
plot(t_out, y_mf, 'b', 'LineWidth', 2); hold on
plot(t_serv, y_serv, 'r--','LineWidth', 2)
yline(1, 'k:');
legend('Sem integrador','Com integrador (servomecanismo)','Referência')
title('Comparação: Erro em Regime Permanente'); grid onEntregáveis — Parte 4:
Para cada parte, construir um diagrama Simulink separado (ou subsistemas em um único modelo):
| Parte | Bloco principal | O que registrar |
|---|---|---|
| 1 | State-Space + Step |
\(y(t)\), \(x(t)\) em To Workspace |
| 2 | Realimentação via Gain(K) + Gain(N) |
\(y(t)\), \(u(t)\) |
| 3 | Observador em paralelo à planta | \(x(t)\) e \(\hat{x}(t)\) separadamente |
| 4 | Integrator no laço do erro |
\(y(t)\) com e sem \(K_i\) |
Tip
Use To Workspace com formato Array e salve as variáveis de tempo e estado para gerar os gráficos diretamente no script .m.
| Parte | Descrição | Pontos |
|---|---|---|
| 1 | Análise: autovalores, rank \(\mathcal{C}/\mathcal{O}\), resposta MA, integrador | 20 |
| 2 | Controlador: polos, ganhos \(K\), gráficos \(y(t)\) e \(u(t)\), Simulink | 25 |
| 3 | Observador: polos, ganhos \(L\), estados reais vs. estimados | 25 |
| 4 | Servomecanismo: identificação do tipo, ganhos, comparação \(e_{ss}\) | 20 |
| Extra | Qualidade da análise crítica e conclusões técnicas | 10 |
| Total | 100 |
Important
Entrega: relatório em PDF + scripts .m comentados + modelo Simulink .slx