Vous êtes sur la page 1sur 5

clc;

clear;
disp ('-Desarrollo de Destilacion de Mezclas binarias-');
printf('Recomendaciones Para buen funcionamiento');
disp ('1) Si aparece un error inesperado al inicio o final, iniciese el programa nuevamente');
printf(' 2) Si el programa se pega al introducir la relacion de reflujo, se debe introducir un valor mayor
de este')
disp ('--------------------------------------------------------------------------------------------------------')
disp ('Seleccione la mezcla de destilacion');
disp ('1) Benceno - Tolueno');
disp ('2) Metanol - Water');
disp ('3) CS2 - Tetracloruro de Carbono');
sc = input ('Seleccione el numero de la mezcla: ');
if sc == 1
a1 = 4.01814; b1 = 1203.835; c1 = -53.226;
a2 = 4.23679; b2 = 1426.448; c2 = -45.957;
xl = ('Fraccion mol de benceno en el liquido)');
yl = ('Fraccion mol de benceno en el vapor');
tit = ('Equilibrio del sistema Benceno - Tolueno');
elseif sc == 2
a1 = 5.1973; b1 = 1574.99; c1 = -34.28;
a2 = 5.40221; b2 = 1838.675; c2 = -31.737;
xl = ('Fraccion mol de Metanol en el liquido)');
yl = ('Fraccion mol de Metanol en el vapor');
tit = ('Equilibrio del sistema Metanol - Agua');
elseif sc == 3
a1 = 4.0668; b1 = 1168.62; c1 = -31.61;
a2 = 4.019; b2 = 1219.58; c2 = -45.98;
xl = ('Fraccion mol de Etanol en el liquido');
yl = ('Fraccion mol de Etanol en el vapor');
tit = ('Equilibrio del sistema Etanol - Agua');
else
printf('Valor no valido-Por favor introduzca el numero de Mezcla');
end
initval=300;
A1 = a1; B1 = b1; C1 = c1;
A2 = a2; B2 = b2; C2 = c2;
x = 0:0.1:1.0;
for i=1:length(x)
function temp0=f(T), temp0=x(i).*(10.^(A1-(B1./(T+C1))))+(1-x(i)).*(10.^(A2-(B2/(T+C2))))-1.013;
endfunction
temp = fsolve(initval,f);
y(i)=x(i).*(10.^(A1-(B1./(temp+C1))))/(x(i).*(10.^(A1-(B1./(temp+C1))))+(1-x(i)).*(10.^(A2-(B2/
(temp+C2)))));
end
printf('x \t\t\t y \t\t\t')
for i=1:11
printf('\n %f \t %f ',x(i),y(i))
end
diagonal =(0:1);
plot(x,y,diagonal,diagonal)
mtlb_grid on;
mtlb_axis equal;
xlabel(xl);
ylabel(yl);
title(tit);
clear;
cs = input ('Intruduzca el mismo numero de mezcla elegido: ');

if cs == 1
function xypoint=distillation(xy1, xory)
if (xory == 2)
xypoint=0.000068+(2.370166*xy1)-(2.880267*(xy1^2))+(2.689467*(xy1^3))-
(1.612034*(xy1^4))+(0.432692*(xy1^5));
else
xypoint=-0.000053+(0.473581*xy1)-(0.276536*(xy1^2))+(1.749841*(xy1^3))-
(2.133077*(xy1^4))+(1.185847*(xy1^5));
end
endfunction
elseif cs == 2
function xypoint=distillation(xy1, xory)
if (xory == 2)
xypoint=0.0000021654+(1.8978779773*xy1)-(1.7944366293*(xy1^2))+(1.7126031845*(xy1^3))-
(1.3343692357*(xy1^4))+(0.8734031048*(xy1^5))-(0.154542857*(xy1^6));
else
xypoint=0.0000000450+(0.5259889986*xy1)+(0.2719247341*(xy1^2))+(0.0954240691*(xy1^3))
+(0.1104568853*(
xy1^4))-(0.0477386359*(xy1^5))+(0.0439433441*(xy1^6));
end
endfunction
elseif cs == 3
function xypoint=distillation(xy1, xory)
if (xory==2)
xypoint=0.0000009331+(2.0315450622*xy1)-(1.9530996352*(xy1^2))+(1.6139657074*(xy1^3))-
(1.0638499102*(xy1^4))+(0.4696314204*(xy1^5))-(0.0981944462*(xy1^6));
else
xypoint=0.0000004738+(0.4865803536*xy1)+(0.3028607250*(xy1^2))-
(0.1929426575*(xy1^3))+(0.7581636067*(xy1^4))-(0.7010833099*(xy1^5))
+(0.3464105409*(xy1^6));
end
endfunction
else
printf('Valor no valido!');
end
printf('\n-----A continuacion se resolveran los problemas de destilacion de la mezcla
seleccionada-----\n');
xf=input('Introduzca la fraccion mol de la alimentacion: ');
xd=input('Introduzca la fraccion mol en el destilado: ');
xb=input('Introduzca la fraccin mol en el fondo: ');
q=input('Introduzca el valor de q: ');
j=2;
ycoor(1)=xd;
printf('-------------Se calcula el numero minimo de Platos---------\n');
xcoor(j)=distillation(ycoor(j-1),1);
while xcoor(j)>xb
ycoor(j)=xcoor(j);
n=j;
j=j+1;
xcoor(j)=distillation(ycoor(j-1),1);
end
printf('El numero minimo de Platos es = %d\n',n);
xmin(1)=xd;
ymin(1)=xd;
for j=1:1:n
printf('fraccion x=%f y=%f Plato no.=%d\n',xcoor(j+1),ycoor(j),j);
xmin(2*j)=xcoor(j+1);xmin((2*j)+1)=xcoor(j+1);
ymin(2*j)=ycoor(j);ymin((2*j)+1)=xcoor(j+1);
end
plot(xmin,ymin,'m');
if q==1 then xmin(1)=xd;
ymin(1)=xd;
xcoorr=xf;
ycoorr=distillation(xcoorr,2);
elseif q==0 then
ycoorr=xf;
xcoorr=distillation(ycoorr,1);

else
if q>1 then xcoor=xf;
elseif q<0 then xcoorr=distillation (xb,1);
else xcoorr=distillation(xf,1);
end,
xcoorr=xcoorr+0.0001;
ycoorf=(((-1*q)/(1-q))*xcoorr)+(xf/(1-q));
ycoorr=distillation(xcoorr,2);
dcoorr=ycoorf-ycoorr;
while abs(dcoorr)> 0.0005
xcoorr=xcoorr+0.0001;
ycoorf=(((-1*q)/(1-q))*xcoorr)+(xf/(1-q));
ycoorr=distillation(xcoorr,2);
dcoorr=ycoorf-ycoorr;
end,
end
mr=(xd-ycoorr)/(xd-xcoorr);
bmin=ycoorr-(mr*xcoorr);
rmin=(xd/bmin)-1;
printf('El reflujo mnimo es = %f\n',rmin);
ref=input('Introduzca la relacion de reflujo: ');
if q==1 then xcoorr=xf;
else
delm=(xd/(ref+1))-(xf/(1-q));
delb=((-1*q)/(1-q))-(ref/(ref+1));
xcoorr=delm/delb;
end
ycoorr=((ref/(ref+1))*xcoorr)+(xd/(ref+1));
mb=(ycoorr-xb)/(xcoorr-xb);
bact=ycoorr- (mb*xcoorr);
j=1;ycoor(1)=xd;
j=j+1;
xcoor(j)=distillation(ycoor(j-1),1);
if xcoor(j)>= xcoorr then
ycoor(j)=((ref/(ref+1))*xcoor(j))+(xd/(ref+1));
fplate=j;
end
if xcoor(j) < xcoorr then ycoorr (j) = (mb*xcoor(j)+bact;
end
n=j;
while(xcoor(j)>xb)
j=j+1;
xcoor(j) = distillation (ycoor(j-1),1);
if xcoor(j) >= xcoorr then
ycoor(j) = ((ref/(ref+1))*xcoor(j))+(xd/(ref+1));
fplate=j;
end
if xcoor(j) < xcoorr then ycoor(j)=(mb*xcoor(j))+bact;
end
n=j;
end
printf('-------------Se calcula el plato de alimentacion-----------\n');
xact(1)=xd;
yact(1)=xd;
for j=1:1:n-1
printf('fraction x=%f y=%f plate no. = %d\n',xcoor(j+1),ycoor(j),j);
xact(2*j)=xcoor(j+1);xact((2*j)+1)=xcoor(j+1);
yact(2*j)=ycoor(j);yact((2*j)+1)=ycoor(j+1);
end
plot(xact,yact,'c');
printf('El alimento se introduce en el nmero de plato %d\n',fplate);
-Diseo en UNICIM.

Para la comprobacin del programa realizado, se utiliza el problema 21.2 del libro Operaciones
Unitarias en Ingeniera Qumica 7ma Edicin -Warren L. McCabe.

Vous aimerez peut-être aussi