Российский химико-технологический университет
им. Д.И.Менделеева
Кафедра кибернетики химико-технологических процессов
Отчет к лабораторной работе 3.2
«Расчет фазового равновесия в тройной смеси
ацетон-вода-этанол»
Выполнили: студенты гр. К-41
Головкина А. И. Григорьева Н. В. Эбергард А. В.
Проверил: д.т.н., проф.
Дудоров А.А.
Москва
2019
Цель работы
Отработать практические навыки методов расчёта равновесных концентраций компонентов многокомпонентной смеси (на примере смеси ацетон-этанол-вода) по методу Вильсона.
Исходные данные
Состав жидкой фазы
ха = 0,3 мол.доли
хэ = 0,2 мол.доли
хв = 0,5 мол.доли
Расчет коэффициентов активности в трехкомпонентной смеси по уравнению Вильсона
Расчет коэффициентов активности осуществляется по формулам:
lnγ1=1-ln(x1+x2Λ12+x3Λ13)-(x1/(x1+ x2Λ12+ x3Λ13)+ x2Λ21/( x1Λ21+x2+ x3Λ23)+ x3Λ31/( x1Λ31+ x2Λ32+x3))
lnγ2=1-ln(x1Λ21 + x2 + x3Λ23)-(x1Λ12/(x1 + x2Λ12 + x3Λ13) + x2/( x1Λ21 + x2 + x3Λ23) + x3Λ32/( x1Λ31+ x2Λ32+x3))
lnγ1=1-ln(x1Λ31 + x2Λ32 + x3)-(x1Λ13/(x1 + x2Λ12 + x3Λ13) + x2Λ23/( x1Λ21 + x2 + x3Λ23) +x3/( x1Λ31+ x2Λ32+x3))
Давление компонентов находится по уравнению Риделя:
pio = exp(C1i + C2i/T+ C3i·T + C3iln(T))
Λij = vj/vi·exp(-(λij-λii)/RT)
Полученные значения:

