Buscar

Aula_01_pratica_Controle

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

UNIVERSIDADE FEDERAL 
DO ESPÍRITO SANTO 
Curso de Engenharia Química 
- CAMPUS DE ALEGRE – 
 
 
 
 
 
 
 
 
AULAS PRÁTICAS EM PYTHON 
 
 
 
 
 
CONTROLE DE PROCESSOS 
 
 
 
 
 
PROFESSOR 
 
JULIO CESAR SAMPAIO DUTRA 
Graduação em Engenharia Química – UFRRJ 
Doutorado em Engenharia Química – COPPE / UFRJ 
e-mail: julio.dutra@ufes.br 
 
 
 
 
 
 
 
 
 
ALEGRE – ES 
2020/2 
 
ENG-10933 Controle de Processos ⋅ EQ/UFES (Campus de Alegre) Prof. Julio Dutra 
2 
 
Introdução 
Com o objetivo de aplicar os conceitos da disciplina de Controle de Processos, é proposta 
a realização de uma série de atividades aplicadas a exemplos da Engenharia Química ou 
de áreas afins. Isto é feito no intuito de desenvolver habilidades computacionais essenciais 
para o uso de software de computador para ajudar a descrever e projetar sistemas de 
controle, importantes também para as áreas de modelagem e simulação. 
A partir da literatura, será selecionado um exemplo com modelagem matemática 
fenomenológica com dinâmica no tempo, bem como o conjunto de parâmetros 
necessários para a simulação. Para não elevar a complexidade de implementação 
computacional dos modelos, será escolhido um modelo com parâmetros concentrados. 
Uma cópia do trabalho selecionado será compartilhada na sala virtual. 
No contexto de ensino-aprendizagem remoto emergencial (EARTE), o desenvolvimento 
das atividades práticas da disciplina poderá ser executado em grupos, cujos resultados 
serão entregues por escrito na forma de um relatório. 
Serão trabalhadas as seguintes atividades: 
a) Implementação de modelo matemático 
b) Linearização do modelo não lineares 
c) Obtenção de funções de transferência 
d) Análise do processo (ordem, polos, zeros, ...) 
e) Projeto de controladores e sintonia 
f) Simulação computacional em malha fechada, com testes regulador e servo 
Esses conteúdos serão desenvolvidos em Python. Esta linguagem de programação ganhou 
notoriedade na área de Ciência de Dados, mas também tem tido preferência como 
plataforma de solução de problemas de engenharia. Existem diversas opções de ambientes 
para desenvolvimento em Python, sendo que a plataforma mais popular hoje é a 
Anaconda. Ela contém ferramentas importantes como o Spyder (que é um ambiente para 
programar em Python), além de um conjunto enorme de pacotes populares já instalados 
(numpy, scipy, matlibplot, etc). Por isso, é necessário que os alunos façam o download da 
plataforma Anaconda em seus computadores a partir do site www.anaconda.com/, e 
procedam a instalação que é muito simples. 
 
ENG-10933 Controle de Processos ⋅ EQ/UFES (Campus de Alegre) Prof. Julio Dutra 
3 
 
Simulação de um sistema de EDO 
Os modelos matemáticos representam uma aproximação de mundo do real. No caso de 
processos químicos, eles podem auxiliar em diversas tarefas do engenheiro, como projetar 
equipamentos, determinar a condição operacional ótima, analisar o comportamento 
dinâmico e propor estratégias de controle. Para isso, uma etapa fundamental é a simulação 
dos modelos com o auxílio do computador. 
Dada a diversidade da natureza matemática dos modelos, existem muitas técnicas 
numéricas para a resolução das equações. Aqui, será considerada apenas a integração 
numérica de um sistema de equações diferenciais ordinárias (EDO) de primeira ordem, 
em que a variável independente é o tempo: 
𝑑𝒙
𝑑𝑡
= 𝒇(𝑡, 𝒙, 𝒖), 𝒙(𝑡 ) = 𝒙 
em que 𝒇() representa um sistema de equações; 𝑡, a variável independente tempo; 
 𝒙, o vetor de variáveis dependentes ou de estado com a condição inicial 𝒙 em 𝑡 = 𝑡 ; e 
𝒖, o vetor de variáveis de entrada. 
Muitos problemas dinâmicos podem ser representados por este tipo de equação, como 
aqueles que envolvem tanques de mistura e reatores (batelada e tipo tanque agitado). De 
qualquer forma, equações de ordem superior podem ser reescritas na forma acima e 
sistemas de equações diferenciais parciais (EDP) podem ser transformados em um 
sistema de EDO, por exemplo, aplicando-se diferenças finitas. 
A solução deste tipo de problema no Python, pode ser feita em duas partes: 
 A primeira é a implementação de uma função com as equações 𝒇(𝑡, 𝒙, 𝒖), que 
