TUTORIAL DE INTRODUÇÃO AO SIMULINK (Version 7.6)

Documentos relacionados
Carlos André Vaz Junior EQ/UFRJ

NÍVEL BÁSICO CAPÍTULO V

Simulação Dinâmica nos Laboratórios de Engenharia Química V da Licenciatura em Engenharia Química no IST: porquê e como?

Simulação de Sistemas Dinâmicos Lineares Visão Geral do Simulink

CENTRO UNIVERSITÁRIO DA FEI MR Simulação de Processos em Eng. de Materiais. Aula 7. Simulink

Minicurso de MATLAB. Programa de Educação Tutorial de Engenharia Elétrica. Max Rodrigues Caroline Pereira Nayara Medeiros

1 - Ambiente de desenvolvimento

Guião do Trabalho Laboratorial Nº 4 Controlo PID de um Servomecanismo de Posição

Controlo Em Espaço de Estados. Trabalho de Laboratório nº 1 Dinâmica no Espaço de Estados

2 Programação de Simulink S-functions

Plantas servo de movimento linear e rotatório

Introdução Começando Exemplos. Tutorial SCICOS. Resolvendo Problemas Simples. CP1 (

Capítulo 2 Conhecendo o SIMULINK

Considerações sobre matrizes no controlo. 1 - Valores Próprios, Vectores Próprios e Equação Característica

Capítulo 5 Sistemas Discretos no Tempo

Departamento de Engenharia Electrotécnica e de Computadores Instituto Superior Técnico Universidade Técnica de Lisboa Sistemas Digitais

CIRCUITOS ELETRÔNICOS LINEARES TE054. Introdução a simulação de circuitos usando o programa QUCS

Eletrônica de Potência I Prof. André Fortunato rev. 1-11/2011

Mini curso básico. Gilberto A. S. Segundo Fábio Carmo. Programa de Educação Tutorial

Análise de sinais com Simulink

Variáveis de Estado e Equações de Estado Desenvolvimento de Modelos Matemáticos

Copiar e colar movimentos

RESOLVENDO PROBLEMAS DE ENGENHARIA COM MATLAB

3º Trabalho de Laboratório Objectivo Geral: Largura de banda de impulsos; Espectros de sinais básicos; Propriedades da transformada de Fourier.

Modelação e Simulação. Trabalho de Laboratório nº 1 Simulação básica em MATLAB/SIMULINK

2ª Prática Instrumentação Virtual com o Software LabVIEW

B) Dinâmica de um Sistema de um Tanque com Circulação de Água em Contínuo com Controlo de Nível

Laboratório de Eletrônica Digital Tutorial Quartus II (Procedimentos para Criação e Simulação de Projetos Digitais)

Simulink Guia Prático

FORMAÇÃO DE MICROSOFT EXCEL 2010

Iniciação à Informática

Finite State Machine (FSM) usando Stateflow-MATLAB. Prof. Juan Mauricio Villanueva

Escola Secundária c/ 3º Ciclo de Ferreira Dias. CURSOS PROFISSIONAIS Ano Letivo 2012 / Atividade 2

A) Dinâmica de um Sistema de Circulação de Ar Comprimido com Controlo de Pressão por Computador

Neste exercício, vamos criar uma Folha de Cálculo, onde vamos utilizar alguns Controlos de Formulários.

Criar um recurso para QIM com ActivInspire - Studio

Mini-curso de Simulink

Mestrado Integrado em Engenharia Electrotécnica e de Computadores - MEEC CONTROLO. 1º semestre Introdução ao Matlab e Simulink

Objectivo Geral: Familiarização com o programa SIMULINK, e com o funcionamento dos componentes que vão ser mais usados no laboratório da disciplina.

Comportamento Dinâmico de Sistemas de Primeira Ordem. Sistemas de Primeira Ordem (CP1) DEQ/UFSCar 1 / 46

Processamento de sinais digitais

File: Este menu permite começar novas tabelas de verdade, abrir ficheiros com tabelas, gravar tabelas e imprimir tabelas.

