• Non ci sono risultati.

Esercitazione 4 - Soluzioni

N/A
N/A
Protected

Academic year: 2021

Condividi "Esercitazione 4 - Soluzioni"

Copied!
16
0
0

Testo completo

(1)

Esercitazione 4 - Soluzioni

Corso di Strumentazione e Controllo di impianti chimici Prof. Davide Manca

PSE-Lab

(2)

Problema

Lab

𝐹𝐹𝑖𝑖𝑖𝑖 = 𝐹𝐹𝑜𝑜𝑜𝑜𝑜𝑜 = 10 𝑚𝑚3/𝑚𝑚𝑚𝑚𝑚𝑚 𝐿𝐿0 = 0.5 𝑚𝑚

𝐷𝐷 = 6 𝑚𝑚

𝑑𝑑𝑚𝑚

𝑑𝑑𝑜𝑜

= ̇ 𝑚𝑚

𝑖𝑖𝑖𝑖

− 𝑚𝑚

𝑜𝑜𝑜𝑜𝑜𝑜

̇

Ese 4 – Serbatoio di stoccaggio

Si caratterizzi mediante il solo bilancio di massa il seguente problema relativo al riempimento di un serbatoio di stoccaggio.

𝐻𝐻 = 4 𝑚𝑚

𝐿𝐿0 𝐹𝐹𝑖𝑖𝑖𝑖

𝐹𝐹𝑜𝑜𝑜𝑜𝑜𝑜

𝐻𝐻 𝐷𝐷

̇𝑚𝑚 = 𝜌𝜌𝐹𝐹 𝑚𝑚 = 𝜌𝜌𝜌𝜌 = 𝜌𝜌𝐴𝐴𝐴

𝜌𝜌𝐴𝐴𝜌𝜌𝐴

𝜌𝜌𝑑𝑑 = 𝜌𝜌𝐹𝐹

𝑖𝑖𝑖𝑖

− 𝜌𝜌𝐹𝐹

𝑜𝑜𝑜𝑜𝑜𝑜

𝐴𝐴𝜌𝜌𝐴

𝜌𝜌𝑑𝑑 = 𝐹𝐹

𝑖𝑖𝑖𝑖

− 𝐹𝐹

𝑜𝑜𝑜𝑜𝑜𝑜

𝐴𝐴 Bilancio Materiale:

(3)

Lab

© PSE-Lab – Corso di SECDIC – Tutorial di Matlab

Problema Base

function DinamicaSerbatoioMatStat % E4 problema base clc

clear all close all

global A Fin Fout

% Dati D = 6; %m

H_vessel = 4; %m A = pi*D^2/4; %m2 Fin = 10; % [m3/min]

Fout = 10; % [m3/min]

h0 = 0.5; %m condiz iniziale tspan = [0:0.05:20];

% Comando

[t,H] = ode113(@eqLivello,tspan,h0);

.. Continua nella diapositiva successiva

(4)

Problema Base

Lab

Grafico figure(1)

plot(t,H,'b','LineWidth',1.3) legend('Stationary condition') set(gca,'fontsize',11)

title('Stationary Condition: Fin = Fout','FontSize',18) xlabel('Time [min]','FontSize',18)

ylabel('Level [m]','FontSize',18)

end % Chiudo la function DinamicaSerbatoioMatStat che

contiene il comando per la risoluzione della ODE, i dati, e le istruzioni per il grafico.

(5)

Lab

© PSE-Lab – Corso di SECDIC – Tutorial di Matlab

Problema Base

function dh = eqLivello(t,h) % function che contiene l’equazione che descrive la dinamica del livello

% Caso Base

global A Fin Fout

dh(1,:) = (Fin - Fout)/A;

end % Chiudo la function

0 5 10 15 20

Time [min]

-0.5 0 0.5 1 1.5

Level [m]

Stationary Condition: Fin = Fout

Il modello è corretto : se 𝑭𝑭

𝒊𝒊𝒊𝒊

= 𝑭𝑭

𝒐𝒐𝒐𝒐𝒐𝒐

il livello rimane COSTANTE.

(6)

Problema 1

Lab

Riduzione della portata uscente 𝐹𝐹𝑜𝑜𝑜𝑜𝑜𝑜 = 0 𝑚𝑚3/𝑚𝑚𝑚𝑚𝑚𝑚. NB. Ci aspettiamo che il livello aumenti.

Azioni suggerite:Usa la funzione min per correggere il risultato. Il livello non deve superare l’altezza del serbatoio. Usa un ciclo if per implementare il cambiamento delle condizioni.

