Смекни!
smekni.com

Методические указания к практическим занятиям 2004 (стр. 14 из 15)

else Memo1.Lines.Add('диаметр DCU_20 считать окончательным !');

if Re<= Regr

then

begin

Memo1.Lines.Add('необходима поправка к показаниям дифманометра которую');

Memo1.Lines.Add('опредилите по формуле f=((27,7*d*v)/(u*9.81))*k (м^3/ч)');

Memo1.Lines.Add('величину k найти по справочнику!');

Memo1.Lines.Add('или по фомуле g=((27,7*d*v)*k)');

end

else Memo1.Lines.Add('расчет закончен');

end;

end;

end;

В программе приняты следующие обозначения:

– верхний предел шкалы вторичного прибора;
– максимальный и минимальный заданный расход соответственно,
;
– ряд перепадов давления дифманометров, МПа;
– плотность среды,
;
– динамическая вязкость вещества,
;
– диаметр трубопровода ,
;
– допустимая потеря давления в диафрагме, МПа;
– температурные коэффициенты материала трубопровода и диафрагмы соответственно;
– число Рейнольдса;
– граничное число Рейнольдса;
– вспомогательная величина;
– величина для задания ветвящегося алгоритма (
– объемные расходы;
– массовые расходы);
– потеря давления на диафрагме, МПа;
– диаметр отверстия диафрагмы,
;
–коэффициент расхода диафрагмы;
– модуль диафрагмы;
– произведение модуля диафрагмы на ее коэффициент расхода;
– максимальный расчетный расход,
.

Приложение Г

Начало блок-схемы к приложению Г

Блок-схема алгоритма расчёта регулирующего органа


Продолжение блок-схемы к приложению Г

Блок-схема алгоритма расчёта регулирующего органа

Блок 01 – начало счета программы;

блок 02 – задание значение коэффициентов местных сопротивлений,

;

блок 03-04 – ввод и печать исходных данных;

блок 05 – задание начальных значений параметров цикла I и вспомогательной величины S, используемой при определении потерь на местных сопротивлениях;

блок 06-07 – вычисление в цикле величины S;

блок 08 – задание начального значения величины M для ветвящегося алгоритма расчета коэффициента пропускной способности клапана и потерь давления на клапане;

блок 09 – задание значений максимального расхода;

блок 10-14 – ветвящийся алгоритм расчета линейной скорости потока вещества (ж – жидкость; п – пар; г – газ);

блок 15 – определение числа Рейнольдса;

блок 16-20 – ветвящийся алгоритм расчета коэффициента трения;

блок 21-22 – вычисление потерь давления;

блок 23 – определение перепада давления на клапане PØ;

блок 24 – логический оператор; если PØ≤Ø – производится печать PØ, и расчет прекращается; при PØ>O расчет продолжается;

блок 25 – вывод на печать PØ;

блок 26 – конец расчета;

блок 27-31 – ветвящийся алгоритм расчета пропускной способности клапана;

блок 32 – печать результатов расчета;

блок 33 – проверка условий

; если условие не выполняется – переход на блок 34; если выполняется – конец расчета;

блок 34 – присвоение величине M значение 2;

блок 35 – задание нового значения

, равного минимальному расходу, переход на блок 10 и расчет повторяется до тех пор, пока не будет выполнено условие
.

Листинг 4

procedure TForm1.Button3Click(Sender: TObject);

var

i,k,m:integer;

f1,f2,d,u,v,l,g,h,p1,p2,s,w,t,re,l1,f,p3,p4,po,kv,kv1,pnk,pkk,u1,u2,u3,t1,k1:Real;

label

nachalo;

begin

if (EDIT1.TEXT ='')or (edit2.Text='')or (edit3.Text='') or (edit5.Text='')or (edit6.Text='')or

(edit7.Text='')or (edit8.Text='')or (edit9.Text='')or (edit10.Text='')or (edit11.Text='')

then MessageDlg('Введены не все параметры',mtError,[mbOk],0)

else begin

f1 := StrToFloat(edit1.Text);

f2 := StrToFloat(edit2.Text);

d:= StrToFloat(edit3.Text);

k:= StrToInt(ComboBox1.Text) ;

u:= StrToFloat(edit5.Text);

v:= StrToFloat(edit6.Text);

l:= StrToFloat(edit7.Text);

g:= StrToFloat(edit8.Text);

h:= StrToFloat(edit9.Text);

p1:= StrToFloat(edit10.Text);

p2:= StrToFloat(edit11.Text);

Button1.Enabled:=True;

memo1.Clear;

Memo1.Lines.Add(' ---Данные---');

Memo1.Lines.Add('максимальный расход (м^3/ч) f1= '+Edit1.Text);

Memo1.Lines.Add('минимальный расход (м^3/ч) f2= '+Edit2.Text);

Memo1.Lines.Add('диаметр трубопровода (м) d= '+Edit3.Text);

Memo1.Lines.Add('плотность вещества (кг*м^3) u= '+Edit5.Text);

Memo1.Lines.Add('вязкость вещества (па*с) v= '+Edit6.Text);

Memo1.Lines.Add('длинна трубопровода (м) l= '+Edit7.Text);

Memo1.Lines.Add('ускорение свободного падения (м/с^2) g= '+Edit8.Text);