Obtenção Experimental de Modelos Matemáticos Através da Reposta ao Degrau

Controle de Processos Aula: Simulação de sistemas dinâmicos no Matlab & Simulink

Curso de Introdução ao SIMULINK

Dinâmica de um metrónomo básico

Sistemas a Tempo Discreto

OpenOffice.org. tutorial apresentação

PROJETO DA MALHA DE CONTROLE DE UM PROCESSO DE HIDRÓLISE DE ANIDRIDO ACÉTICO EM CSTR

Introdução ao software Scilab

1 - DESENHAR O SEU ESPAÇO

Gestão de Base de dados Tabelas e Chaves

MATLAB. Que é MATLAB?

ZS Rest. Manual Avançado. Início v.1. v2011

TUTORIAL DO SOFTWARE SMART NOTEBOOK 10

COMPUTAÇÃO E PROGRAMAÇÃO

Guião do Trabalho Laboratorial Nº 3 Análise do Comportamento de uma Suspensão de Automóvel

Capítulo 3. Função de transferência e dinâmicas dos sistemas (Parte D, continuação)

Manual de Formação. Elaborado por: Carina Castro

BMLABEL MANUAL DO UTILIZADOR

Barra de tarefas no Windows 7 (continuação)

Escola Secundária Ferreira Dias Agualva - Sintra. Atividade 20

Modulo 2 Gestão de Base

Explorador do Windows (manipulação de ficheiros)

EES-20: Sistemas de Controle II. 20 Outubro 2017 (Manhã)

Tutorial para utilização da placa dspace 1103 e o software ControlDesk 3.7

Sistemas de Gestão De Bases de Dados. Criação de Tabelas na vista estrutura. Módulo 2. A Professora: Vanda Pereira

Instituto Superior Técnico. Curso de LabVIEW. Pedro M. Ramos Parte I 14 de Outubro de 2004 IST/DEEC. O que é o LabVIEW?

Introdução ao Sistema Operativo Windows. Informática

ANÁLISE DE DECISÃO 2011/2012: Guia de Utilização do Software PrecisionTree

Como criar um menu pop-up no Dreamweaver

Transcrição:

TUTORIAL DE INTRODUÇÃO AO SIMULINK (Version 7.6) Carla Isabel Costa Pinheiro Departamento de Engª Química e Biológica do Instituto Superior Técnico Setembro de 202

Introdução O SIMULINK é uma ferramenta computacional constituída por uma biblioteca de blocos integrada no MATLAB, para modelação, simulação e análise dinâmica de sistemas. O seu ambiente gráfico para modelação permite a construção de modelos na forma de diagramas de blocos. Suporta sistemas lineares e não lineares, modelados em regime contínuo, discreto ou em regime híbrido. 0.2 y* s 23 K Time Delay breact Plant y Integrator Divide Scope 52 t Cada bloco de um modelo em SIMULINK tem as seguintes características gerais: um conjunto de entradas (inputs), u, um conjunto de saídas, (outputs), y, e um conjunto de estados, x: u (entradas) x (estados) y (saídas) O vector dos estados pode consistir em estados contínuos, estados discretos, ou uma combinação de ambos. Depois do modelo definido, é possível simulá-lo usando diferentes métodos de integração a partir dos menus do SIMULINK. A simulação é interactiva, permitindo alterar parâmetros e imediatamente ver o que acontece. A análise do modelo inclui a linearização e diversas ferramentas a que se pode aceder através da linha de comando do MATLAB, e ainda todas as ferramentas das toolboxes do MATLAB. Construção de um modelo Iniciar o SIMULINK escrevendo na janela de comando do MATLAB: >> simulink

Aparece uma janela com a biblioteca dos blocos do SIMULINK: Significado de alguns blocos: o Sources Constant (gera uma saída constante) Step (gera uma alteração em degrau) Clock (tem como saída o tempo) o Sinks Scope (representa graficamente o seu valor de entrada em função do tempo) Display (representa em tempo real o seu valor de entrada durante a simulação) To Workspace (grava a variável de entrada para poder ser usada no espaço de trabalho do Matlab) o Linear Sum (adiciona ou subtrai as suas entradas) o Nonlinear S-Function (função definida pelo utilizador) 2

