Baixe o app para aproveitar ainda mais
Prévia do material em texto
Centro Federal de Educação Tecnológica de Minas Gerais Campus Nepomuceno Disciplina: Laboratório de Controle de Processos Data: Professor: Gustavo de Lins e Horta Aluno(a): Matrícula: Curso: Engenharia Elétrica Semestre: Prática de Laboratório - 02 Orientações gerais: 1- Recomenda-se utilizar o Google Colab para programção Python. Acesse o endereço a seguir: https://colab.research.google.com/ 2- O relatório da prática deverá ser feito em LATEX, confofme modelo disponibilizado pelo professor. 3- Recomenda-se utilizar o Overleaf para a escrita do relatório. Acesse o endereço a seguir: https://pt.overleaf.com/ 1 Controle de Processos com Python A Python Control Systems Library (python-control) é um pacote Python que implementa operações básicas para análise e projeto de sistemas de controle de realimentação. Como principais recursos podemos citar: • Sistemas lineares de entrada/saída em espaço de estados e domínio de frequência; • Modelagem, simulação e análise de sistema de entrada/saída não linear; • Álgebra de diagrama de blocos: interconexões seriais, paralelas e de realimentação; • Tempo de resposta: inicial, passo, impulso; • Resposta de frequência: gráficos de Bode e Nyquist; • Análise de controle: estabilidade, acessibilidade, observabilidade, margens de estabilidade; • Projeto de controle: posicionamento de autovalor, LQR, H2, Hinf; • Redução do modelo: realizações balanceadas, valores singulares de Hankel; • Projeto do estimador: estimador quadrático linear (filtro de Kalman). 1.1 Visão geral da biblioteca O pacote python-control é um conjunto de classes e funções python que implementam operações comuns para a análise e projeto de sistemas de controle de feedback. O objetivo inicial é implementar todas as funcionalidades necessárias para trabalhar com os exemplos do livro Feedback Systems de Astrom e Murray. Está disponível um módulo de compatibilidade com MATLAB que fornece muitas das funções comuns correspondentes aos comandos disponíveis no MATLAB Control Systems Toolbox. 1.2 Diferenças com o MATLAB O pacote python-control faz uso de NumPy e SciPy. Uma lista de diferenças gerais entre NumPy e MATLAB pode ser encontrada aqui. Em termos do pacote python-control mais especificamente, aqui estão algumas coisas a serem lembradas: Pag. 1 de 6 https://colab.research.google.com/ https://pt.overleaf.com/ https://docs.scipy.org/doc/numpy/user/numpy-for-matlab-users.html Laboratório de Controle de Processos Prática de Laboratório - 02 • Você deve incluir vírgulas em vetores. Então [1 2 3] deve ser [1, 2, 3]. • Funções que retornam vários argumentos usam tuplas. • Você não pode usar chaves para coleções; use tuplas em vez disso. 2 Funções da Biblioteca de Controle Funções para criação e manipulação de modelos: • tf() - Cria um sistema de função de transferência; • ss() - Cria um sistema de espaço de estado; • c2d() - Retorna um sistema de tempo discreto; • tf2ss() - Transforma uma função de transferência em um sistema de espaço de estado; • ss2tf() - Transforma um sistema de espaço de estado em uma função de transferência; • series() - Retorna a série de 2 ou mais subsistemas; • parallel() - Retorna o paralelo de 2 ou mais subsistemas; • feedback() - Retorna o feedback do sistema; • pade() - Cria uma Aproximação Pade, que é uma representação da função Transfer de um atraso. Funções para Simulações de Modelo: • step_response() - Resposta ao degrau de um sistema linear; • lsim() - Simula a saída de um sistema linear. Funções para análise de estabilidade: • step_response() - Resposta ao degrau de um sistema linear; • lsim() - Simula a saída de um sistema linear; • pole() - Computar pólos do sistema; • zero() - Calcula zeros do sistema; • pzmap() - Plota um mapa de pólo/zero para um sistema linear; • margin() - Calcule as margens de ganho e fase e frequências de cruzamento associadas; • stability_margins() - Calcular margens de estabilidade e frequências de cruzamento associadas. Funções para resposta de frequência: • bode_plot() - Cria um gráfico Bode para um sistema; • mag2db() - Converte uma magnitude em decibéis (dB); • db2mag() - Converte um ganho em decibéis (dB) para uma magnitude. Pag. 2 de 6 Laboratório de Controle de Processos Prática de Laboratório - 02 3 Instalação O pacote python-control pode ser instalado usando pip, conda ou os mecanismos padrão distutils/se- tuptools. O pacote requer numpy e scipy, e as rotinas de plotagem requerem matplotlib. Além disso, algumas rotinas requerem a biblioteca slycot para implementar recursos mais avançados (incluindo algumas funcionalidades MIMO). 3.1 Instalando usando o pip Para instalar a biblioteca com o pip basta utilizar os seguintes comandos: pip install slycot # optional pip install control 3.2 Instalando no Anaconda Para usuários com a distribuição Anaconda do Python, os seguintes comandos podem ser usados: conda install numpy scipy matplotlib # if not yet installed conda install -c conda-forge control slycot 3.3 Instalando no Google Colab Qualquer instalação de pacote ou biblioteca no Google Colab segue o mesmo princípio do pip, a única diferença é que deve ser incluído o símbolo ! antes do comando pip. !pip install slycot # optional !pip install control 3.4 Iniciando Existem duas maneiras diferentes de usar o pacote. Para a interface padrão descrita em Referência de função, basta importar o pacote de controle da seguinte forma: import control as co Se você deseja ter um ambiente semelhante ao MATLAB, use o módulo de compatibilidade do MATLAB: from control.matlab import * 4 Exemplos Uma função de transferência geral está na forma: H(s) = y(s) u(s) (1) Função de transferência básica em Python. Vamos definir a seguinte função de transferência em Python: Pag. 3 de 6 Laboratório de Controle de Processos Prática de Laboratório - 02 H(s) = 3 4s+ 1 (2) O código Python se torna: Figura 1: Função de transferência básica em Python. 4.1 Modelos de espaço de estado Um modelo de espaço de estados é uma forma estruturada ou representação de um conjunto de equações diferenciais. Modelos de espaço de estado são muito úteis em teoria e projeto de controle. As equações diferenciais são convertidas em matrizes e vetores. Um modelo linear geral de espaço de estados pode então ser escrito nesta forma compacta: ẋ = Ax+Bu (3) y = Cx+Du (4) Onde A, B, C e D são matrizes. Dado o seguinte sistema: ẋ1 = x2 (5) 2ẋ1 = −2x1 − 6x2 + 4u1 + 8u1 (6) y = 5x1 + 6x2 + 7u1 (7) Isso fornece o seguinte modelo de espaço de estado:[ ẋ1 ẋ2 ] = [ 0 1 −1 −3 ] [ x1 x2 ] + [ 0 0 2 4 ] [ u1 u2 ] (8) y = [ 5 6 ] [x1 x2 ] [ 7 0 ] [u1 u2 ] (9) Podemos definir este modelo de espaço de estado em Python: Pag. 4 de 6 Laboratório de Controle de Processos Prática de Laboratório - 02 Figura 2: Espaço de Estados em Python. Aqui também usamos a função ss2tf(). Esta função pode converter um modelo de espaço de estado em função(ões) de transferência. Temos também a função tf2ss() que converte uma função de transferência para um modelo de espaço de estados. 5 Criando uma Função de Transferência em Python As funções de transferência são uma forma de modelo baseada na transformada de Laplace. As funções de transferência são muito úteis na análise e projeto de sistemas dinâmicos lineares. Uma função de transferência geral está na forma: H(s) = y(s) u(s) (10) Onde y é a saída e u é a entrada. Uma função de transferência geral pode ser escrita na seguinte forma geral: H(s) = numerador(s) denominador(s) (11) ou para ser mais específico: H(s) = bms m + bm−1s m−1 + · · ·+ b1s+ b0 ansn + an−1sn−1 + · · ·+ a1s+ a0 (12) Os numeradores dos modelos de função de transferência descrevem as localizações dos zeros do sistema, enquanto os denominadores dos modelos de função de transferência descrevem as localiza- ções dos polos do sistema. Exemplo: Dada a seguinte função de transferência: H(s) = 3s+ 3 4s2 + 5s+ 6 (13) O código Python se torna: Pag. 5 de 6 Laboratório de Controle de ProcessosPrática de Laboratório - 02 Figura 3: Função de Transferência em Python. 6 Parte Prática 1. Dadas as seguintes funções de transferência escreva o código Python para implementar estas funções: (a) T (s) = 50 s2 + 55s+ 50 (b) T (s) = 50 s2 + 10s− 15 (c) T (s) = 1500 s3 + 50s2 + 4500s+ 16000 (d) Y (s) = 4(s+ 50) s2 + 30s+ 200 2. Elabore um programa em Python para transformar a função de transferência em um sistema de espaço de estado. (a) Y (s) R(s) = T (s) = 5(s+ 10) s3 + 10s2 + 20s+ 50 (14) (b) Y (s) R(s) = T (s) = 4(s+ 3) (s+ 2)(s+ 6) (15) (c) Y (s) R(s) = T (s) = s2 + 2 + 10 s3 + 4s2 + 6s+ 10 (16) (d) Y (s) R(s) = T (s) = s+ 50 s4 + 12s3 + 10s2 + 34s+ 50 (17) (e) Y (s) R(s) = T (s) = 14(s+ 4) s3 + 10s2 + 31s+ 16 (18) Pag. 6 de 6 Controle de Processos com Python Visão geral da biblioteca Diferenças com o MATLAB Funções da Biblioteca de Controle Instalação Instalando usando o pip Instalando no Anaconda Instalando no Google Colab Iniciando Exemplos Modelos de espaço de estado Criando uma Função de Transferência em Python Parte Prática
Compartilhar