Memo1.Lines.Add('Максимальная величина сопротивления rt2 = '+ FloatToStr(rt2)) ;
Memo1.Lines.Add('Величена питающего напряжения u = '+ FloatToStr(u)) ;
Memo1.Lines.Add('Допустимая сила тока i = '+ FloatToStr(i)) ;
Memo1.Lines.Add('Постоянная сопротивления r2 = '+ FloatToStr(r2)) ;
Memo1.Lines.Add('Постоянная сопротивления r3 = '+ FloatToStr(r3)) ;
Memo1.Lines.Add('Постоянная сопротивления r4 = '+ FloatToStr(r4)) ;
Memo1.Lines.Add('Сопротивление подгонки соединительных проводов rl = '+ FloatToStr(rl)) ;
Memo1.Lines.Add('Сопротивление подгонки соединительных проводов rp = '+ FloatToStr(rp)) ;
Memo1.Lines.Add('Сопротивление подгонки соединительных проводов rh = '+ FloatToStr(rh)) ;
Memo1.Lines.Add(' ---Результаты расчета---') ;
Memo1.Lines.Add('Сопротивление начала шкалы R1 = '+ FloatToStr(r1)+' ом');
Memo1.Lines.Add('Сопротивление конца шкалы R = '+ FloatToStr(r)+' ом' );
Memo1.Lines.Add('Сопротивление ограничения тока RD = '+ FloatToStr(rd)+' ом') ;
Button1.Enabled:=True;
end;
end;
В программе приняты следующие обозначения:
- минимальная и максимальная величины термосопротивления, Ом; - величина питающего напряжения, В; - допустимая сила тока, проходящего через термопреобразователь сопротивления, А; - постоянные сопротивления измерительной схемы моста, Ом; - сопротивления начала и конца шкалы соответственно, Ом; - сопротивление ограничения тока, Ом.Приложение Б
Листинг 2
procedure TForm1.Button3Click(Sender: TObject);
var
e1,e2,i1,i2,l,u1,rp,rh,e3,e4,t3,t4,u2,ROK,RNO,R1,RNQ,RO,R,RD:Real;
begin
//Проверка на ввод всех данных
if (Edit1.Text='')or (Edit2.Text='')or (Edit3.Text='') or(Edit4.Text='')or
(Edit5.Text='')or (Edit6.Text='')or (Edit7.Text='')or (Edit8.Text='')or
(Edit9.Text='')or (Edit10.Text='')or (Edit11.Text='')or (Edit12.Text='')or
(Edit13.Text='')
then MessageDlg('Введены не все данные',mtError,[mbOk],0)
else begin//Приобразование в числовой вид
e1 := StrToFloat(Edit1.Text);
e2 := StrToFloat(Edit2.Text);
i1 := StrToFloat(Edit3.Text);
i2 := StrToFloat(Edit4.Text) ;
l := StrToFloat(Edit5.Text);
u1 := StrToFloat(Edit6.Text);
rp := StrToFloat(Edit7.Text);
rh := StrToFloat(Edit8.Text);
e3 := StrToFloat(Edit9.Text);
e4 := StrToFloat(Edit10.Text);
t3 := StrToFloat(Edit11.Text);
t4 := StrToFloat(Edit12.Text);
u2 := StrToFloat(Edit13.Text);
//основные вычисления
ROK:=(e4 -e3)/(l*(t4-t3)*i1);
RNO:=(e1+i2*ROK)/i2;
R1:=u1/i1;
RNQ:=(i1*R1-e2)/i2;
RO:=(e2-e1)/i2;
R:=(RO*rp*rh)/(rp*rh-rp*RO-rh*RO);
RD:=(u2/(i1+i2));
//Вывод информации
Memo1.Lines.Add(' ---Данные---');
Memo1.Lines.Add('Минималиая величина т.э.д.с термопары (на приборе) e1 = '+ Edit1.Text) ;
Memo1.Lines.Add('Макcимальная величина т.э.д.с термопары (на приборе) e2 = '+ Edit2.Text) ;
Memo1.Lines.Add('Сила тока в ветвях моста i1 = '+ Edit3.Text) ;
Memo1.Lines.Add('Сила тока в ветвях моста i2 = '+ Edit4.Text) ;
Memo1.Lines.Add('Темпратурный коэффициент сопр. медного провода l = '+ Edit5.Text) ;
Memo1.Lines.Add('Напряжение на выходе ИПС u1 = '+ Edit6.Text) ;
Memo1.Lines.Add('Сопротивление реохорда rp = '+ Edit7.Text) ;
Memo1.Lines.Add('Сопротивление шунта rh = '+ Edit8.Text) ;
Memo1.Lines.Add('Минималиая величина т.э.д.с термопары (для спаев) e3 = '+ Edit9.Text) ;
Memo1.Lines.Add('Максимальная величина т.э.д.с термопары (для спаев) e4 = '+ Edit10.Text) ;
Memo1.Lines.Add('Нижний придел изменения темпераруры спаев t3 = '+ Edit11.Text) ;
Memo1.Lines.Add('Верхний придел изменения темпераруры спаев t4 = '+ Edit12.Text) ;
Memo1.Lines.Add('Напряжение ИПС u2 = '+ Edit13.Text) ;
Memo1.Lines.Add(' ---Результаты расчета---') ;
Memo1.Lines.Add('Сопротивление начала шкалы RNO = '+FloatToStr(RNO)+' ом') ;
Memo1.Lines.Add('Сопротивление конца шкалы RNQ = '+FloatToStr(RNQ)+' ом') ;
Memo1.Lines.Add('Сопротивление подгонки реохорда R = '+FloatToStr(R)+' ом') ;
memo1.Lines.Add('rd ='+floatToStr(rd));
Button1.Enabled:=True;
end;
end;
В программе приняты обозначения:
– минимальные и максимальные величины т.э.д.с.термопары, соответствующие диапазону шкалы прибора, В; – силы токов в ветвях моста, А; – температурный коэффициент сопротивления медного провода, ; – напряжение на выходе ИПС, В; – сопротивление реохорда и шунта реохорда соответственно, Ом; – минимальная и максимальная величины т.э.д.с.термопары, соответствующие диапазону изменения температуры холодных спаев, В; – пределы изменения температуры холодных спаев, нижний и верхний соответственно, ; – величина напряжения ИПС, В.Приложение В
Начало блок-схемы к приложению В
Блок-схема алгоритма расчёта дифрагмы для измерения расхода вещества
Продолжение блок-схемы к приложению В
Блок-схема алгоритма расчёта дифрагмы для измерения расхода вещества
Блок 01 – начало счета программы;
блоки 02-03 – ввод и печать исходных данных;
блоки 04-05 – расчет числа Рейнольдса и вспомогательной величины С;
блок 09 – начало цикла по I (определение
) методом перебора задаваемых перепадов давления;блок 10 – вычисление величины
;блок 11-26 – определение коэффициента расхода диафрагмы в зависимости от диаметра трубопровода;
блок 27 – расчет модуля диафрагмы
блок 28 – расчет граничного числа Рейнольдса;
блок 29 – расчет диаметра отверстия диафрагмы;
блок 30-32 – определение максимального расхода
;блок 33 – вычисление потери давления на диафрагме;
блок 34 – печать заданного перепада давления на диафрагме;
блок 35 – печать результатов расчета;
блок 36-37 – конец цикла по I;
блок 38 – конец расчета.
Листинг 3
procedure TForm1.Button3Click(Sender: TObject);
var
om,i:integer;
f1,f2,u,v,kt,d,kt1,qpr,g1,g2,p1,d1,re,c,alm,al,
am,regr,dcu,QPRT,ptd,dcu1:Real;
begin
if (EDIT1.TEXT ='')or (edit2.Text='')or (edit3.Text='') or(edit4.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);
u := StrToFloat(edit4.Text) ;
v := StrToFloat(edit5.Text);
kt := StrToFloat(edit6.Text);
qpr := StrToFloat(edit7.Text);
g1 := StrToFloat(edit8.Text);
g2 := StrToFloat(edit9.Text);
p1 := StrToFloat(edit10.Text);
kt1 := StrToFloat(edit11.Text);
om := StrToInt(Combobox1.Text);
Button1.Enabled:=True;
memo1.Clear;
if om = 1 then
begin
Memo1.Lines.Add(' ---Данные---');
Memo1.Lines.Add('максимальный расход (м^3/ч) ='+ Edit1.Text);
Memo1.Lines.Add('минимальный расход (м^3/ч) ='+ Edit2.Text);
end
else
Begin
Memo1.Lines.Add('максимальный расход (м^3/ч) ='+ Edit8.Text);
Memo1.Lines.Add('минимальный расход (м^3/ч) ='+ Edit9.Text);
end;
Memo1.Lines.Add('диаметр трубопровода (мм) ='+ Edit3.Text);
Memo1.Lines.Add('потность вещества (кг/м^3) ='+ Edit4.Text);
Memo1.Lines.Add('вязкость вещества (па*с) ='+ Edit5.Text);
Memo1.Lines.Add('температурный коффициент kt ='+ Edit6.Text);
Memo1.Lines.Add('верхний придел шкалы вторичного прибора ='+ Edit7.Text);
Memo1.Lines.Add('допустимая потеря давления на диафрагме (МПа) ='+ Edit10.Text);
Memo1.Lines.Add(' ---Результаты расчета---');
if om =1 then
begin
D1:=d*kt;
re:=(0.354*f2*u)/(d1*v);
c:=(qpr*sqrt(u))/(4*(d1*d1));
end
else
begin
d1:=d*kt;
re:=(0.354*g2)/(d1*v);
c:=qpr/(4*(d1*d1)*sqrt(u));
end;
Memo1.Lines.Add('число Рейннольдса re ='+ FloatToStr(re));
Memo1.Lines.Add('вспомогатильная величина c ='+ FloatToStr(c));
For i:= 1 to n do
begin
Memo1.Lines.Add('*** *** *** ***') ;
Memo1.Lines.Add('перепад давления на диофрагме (Мпа) ='+FloatToStr(x[i]));
Alm:=c/sqrt(x[i]);
Memo1.Lines.Add('вспомогательная величина Alm ='+FloatToStr(alm));
if d<=50 then
begin
Memo1.Lines.Add('уточните диаметр D');
exit;
end;
Case round (d) of
70: al:=0.4072*sqr(alm)+0.1478*alm+0.6023;
50..69:al:=0.1597+0.3591*sqr(alm)*alm+0.6045;
71..75: al:=0.1597+0.3591*sqr(alm)*alm+0.6045;
80: al:=0.4072*sqr(alm)+0.1478*alm+0.6023;
76..79: al:=0.4198*sqr(alm)+0.1404*Alm+0.6016;
81.. 125: al:=0.4198*sqr(alm)+0.1404*Alm+0.6016;
126..175 : al:=0.411*sqr(alm)+0.1453*Alm+0.5983;
176..225 :al:=0.4134*sqr(alm)+0.1433*Alm+0.5962;
226..275: al:=0.4268*sqr(alm)+0.1344*Alm+0.5953;
300: al:=0.1418*sqr(alm)+0.4384*Alm+0.5509;
else begin
Memo1.Lines.Add('уточните диаметр D');
exit;
end;
end;
Memo1.Lines.Add('коэффициент расхода диафрагмы Al='+FloatToStr(Al));
Am:=Alm/Al;
Memo1.Lines.Add('модуль диафрагмы am='+FloatToStr(Am));
Regr:=102270 *Power(am,0.598)* exp(1.993*am);
Memo1.Lines.Add('граничное число Рейнольдса Regr='+FloatToStr(Regr));
Dcu:=D1*sqrt(am);
Memo1.Lines.Add('диаметр отверстия диофрагмы Dcu ='+FloatToStr(Dcu));
om:= StrToInt(InputBox('Ввод данных','введите om (1 или 2) ,перепад давления ='+FloatToStr(x[i]),'1'));
if om=1
then QPRT:=4*AL*Sqr(Dcu)*Sqrt(x[i]/u)
else QPRT:=4*AL*Sqr(Dcu)*Sqrt(x[i]*u);
Memo1.Lines.Add('максимальный расчетный расход QPRT= '+FloatToStr(QPRT));
DCU1:=Dcu/kt1;
Memo1.Lines.Add('диаметр отверстия при 20 градусах dcu20='+FloatToStr(dcu1));
ptd:=(1-1.05*am*x[i])*Power(10,-4);
Memo1.Lines.Add('потеря давления на диофрагме ptd= '+FloatToStr(ptd));
If Ptd >= P1 then Memo1.Lines.Add('потеря давления на диафрагме больше допустимой')