- Para criar um novo modelo, escolher New do menu File. O SIMULINK cria uma nova janela de trabalho. - Abrir a biblioteca Sources. Aparece uma outra janela que contém todos os blocos da biblioteca Sources; estes blocos representam diferentes tipos de entrada de sinal. - Para adicionar blocos ao modelo arraste-os da janela da biblioteca para a janela de trabalho. Comece por seleccionar e arrastar o bloco Signal Generator da janela Sources. - Com o rato clique duas vezes no bloco Signal Generator. Este bloco permite escolher o tipo de onda, bem como a amplitude, frequência e unidades do sinal gerado pelo bloco. Escolha por exemplo a função seno, a amplitude 5, a frequência 6 e as unidades rad/s. Clique em OK. - Em seguida, da biblioteca Sinks seleccione e arraste o bloco Scope para a janela do modelo à direita do bloco Signal Generator. Clique duas vezes com o rato no bloco Scope e verifique que este bloco corresponde a uma representação gráfica. - Carregue no botão esquerdo do rato e manter, para ligar estes dois blocos traçando uma linha desde a saída do bloco Signal Generator até à entrada do bloco Scope. Aí largue o botão do rato. O SIMULINK desenha uma linha com uma seta terminal que aponta no sentido da direcção do fluxo do sinal. - Mesmo para este modelo tão simples pode iniciar-se a simulação escolhendo no menu Simulation. Para seleccionar o algoritmo de integração e os parâmetros a serem usados, escolher Simulation Parameters no menu Simulation. Alterar o parâmetro Maximum Step Size para 0.0 e o Stop Time para 0, mantendo todos os outros parâmetros. Fazer OK e iniciar a simulação escolhendo Start no menu Simulation. - Abra a janela do Scope para obter o gráfico da função 5 * sen (6t). - Fazer Start no menu Simulation para inicializar a simulação. A simulação pára quando se atinge o Stop Time definido ou se se escolher Stop no menu Simulation. Exemplo Modelo Simples O modelo seguinte gera uma onda do tipo seno através do bloco Signal Generator. É introduzido um factor multiplicativo de escala sendo criada uma cópia da mesma onda com amplitude duas vezes maior fazendo passar o sinal através de um bloco Gain. Ambos os sinais original e amplificado são guardados num vector sinal usando o bloco Mux. O sinal é representado graficamente usando o bloco Scope e é guardado como uma variável do espaço de trabalho do MATLAB com o nome teste. 3

Crie este modelo utilizando os seguintes blocos: - Signal Generator (da biblioteca Sources) - Gain (da biblioteca Math Operations) - Mux (da biblioteca Signal Routing) - Scope e To Workspace (da biblioteca Sinks) A saída do bloco Signal Generator é por defeito uma onda seno com amplitude. Experimente outros tipos de onda e amplitudes. Abrir o bloco Gain e alterar o parâmetro Gain para 2. Abrir o bloco To Workspace e alterar o nome da variável para teste. Este é o nome da variável do espaço de trabalho que guarda os resultados da simulação. Para que seja possível abrir e ver a variável teste na área de trabalho do MATLAB, no mesmo bloco To Workspace escolher a opção array para o parâmetro Save Format. Bloco To Workspace: O bloco To Workspace grava a variável de entrada para poder ser usada no espaço de trabalho do Matlab. O bloco guarda a variável na forma de uma matriz (array) ou de uma estrutura (structure) que tem o nome especificado pelo parâmetro do bloco Variable name. O parâmetro Save format determina o formato de saída. A quantidade de dados guardados nessa variável e os valores de tempo aos quais a variável é guardada são determinados pelos parâmetros do bloco: - Limit data points to last, indica quantos pontos da variável são guardados. Para guardar todos os dados, deve ser indicado o valor inf. - Decimation, permite guardar dados a cada n pontos, sendo n o factor decimation. O valor decimation por defeito,, permite guardar valores para cada intervalo de tempo. - Sample time, permite especificar um intervalo de amostragem para a recolha de pontos da variável. O valor - permite este bloco manter o tempo de amostragem do bloco imediatamente anterior para guardar os valores da variável. Para criar a linha ramificada da saída do bloco Mux para o bloco To Workspace, carregar na tecla Ctrl e desenhar a linha ou usar o botão direito do rato. Abrir o bloco Scope e antes de começar a simulação alterar as escalas dos eixos para 0 (escala do tempo) e o eixo vertical para 3. O diagrama de blocos deste modelo em SIMULINK é o seguinte: Signal Generator Scope 2 Gain 4 teste To Workspace

