Buscar

Prtica_6_Lab_CP

Prévia do material em texto

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS 
 
 
CURSO DE ENGENHARIA ELÉTRICA 
 
LABORATÓRIO DE CONTROLE DE PROCESSOS 
 
 
PRÁTICA 6 – COMPENSADOR DE AVANÇO POR RESPOSTA 
EM FREQUÊCIA 
 
 
 
 
 
 
Docente: Lucas Silvestre Chaves 
Discentes: Heberte Sebastião Leandro 
 Rafael Bruno da Silva 
 Vitor da Cunha de Souza 
 
 
 
 
 
 
NEPOMUCENO-MG 
07/11/2022 
1. OBJETIVO 
Analisar um sistema de controle com compensador de avanço projetado pelo método da 
resposta em frequência. 
 
2. PRÁTICA 
Após realizar o projeto de um compensador de avanço utilizando o método da resposta em 
frequência, um engenheiro eletricista obteve o seguinte sistema de controle como resultado: 
 
 
Em que: 
 
𝐺𝐶(𝑆) = 9,5238
𝑆 + 3,0101
𝑆 + 14,3339
 
 
𝐺(𝑆) =
10
𝑆(𝑆 + 1)
 
 
Com base nas informações apresentadas determine: 
 
a) Os diagramas de bode do compensador e da função de transferência em malha aberta; 
 
Figura: Diagrama de Bode da função de transferência 
 
Figura: Diagrama de Bode da função do compensador 
 
b) A fase máxima imposta pelo compensador; 
 
ø = −310° 
 
 
 
 
 
 
 
 
 
c) As frequências de cruzamento de ganho e de fase de 𝐺𝐶(𝑠)𝐺(𝑠); 
 
 
 
 
 
 
 
 
d) A margem de fase e a margem de ganho de 𝐺𝐶(𝑠)𝐺(𝑠); 
 
 
e) As respostas ao degrau unitário e a rampa unitária do sistema compensado e não 
compensado. 
Resposta ao degrau do sistema compensado em malha fechada: 
 
Resposta ao degrau do sistema não compensado em malha fechada: 
 
Resposta a rampa do sistema compensado em malha fechada: 
 
Resposta a rampa do sistema não compensado em malha fechada: 
 
 
Código em Python para gerar o diagrama de Bode: 
#Gráfico de Bode 
 
#%%capture test 
# só serve pra deixar o jupyter mais "limpo". (pode ser retirado) 
 
#!pip install control 
 
import numpy as np 
from pylab import plot 
import control 
import warnings 
 
#Baixa outras bibliotecas. 
 
warnings.filterwarnings('ignore') 
 
s = control.TransferFunction.s 
 
#G = (10)/((s)*(s+1)) 
#control.bode(G,dB=True) 
 
Gc_sG_s= (10)/((s)*(s+1))*(9.5238*(s+3.0101))/((s+14.3339)) 
control.bode(Gc_sG_s,dB=True) 
 
plot() 
 
#margin()Calcule as margens de ganho e fase e frequencias de cruzamento
 associadas 
 
gm, pm, wg, wp = control.margin(Gc_sG_s) 
 
print("Resultados:") 
print() 
print("Margem de Ganho: "+str(gm)+' db\n') 
print("Frequência de cruazamento no ponto da Marge de Ganho: "+str(wg)+
' rad/s\n') 
#print("Margem de Fase : "+str(pm)+'graus\n') 
print(f'margem de fase: {round(pm, 2)}'+' graus\n') 
#print("Frequência de cruzamento no ponto da Marge de Fase: "+str(wp)+'
 rad/s\n') 
print(f'Frequência de cruzamento no ponto da margem de fase: {round(wp,
 2)}'+' rad/s\n') 
 
Código para gerar a resposta ao degrau do sistema compensado em malha fechada: 
!pip install slycot # optional 
!pip install control 
import matplotlib.pyplot as plt 
import numpy as np 
import control 
s = control.tf('s') 
 
Gc = (9.5238*(s+3.0101))/((s+14.3339)) 
#planta 
G = 10/(s**2+s) 
#Malha Fechada 
MF = G*Gc/(1+G*Gc) 
print('MF(s) =', MF) 
#Resposta ao degrau unitário 
t,y = control.step_response(MF,10) 
#plt.plot(t,y) 
#Gráfico 
plt.rcParams.update({'font.size': 12}) 
plt.figure() 
plt.plot(t,y,'r-
',label="Resposta ao degrau do sistema compensado em malha fechada");pl
t.grid() 
#plt.plot(t,y,'k-',label="Resposta ao degrau unitário") ;plt.grid() 
plt.xlabel('Tempo (s)') 
#plt.ylabel("Tempo de subida") 
plt.legend() 
plt.show 
 
Código para gerar a resposta ao degrau do sistema não compensado em malha fechada: 
!pip install slycot # optional 
!pip install control 
import matplotlib.pyplot as plt 
import numpy as np 
import control 
s = control.tf('s') 
 
G = 10/(s**2+s) 
#Malha Fechada 
MF = G/(1+G) 
print('MF(s) =', MF) 
#Resposta ao degrau unitário 
t,y = control.step_response(MF,10) 
#plt.plot(t,y) 
#Gráfico 
plt.rcParams.update({'font.size': 12}) 
plt.figure() 
plt.plot(t,y,'r-
',label="Resposta ao degrau do sistema não compensado em malha fechada"
);plt.grid() 
#plt.plot(t,y,'k-',label="Resposta ao degrau unitário") ;plt.grid() 
plt.xlabel('Tempo (s)') 
#plt.ylabel("Tempo de subida") 
plt.legend() 
plt.show 
 
Código para gerar a resposta a rampa do sistema compensado em malha fechada: 
!pip install slycot # optional 
!pip install control 
import matplotlib.pyplot as plt 
import numpy as np 
import control 
s = control.tf('s') 
 
Gc = (9.5238*(s+3.0101))/((s+14.3339)) 
#planta 
G = (10/(s**2+s)) 
#Malha Fechada 
MF = (1/s)*G*Gc/(1+G*Gc) 
print('MF(s) =', MF) 
#Resposta ao degrau unitário 
t,y = control.step_response(MF,10) 
#plt.plot(t,y) 
#Gráfico 
plt.rcParams.update({'font.size': 12}) 
plt.figure() 
plt.plot(t,y,'r-
',label="Resposta a rampa em malha fechada do sistema compensado");plt.
grid() 
#plt.plot(t,y,'k-',label="Resposta ao degrau unitário") ;plt.grid() 
plt.xlabel('Tempo (s)') 
#plt.ylabel("Tempo de subida") 
plt.legend() 
plt.show 
 
Código para gerar a resposta a rampa do sistema não compensado em malha fechada: 
!pip install slycot # optional 
!pip install control 
import matplotlib.pyplot as plt 
import numpy as np 
import control 
s = control.tf('s') 
 
G = 10/(s**2+s) 
#Malha Fechada 
MF = (1/s)*G/(1+G) 
print('MF(s) =', MF) 
#Resposta ao degrau unitário 
t,y = control.step_response(MF,10) 
#plt.plot(t,y) 
#Gráfico 
plt.rcParams.update({'font.size': 12}) 
plt.figure() 
plt.plot(t,y,'r-
',label="Resposta a rampa em malha fechada do sistema não compensado");
plt.grid() 
#plt.plot(t,y,'k-',label="Resposta ao degrau unitário") ;plt.grid() 
plt.xlabel('Tempo (s)') 
#plt.ylabel("Tempo de subida") 
plt.legend() 
plt.show

Continue navegando