MATLAB Avançado - Simulink Carlos André Vaz Junior [email protected] http://www.eq.ufrj.br/links/h2cin/carlosandre MATLAB Avançado - Simulink Mais de 150 mil resultados MATLAB Avançado - Simulink http://newsreader.mathworks.com ? MATLAB Avançado - Simulink MATLAB Avançado - Simulink A programação no Simulink segue uma interface gráfica muito mais intuitiva e fácil de usar: MATLAB Avançado - Simulink Ambiente de Trabalho Simulink MATLAB Avançado - Simulink Exemplos MATLAB Avançado - Simulink Exemplo 1 MATLAB Avançado - Simulink Biblioteca Sources Biblioteca Math MATLAB Avançado - Simulink Ajuste automático da escala do gráfico: MATLAB Avançado - Simulink Ajuste manual da escala do gráfico: Agora quero multiplicar o resultado por -1: MATLAB Avançado - Simulink Biblioteca Math MATLAB Avançado - Simulink Configuração do bloco Product: Número de termos da multiplicação. Multiplicação de matrizes ou termo a termo. MATLAB Avançado - Simulink Alterando os parâmetros de simulação: Tempo inicial Tempo final Criando um sub-sistema: MATLAB Avançado - Simulink Sub-sistema Editando um sub-sistema: MATLAB Avançado - Simulink Sub-sistema Algumas vezes é mais fácil tratar os dados gerados no ambiente Matlab. MATLAB Avançado - Simulink Usamos o bloco “to workspace”: Biblioteca Sinks Cria a variável A no workspace Configuração do bloco “To Workspace”: MATLAB Avançado - Simulink Cria a variável A no workspace Formato da variável No Workspace... MATLAB Avançado - Simulink >> plot(tout,A) MATLAB Avançado - Simulink Rodando um bloco: CTRL R Combinando dois sinais: MATLAB Avançado - Simulink Entre outras aplicações, permite exibir duas ou mais curvas no mesmo gráfico. Bloco MUX Biblioteca Signals & Sys. MATLAB Avançado - Simulink Dois ou mais gráficos: Dois ou mais gráficos: MATLAB Avançado - Simulink Configurando... MATLAB Avançado - Simulink Exemplo 2 Temos a simulação de um tanque de nível sob a influência de uma perturbação degrau na vazão da alimentação. A figura descreve MATLAB Avançado - Simulink o sistema físico que será simulado. q1 q2 h q3 A Deduzindo o modelo matemático que descreve o tanque: Assumindo que: MATLAB Avançado - Simulink - a densidade do líquido e a área da seção transversal do tanque A são constantes. - a relação entre a vazão e a carga é linear: q3 h / R O modelo é descrito por uma equação de balanço transiente de massa no tanque: MATLAB Avançado - Simulink dh A q1 q 2 q3 dt Substituindo a hipótese ii na equação anterior ficamos com: dh h A q1 q 2 dt R Introduzindo as variáveis-desvio e aplicando a Transformada MATLAB Avançado - Simulink de Laplace, chegamos as funções de transferência: Kp h' ( s ) G1 ( s) ' s 1 q1 ( s) Kp h' (s) G2 (s) ' s 1 q 2 ( s) onde: Kp R AR Para o exemplo em questão considere um tanque de 0.5 m de diâmetro e uma válvula na saída na linha atuando sob uma resistência linear (R) de 6.37 min/m2. MATLAB Avançado - Simulink Serão simulados um degrau de 1 ft3 na vazão q1 a partir do tempo igual a 0 min (step) e um degrau de 1 ft3 na vazão q2 a partir do tempo igual a 10 min(step1). A = 3.1415 * (0.5/2)^2 A = 0.196 K p R 6.37 R = 6.37 AR 1.25 MATLAB Avançado - Simulink Corrente q1 Corrente q2 MATLAB Avançado - Simulink Biblioteca Source Biblioteca Continuous Degrau começa no tempo zero MATLAB Avançado - Simulink Degrau começa no tempo dez Bloco Função de Transferência MATLAB Avançado - Simulink A amplitude do degrau é 1 MATLAB Avançado - Simulink Resultado obtido: 1º estado estacionário 2º estado estacionário 1ª perturbação 2ª perturbação MATLAB Avançado - Simulink Exemplo 3 MATLAB Avançado - Simulink Considerando um sistema de controle de nível mostrado abaixo. O nível de líquido é medido e a saída do transmissor de nível (LT) é enviada para um controlador feedback (LC) que controla o nível pelo ajuste da vazão volumétrica q2. A segunda vazão de fluido, q1, corresponde à variável perturbação (corrente chegando de outra unidade, não posso controlar essa corrente). q1 q2 hm LT LC h q3 A Considerando uma válvula com a seguinte função de transferência: Gv K v 0.0103m3 / min psi Considerando um medidor com a seguinte função de transferência: MATLAB Avançado - Simulink Gm K m 24 psi / m MATLAB Avançado - Simulink Erro: (sp - valor medido) Set-point Valor medido Válvula MATLAB Avançado - Simulink Controlador Processo Medidor Bloco Ganho: MATLAB Avançado - Simulink Quando a função de transferência é simplesmente uma constante, como no caso do medidor, podemos representa-lá pelo bloco Gain. Gm K m 24 psi / m Bloco PID: MATLAB Avançado - Simulink O controlador é representado pelo bloco PID Controller. Podemos regular a sua ação proporcional, integral e derivativa. MATLAB Avançado - Simulink Ajuste de Controladores: Na prática o melhor ajuste para um controlador é obtido pela combinação da ação P (proporcional), I (integral), e D (derivativa). Podemos usar o Simulink para obter uma estimativa inicial desse ajuste. D I C A Nem todas as combinações de valores para P, I e D são possíveis. As vezes o processamento numérico trava. MATLAB Avançado - Simulink Ajuste de Controladores: Tente: P = ajuste 2 para 2 um 2controlador 2 Na prática o melhor é obtido pela combinação da ação 0 P (proporcional), I = 25 1 I (integral), 1 e D (derivativa). Podemos usar o0 Simulink D= 0 para0 obter uma 5 estimativa inicial desse ajuste. D I C A Nem todas as combinações de valores para P, I e D são possíveis. As vezes o processamento numérico trava. MATLAB Avançado - Simulink Exemplo 4 Equações para modelar um CSTR: MATLAB Avançado - Simulink dV FA F dt E dC A FA A C A C A k0e RT C A dt V dT F ACP T A T HVk0e dt VC P E RT C A UAT Tc Passando as equações para o formato Matlab: MATLAB Avançado - Simulink 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); onde: Fi: vazão de alimentação do reator (ft3/h) Cai: concentração da alimentação do reator (lbm/ft3) Ca: concentração no reator (variável) k: é dado pela equação k = k0*exp(-E/(R*T)) MATLAB Avançado - Simulink V: volume do reator F: vazão de saída (ft3/h) Cp: calor especifico = 0.75 btu/lbm.R ro: densidade =50 lb/ft3 Ti: temperatura de alimentação (R) T: temperatura do reator DeltaH: calor de reação = -30000 BTU/ lbm U: coeficiente de troca térmica =150 BTU/(h.ft2.R) continua... onde: A: área de troca térmica = 250 ft2 Tc: temperatura do fluido de alimentação (R) E: energia de ativação = 30000 BTU/lbm MATLAB Avançado - Simulink R: constante dos gases = 1.99 BTU/lbm.R Legenda: parâmetros freqüentemente alterados parâmetros raramente alterados parâmetros calculados MATLAB Avançado - Simulink MATLAB Avançado - Simulink Biblioteca Functions & Tables Parâmetros freqüentemente alterados Parâmetros raramente alterados (máscara) MATLAB Avançado - Simulink Parâmetros calculados MATLAB Avançado - Simulink Em resumo: Fi T Cai DeltaH Ca U Ko A V F Cp Tc ro Ti E R MATLAB Avançado - Simulink Configurando o bloco S-function: Nome do arquivo com as equações Parâmetros alterados pela máscara MATLAB Avançado - Simulink Criando uma máscara: Localização do arquivo com as equações: MATLAB Avançado - Simulink O arquivo com as equações deve estar localizado no mesmo local dos arquivos Simulink! O Current Directory do Matlab deve apontar para esse local! Criando o arquivo com as equações: MATLAB Avançado - Simulink function [sys,x0] = reator(t,x,u,flag,U,A,DeltaH,ro,Cp,E,R,k0) % % Simula um reator CSTR (mistura perfeita) no qual se conduz uma % reação exotérmica (A->B), resfriado por serpentina % 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.1315; %lbm/ft3, concentração inicial no reator T = 584.4115; %R, temperatura do reator V = 200; %ft3, volume do reator x0 = [ca T V]'; continua... Criando o arquivo com as equações: MATLAB Avançado - Simulink function [sys,x0] = reator(t,x,u,flag,U,A,DeltaH,ro,Cp,E,R,k0) % % Simula um reator CSTR (mistura perfeita) no qual se conduz uma % reação exotérmica (A->B), resfriado por serpentina % switch flag • sys é a saída do modelo, cujo significado depende de flag Dimensiona o sistema e inicializa estadosquando flag = 0 ) •case x0 é0 o%vetor de condições iniciais (funcionaosapenas • t é o tempo de simulação • x% é sys=[estados,0,saídas,entradas,0,0] o vetor de estados do modelo [3,0,3,5,0,0]; • usys é o=vetor de entradas do modelo (recebido do bloco Mux) % Condições iniciais que informa o tipo de informação que o integrador • flag é um parâmetro ca =espera 0.1315; %lbm/ft3, receber a cada chamadoconcentração inicial no reator T = 584.4115; temperatura • U,...,k0 são os parâmetros%R, adicionais que podemdo serreator passados à função V =através 200; de uma mascara %ft3, (devem volume dodeclarados reator estar na configuração x0 =do[ca T V]'; bloco S-function). Criando o arquivo com as equações: MATLAB Avançado - Simulink function [sys,x0] = reator(t,x,u,flag,U,A,DeltaH,ro,Cp,E,R,k0) % % Simula um reator CSTR (mistura perfeita) no qual se conduz uma % reação exotérmica (A->B), resfriado por serpentina % 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.1315; %lbm/ft3, concentração inicial no reator T = 584.4115; %R, temperatura do reator V = 200; %ft3, volume do reator x0 = [ca T V]'; continua... número de estados contínuos número de estados discretos function [sys,x0] número = dereator(t,x,u,flag,U,A,DeltaH,ro,Cp,E,R,k0) saídas % número de entradas % Simulamarcador um reatordeCSTR (mistura direta perfeita) no qual se conduz uma alimentação % reaçãotempo exotérmica (A->B), resfriado por serpentina de amostragem ] MATLAB Avançado - Simulink sys = [ % 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.1315; %lbm/ft3, concentração inicial no reator T = 584.4115; %R, temperatura do reator V = 200; %ft3, volume do reator x0 = [ca T V]'; continua... MATLAB Avançado - Simulink function [sys,x0] reator(t,x,u,flag,U,A,DeltaH,ro,Cp,E,R,k0) Estimativas iniciais= para o cálculo do sistema de equações diferenciais % (cálculo numérico) % Simula um reator CSTR (mistura perfeita) no qual se conduz uma % reação exotérmica (A->B), resfriado por serpentina % 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.1315; %lbm/ft3, concentração inicial no reator T = 584.4115; %R, temperatura do reator V = 200; %ft3, volume do reator x0 = [ca T V]'; continua... case 1 % Calcula as derivadas MATLAB Avançado - Simulink % Atualiza entradas cai = u(1); %lbm/ft3, concentração da alimentação=0.5; Fi = u(2); %ft3/hr, vazão de alimentação=40 F = u(3); %vazão de retirada=40 Tc = u(4); %R, temperatura do fluido de refrigeração=594.6 Ti = u(5); %R, temperatura da alimentação=530 % Cálculo das derivadas Ca = x(1); 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]; continua... case 1 % Calcula as derivadas MATLAB Avançado - Simulink % Atualiza entradas cai = u(1); %lbm/ft3, concentração da alimentação=0.5; Fi = u(2); %ft3/hr, vazão de alimentação=40 F = u(3); %vazão de retirada=40 Tc = u(4); %R, temperatura do fluido de refrigeração=594.6 Ti = u(5); %R, temperatura da alimentação=530 % Cálculo das derivadas Ca = x(1); 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]; continua... case 1 % Calcula as derivadas MATLAB Avançado - Simulink % Atualiza entradas cai = u(1); %lbm/ft3, concentração da alimentação=0.5; Fi = u(2); %ft3/hr, vazão de alimentação=40 F = u(3); %vazão de retirada=40 Tc = u(4); %R, temperatura do fluido de refrigeração=594.6 Ti = u(5); %R, temperatura da alimentação=530 % Cálculo das derivadas Ca = x(1); 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]; continua... case 1 % Calcula as derivadas MATLAB Avançado - Simulink % Atualiza entradas cai = u(1); %lbm/ft3, concentração da alimentação=0.5; Fi = u(2); %ft3/hr, vazão de alimentação=40 F = u(3); %vazão de retirada=40 Tc = u(4); %R, temperatura do fluido de refrigeração=594.6 Ti = u(5); %R, temperatura da alimentação=530 % Cálculo das derivadas Ca = x(1); 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]; continua... case 3 % Calcula as saídas sys = [x(1) x(2) x(3)]; MATLAB Avançado - Simulink otherwise sys = []; end MATLAB Avançado - Simulink Carlos André Vaz Junior [email protected] http://www.eq.ufrj.br/links/h2cin/carlosandre