Com a janela Scope aberta correr a simulação durante 0 segundos, tendo ajustado o Stop Time para 0 e o Maximum Step Size para 0.. Para gravar o modelo fazer Save as no menu File. Exemplo 2 - Resolução de Equações Para modelar por exemplo, a equação que converte temperatura Centígrada para Fahrenheit: T F 9 * 5 T C 32 Primeiro considerar os blocos necessários para o modelo: - Um bloco Gain, para multiplicar o sinal de entrada por 9/5 - Um bloco Constant, para definir a constante 32 - Um bloco Sum, para adicionar as duas quantidades - Um bloco Sine Wave para a entrada do sinal atribuído à temperatura Centígrada - Um bloco Scope para a representação da variável de saída. Em seguida una os blocos e construa o modelo abrindo os blocos Gain e Constant e atribuindo os valores apropriados. Para obter maior variação de temperatura altere a amplitude do bloco Sine Wave para 0. 9/5 Sine Wave Gain Scope 32 Constant Exemplo 3 Simulação baseada em funções de transferência Considere a simulação de um processo de primeira ordem com um ganho de 2 e uma constante de tempo de 5 sujeito a uma perturbação em degrau numa variável de entrada. Este processo pode ser representado por um bloco Transfer Fcn alterando os coeficientes do numerador e do denominador, uma vez que este bloco tem definida por defeito uma função de transferência de um sistema integrador a que corresponde um pólo igual a zero. O bloco Clock pode ser usado para criar um vector tempo. Os blocos To Workspace permitem que os 5

vectores guardados sejam transferidos para o espaço de trabalho da janela do MATLAB para posterior manipulação ou representação gráfica. Uma grande vantagem do SIMULINK em relação ao MATLAB standard é o facto das rotinas de integração poderem funcionar no caso de sistemas com atraso. Consegue-se introduzir o atraso no modelo usando o bloco Transport Delay. Experimente um atraso de 5, obtido através da alteração do valor de existente por defeito no referido bloco. Também tem que ser dado um valor inicial para a variável de entrada no bloco Transport Delay. Tratando-se de variáveis de desvio, neste caso esse valor é zero. No bloco Step Input considere a perturbação em degrau unitário a ocorrer a t =. Corra a simulação para um tempo final de 25. t Clock tempo Step 2 5s+ Transfer Fcn Transport Delay y saída Tal como está definido o modelo, cada vez que quiser alterar os parâmetros do modelo tem que abrir os blocos respectivos e alterar os parâmetros. Torna-se mais rápido definir directamente nos blocos nomes de variáveis como k, tau, theta, associados a este sistema de primeira ordem com atraso. Depois altere simplesmente os valores (de k, tau, theta) na janela de comando do MATLAB antes de cada simulação. O novo diagrama de blocos é o seguinte: t Clock tempo Step k tau.s+ Transfer Fcn Transport Delay y saída Experimente correr simulações com diferentes parâmetros. 6

