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;