2. 1. Introdução
• Simulação orientada a objetos
• Sinais podem ter qualquer unidade
• Blocos podem representar qualquer processo
Curso de MATLAB Avançado e Simulink 2
3. 1. Introdução
• Acesso pela janela do MATLAB:
• Simulação apenas para visualização
• Simulação integrada com programas .m
• Simulação integrada com programas GUI
Curso de MATLAB Avançado e Simulink 3
4. 1. Introdução
• Menu superior
Curso de MATLAB Avançado e Simulink 4
Rodar simulação
Tempo de simulação
Normal/Acelerado
5. 1. Introdução
• Biblioteca de Blocos
– Blocos Source: fontes de sinal
– Blocos de cálculo
– Blocos Sink: visualização ou exportação
Curso de MATLAB Avançado e Simulink 5
Source Cálculos Sink
6. 2. Blocos Source
Curso de MATLAB Avançado e Simulink 6
Cria um vetor
tempo
Cria um vetor
constante
Importa um vetor
de outra simulação
Cria uma onda
senoidal
Cria uma
função-degrau
Cria uma
função-rampa
7. 3. Blocos Sink
Curso de MATLAB Avançado e Simulink 7
Exporta um vetor
para o MATLAB
Tela para
visualização
Gráfico XY
Exporta um vetor para
outra simulação
8. Exemplo 1
Curso de MATLAB Avançado e Simulink 8
Time Based
Use Simulation Time
Amplitude: 1
Frequência: 1
Fase: 0
Zoom
Automático
Parâmetros: permite
configurar vários eixos
9. Exemplo 2
Serão criadas duas variáveis no ambiente de
trabalho:
• tout: contém o vetor de tempo
• y: contém o valor do seno
O próprio programa de MATLAB pode rodar a
simulação usando sim(‘arquivo’).
10. 4. Blocos de Cálculo
• Funções matemáticas
Curso de MATLAB Avançado e Simulink 10
11. 4. Blocos de Cálculo
• Funções contínuas
Curso de MATLAB Avançado e Simulink 11
12. 4. Blocos de Cálculo
• Roteamento de sinais
Curso de MATLAB Avançado e Simulink 12
Mux: une dois (ou mais) vetores
em uma matriz de 2 linhas
Demux: separa uma matriz de duas
(ou mais) linhas em 2 vetores
13. Exemplo 3
• Tanque de nível
Curso de MATLAB Avançado e Simulink 13
F0
F1=C*h
A, h
dh/dt = F0/A - C*h/A
H(s) = (1/A) / (s+C/A) * F0(s)
F. T.
dV/dt = F0 - F1
14. Exemplo 3
• Degrau unitário em F0 no instante t=1
• C=0.1 , A=5, tempo total=300
Curso de MATLAB Avançado e Simulink 14
15. Exemplo 4
• Tanque de nível com controlador PID
Curso de MATLAB Avançado e Simulink 15
F0
F1
A, h
dh/dt = F0/A – F1/A
H(s) = (1/As)*F0(s) – (1/As)*F1(s)
dV/dt = F0 - F1
PID
16. Exemplo 4
• Controle PID com P=1, I=0.05, D=0
Curso de MATLAB Avançado e Simulink 16
degrau em F0
17. Exemplo 5
• Controle PID com P=1, I=0.05, D=0
Curso de MATLAB Avançado e Simulink 17
degrau em F0
mudança no set-point
18. Exemplo 6
• Vários sinais em um só eixo
Curso de MATLAB Avançado e Simulink 18
19. Exemplo 7
• Um scope com vários eixos
Curso de MATLAB Avançado e Simulink 19
20. 5. Bloco Personalizado (s-Function)
• Um módulo de cálculo deve possuir:
– Uma variável independente (t)
– Entradas (u(t))
– Estados (x(t))
– Saídas (y(t))
– Parâmetros (par1, par2, par3)
• Sendo definidas as equações, o módulo recebe as
entradas e os parâmetros, e calcula os estados e as
saídas.
Curso de MATLAB Avançado e Simulink 20
21. 5. Bloco Personalizado (s-Function)
• Biblioteca: user-defined functions
Curso de MATLAB Avançado e Simulink 21
nome do arquivo “.m” usado
Valor definido para
os parâmetros
Módulos
(não será usado)
22. 5. Bloco Personalizado (s-Function)
• Criando a função
function [sys,x0]=system(t,x,u,flag,par1,par2,par3)
switch flag
case 0
% Inicialização.
% Deve retornar em 'sys' o número de entradas, estados
% e saídas, e em 'x0' os estados iniciais.
case 1
% Deve usar 'u' e 'x' e retornar em 'sys' as derivadas.
case 2
% Não será usado.
case 3
% Deve retornar em 'sys' as saídas.
otherwise
end
Curso de MATLAB Avançado e Simulink 22
23. Exemplo 8
• Crescimento de bactérias com um substrato
Curso de MATLAB Avançado e Simulink 23
F0, C0, S0
F, C, S
V, C, S
μ = μMAX*S / (Ks + S)
dV/dt = F0 – F
dVC/dt = F0*C0 - F*C + μ*C
dVS/dt = F0*S0 - F*S - μ*C*Y
24. Exemplo 8
• Crescimento de bactérias com um substrato
Curso de MATLAB Avançado e Simulink 24
F0, C0, S0
F, C, S
V, C, S
- Entradas
F0, C0, S0, F
- Estados/Saídas
V(t=0)=10, C(t=0)=1, S(t=0)=1
- Parâmetros
Ks = 3, Y = 2, μMAX = 1
25. Exemplo 8
function [sys,x0]=biorreator(t,x,u,flag,par1,par2,par3)
switch flag
case 0
sys=[3,0,3,4,0,0];
% estados,0,saídas,entradas,0,0
x0=[10;1;1];
case 1
F0=u(1); C0=u(2); S0=u(3); F=u(4);
V=x(1); C=x(2); S=x(3);
Ks=par1; Y=par2; mimax=par3;
mi=mimax*S/(Ks+S);
dVdt=F0-F;
dCdt=(F0*C0-F*C+mi*C)/V;
dSdt=(F0*S0-F*S-mi*C*Y)/V;
sys=[dVdt;dCdt;dSdt];
case 3
sys=[x(1);x(2);x(3)];
otherwise
end
Curso de MATLAB Avançado e Simulink 25
27. Exemplo 8
• F0 e F constantes em 0
• C0, S0 não serão usados
• As células consomem
todo o substrato e
param de se reproduzir
(atingindo 1,5 g/L).
Curso de MATLAB Avançado e Simulink 27
28. Exemplo 8
• F0 e F constantes em 0,1
• C0 constante em 0
• S0 constante em 1
• A saída irá conter:
– ~0,3 g/L de células
– ~0,3 g/L de substrato.
Curso de MATLAB Avançado e Simulink 28
29. Exemplo 8
• F0 e F constantes em 0,5
• C0 constante em 0
• S0 constante em 1
• Situação de Wash-Out:
– As células são retiradas
mais rapidamente do
que se repõem.
Curso de MATLAB Avançado e Simulink 29
30. Exercício
Programar o sistema de dois tanques
acoplados usando os dados do Exemplo 5.1
da apostila de MATLAB.
Curso de MATLAB Avançado e Simulink 30