Menu Simulation: As opções associadas ao método de integração (Solver) estão disponíveis quando se escolhe a opção Configuration Parameters do menu Simulation. Este menu permite atribuir os tempos de início e de paragem da simulação, escolher o solver e especificar os seus parâmetros, e seleccionar as opções de saída. - Simulation Time: podem ser atribuídos os valores do tempo de início e de fim da simulação, Start time e Stop time. - Solvers: a simulação de modelos dinâmicos no Simulink envolve a integração numérica de sistemas de equações diferenciais ordinárias (ODEs). O Simulink permite utilizar diferentes solvers para a simulação desses modelos. Devido à diversidade do comportamento dinâmico dos sistemas, alguns solvers são mais eficientes do que outros na resolução de um determinado problema. A escolha do solver e dos respectivos parâmetros deve ser feita com cuidado de forma a conduzir a resultados rigorosos e rápidos. Por exemplo, para um modelo contínuo, ode45 é habitualmente um excelente solver. No entanto, se se sabe que o sistema é rígido ( stiff ), e se o solver ode45 não permitir obter resultados aceitáveis, pode-se tentar utilizar por exemplo, o ode5s. Exemplo 4 Modelização de um sistema contínuo simples Neste exemplo pretende-se modelar em SIMULINK a seguinte equação diferencial: dx dt 2 x u O bloco Integrator (da biblioteca Continuous) integra a sua entrada, dx/dt, e produz a saída x. Outros blocos necessários para este modelo incluem o bloco Gain e o bloco Sum. Para gerar uma onda quadrada use o bloco Signal Generator. Novamente visualize a variável de saída usando o bloco Scope. Unir os blocos e definir o bloco Gain. Signal Generator u dx/dt x s Integrator Gain -2x -2 Scope Neste modelo, para inverter a direcção do bloco Gain, seleccione-o e faça Ctrl+R ou Rotate Block do menu Format. Um conceito importante neste modelo é o ciclo que inclui o bloco Sum, o bloco Integrator e o bloco Gain. Nesta equação, x é a variável de saída do bloco Integrator e também a variável de entrada nos blocos que calculam dx/dt. Esta relação é criada usando um ciclo. 7

O Scope representa x para cada intervalo de tempo. Corra uma simulação para um tempo total de 0 segundos. A equação modelada neste exemplo anterior também pode ser expressa na forma de função de transferência. O modelo usa o bloco Transfer Fcn, que recebe u como variável de entrada e apresenta x como variável de saída. Aplicando transformadas de Laplace à equação anterior obtém-se: U X s 2 O bloco Transfer Fcn usa parâmetros para especificar o numerador e o denominador. Neste caso especificar ambos os termos como vectores de coeficientes sucessivamente decrescendo na potência de s; neste caso o numerador é [] e o denominador é [ 2]. Deste modo o modelo torna-se muito simples: Signal Generator u s+2 Transfer Fcn x Scope Os resultados desta simulação são idênticos aos do modelo na forma acima apresentada. Exemplo 5 Linearização O SIMULINK inclui as funções linmod e dlinmod para obter modelos lineares na forma de matrizes de variáveis de estado (state-space) A, B, C e D. As matrizes de variáveis de estado descrevem as relações entrada-saída do tipo: dx dt Ax Bu y = Cx + Du onde x, u, e y, são respectivamente os vectores das variáveis de estado, de entrada e de saída. Por exemplo atribua o nome ssmod ao seguinte modelo e grave o respectivo ficheiro numa directoria sua de trabalho que acrescentou previamente ao addpath no menu File do MATLAB: y(2) u s 2+2s+ Processo 2 y() s+ Feedback 8

