Академический Документы
Профессиональный Документы
Культура Документы
Setembro de 2012
Introdução ao SIMULINK
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 23 breact 1
y
y* K Time Plant
Delay
1
s
Integrator Scope
Divide
52
u x y
(entradas) (estados) (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
- 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.01 e o Stop Time para 10, 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.
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 10
(escala do tempo) e o eixo vertical para 3.
O diagrama de blocos deste modelo em SIMULINK é o seguinte:
Signal
Generator Scope
2
teste
Gain
To Workspace
4 Carla I.Costa Pinheiro
Introdução ao SIMULINK
Com a janela Scope aberta correr a simulação durante 10 segundos, tendo ajustado o Stop
Time para 10 e o Maximum Step Size para 0.1.
Para gravar o modelo fazer Save as no menu File.
9/5
32
Constant
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 1 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 = 1.
Corra a simulação para um tempo final de 25.
t
Clock
tempo
2
y
5s+1
Step T ransfer Fcn T ransport saída
Delay
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
k
y
tau.s+1
Step Transfer Fcn Transport saída
Delay
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
ode15s.
u dx/dt 1 x
s
Signal Integrator Scope
Generator
Gain
-2x
-2
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.
O Scope representa x para cada intervalo de tempo. Corra uma simulação para um tempo total
de 10 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:
X 1
U s2
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 é [1] e o denominador é [1 2]. Deste modo o modelo
torna-se muito simples: u 1 x
s+2
Signal Transfer Fcn Scope
Generator
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
Ax Bu
dt
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:
1
y(2)
1
1 2
u s2 +2s+1 y(1)
Processo
1
s+1
Feedback
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)
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:
1
2
1
In1 s+3 Out1
2
In2
1
1 simout
2. s+1
Constant Processo To Workspace
1 In1
Out1 simout
Constant T o Workspace
Subsystem
dV
= Fi - F
dt
E
dC A F i i
= (C A - C A ) - k 0 e
-
RT
CA
dt V
E
dT F i C P (T i - T )+ HVk 0 e RT
C A - UA(T - Tc )
=
dt VC P
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,[ ],PAR1,...,PARN)
...
A função “arq” calcula as derivadas com a seguinte sintaxe:
function saida = arq(t,y,flag,PAR1,...,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:
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=[estados,0,saídas,entradas,0,0]
sys = [3,0,3,5,0,0];
% Condições iniciais
ca = 0.1315; %lbm/ft3, concentração inicial no reactor
T = 584.4115; %R, temperatura do reactor
V = 200; %ft3, volume do reactor
x0 = [ca T V]';
switch <expressão>
case <valor 1>
<bloco de código 1>
case <valor 2>
<bloco de código 2>
...
otherwise
<bloco de código de tratamento de exceções>
end
w^2
s2 +2*zeta*ws+w^2
Sine Wave 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
1) 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:
1
0
1 2 tempo
Bibliografia