Escolar Documentos
Profissional Documentos
Cultura Documentos
Este exercício mostra as respostas para um controle de trajetória com 03 tipos de técnicas de controle e
diferentes quantidades de variáveis de entrada, sendo controle clássico com entrada Ɵ*, controle com
vetor completo de entradas referenciais completo W* ; Ɵ* ; ∫ Ɵ* , e vetor de entradas completo mais
comando direto. As análises comparações entre os sistemas de controle são descritas no final do trabalho.
O sistema é de primeira ordem, cujos parâmetros são: J = 0,015 kgm2; b = 0,01 Nms/rad. Considere ainda
a trajetória: θ*(t) = 8π cos(πt) rad e a característica de carga: TL(t) = 10.sign (ω) Nm.
EXERCÍCIO 1
1-A) Na figura 01 é visto o diagrama de blocos para o controle clássico em cascata, não foi incluída a
entrada referência de velocidade devido a que o problema não descreve se esta entrada é necessária, e o
controle clássico com entrada somente com referência de Ɵ* é um bom exemplo para mostrar a diferença
da sua resposta em relação ás plantas com vetor de entrada completo.
Fig. 01
1-B) Os ganhos d Kpw Kpo Kiw do controlador e a função de transferência do acionamento Teta/ teta*
obtida são: Kpw = 7 Kpo = 31 Kiw = 1930
G(S)=
1-C) Já, na figura 03 é mostrada a curva do módulo da resposta em frequência da rigidez dinâmica com J
no seu valor nominal, sendo exibido na cor verde ao lado direito e que esta junto (unido) á linha em
vermelho no lado esquerdo da curva.
Fig. 02 Fig. 03
Controle de motores elétricos. Autor: Leonardo Barbosa Lima Gouvea. 2
1-D) o módulo da resposta em frequência da função FRF| Ɵ / Ɵ *| é mostrado na figura 04. Observar que
a curva em que J esta em seu valor nominal é a curva em verde.
Fig. 04
1-E) Na figura 05 é visto a resposta no tempo Ɵ(t) foi calculada pela soma das contribuições do sinal de
referência Ɵ*(t) na entrada e seu valor somado com a contribuição de TL(t) para a saída, representando
assim a resposta total como Ɵ(t) = Ɵ(t)/Ɵ*(t)+ Ɵ(t)/TL(t). Ainda na figura 05 é visto a velocidade obtida
W(t). E na figura 06 é mostrado o erro de rastreamento da trajetória.
Fig. 05 Fig. 06
1-F) O torque fornecido pelo acionamento foi calculado pela expressão Tac= TL+ bW+ JdW/dt, e é
apresentado na figura 07. Na mesma figura 07 são mostradas a velocidade de saída da planta, e a potência
fornecida pelo sistema de acionamento.
Controle de motores elétricos. Autor: Leonardo Barbosa Lima Gouvea. 3
Fig. 07
1-G) Na figura 03 que já foi mostrada nas páginas anteriores são mostrados FRF |TL/Ɵ| para os casos em
que o parâmetro J da planta é estimado com variação de 20% para mais e para menos.
Já na figura 04 são mostrados FRF |Ɵ /Ɵ| para os casos em que J varia também +20% e -20%.
------------------------------------------------------------------------------------------------------------------------------
EXERCÍCIO 2
2-A)
Gc
2-B)
Ba= 3.5268
Ka= 96.6694
Kia= 303.5797
zeros= -3.1404
polos= -956.2896 ; -270.1310 ;
-27.2732 ; -3.6099
G(S)=
Controle de motores elétricos. Autor: Leonardo Barbosa Lima Gouvea. 4
2-C)
2-D)
Controle de motores elétricos. Autor: Leonardo Barbosa Lima Gouvea. 5
2-E)
2-F)
2-G) Veja estas as curvas FRF |TL / Ɵ| e FRF | Ɵ / Ɵ*| com J variando em +20% e em -20%, nas
figuras já mostradas anteriormente para as questões 2-C) e 2-D) , pois todas curvas estão embutidas nos
referidos gráficos.
------------------------------------------------------------------------------------------------------------------------------
EXERCÍCIO 3
3-A)
Gc
Controle de motores elétricos. Autor: Leonardo Barbosa Lima Gouvea. 6
3-B)
Ba = 7.7769
Ka = 216.5851
Kia = 680.1444
Zeros = -3.1403
polos = -2079,1
-278,3
-27,4
-3,6
G(S)=
3-C)
Controle de motores elétricos. Autor: Leonardo Barbosa Lima Gouvea. 7
3-D)
3-E)
3-F)
Controle de motores elétricos. Autor: Leonardo Barbosa Lima Gouvea. 8
3-G) Veja estas as curvas FRF |TL / Ɵ| e FRF | Ɵ / Ɵ*| com J variando em +20% e em -20%, nas
figuras já mostradas anteriormente para as questões 3-C) e 3-D) , pois todas curvas estão embutidas nos
referidos gráficos.
------------------------------------------------------------------------------------------------------------------------------
EXERCÍCIO 4
O controle de posição é capaz de trabalhar com trajetórias realizáveis, e deve ter uma resposta sem
oscilação. No controle clássico há acoplamento entre as malhas interna e externa, e para não haver
oscilação deverá haver frequências de corte bem diferentes entre as malhas. Foram modelados a fonte de
conjugado com frequência de corte de 200 Hz, malha de velocidade em 50 Hz, malha de posição em 5
Hz, malha integral de posição, quando usada, em 0,5 Hz. O controle clássico tem o problema na
inadequação da referência de velocidade e acoplamento natural entre as malhas de velocidade e posição,
devido ao cascateamento, neste sistema houve polos imaginários e que estes polos imaginários
provocaram uma pequena oscilação, mas que com o ajuste dos ganhos com um possível aumento pode ser
suficiente para eliminar as oscilações passando os polos a ficarem reais. Os módulos dos ganhos para os
três controladores foram parecidos, mas o controle clássico apresentou variação bem superior aos outros
sistemas de controle quando houve erros na estimação de J, por isso se pode dizer que o controle clássico
tem robustez menor que os outros. O controlador com vetor completo e comando direto foi aquele que
melhor apresentou robustez quando J é mau estimado. O torque gerado pelo sistema de acionamento é
maior na situação do uso do controlador clássico, desta forma o atuador receberá sinais de maior
intensidade e haverá menor estabilidade.
Para o controle clássico a robustez é bem mais baixa nas frequências mais baixas, que nos sistema de
controle mais completos com integral de posição.
O controle de movimento com vetor completo ([ω*(t) θ*(t) ∫θ*(t) dt ]) tem a vantagem de conseguir
eliminar o erro em regime permanente através da ação integral. Caso usássemos o desacoplamento da
perturbação seria melhorada a rigidez dinâmica.
O desacoplamento dos estados entra em ação quando as constantes de tempo elétrica e a dinâmica estão
próximas, isto é, velocidades próximas. Com as malhas em paralelo quando usamos o vetor de entrada
completo, se tem a vantagem que os ganhos podem ser ajustados independentemente, em comparação
com o controle clássico.
O desacoplamento dos estados ocorre pois tanto nos sistemas de controle com vetor completo, quando no
controlador com vetor completo e comando direto, devido a que foram escolhidas faixas de passagem
bem distintas entre cada malha de controle. No sistema com comando direto, há o benefício em que o
sistema de controle trabalha principalmente com os fluxos de comando da perturbação e por isso a rigidez
dinâmica foi muito melhorada.
O erro de rastreamento da trajetória é bem maior no caso do uso do controle clássico, que nos demais
casos. E entre o uso ou não do comando direto para os controladores com vetor completo de entrada, o
comando direto faz que o rastreamento seja um pouco melhor.
Referências.
Notas de aula da disciplina acionamentos elétricos –UFMG.
Notas de aula da disciplina Controle de sistema Lineares –UFMG.
Livro: Sistema de Controle Modernos, Dorf.
Controle de motores elétricos. Autor: Leonardo Barbosa Lima Gouvea. 9
clear all
close all
clc
J= 0.015
B= 0.01
J_ComandoD= 0.90*J % ---> valor QUE EU ESTOU TESTANDO PARA J
ESTIMADO do comando direto, exercicio 3
B_ComandoD= 0.90*B % ---> valor QUE EU ESTOU TESTANDO PARA B
ESTIMADO do comando direto, exercicio 3
J_nominal= J
Jmenor= J_nominal*0.8 % ---> valor de J variando PARA MENOR na
função de transferencia, questoes letra G dos exercicios
Jmaior= J_nominal*1.2 % ---> valor de J variando PARA MAIOR na
função de transferencia, questoes letra G dos exercicios
figure(1)
plot(tempo, Angulo_Teta)
xlabel('Tempo [ S ]','fontsize',12);
ylabel('Angulo Teta [ rad ]','fontsize',12);
title('Angulo Teta')
% axis([ 0 8*pi -inf inf ])
for n= 2 : length(tempo)
W_referencia(n)= (Angulo_Teta(n)- Angulo_Teta(n-1))/ (tempo(n)- tempo(n-1));
Torque_Carga(n)= 10*sign(W_referencia(n));
end
figure(2)
plot(tempo, Torque_Carga, '.-')
xlabel('Tempo [ S ]','fontsize',12);
ylabel('Torque [ Nm ]','fontsize',12);
title('Torque na Carga ')
Controle de motores elétricos. Autor: Leonardo Barbosa Lima Gouvea. 10
figure(3)
G_Conversor= tf([1], [1/(frequencia_corte_conversor) 1])
bode(G_Conversor)
integral= tf(1, [1 0]);
title('Resposta em frequencia do conversor');
'####################################################################################
######################################################'
%Questao 2-B)"
G_Mecanica= feedback( (1/J)*integral, B, -1)
G_ComandoD_Conversor_Mecanica= feedback(G_Conversor*G_Mecanica, (J_ComandoD/integral-
B_ComandoD), -1); % Controlador * mecanica e realimentação no comando direto
G_velocidade_MA= G_ComandoD_Conversor_Mecanica;
[Ba, polos_GW]= rlocfind(G_velocidade_MA, frequencia_W) % calculo de Ba
G_velocidade_MF= feedback(G_velocidade_MA, Ba, -1) % W(S)/Ta*(S)
G_integral_posicao_MA= G_posicao_MF*integral;
[Kia, polos_GIntegralTeta]= rlocfind(G_integral_posicao_MA, frequencia_Integral_Teta)
% calculo de Kia
%G_integral_posicao_MF= feedback(Kia*G_integral_posicao_MA, 1, -1) %
Integral_Teta(S) / Integral_Teta*(S) obs: a entrada devera ser a integral de teta(t)
, ou seja: ( com 1/S depois do sinal de entrada, e entes de G_integral_posicao_MF)
Ba= Ba
Ka= Ka
Kia= Kia
figure(6)
bode(G_planta_completa_MF)
title('Resposta em frequencia planta G(S)= Teta(S) / Teta*(S)');
Controle de motores elétricos. Autor: Leonardo Barbosa Lima Gouvea. 11
'####################################################################################
######################################################'
%Questao 2-D)
%####################################################################################
#######################################################
%Questão 2_C
G_TL_ComandoDireto= feedback(G_Mecanica, (J_ComandoD/integral- B_ComandoD), -1);
G_TL_W= feedback(G_TL_ComandoDireto, Ba*G_Conversor, -1); % malha de velocidade
G_TL_teta= feedback(G_TL_W*integral, Ka*G_Conversor, -1); % malha de posicao
G_TL_TetaComIntegralTeta= feedback(G_TL_teta, Kia*integral*G_Conversor, -1); % OBS
:malha de integral de posicao, obs: nao integrou teta na saída para obter
%integral de teta e sim considerou a relimentação de Kia/S que teria entrada teta e
não integral de teta.
G_Teta_TL= G_TL_TetaComIntegralTeta; % ----------->>> função Teta(S)/ TL(S)
FT_Rigidez_dinamica= 1/ G_TL_TetaComIntegralTeta
FT_Rigidez_dinamica_nominal= FT_Rigidez_dinamica;
%figure(30)
%bode(FT_Rigidez_dinamica)
% Resposta em Frequencia da rigidez dimamica G(S)= TL(S) / Teta(S) , com entrada
TL(t) somente
figure(9)
f= logspace(-3, 4, 1000);
H= freqresp(FT_Rigidez_dinamica, f);
H= abs(H);
H= H(1, :);
semilogx(f/(2*pi), H);
axis([ -inf inf -inf 0.4*10^5 ])
grid()
xlabel('Frequencia [ Hz= rad/2pi ]');
ylabel('Torque [ Nm ]');
Controle de motores elétricos. Autor: Leonardo Barbosa Lima Gouvea. 12
%####################################################################################
#######################################################
%####################################################################################
#######################################################
%Questão 2_E G_total= G_teta_teta + G_teta_TL + G_teta_W
% resposta temporal, parcela Teta / TL, para entrada TL(t) somente
figure(12)
[y, t, x] = lsim(G_Teta_TL, -Torque_Carga, tempo);
Resposta_G_Teta_TL= y;
h11= plot(tempo, Resposta_G_Teta_TL, 'color',' b', 'linewidth', 3 );
xlabel('Tempo [ S ]');
ylabel('Ângulo [ Graus ]');
ax1 = gca;
set(ax1,'XColor','k','YColor','b')
ax2 =
axes('Position',get(ax1,'Position'),'XAxisLocation','bottom','YAxisLocation','right',
'Color','none','XColor','k','YColor','r');
hold on;
%h13= line(tempo, Angulo_Teta,'Color','y','LineStyle','-.', 'Parent',ax2);
h12= plot(tempo, Torque_Carga,'Color','r','LineStyle','-', 'linewidth', 1.5,
'Parent',ax2);
ylabel('Torque [ Nm ]');
hold off
title('| Teta(t) / TL(t) |');
legend([h11 h12],'Resposta Teta(t) / W*(t)', 'Torque de carga Tl(t)', 'Best')
%####################################################################################
#######################################################
%calculo da saida Teta(t) / W*(t)
%calculo da saida Teta(t) / W*(t) quinto modo , FUNCIONA, %fechando malha interna
de velocidade através de Ba e com o sinal W* colocado em
%separado em série com uma cópia de Ba, depois fechando a malha externa de teta onde
tem Ka+ kia/S, e por ultimo multlicando W* x Ba x Gz = teta
%e pegando o caminho direto para W*Ba*integral para a saída
Gy1_ComandoDireto= feedback(G_Conversor*G_Mecanica, (J_ComandoD/integral-
B_ComandoD), -1); % Controlador * mecanica e realimentação no comando direto
Gy= feedback(Gy1_ComandoDireto, Ba, -1);
Gx= feedback(Gy*integral, (Ka+Kia*integral), -1 );
G_Teta_Wreferencia= Ba*Gx
figure(30); bode(G_Teta_Wreferencia);
figure(31); pzmap(G_Teta_Wreferencia);
figure(32)
[y, t, x] = lsim(G_Teta_Wreferencia, W_referencia, tempo);
Resposta_G_Teta_Wreferencia= y;
h11= plot(tempo, Resposta_G_Teta_Wreferencia,'b');
hold on
h13= plot(tempo, Angulo_Teta,':b');
xlabel('Tempo [ S ]');
ylabel('Ângulo [ Graus ]');
hold off
%axis([ -inf inf -80 80 ])
ax1 = gca;
set(ax1,'XColor','k','YColor','b')
ax2 =
axes('Position',get(ax1,'Position'),'XAxisLocation','bottom','YAxisLocation','right',
'Color','none','XColor','k','YColor','r');
Controle de motores elétricos. Autor: Leonardo Barbosa Lima Gouvea. 13
%linkaxes([ax1,ax2],'xy')
hold on;
h12= line(tempo, W_referencia,'Color','r','LineStyle','-.', 'Parent',ax2);
ylabel('Velocidade Angular [ rad/s ]');
hold off
title(' Ândulo de saída em função da referencia de velocidade |Teta(t) / W*(t)|');
legend([h11 h12 h13],'Resposta Teta(t) / W*(t)', 'Velocidade de referência W*(t)', '
Ângulo de Referência Teta*(t)', 'Best')
%####################################################################################
#######################################################
% resposta total de Teta(t)= [ Teta(t)/Teta*(t) +Teta(t)/TL(t) ] , para entradas
Teta(t) + TL(t) obs:nao junte a parcela de Teta(t)/ W*(t)
Resposta_Total= Resposta_G_Teta_TetaRef+ Resposta_G_Teta_TL+
Resposta_G_Teta_Wreferencia; % resposta total de saída, com 2 tipos de sinais de
entrada
% --->> calculo da resposta no tempo de W(t) , para entradas Teta(t) + TL(t) + W*(t)
for n= 2 : length(tempo)
W_saida(n)= (Resposta_Total(n)- Resposta_Total(n-1))/ (tempo(n)- tempo(n-1)); %
resposta total é o ângulo de saída simulado por lsim
end
ax2 =
axes('Position',get(ax1,'Position'),'XAxisLocation','bottom','YAxisLocation','right',
'Color','none','XColor','k','YColor','r');
hold on
h12= line(tempo, Angulo_Teta,'Color','r','LineStyle','-.', 'Parent',ax2);
hold off
linkaxes([ax1,ax2],'x')
ylabel('Graus');
title('Erro de rastreamento da trajetória Teta(t) - Teta*(t)');
legend([h11 h12],'Erro de rastreamento da trajetória', 'Ângulo de referencia
Teta*(t)', 'Best')
%####################################################################################
#######################################################
%####################################################################################
#######################################################
%Questão 2_F
%####################################################################################
#######################################################
'####################################################################################
######################################################'
Controle de motores elétricos. Autor: Leonardo Barbosa Lima Gouvea. 15
% Questão 2-G
' ---> Calculos para J em 80%'
G_Mecanica_Jmenor= feedback( (1/Jmenor)*integral, B, -1);
G_ComandoD_Conversor_Mecanica= feedback(G_Conversor*G_Mecanica_Jmenor,
(J_ComandoD/integral- B_ComandoD), -1); % Controlador * mecanica e realimentação no
comando direto
G_velocidade_MA_Jmenor= G_ComandoD_Conversor_Mecanica;
G_velocidade_MF_Jmenor= feedback(G_velocidade_MA_Jmenor, Ba, -1); %
W(S)/Ta*(S)
G_planta_completa_MF_Jmenor= feedback( (Kia*integral+
Ka)*(G_velocidade_MF_Jmenor)*(integral), 1, -1) % -------------->>>>> função G(S)=
Teta(S)/ Teta*(S)
zeros_G= zero(G_planta_completa_MF_Jmenor) % Polos e zeros planta G(S)= Teta(S) /
Teta*(S)'
polos_G= pole(G_planta_completa_MF_Jmenor)
%####################################################################################
#######################################################
Controle de motores elétricos. Autor: Leonardo Barbosa Lima Gouvea. 16
grid()
title('Lugar das raízes de | TL(S) / Teta(S) | com J em 120%');
%####################################################################################
#######################################################
% graficos juntos para J em 80 e 120 %
figure(26)
f= logspace(-3, 4, 1000);
H= freqresp(FT_Rigidez_dinamica_Jmenor, f);
H= abs(H);
H= H(1, :);
h11= semilogx(f/(2*pi), H, '-b', 'linewidth', 1);
H= freqresp(FT_Rigidez_dinamica_nominal, f);
H= abs(H);
H= H(1, :);
hold on;
h12= semilogx(f/(2*pi), H, '-g');
H= freqresp(FT_Rigidez_dinamica_Jmaior, f);
H= abs(H);
H= H(1, :);
h32= semilogx(f/(2*pi), H, '-r');
hold off
axis([ -inf inf -inf 0.4*10^5 ])
grid()
xlabel('Frequencia [ Hz= rad/2pi ]');
ylabel('Torque [ Nm ]');
title('J em 80%, 100%, 120%, Rigidez Dinâmica | TL(S) / Teta(S) |');
legend([h11 h12 h13],'J em 80 %', 'J em 100 %', 'J em 120 %',' Best')