Para obter o modelo linear correspondente a este modelo em SIMULINK, dar o seguinte comando na janela de trabalho do MATLAB: >> [A,B,C,D] = linmod ( ssmod ) As entradas e saídas têm que ser definidas usando os blocos Inport e Outport. Neste caso os blocos Signal Generator e Scope não funcionam como variáveis de entrada e de saída. Para converter um modelo linear do tipo state space para a forma de funções de transferência: >> [num, den] = ss2tf ( A, B, C, D); Depois de ter o modelo na forma state-space, pode aplicar funções existentes em outras Toolboxes do MATLAB como por exemplo: - Diagramas de Bode >> bode (A,B,C,D) - Resposta Linearizada no tempo >> step ( A,B,C,D) >> impulse (A,B,C,D) Exemplo 6 - Criar um Subsistema À medida que um modelo cresce em tamanho e complexidade, pode simplificá-lo agrupando blocos em subsistemas. Agrupar blocos é útil por várias razões: - Ajuda a reduzir o número de blocos representados na janela do modelo. - Permite manter juntos blocos que de algum modo se relacionam. - Permite estabelecer de um modo mais fácil um diagrama de blocos mais hierarquizado. É possível criar um subsistema de dois modos: adicionando um bloco Subsystem (da biblioteca Ports & Subystems) ao modelo, e depois adicionando os blocos que ele contém; ou adicionando os blocos que constituem o subsistema, e depois agrupando esses blocos num subsistema. Para criar um subsistema antes de adicionar os blocos que ele contém:. Copiar o bloco Subsystem para a janela do modelo. 2. Abrir o bloco Subsystem. 9

3. Na nova janela vazia criar o subsistema. Utilize os blocos Inport (da biblioteca Sources) para representar entradas do exterior no subsistema e blocos Outport (da biblioteca Sinks) para representar saídas do subsistema para o exterior. No exemplo seguinte os blocos Sum (da biblioteca Math Operations) e Transfer Fcn (da biblioteca Continuous) são os únicos blocos do subsistema: In 2 s+3 Out 2 In2 Se já tiver criado os blocos que quer converter num subsistema:. Englobar com o rato os blocos e linhas de união que quer incluir no subsistema, ficando seleccionados. marcar por aqui 2. Constant s+ Processo simout To Workspace 3. Escolher Create Subsystem do menu Edit. O SIMULINK substitui os blocos no grupo por um único bloco Subsystem. O exemplo seguinte mostra o modelo depois de escolher o comando Create Subsystem: Constant In Out Subsystem simout To Workspace Exemplo 7 Modelos com S-Functions Devido à complexidade de modelos não lineares de média e larga escala, torna-se mais eficiente usar um sistema de equações diferenciais escritas num m-file. O Simulink pode aceder a estes m-files através de um bloco S-Function. Deste modo, este método mistura as vantagens de um m-file que pode utilizar directamente solvers tais como o ode45, com as ligações gráficas a outros blocos do Simulink. 0

Por exemplo, no caso de se querer simular um reactor CSTR não isotérmico: Descrito pelas seguintes equações do modelo dinâmico: dv = F i F dt - dc dt dt dt A F = V = i E - i ( ) RT CA -CA - k0e CA E i ( ) RT T T + HVk e C -UAT ( T ) i F CP - 0 A - VC As variáveis de entrada no modelo são: F i, T i,tc,f, C ia Para construir o diagrama deste modelo no Simulink, além dos blocos já anteriormente utilizados, é também necessário o bloco S-Function que executa uma função definida, escrita em código-m, de acordo com as regras para criação de S-Functions. O diagrama do modelo do CSTR é o seguinte: P c

