PTC2413 (2008)- Controle I - Trabalho da Disciplina de Graduação em Eng. Eletronica na Escola Politecnica da Universidade de São Paulo: Modelagem de Sistema de Controle de Suspensão Dinamica Automotiva , aplicada em um Onibus.
1. Trabalho Final de PTC2413 - Controle I - 2008
Aluno: Fernando J. Capeletto Neto
Professor: Piqueira.
Número : 2370518
Suspensão de Onibus
Introdução
Este exemplo desenvolve a modelagem, estudo e ensaio do controle ativo do
movimento vertical da suspensão de um ônibus. O modelo considera tanto a
inércia do ônibus como a inércia da suspensão/pneus, bem como a dos
amortecedores. Um atuador é adicionado entre a suspensão e o ônibus.
Modelo Físico
Desenvolver o sistema de suspensão automática para um ônibus trata-se de um sistema
demasiado complexo, no escopo desse ensaio me ative a 1/4 do modelo completo de
suspensão (uma das quatro rodas) dessa forma simplificando o problema a um sistema de
dimensão única. Um diagrama do sistema é apresentado abaixo:
Onde:
• Massa do Onibus "Body Mass" (m1) = 2500 kg.
• Massa da Suspensão "Suspension Mass" (m2) = 320 kg.
2. • Constante da mola do sistema de suspensão(k1) = 80,000 N/m.
• Constante da mola da roda e pneu(k2) = 500,000 N/m.
• Constante de amortecimento do sistemas de suspensão (b1) = 350 Ns/m.
• Constante de amortecimento da roda e pneu (b2) = 15,020 Ns/m.
• Força de Controle (u) = Força do controlador que iremos desenvolver.
Equação do Movimento:
Do desenho e das leis de Newton, obtemos as equações dinâmicas que seguem:
Função de Transferência:
Assumindo que todas as condições iniciais são nulas, então essas equações representam a
situação quando a roda do onibus passa sobre o obstaculo.
As equações diferenciais acima podem ser expressas na forma de funções de transferência
tomando a sua Transformada de Laplace.
A obtenção das Funções de Transferênciave G1(s) e G2(s) da saída,X1-X2, e duas
entradas,U e W, segue os passos abaixo.
Encontrando a inversa da matrix A e então multiplicando pelas entradas U(s) e W(s) do lado
direito da equação encontramos X1(s) e X2(s) :
3. Partindo da suposição que o problema possa ser tratado de modo linear, separamos a
análise pela superposição de efeitos de apenas uma entrada, fazendo nula a outra.
Desse modo, considerando apenas U(s) e tomando W(s) = 0 (Sistema sem disturbio)
obtemos G1(s) como segue:
E considerando apenas o disturbio W(s) e tomando U(s) = 0 (Sem ação de controle)
obtemos G2(s):
Modelando no Matlab
Colocamos então as funções de transferência aciuma no Matlab definindo o numerador e
denominador das Funções de Transferência no formato nump/denp para a força de
entrada no atuador e num1/den1 para o disturbio de entrada, assim definimos as G1(s) e
G2(s) como:
G1(s) = nump/denp
G2(s) = num1/den1
Então, inicializamos o Matlab com o seguinte código:
m1=2500;
m2=320;
k1=80000;
k2=500000;
b1=350;
b2=15020;
nump=[(m1+m2) b2 k2];
denp=[(m1*m2) (m1*(b1+b2))+(m2*b1) (m1*(k1+k2))+(m2*k1)+(b1*b2) (b1*k2)+(b2*k1) k1*k2];
'G(s)1'
printsys(nump,denp)
2820 s^2 + 15020 s + 500000
-----------------------------------------------------------------------
800000 s^4 + 38537000 s^3 + 1480857000 s^2 + 1376600000 s + 40000000000
4. num1=[-(m1*b2) -(m1*k2) 0 0];
den1=[(m1*m2) (m1*(b1+b2))+(m2*b1) (m1*(k1+k2))+(m2*k1)+(b1*b2) (b1*k2)+(b2*k1) k1*k2];
'G(s)2'
printsys(0.1*num1,den1)
-3755000 s^3 - 125000000 s^2
-----------------------------------------------------------------------
800000 s^4 + 38537000 s^3 + 1480857000 s^2 + 1376600000 s + 40000000000
Requisitos de Desenvolvimento:
Um bom sistema de suspensão veicular para onibus deve ter habilidade satisfatória de
segurança na estrada enquanto mantem o conforto quando se defronta com obstáculos e
buracos na estrada. Quando o ônibus é submetido a qualquer perturbação na estrada como
sujeira, lombadas ou pavimentação erodida, o corpo do ônibus não deve reagir com largas
oscilações e essas oscilações devem ser dissipadas rapidamente.
Uma vez que a distância X1-W é muito complicada de ser mensurada, e a deformação do
pneu (X2-W) é desprezivel, usaremos a distância X1-X2 para aproximar X1-W como a
saída do nosso problema.
O disturbio da estrada (W) nesse problema será simulado por uma entrada degrau. Esse
degrau pode representar o ônibus passando por um desnivel na estrada.
Nos queremos desenvolver um controlador realimentado em que a saída (X1-X2) possui
um sobresinal menor que 5% e possua um tempo de ajuste menor que 5 segundos. Por
exemplo, quando o onibus ultrapassar um degrau de 10 cm de altura, seu corpo irá oscilar
dentro de um patamar de variação de +/- 5 mm e irá retornar à suavidade na condução em
5 segundos.
Resposta em Malha Aberta
Utilizamos então o Matlab para levantar a resposta de malha aberta original do sistema
(sem qualquer controle de realimentação).
5.
6. Desse gráfico da resposta em malha aberta para uma força de atuação de degrau unitário,
podemos observar que o sistema é sub-amortecido. Pessoas sentadas no ônibus irão sentir
uma pequena oscilação e o erro em regime é de 0.013mm. Alem disso, o ônibus demora um
tempo inaceitavelmente longo para ajustar-se ao regime estacionário.
step(0.1*num1,den1)
8. Desse gráfico de resposta em malha aberta para um disturbio formato degrau de 10cm,
podemos observar que quando o ônibus passa sobre uma lombada ou obstáculo de 10 cm,
seu corpo irá oscilar por um tempo inaceitavelmente longo (aprox. 100 segundos) e com
larga amplitude de movimento (aprox. 14 cm) com o impacto inicial. Pessoas sentadas no
ônibus não estarão confortáveis submetidas a esse tipo de oscilação. O grande sobresinal e
o lento tempo de acomodamento irão causar estrago ao sistema de suspensão. A solução
para esse problema é adicionar um controle realimentado no sistema para melhorar sua
performance. O diagrama esquemático da malha-fechada do sistema é a que segue:
De acordo com a Função de Transferência e diagrama em blocos, podemos desenhar o
diagrama em blocos do sistema de suspensão do ônibus, como segue:
9. Desenhando o Lugar Geometrico das Raizes
Agora passamos a desenvolver um controlador usando o método do lugar geométrico das
raizes.
Primeiramente, encontramos os polos de malha-aberta do sistema:
>> R = roots(denp)
R=
-23.9758 +35.1869i
-23.9758 -35.1869i
-0.1098 + 5.2504i
-0.1098 - 5.2504i
>>
Portanto, os pólos dominantes são as raizes -0.1098 + 5.2504i e -0.1098 - 5.2504i, as
quais estão próximas ao eixo complexo com uma pequena taxa de amortecimento.
A idéia principal do desenvolvimento pelo lugar das raizes é estimar a resposta em malha-
fechada a partir do desenho do lugar das raízes de malha-aberta. Adicionando zeros e/ou
pólos ao sistema original (por meio de um compensador), o lugar das raizes e a resposta
em malha-fechada será modificada.
Primeiramente vamos observar o Lugar Geométrico das Raízes da planta.
rlocus(nump,denp)
z=-log(0.05)/sqrt(pi^2+(log(0.05)^2))
sgrid(z,0)
10. Lugar das Raízes 'Descompensado' com linha de amortecimento de 5%
Observemos que é requisito da especificação que o sobresinal,%OS, deve ser menor que
5% e a taxa de amortecimento zeta, é aproximada por z =-log(%OS/100)/
sqrt(pi^2+[log(%OS/100)^2]).
O comando sgrid é utilizado para desenhar a linha de porcentagem de sobresinal desejado
sobre o lugar das raizes aproximado.
Do gráfico acima, observamos que existem dois pares de polos e zeros que estão muito
próximos. Esses pares de pólos e zeros estão quase sobre o eixo imaginário, eles podem
tornar o sistema do ônibus marginalmente estável, o que pode ser a causa do problema.
Temos que fazer com que todos os pólos e zeros movam-se para o semi-plano esquerdo o
máximo possivel para evitar um sistema instável. Temos que inserir dois zeros bem
próximos aos dois polos no eixo imaginário do sistema descompensado para haver
cancelamento de polo com zero. Alem disso, colocaremos outros dois pólos próximos ao
eixo real para obter rapidez de resposta.
Precisaremos então de dois zeros próximos aos dois polos no eixo complexo para desenar o
lugar das raizes, cancelando esses polos com os zeros do compensador ao invés de 'deixá-
los' para os zeros da planta no eixo imaginário. Também precisaremos de dois pólos
colocados distantes, à esquerda para 'puxar' o lugar das raízes para a esquerda em
conjunto, diminuindo o tempo de reação do sistema.
Vamos tentar com zeros em 30 e 60 e pólos em 3+/-3.5i.
z1=3+3.5i;
z2=3-3.5i;
p1=30;
p2=60;
numc=conv([1 z1],[1 z2]);
12. Lugar das Raízes 'Compensado'
Obtendo o ganho pelo Lugar das Raizes.
Agora que arrastamos o lugar das raizes para a linha de 5% de taxa de atenuação, pode-se
escolher o ganho a partir do qual os requisitos de desempenho serão satisfeitos. Para obter
um sobresinal pequeno e resposta rápida, precisaremos selecionar o ganho correspondente
ao ponto onde o lugar das raizes cruza a linha de taxa de atenuação desejada. Desejamos
nesse caso, o cancelamento de pólos e zeros proximos ao eixo imaginário, o que justifica a
escolha.
Para isso usamos o seguinte comando MatLab:
[k,poles]=rlocfind(conv(nump,numc),conv(denp,denc))
Selecionando o ponto mencionado no gráfico do LGR, encontramos os seguintes valores
para o ganho K e os pólos.
selected_point = -3.0115 + 3.6433i
k = 1.4188e+008
poles = 1.0e+002 *
-0.6327 + 7.0881i
-0.6327 - 7.0881i
-0.0287 + 0.1306i
13. -0.0287 - 0.1306i
-0.0294 + 0.0363i
-0.0294 - 0.0363i
O valor obtido para o ganho é então inserido no compensador:
numc=k*numc;
Para obter a Função de Transferência em malha-fechada de W para X1-X2, fizemos:
numa=conv(conv(numf,nump),denc);
dena=conv(denf,polyadd(conv(denp,denc),conv(nump,numc)));
Obs: A função "polyadd" não é uma função padrão do Matlab e foi encontrada na web para
o auxilio da operação 'soma de polinômios', agradecimento a Justin Shriver da University of
Michigan, parte da bilbiografia deste trabalho.
Obtendo a resposta em malha-fechada para o compensador 'LGR'.
Agora vamos ensaiar a resposta ao degrau em malha-fechada obtida com o uso do
compensador. Vamos simular novamente para um obstáculo de 0.1m.
step(0.1*numa,dena)
title('Resposta Compensada em Malha-Fechada a um degrau de 0.1m - PTC23413 - Fernando J.
Capeletto.')
Da resposta encontrada, observa-se que ao encontrar um obstáculo degrau de 10cm, o
máximo desvio do corpo do ônibus para a estrada é aproximadamente 14cm, e as
oscilações são ajustadas em menos de 0.1 segundo. É uma resposta satisfatória quanto ao
14. tempo de acomodação mas não me satisfez quanto ao sobresinal, pode ter havido algum
erro no meio do processo pois eu esperava 5%.
Obtenção da Resposta em Frequência
Aqui o objetivo é usar o gráfico da curva de Bode da resposta em frequência da função de
transferência de malha-aberta para estimar a resposta em malha-fechada. Adicionando um
controlador ao sistema, mudanças no gráfico da curva de bode de malha-aberta provocarão
mudanças na resposta de malha-fechada.
Em primeiro lugar, obtemos a curva de Bode para a malha-aberta original.
w = logspace(-1,2);
bode(nump,denp,w)
O efeito da variação de K é mover a magnitude da curva para cima (aumentando K) ou para
baixo (diminuindo K) de um fator de 20*logK, mas o ganho K não possui efeito sobre a
curva de fase. Pelo gráfico anterior, K precisa ser 100dB (100000) para mover a magnitude
da curva para 0 dB em 0.1 rad/s.
nump=100000*nump
Levantando novamente a Curva de Bode agora com o ganho K:
15. Adicionando dois controladores por avanço de fase.
Da curva de Bode acima, observamos que a curva de fase é íngreme e concava
aproximadamente em 5 rad/sec. Primeiro tentaremos adicionar fase positiva ao redor dessa
região e verificamos o quanto da fase irá restar sobre a linha de -180 graus. Uma vez que
uma larga margem de fase conduz a um sobresinal pequeno, desejaremos adicionar no
mínimo 140 graus de fase positiva na região próxima de 5 rad/seg. Uma vez que um
controlador por avanço não pode adicionar mais que +90 graus, usaremos dois
controladores por avanço:
Para obter T e a, seguimos os passos:
1: Determinnar a fase positiva necessária:
Uma vez que queremos um total de 140 graus, precisaremos de 70 graus de cada
controlador.
2: Determinar a freqüencia onde a fase deverá ser adicionada:
No nosso caso essa frequencia deve ser de 5.0 rad/seg.
3: Determinar a constante 'a' da equação abaixo, isso determina a distância necessária
entre o zero e o polo para a máxima fase adicionada desejada.
16. 4: Determinar T e aT das seguintes equações, isso determinará as freqüencias de canto
nas quais a máxima fase será adicionada à frequencia desejada.
Agora, colocaremos nossos 2 controladores por avanço dentro do sistema e ver o que o
gráfico da Curva de Bode sinaliza.
numc=conv([1.13426 1], [1.13426 1]);
denc=conv([0.035265 1], [0.035265 1]);
margin(conv(nump,numc),conv(denp,denc))
Uma vez que o gráfico de Bode possui a variação de fase limitada (-360-0), o gráfico acima
está um pouco enganoso. Ajustando na sequência obtemos o gráfico equivale a seguir:
w=logspace(-4,4);
[mag,phase,w] = bode(conv(nump,numc),conv(denp,denc),w);
subplot(2,1,1);
semilogx(w,20*log10(mag));
grid
title('Resposta em Frequencia Compensada de Malha-Aberta. - PTC2413 - Fernando J. Capeletto.')
xlabel('Frequencia (rad/s)')
ylabel('20logM')
subplot(2,1,2);
semilogx(w,phase);
17. axis([1e-4, 1e4, -180, 360])
grid
xlabel('Frequencia (rad/s)')
ylabel('Fase (graus)')
Do gráfico acima verificamos que agora a parcela côncava do gráfico de fase está acima dos
-180 graus, e a margem de fase é larga para o critério requisitado.
Agora vamos levantar a resposta em malha-fechada do mesmo modo que fizemos ao final
do processo de compensação pelo método do lugar das raízes.
numa=conv(numc,denc);
dena=polyadd(conv(denp,denc),conv(nump,numc));
Resposta em Frequência Compensada de Malha-Fechada
Vamos testar a resposta ao degrau de 10cm de perturbação:
t=0:0.01:5;
step(0.1*numa,dena,t)
axis([0 5 -.01 .01])
title('Resposta em Frequencia Compensada de Malha-Fechada. - PTC2413 - Fernando J. Capeletto.')
18. Do gráfico obtido observamos que o percentual de sobresinal é menor que 3.5E-9 mm e o
tempo de acomodação é menor que 5 segundos (diria aproximadamente 3 segundos).
Agora sim, considero essa resposta satisfatória.
Conclusão
Urge dizer que este ensaio foi propositalmente além do solicitado como tarefa.
Em adição à dificuldade de fazer o trabalho e suas subtarefas ao seu tempo, desejei reunir o
conhecimento adquirido durante o curso e ensaiar os tipos de compensação estudados.
Por isso, a bibliografia é extensa e os ensaios também, infelizmente estava preparado um
terceiro ensaio, com o Compensador PID pela tabela de Ziegler-Nichols, mas é preciso
registrar que enquanto a bibliografia do trabalho está pronta faz mais de uma semana, os
ensaios só puderam ser iniciados ontem, e os dois métodos de compensação ensaiados
(pelo LGR e pela Resposta em Frequência), demoraram mais de 12 horas no Matlab do meu
computador com apenas 128MRam.
Agora são 09:25Am e depois de uma madrugada inteira finalizando o trabalho, preciso
parar por aqui e imprimir o trabalho para realizar a prova daqui 30 minutos.
Como trabalho futuro, gostaria de acrescentar outro tipo de compensação e comparar os
efeitos, até aqui, o compensador calculado pela margem de fase e ganho mostrou-se muito
melhor que o desenvolvido pelo método gráfico do LGR, mas ambos exerceram melhoria na
planta.
19. Bibliografia
[BAZANELLA, Alexandre S.] - Ajuste de Controladores PID - http://www.ece.ufrgs.br/
[Moura, Exdras Deivys] Estudo de uma suspensão Veicular Passiva,Semi-Ativa e Ativa.
(UNIFEI, Itajuba MG)
[SHRIVER, Justin] Matlab Control Tutorials University of Michigan -
http://www.engin.umich.edu/
[SILVA, Fabio Luis & Furukawa,Márcio] Estudo das Suspensões Passivas, Semi-Ativas e
Ativas. (UFRN, Natal RN)
[OLIVEIRA,Luiz Affonso G.] Projeto de COntroladores PID para um processo térmico
baseado em uma nova regra de sintonia. (UFPA, PA)
[TEIXERA,Andre de Oliveira] Controle Ativo da Suspensão de um Veiculo.