Смекни!
smekni.com

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

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('потеря давления на диафрагме больше допустимой')