function DinamicaSerbatoioMat1 % E4 Caso 1 clc

clear all close all

global A Fin

% Dati D = 6; %m

H_vessel = 4; %m A = pi*D^2/4; %m2 Fin = 10; %m3/min h0 = 0.5; %m

tspan = [0:0.05:20];

% Comando

[t,H] = ode113(@eqLivello,tspan,h0);

(7)

Lab

© PSE-Lab – Corso di SECDIC – Tutorial di Matlab

Problema 1

figure(1) hold on

plot(t,H,'b','LineWidth',1.3) % soluzione non corretta (blu) H_max = H_vessel; % altezza del serbatoio

% Impongo un limite fisico al livello (che non deve superare l'altezza del serbatoio) correggendo il vettore soluzione

H1 = min(H,H_max); % H1 è uguale al minimo tra Hmax e H for i = 1:length(H)

MaxHeight(i) = H_vessel; % construisco una linea che rappresenti il max livello sul grafico

end % chiudo il ciclo for

plot(t,H1,'r','LineWidth',1.3) % soluzione corretta (rossa) plot(t,MaxHeight,'k--')

legend('No physical limit','Physical limit','Vessel Height') set(gca,'fontsize',11)

title('Case 1 - Fout reduction','FontSize',18) xlabel('Time [min]','FontSize',18)

ylabel('Level [m]','FontSize',18) end

(8)

Problema 1

Lab

function dh = eqLivello(t,h)

% Caso1

global Fin A

if t <= 5 % Scelgo un certo istante a partire dal quale la portata uscente non è più uguale a quella entrante

Fout = 10;

else

Fout = 0;

end

dh(1,:) = (Fin - Fout)/A;

end

0 5 10 15 20

Time [min]

0 1 2 3 4 5 6

Level [m]

Case 1 - Fout reduction

No physical limit Physical limit Vessel Height

Riduzione 𝐹𝐹𝑜𝑜𝑜𝑜𝑜𝑜 Limite massimo del livello

(9)

Lab

© PSE-Lab – Corso di SECDIC – Tutorial di Matlab

Problema 2

Riduzione della portata entrante 𝐹𝐹𝑖𝑖𝑖𝑖 = 5 𝑚𝑚3/𝑚𝑚𝑚𝑚𝑚𝑚. NB. Ci aspettiamo che il livello diminuisca.

Azioni suggerite:Usa la funzione max per correggere il risultato. Il livello non deve superare il limite fisico cioè zero. Usa un ciclo if per implementare il cambiamento delle condizioni.

function DinamicaSerbatoioMat2 % E4 Caso 2 clc

clear all close all

global A Fout1

% Dati D = 6; %m

H_vessel = 4; %m A = pi*D^2/4; %m2 Fout1 = 10; %m3/min h0 = 0.5; %m

tspan = [0:0.05:20];

% Comando

[t,H2] = ode113(@eqLivello2,tspan,h0);

(10)

Problema 2

Lab

% Impongo un limite fisico al livello (che non può diventare negativo)

H2 = max(0,H2); % H2 non può mai essere negativo; al massimo 0

for i = 1:length(H2) MinHeight(i) = 0.;

end

figure(2) hold on

plot(t,H2,'b','LineWidth',1.3) plot(t,MinHeight,'k--')

set(gca,'fontsize',11)

title('Case 2 - Fin reduction','FontSize',18) xlabel('Time [min]','FontSize',18)

ylabel('Level [m]','FontSize',18) xlim ([0 8])

ylim([-0.2 0.8]) end

(11)

0 1 2 3 4 5 6 7 8

Time [min]

-0.2 0 0.2 0.4 0.6 0.8

Level [m]

Case 2 - Fin reduction

Level Physical limit

Lab

© PSE-Lab – Corso di SECDIC – Tutorial di Matlab

Problema 2

Riduzione 𝐹𝐹𝑖𝑖𝑖𝑖 Limite fisico del livello

function dh2 = eqLivello2(t,h) global A Fout1

if t <= 2 % Scelgo un certo istante a partire dal quale la portata entrante non è più uguale a quella uscente

Fin1 = 10;

else

Fin1 = 5;

end

dh2(1,:) = (Fin1 - Fout1)/A;

end

(12)

Problema 3

Lab

Ripetere l’esercizio per un serbatoio di D = 22 m e H = 8 m.

Azioni suggerite:Usa un ciclo for per confrontare la dinamica dei due serbatoi di diversa dimensione.

function DinamicaSerbatoioConfronto clc

clear all close all

global A Fin Fout1 Fin = 10; % [m3/min]

Fout1 = 10; % [m3/min]

h0 = 0.5; %m D = [6 22]; %m

H_vessel = [4 8]; %m for indiceCaso = 1:2

d = D(indiceCaso); % in questo modo considero un valore per volta di diametro e altezza

h_vessel = H_vessel(indiceCaso);

A = pi*d^2/4; %m2

(13)

Lab

© PSE-Lab – Corso di SECDIC – Tutorial di Matlab

Problema 3

tspan = [0:0.05:360];

% Caso 1

[t,H] = ode113(@eqLivello,tspan,h0);

H_max = h_vessel;

H1 = min(H,H_max);

figure(1) hold on

if indiceCaso == 1

p1 = plot(t,H1,'b','LineWidth',1.3); % limite else

p2 = plot(t,H1,'m','LineWidth',1.3);

end

legend('Caso 1','Caso2') set(gca,'fontsize',11)

title('Case_1 - F_o_u_t reduction','FontSize',18) xlabel('Time [min]','FontSize',18)

ylabel('Level [m]','FontSize',18) xlim([0 360])

ylim([0 10])

(14)

Problema 3

Lab

% Caso 2

[t,H2] = ode113(@eqLivello2,tspan,h0);

H2 = max(0,H2);

figure(2) hold on

if indiceCaso == 1

p1 = plot(t,H2,'b','LineWidth',1.3);

else

p2 = plot(t,H2,'m','LineWidth',1.3);

legend([p1 p2],'Caso1','Caso2') end % Chiudo il ciclo if

set(gca,'fontsize',11)

title('Case_2 - F_i_n reduction','FontSize',18) xlabel('Time [min]','FontSize',18)

ylabel('Level [m]','FontSize',18) ylim([-0.05 0.6])

xlim ([0 350])

end % Chiudo il ciclo for end % Chiudo la function

(15)

Lab

© PSE-Lab – Corso di SECDIC – Tutorial di Matlab

Problema 3

function dh = eqLivello(t,h)

% Caso1

global A Fin if t <= 50

Fout = 10;

else

Fout = 0;

end

dh(1,:) = (Fin - Fout)/A;

end

function dh2 = eqLivello2(t,h)

% Caso 2

global A Fout1 if t<= 50

Fin1 = 10;

else

Fin1 = 5;

end

dh2(1,:) = (Fin1 - Fout1)/A;

end

NB. Le tre functions sono nello stesso script

(16)

Lab

Soluzione

0 50 100 150 200 250 300 350

Time [min]

0 2 4 6 8 10

Level [m]

Case

1

- F o u t reduction

Caso 1 Caso2

0 50 100 150 200 250 300 350

Time [min]

0 0.1 0.2 0.3 0.4 0.5 0.6

Level [m]

Case 2

- F

i n reduction

Caso1 Caso2

La dinamica di un serbatoio di dimensioni maggiori è più lenta.

Riferimenti

Documenti correlati

• La prospettiva detta della “efficienza interna”, studia i processi aziendali con l’obiettivo di individuare quelli core per la soddisfazione del cliente e dell’azionista.

Dato che la funzione risulta continua nel suo dominio, dal Teorema dei valori intermedi possiamo subito concludere che la funzione ammette almeno uno zero, precisamente

// post: ritorna il numero di S-nodi , ovvero il numero di nodi // dell'albero che sono radici di un sottoalbero con piu' // nodi sinistri (cioe' nodi che sono

Post fere L annos Hadrianus imperator voluit Britanniam 19.. Alterum vallum a Severo imperatore aedificatum est, quia propter magna et crudelia proelia pars insulae capta erat

Si integri numericamente il sistema ODE entro un opportuno intervallo di tempo e si imponga il disturbo per ottenere una risposta del secondo ordine in uscita alsecondo reattore.

calore di reazione e il calore asportato per scambio termico;  rappresenta l’energia di attivazione della reazione; h il termine esponenziale della cinetica di reazione. Tutte

Metodo esplicito e implicito lineare multistep PECE di Adams-Bashforth-Moulton Utilizza un singolo step per calcolare una soluzione di ordine da 1 a 13.. Usa una formula di ordine

Caratterizzare analiticamente il comportamento dinamico del seguente serbatoio che si svuota sotto l’effetto della forza di gravità attraverso un foro circolare sulla