Memo1.Lines.Add('высота вертекального участка трубопровода (м) h= '+Edit9.Text);

Memo1.Lines.Add('давление в начале трубопровода (МПа) p1= '+Edit10.Text);

Memo1.Lines.Add('давление в конце трубопровода (МПа) p2= '+Edit11.Text);

Memo1.Lines.Add(' ---Результаты расчета---');

for i:= 1 to n do

s:=s+x[i];

Memo1.Lines.Add('сумма коэффициентов местных соротивлений s = '+FloatTostr(s));

m:=1;

f:=f1;

nachalo:

case k of

1:w:=4*F/(3600*3.14* sqr(D));

2:w:=4*F/(3600*3.14* sqr(D)*U);

3: begin

t:= StrToFloat(InputBox('Ввод данных','введите t ','1'));

w:=4*F*(273+t)/(3600*3.14* sqr(D)*273);

end;

end;

Memo1.Lines.Add('скорость вещества (м/с), w = '+FloatToStr(w));

re:=w*d*u/v;

Memo1.Lines.Add('число Рейнольдса re= '+FloatToStr(re));

if re <=2320 then

l1:=64/re;

if re>=100000 then

l1:=0.303/sqr(log10(re)/2.3-0.9)

else l1:=0.316/Power(re,0.25);

Memo1.Lines.Add('коэффициент трения l1 = '+FloatToStr(l1));

p3:=(L1*L/D+S+1)*(U*W*W/2)/1000000;

Memo1.Lines.Add('потери давления в трубо проводе (МПа) p3 = '+FloatToStr(p3));

p4:=u*g*h/1000000;

Memo1.Lines.Add('потери давления на вертикальном участке (МПа) p3 = '+FloatToStr(p4));

po:=p1-p2-p3-p4;

Memo1.Lines.Add('перепад давления на клапане (МПа) po = '+FloatToStr(po));

if po<=0 then exit;

case k of

1:Begin

kv:=0.316*1.2*f*sqrt(u/1000/po);

kv1:=kv/1.2;

Memo1.Lines.Add('условная пропускная способность клапана kv = '+FloatToStr(kv));

Memo1.Lines.Add(' пропускная способность клапана в рабочих условиях - '+FloatToStr(kv1));

if m=2 then exit

else begin

m:=2;

f:=f2;

Goto nachalo;

end;

End;

2:Begin

pnk:=p1-p3-p4;

pkk:=p2;

Memo1.Lines.Add('давление пара перед клапаном (МПа),pnk = '+FloatToStr(pnk));

Memo1.Lines.Add('давление пара после клапана (МПа),pkk = '+FloatToStr(pkk));

if po<= 0.52*pnk

then

begin

u1:=StrToFloat(InputBox('Ввод U1','Введите плотность пара при pkk и рабочей t (кг/м^3),U1=','1'));

kv:=(f*sqrt(1/(u1*pnk)))/73.5*1.2;

kv1:=kv/1.2;

Memo1.Lines.Add('условная пропускная способность клапана kv = '+FloatToStr(kv));

Memo1.Lines.Add(' пропускная способность клапана в рабочих условиях - '+FloatToStr(kv1));

end

else

begin

u2:=StrToFloat(InputBox('Ввод U2','Введите плотность пара при pkk и рабочей t (кг/м^3),U2=','1'));

kv:=(f*sqrt(1/(u2*po)))/103*1.2;

kv1:=kv/1.2;

Memo1.Lines.Add('условная пропускная способность клапана kv = '+FloatToStr(kv));

Memo1.Lines.Add(' пропускная способность клапана в рабочих условиях - '+FloatToStr(kv1));

end;

if m=2 then exit

else begin

m:=2;

f:=f2;

Goto nachalo;

end;

end;

3: Begin

pnk:=p1-p3-p4;

pkk:=p2;

Memo1.Lines.Add('давление пара перед клапаном (МПа),pnk = '+FloatToStr(pnk));

Memo1.Lines.Add('давление пара после клапана (МПа),pkk = '+FloatToStr(pkk));

if po<= 0.52*pnk

then

begin

u3:=StrToFloat(InputBox('Ввод u3','Введите плотность u3=','1'));

t1:=StrToFloat(InputBox('Ввод t1 ','Введите температуру t1=','1'));

k1:=StrToFloat(InputBox('Ввод k1','Введите коэффициент k1=','1'));

kv:=(F*sqrt((U3*T1*K1)/(Po*PKK)))/5280*1.2;

kv1:=kv/1.2;

Memo1.Lines.Add('условная пропускная способность клапана kv = '+FloatToStr(kv));

Memo1.Lines.Add(' пропускная способность клапана в рабочих условиях - '+FloatToStr(kv1));

end

else

begin

u3:=StrToFloat(InputBox('Ввод u3','Введите плотность u3=','1'));

t1:=StrToFloat(InputBox('Ввод t1 ','Введите температуру t1=','1'));

k1:=StrToFloat(InputBox('Ввод k1','Введите коэффициент k1=','1'));

kv:=(F*sqrt(U3*T1*K1)/(2640*PNK))*1.2;

kv1:=kv/1.2;

Memo1.Lines.Add('условная пропускная способность клапана kv = '+FloatToStr(kv));

Memo1.Lines.Add(' пропускная способность клапана в рабочих условиях - '+FloatToStr(kv1));

end;