aceita a variável independente, as variáveis dependentes e quaisquer parâmetros 
necessários e retorna os valores das derivadas 𝑑𝒙/𝑑𝑡 das variáveis dependentes. 
 A segunda parte integra a função com o integrador solve_ivp da biblioteca SciPy 
(scipy.integrate) para calcular soluções das variáveis dependentes em um 
intervalo de tempo especificado, assumindo as condições iniciais fornecidas. 
Assim, a partir da condição inicial 𝒙(𝑡 ) = 𝒙 , é possível conhecer o comportamento 
dinâmico das variáveis de estado 𝒙(𝑡) ∀ 𝑡 > 𝑡 , considerando diferentes valores para a 
variáveis de entrada. É possível conhecer o perfil de resposta, a iteração entres a variáveis, 
o estado estacionário, sensibilidade das variáveis, o grau de não linearidade, entre outros. 
ENG-10933 Controle de Processos ⋅ EQ/UFES (Campus de Alegre) Prof. Julio Dutra 
4 
 
Exemplo de aplicação 
Considere o problema de um processo químico dado por um 
reator CSTR não adiabático encamisado, onde ocorre a 
reação A → B de 1ª ordem (Seborg et al., 2011). Há 2 
variáveis de estado: a concentração de reagente (𝑐 ) e a 
temperatura do reator (𝑇). As variáveis de entrada são: a 
vazão e concentração de alimentação de reagente (𝑞 e 𝑐 ), 
mais a temperatura do refrigerante (𝑇 ). 
𝑉
𝑑𝑐
𝑑𝑡
= 𝑞(𝑐 − 𝑐 ) − 𝑉𝑘𝑐 𝑘 = 𝑘 𝑒 / 
𝑉𝜌𝑐
𝑑𝑇
𝑑𝑡
= 𝑞𝜌𝑐 (𝑇 − 𝑇) + (−Δ𝐻 )𝑉𝑘𝑐 − 𝑈𝐴(𝑇 − 𝑇 ) 
A entrada está a temperatura 𝑇 ; e a corrente de produto flui a vazão 𝑞, com concentração 
𝑐 e temperatura 𝑇. Os demais parâmetros do problema constantes são: volume 𝑉, calor 
específico (𝑐 ), densidade (𝜌), entalpia Δ𝐻 , e coeficiente de troca térmica 𝑈𝐴. 
Os valores dos parâmetros e condição inicial das variáveis podem vistos abaixo 
Parâmetros e condições nominais operacionais para o CSTR (Seborg et al., 2011). 
Parâmetro Valor Parâmetro Valor Variáveis Valor 
𝑉 100 L −Δ𝐻 5×104 J/mol 𝑐 (0) 0.5 mol/L 
𝜌 1000 g/L 𝑘 7.2×1010 min-1 𝑇(0) 350 K 
𝑐 0.239 J/(g∙K) 𝐸 72747.5 J/mol 𝑞(0) 100 L/min 
𝑇 350 K 𝑅 8.314 J/(mol∙K) 𝑐 (0) 1 mol/L 
 𝑈𝐴 5×104 J/(min∙K) 𝑇 (0) 300 K 
Implemente o modelo no Python. Faça algumas simulações variando as condições 
operacionais das variáveis de entrada, usando testes do tipo 𝑇 + 10K e 𝑇 − 10K. 
Verifique os resultados em saídas gráficas, como a mostrada aqui abaixo. 
 
ENG-10933 Controle de Processos ⋅ EQ/UFES (Campus de Alegre) Prof. Julio Dutra 
5 
 
Implementação no Python 
A solução mostrada abaixo, embora dividida em 3 seções para melhor compreensão, 
forma um código único a ser digitado por vocês no editor do Python no Spyder. 
1. Importação de bibliotecas e definição do modelo do processo 
# -*- coding: utf-8 -*- 
""" 
Created on Mon Feb 8 18:17:07 2021 
 
@author: Julio Dutra 
""" 
 
#%% importar biblotecas 
import numpy as np 
import matplotlib.pyplot as plt 
from scipy.integrate import solve_ivp 
 