Вывод: при заданном составе жидкой фазы по модели Вильсона были рассчитаны состав паровой фазы и температура кипения системы.
Приложение 1
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Button1: TButton;
Edit4: TEdit;
Label4: TLabel;
Label5: TLabel;
Edit5: TEdit;
Label6: TLabel;
Edit6: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
dla12,dla21,dla13,dla31,dla23,dla32,v1,v2,v3,r,t0,c11,c12,c13,c14,c21,c22,c23,c24,c31,c32,c33,c34,p,x1,x2,x3,eps,fi:real;
implementation
{$R *.dfm}
procedure temp(t:real;var y1,y2,y3:real);
var la12,la21,la13,la31,la23,la32,gamma1,gamma2,gamma3,p1,p2,p3:real;
begin
la12:=(v2/v1)*exp(-dla12/(r*t));
la21:=(v1/v2)*exp(-dla21/(r*t));
la13:=(v3/v1)*exp(-dla13/(r*t));
la31:=(v1/v3)*exp(-dla31/(r*t));
la23:=(v3/v2)*exp(-dla23/(r*t));
la32:=(v2/v3)*exp(-dla32/(r*t));
p1:=exp(c11+c12/t+c13*t+c14*ln(t));
p2:=exp(c21+c22/t+c23*t+c24*ln(t));
p3:=exp(c31+c32/t+c33*t+c34*ln(t));
gamma1:=exp(1-ln(x1+x2*la12+x3*la13)-x1/(x1+x2*la12+x3*la13)-x2*la21/(x1*la21+x2+x3*la23)-x3*la31/(x1*la31+x2*la32+x3));
gamma2:=exp(1-ln(x1*la21+x2+x3*la23)-x1*la12/(x1+x2*la12+x3*la13)-x2/(x1*la21+x2+x3*la23)-x3*la32/(x1*la31+x2*la32+x3));
gamma3:=exp(1-ln(x1*la31+x2*la32+x3)-x1*la13/(x1+x2*la12+x3*la13)-x2*la23/(x1*la21+x2+x3*la23)-x3/(x1*la31+x2*la32+x3));
y1:=gamma1*p1*x1/p;
y2:=gamma2*p2*x2/p;
y3:=gamma3*p3*x3/p;
end;
procedure TForm1.Button1Click(Sender: TObject);
var t,t1,t2,la12,la21,la13,la31,la23,la32,gamma1,gamma2,gamma3,p1,p2,p3,y1,y2,y3,y1t1,y2t1,y3t1,y1t2,y2t2,y3t2,a,b:real; i:integer;
begin
eps:=0.01;
fi:=(1+sqrt(5))/2;
dla12:=-226.89; dla21:=704.87; dla13:=180.31;
dla31:=1722.1; dla23:=99.76; dla32:=1074.66;
v1:=104; v2:=49.6; v3:=18.7;
r:=1.987; t0:=329.1; p:=1;
x1:=StrtoFloat(Edit1.Text);
x2:=StrtoFloat(Edit5.Text);
x3:=1-x1-x2;
c11:=34.61307; c12:=-4873.446; c13:=-0.000000003249502; c14:=-3.422;
c21:=50.70924; c22:=-6784.604; c23:=-0.000000001042392; c24:=-5.36;
c31:=30.79802; c32:=-5966.069; c33:=-0.000000001030134; c34:=-2.5;
t:=t0;
a:=t0;
b:=373;
la12:=(v2/v1)*exp(-dla12/(r*t));
la21:=(v1/v2)*exp(-dla21/(r*t));
la13:=(v3/v1)*exp(-dla13/(r*t));
la31:=(v1/v3)*exp(-dla31/(r*t));
la23:=(v3/v2)*exp(-dla23/(r*t));
la32:=(v2/v3)*exp(-dla32/(r*t));
p1:=exp(c11+c12/t+c13*t+c14*ln(t));
p2:=exp(c21+c22/t+c23*t+c24*ln(t));
p3:=exp(c31+c32/t+c33*t+c34*ln(t));
gamma1:=exp(1-ln(x1+x2*la12+x3*la13)-x1/(x1+x2*la12+x3*la13)-x2*la21/(x1*la21+x2+x3*la23)-x3*la31/(x1*la31+x2*la32+x3));
gamma2:=exp(1-ln(x1*la21+x2+x3*la23)-x1*la12/(x1+x2*la12+x3*la13)-x2/(x1*la21+x2+x3*la23)-x3*la32/(x1*la31+x2*la32+x3));
gamma3:=exp(1-ln(x1*la31+x2*la32+x3)-x1*la13/(x1+x2*la12+x3*la13)-x2*la23/(x1*la21+x2+x3*la23)-x3/(x1*la31+x2*la32+x3));
y1:=gamma1*p1*x1/p;
y2:=gamma2*p2*x2/p;
y3:=gamma3*p3*x3/p;
t1:=b-(b-a)/fi;
t2:=a+(b-a)/fi;
while abs(y1+y2+y3-1)>=eps do begin
temp(t1,y1t1,y2t1,y3t1);
temp(t2,y1t2,y2t2,y3t2);
if abs(y1t1+y2t1+y3t1-1)>abs(y1t2+y2t2+y3t2-1) then
begin
t:=t2;
a:=t1;
t1:=t2;
t2:=a+(b-a)/fi;
y1:=y1t2;
y2:=y2t2;
y3:=y3t2;
end
else begin
t:=t1;
b:=t2;
t2:=t1;
t1:=b-(b-a)/fi;
y1:=y1t1;
y2:=y2t1;
y3:=y3t1;
end;
end;
Edit2.Text:=FloatToStrf(y1, ffgeneral, 4, 2);
Edit3.Text:=FloatToStrf(y2, ffgeneral, 4, 2);
Edit6.Text:=FloatToStrf(y3, ffgeneral, 4, 2);
Edit4.Text:=FloatToStrf(t-273, ffgeneral, 4, 2);
end;
end.