O bloco Mux (u) do modelo concatena as 5 entradas num vector de 5 elementos. O bloco Demux (Saída) extrai do vector que recebe da S-Function as saídas do modelo. O que há de diferente neste modelo é a não linearidade que requer a S-Function (reator.m), que trabalha directamente com as equações diferenciais do CSTR. É preciso seguir algumas regras específicas das S-Functions. Quando usamos solvers do MATLAB para integrar ODE s, usamos sintaxes (dentro do programa principal) do tipo... [T, Y] = ode45( arq,tempo,y0,[ ],PAR,...,PARN)... A função arq calcula as derivadas com a seguinte sintaxe: function saida = arq(t,y,flag,par,...,parn) onde o vector vazio ([ ]) na chamada da ode45 é um marcador de lugar para o vector de opções, que desta forma não está a ser alterado (i.e.: defaults do MATLAB são assumidos. No caso do Simulink, não é necessário chamar a ode45, bastando apenas a declaração da função que calcula as derivadas, com as regras de chamada desta função. Esta função não calcula apenas as derivadas do modelo, como também irá informar ao integrador as condições iniciais. Uma S-Function deve ser declarada da seguinte forma: function [sys, x0] = model (t,x,u,flag,par,...,parn) Onde sys é a saída de model, cujo significado depende de flag x0 é o vector de condições iniciais t é o tempo de simulação x é o vector de estados do modelo u é o vector de entradas do modelo flag é um parâmetro que informa ao model o tipo de informação que o integrador espera receber PAR,...,PARN são os parâmetros adicionais que podem ser passados à função model 2

Vamos agora tentar entender como funciona a simulação de um modelo usando uma S- Function. Ao contrário do que acontecia com as funções de transferência, usando uma S- Function, pode-se trabalhar com valores absolutos das suas derivadas. Para isso, é preciso conhecer as condições iniciais das variáveis de integração. Além disso, o Simulink precisa de informações sobre o modelo, se as variáveis são contínuas ou discretas, quantas entradas, saídas e estados o modelo possui, etc. Antes de começar a simulação, o Simulink informa o integrador para chamar a função model com um valor de flag igual a 0. Isso significa que model deve devolver a sys um vector de configuração do modelo e a x0 o vector de condições iniciais dos estados. Assim, para flag = 0, o vector sys deve conter 6 elementos: sys = [número de estados contínuos, número de estados discretos, número de entrada, marcador de alimentação directa, tempo de amostragem] número de saídas, Quando se simulam modelos contínuos simples, apenas interessam os elementos, 3 e 4 do vetor sys. Os elementos referentes a modelos discretos e à alimentação direta de entradas devem ter valor zero. O tempo de amostragem para modelos contínuos é zero. É preciso ter muito cuidado ao inicializar o modelo. Assegure-se que o número de entradas e saídas correpondem às entradas e saídas do diagrama do Simulink, e que todos os estados têm sua condição inicial corretamente atribuída no vetor x0. Ao longo da integração, o Simulinik obriga o integrador a chamar model com vários valores de flag. Quando model for chamado com flag =, o integrador recebe dele os valores das derivadas dos estados contínuos. Ou seja, para flag =, sys deve conter os valores das derivadas. Para flag = 3, são calculados os valores das saídas. Nos casos de modelos simples (como o do CSTR), as saídas correspondem aos estados. Leia com atenção o código de reactor.m, a seguir. 3

function [sys,x0] = reactor(t,x,u,flag,u,a,deltah,ro,cp,e,r,k0) % % Simula um reactor CSTR (mistura perfeita) no qual se conduz uma % reação exotérmica (A->B), arrefecido por serpentina % U = 50 %BTU/(h.ft2.R), coeficiente de troca térmica A = 250 %ft2, área de troca térmica DeltaH = -30000 %BTU/lbm, calor de reação ro = 50 %lb/ft3, densidade Cp = 0.75 %BTU/(lbm.R), calor específico E = 30000 %BTU/lbm, energia de ativação R =.99 %BTU/(lbm.R), constante dos gases k0 = 7.08e0 %/h, termo pré-exponencial da constante de reação % switch flag case 0 % Dimensiona o sistema e inicializa os estados % sys=[estados,0,saídas,entradas,0,0] sys = [3,0,3,5,0,0]; % Condições iniciais ca = 0.35; %lbm/ft3, concentração inicial no reactor T = 584.45; %R, temperatura do reactor V = 200; %ft3, volume do reactor x0 = [ca T V]'; case % Calcula as derivadas % Atualiza entradas cai = u(); %lbm/ft3, concentração da alimentação Fi = u(2); %ft3/hr, caudal de alimentação F = u(3); %caudal de saída Tc = u(4); %R, temperatura do fluido de refrigeração Ti = u(5); %R, temperatura da alimentação % Cálculo das derivadas Ca = x(); T = x(2); V = x(3); k = k0*exp(-e/(r*t)); dca = (Fi*(cai-Ca)/V) - k*ca; dv = Fi-F; dt = (Fi*Cp*ro*(Ti-T) + DeltaH*k*Ca*V - U*A*(T-Tc)) /(V*ro*Cp); sys = [dca; dt; dv]; case 3 % Calcula as saídas sys = [x() x(2) x(3)]; otherwise sys = []; end 4

Após escrever o código-m da S-Function, basta inserir um bloco S-Function e configurá-lo. A configuração exige apenas o nome do m-file e a lista de parâmetros opcionais (caso a função os possua). O modelo já pode ser simulado. O código de reactor.m introduz uma nova estrutura de controle de fluxo de execução, a estrutura CASO. A sintaxe da estrutura CASO é a seguinte: AVALIE expressão CASO valor bloco de código CASO 2 bloco de código 2... DE OUTRA FORMA bloco de código de tratamento de exceções FIM Esta sintaxe é escrita da seguinte forma no m-file: switch <expressão> case <valor > <bloco de código > case <valor 2> <bloco de código 2>... otherwise <bloco de código de tratamento de exceções> end Exemplo 8 Criar Masks Ao usar a função Mask do SIMULINK é possível definir blocos ou subsistemas criando novas janelas e opcionalmente novos ícones. Uma razão importante para criar um bloco oculto masked é o facto de permitir criar uma nova janela onde são introduzidos os parâmetros para mais do que um bloco num subsistema. Criar um bloco oculto envolve os seguintes passos: - Abrir cada bloco e dar nomes de variáveis aos parâmetros cujos valores se quer dar na nova janela do bloco. - Criar o subsistema. - Seleccionar o bloco do subsistema, e depois escolher Mask do menu Options. - Preencher a janela do bloco oculto assim definido. 5

- Clicar o botão OK para criar o bloco oculto. O bloco do subsistema apresentará o símbolo que tiver sido definido na janela do bloco oculto. Imagine que quer criar um bloco para um sistema simples de segunda ordem, bem como definir novo símbolo para o bloco e janela para introdução dos parâmetros. Ao fazer o Mask do bloco Transfer Fcn é possível definir os seus parâmetros, como o tempo característico (/w) e o coeficiente de amortecimento (zeta), como variáveis em vez de se ter que especificar o numerador e o denominador da função de transferência cada vez que se corre a simulação. Construa um modelo simples usando o bloco Sine Wave como entrada, o bloco Transfer Fcn, e o bloco Scope. Na janela do bloco Transfer Fcn defina o numerador como [w^2] e o denominador como [ 2*zeta*w w^2]. Quando unir os blocos obtém o modelo: Sine Wave w^2 s 2+2*zeta*ws+w^2 Transfer Fcn Scope Para fazer o Mask do bloco Transfer Fcn, seleccionar o bloco e depois escolher Mask do menu Options. Aparece uma janela que permite que defina os seus campos dos parâmetros, os comandos de inicialização, símbolo e texto para o Help. Exercícios ) Obtenha o modelo para um controlador PID na forma das funções de transferência e com variáveis de desvio. Atribua valores aos parâmetros e variáveis envolvidas e corra uma simulação para o caso da variável de entrada (erro do controlador) ter uma variação do tipo sinusoidal. 2) Gere um input em pulso rectangular na forma representada na figura seguinte e represente-o graficamente: 0 2 tempo 6

Bibliografia The Mathworks, Inc, www.mathworks.com, 202. Bequette, B.W., Process Dynamics: Modeling, Analysis and Simulation, Prentice Hall Inc., New Jersey, 998. Seborg, D.E., Edgar, T.F. and Mellichamp, D.A., Process Dynamics and Control, John Wiley and Sons, New York, 2004. Chau, P.C., Process Control: A First Course with MATLAB ; Cambridge University Press, 2002. Techniques of Model-Based Control; C. Brosilow and B. Joseph, Prentice Hall PTR, 2002. Carla Costa Pinheiro Setembro 202 7