#%% definir modelo do processo 
def reator_CSTR(t,x,u): 
 
 '''modelo do reator CSTR''' 
 # parametros do modelo 
 V = 100.0 
 rho = 1000.0 
 cp = 0.239 
 DH = -5e4 
 k0 = 7.2e10 
 E = 72747.5 
 R = 8.314 
 Ti = 350.0 
 UA = 5e4 
 
 # variáveis de estado 
 cA = x[0] 
 T = x[1] 
 
 # variáveis de entrada 
 q = u[0] 
 cAi = u[1] 
 Tc = u[2] 
 
 # equações constitutivas 
 k = k0*np.exp(-E/(R*T)) 
 Q = UA*(T-Tc) 
 rA = k*cA 
 
 # equações do modelo 
 dcA = q/V*(cAi-cA) - rA 
 dT = (q*rho*cp*(Ti-T)+(-DH)*rA*V - Q)/(V*rho*cp) 
 
 # saida do modelo 
 dx = [dcA, dT] 
 return dx 
ENG-10933 Controle de Processos ⋅ EQ/UFES (Campus de Alegre) Prof. Julio Dutra 
6 
 
2. Integração do modelo usando a função solve_ivp 
#%% Integração do modelo 
 
# intervalode integração 
tspan = [0, 10.0] # [t_inicial, t_final] 
 
# condição inicial 
x0 = [0.5, 350.] # cA0, T0 
u0 = [100.0, 1.0, 300.0] # q0, cAi0, Tc0 
 
# testes de variação nas entradas 
u0[0] = u0[0] - 0.0 # q 
u0[1] = u0[1] - 0.0 # cAi 
u0[2] = u0[2] - 0.0 # Tc 
 
# Instanciar o modelo 
modelo = lambda t,x: reator_CSTR(t, x, u0) 
 
# solver: integrador 
sol = solve_ivp(modelo, tspan, x0, method='BDF') 
 
# resultado 
t = sol.t # tempo 
x = sol.y; # cA, T 
 
3. Geração das saídas gráficas 
#%% saídas gráficas 
plt.close('all') 
 
# Instanciar uma figura 
plt.figure(1,figsize=[14,5]) 
 
plt.subplot(1,3,1) 
plt.plot(t,x[1,:], 'r-', lw=5) 
plt.ylabel('Temperatura do reator, oC', fontsize=14) 
plt.xlabel('Tempo, min', fontsize=14) 
plt.axis([0, 10, 300, 450]) 
plt.xticks(range(0,11)) 
plt.yticks(range(300,500,50)) 
 
plt.subplot(1,3,2) 
plt.plot(t,x[0,:],'b-', lw=5) 
plt.ylabel('Concentração de reagente, mol/L', fontsize=14) 
plt.xlabel('Tempo, min', fontsize=14) 
plt.axis([0, 10, 0, 1]) 
plt.xticks(range(0,11)) 
plt.yticks(np.arange(0,1.1,0.1)) 
 
plt.subplot(1,3,3) 
plt.plot(x[0,:],x[1,:], 'k-') 
plt.ylabel('Temperatura do reator, oC', fontsize=14) 
plt.xlabel('Concentração de reagente, mol/L', fontsize=14) 
plt.title('Plano de fases: cA x T', fontweight='bold') 
 
ENG-10933 Controle de Processos ⋅ EQ/UFES (Campus de Alegre) Prof. Julio Dutra 
7 
 
# Ajustar o preenchimento entre os subplots 
plt.tight_layout() 
plt.show() 
 
# salvar uma figura (extensão pode ser pdf, jpg, ...) 
plt.savefig('aula01_model_implementation.tif') 
 
 
Estudo proposto: 
Considere um tanque de mistura, onde se dilui uma corrente contendo um ácido X usando 
água como solvente. O processo contém 2 variáveis de estado: o nível da mistura (ℎ) e a 
concentração do ácido dentro tanque (𝑐 ); 3 variáveis de entrada: a concentração de 
alimentação do ácido (𝑐 ) e as vazões de alimentação de água e de ácido (𝑞 e 𝑞 ). 
Modelo matemático Condições nominais 
Nível: 
𝑑ℎ/𝑑𝑡 = 𝑞 + 𝑞 − 2.5√ℎ 
Variáveis de entrada (𝒖 ): 
𝑞 = 1.5 𝑞 = 1.0 𝑐 = 3.0 
Variáveis de estado (𝒙 ): 
ℎ = 1.0 𝑐 = 1.2 
 
Concentração: 
𝑑𝑐 /𝑑𝑡 = (1/ℎ)[𝑞 (𝑐 − 𝑐 ) − 𝑞 𝑐 ] 
 
Implemente o modelo deste tanque no Python. Faça algumas simulações relacionando o 
perfil dinâmico das variáveis de estado com mudanças do tipo degrau nas variáveis de 
entrada. Verifique a consistência dos resultados em saídas gráficas. 
 
Anotações:

Continue navegando