МГТУ им. Н.Э. Баумана
Факультет “Энергомашиностроение”
Кафедра Э5
ДОМАШНЕЕ ЗАДАНИЕ
по курсу “Пневматические системы”
ЭТАП 1
Схема 4
Вариант 2
Студент: Уразбахтин Т.Ф.
Группа: Э5-91
Преподаватель: Чернышёв А.В.
Москва
2014 г
Введение
Неотъемлемой частью большинства современных сложных технических систем наземного применения и летательных аппаратов является одна или несколько пневматических систем. Чаще всего пневматические системы являются составной частью более общей пневмомеханической или пневмогидравлической системы. Примером таких систем может служить система наддува топливных баков. В летательных аппаратах пневмосистемы, прежде всего, применяются в системах ориентации и стабилизации, кондиционирования и пожаротушения. В наземных комплексах пневмосистемы применяются практически во всех областях техники, например, системы искусственного дыхания в медицине, прецизионные системы подготовки газовых смесей в лазерной технологии, а также системы воздухоснабжения машиностроительных, горнодобывающих и горнообогатительных предприятий. Диапазон применения пневмосистем крайне широк, а их рабочие характеристики оказывают существенное влияние на работоспособность, энергоемкость и надежность комплексов, в состав которых они входят. Поэтому современный инженер, специализирующийся в области разработки и эксплуатации пневматических систем, должен владеть основами расчета процессов, протекающих в них.
Расчетная схема.
Рис. 1
Этап1
На первом этапе необходимо произвести расчет ПС при следующих допущениях:
При моделировании процессов, протекающих в системе, за рабочее тело принят идеальный газ, подчиняющийся термическому уравнению состояния;
Изменение состояния рабочего тела в полостях системы квазистатическое;
Теплообмен между рабочим телом и корпусными элементами системы отсутствует;
Процесс истечения рабочего тела из полостей системы через условные сопротивления принимается одномерным, установившимся, протекающим без трения и теплообмена. Потери при истечении рабочего тела, обусловленные принятыми допущениями, учитываются коэффициентами расхода.
Математическая модель
Исходные данные:
Начальные условия:
t=0;
Р1=Р1Н; Р2=Р2Н; Р3=Р3Н; Р4=Р4Н;
Т1 =300 К; Т2=300 К; Т3=300 К; Т4=300 К.
Предварительные расчеты:
F12=12d122/4
F13=13d132/4
F34=34d342/4
F23=23d232/4
S1= (6V1/)2/3
S2= (6V2/)2/3
S3= (6V3/)2/3
S4= (6V4/)2/3
Уравнения расхода:
G12=G(F12,P1,P2,TP1)
G13=G(F13,P1,P3,TP2)
G34=G(F34,P3,P4,TP3)
G23=G(F23,P2,P3,TP4),
где TPmaxi – температура газа в той из двух рассматриваемых емкостей, где давление больше.
Уравнения расчета изменения параметров в емкостях ПС:
1-я емкость:
2-я емкость
3-я емкость
4-я емкость
Конечное условие: Pmin 0.95*Pmax
Программа расчета на эвм.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Buttons, jpeg, ComCtrls;
type
TForm1 = class(TForm)
Panel1: TPanel;
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Panel2: TPanel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
Edit6: TEdit;
Edit7: TEdit;
Edit8: TEdit;
Edit9: TEdit;
Edit10: TEdit;
Label16: TLabel;
Label17: TLabel;
Label18: TLabel;
Label19: TLabel;
Panel3: TPanel;
Label20: TLabel;
Label21: TLabel;
Label22: TLabel;
Label23: TLabel;
Label27: TLabel;
Label28: TLabel;
Label29: TLabel;
Label30: TLabel;
Edit11: TEdit;
Edit12: TEdit;
Edit13: TEdit;
Edit14: TEdit;
Panel4: TPanel;
Label15: TLabel;
Label24: TLabel;
Label25: TLabel;
Label26: TLabel;
Label31: TLabel;
Label32: TLabel;
Label33: TLabel;
Label34: TLabel;
Edit15: TEdit;
Edit16: TEdit;
Edit17: TEdit;
Edit18: TEdit;
Panel5: TPanel;
Label35: TLabel;
Label36: TLabel;
Label37: TLabel;
Label38: TLabel;
Label39: TLabel;
Edit19: TEdit;
Edit20: TEdit;
Edit21: TEdit;
Edit22: TEdit;
Label43: TLabel;
Label40: TLabel;
Label41: TLabel;
Label42: TLabel;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
GroupBox1: TGroupBox;
Label44: TLabel;
Label45: TLabel;
Label46: TLabel;
Label47: TLabel;
Label48: TLabel;
Label49: TLabel;
Label50: TLabel;
Label51: TLabel;
Edit23: TEdit;
Edit24: TEdit;
Edit25: TEdit;
GroupBox2: TGroupBox;
Label52: TLabel;
Label53: TLabel;
Label54: TLabel;
Label55: TLabel;
Label56: TLabel;
Label57: TLabel;
Label58: TLabel;
Label59: TLabel;
Edit26: TEdit;
Edit27: TEdit;
Edit28: TEdit;
Label60: TLabel;
Label61: TLabel;
Edit29: TEdit;
Label62: TLabel;
Label63: TLabel;
Label64: TLabel;
ScrollBox1: TScrollBox;
Label65: TLabel;
G1: TLabel;
Label66: TLabel;
Label67: TLabel;
Label68: TLabel;
Label69: TLabel;
Label70: TLabel;
Label71: TLabel;
Label72: TLabel;
Label73: TLabel;
Label74: TLabel;
Label75: TLabel;
Label76: TLabel;
Label77: TLabel;
Label78: TLabel;
Label79: TLabel;
t: TMemo;
mg1: TMemo;
mg2: TMemo;
mg3: TMemo;
p1: TMemo;
p2: TMemo;
p3: TMemo;
p4: TMemo;
T1: TMemo;
T2: TMemo;
T3: TMemo;
T4: TMemo;
Edit30: TEdit;
Label80: TLabel;
mg4: TMemo;
Label81: TLabel;
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
Form1.Close; // закрыть главное окно программы
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
const
R=287.2; k=1.41; Betakr=0.528; PI=3.14;
Var
M1,M2,M3,M4,D1,D2,D3,D4,V1,V2,V3,V4,F1,F2,F3,F4,Pa1,Pa2,Pa3,Pa4,Pb1,Pb2,Pb3,Pb4,
Ta1,Ta2,Ta3,Ta4,A,B,C,D,E,F,L,H,G12,G13,G34,G23,DT,PM,PX,H1,H2,H3,H4,tt,S1,S2,S3,S4:real;
i,max,min,n:integer;
Y,V:array [1..8] of real;
begin
M1:=strToFloat(Edit1.Text);
M2:=strToFloat(Edit2.Text);
M3:=strToFloat(Edit3.Text);
M4:=strToFloat(Edit4.Text);
D1:=strToFloat(Edit6.Text)/1000;
D2:=strToFloat(Edit7.Text)/1000;
D3:=strToFloat(Edit8.Text)/1000;
D4:=strToFloat(Edit9.Text)/1000;
V1:=strToFloat(Edit11.Text)/1000;
V2:=strToFloat(Edit12.Text)/1000;
V3:=strToFloat(Edit13.Text)/1000;
V4:=strToFloat(Edit14.Text)/1000;
DT:=strToFloat(Edit10.Text);
Y[1]:=strToFloat(Edit19.Text)*1000000;
Y[2]:=strToFloat(Edit15.Text);
Y[3]:=strToFloat(Edit20.Text)*1000000;
Y[4]:=strToFloat(Edit16.Text);
Y[5]:=strToFloat(Edit21.Text)*1000000;
Y[6]:=strToFloat(Edit17.Text);
Y[7]:=strToFloat(Edit22.Text)*1000000;
Y[8]:=strToFloat(Edit18.Text);
F1:=M1*PI*sqr(D1)/4;
F2:=M2*PI*sqr(D2)/4;
F3:=M3*PI*sqr(D3)/4;
F4:=M4*PI*sqr(D4)/4;
S1:=PI*exp((2/3)*ln(6*V1/PI));
S2:=PI*exp((2/3)*ln(6*V2/PI));
S3:=PI*exp((2/3)*ln(6*V3/PI));
S4:=PI*exp((2/3)*ln(6*V4/PI));
Edit26.Text :=FloatToStrF(F1*1000000,ffFixed,4,4);
Edit27.Text :=FloatToStrF(F2*1000000,ffFixed,4,4);
Edit28.Text :=FloatToStrF(F3*1000000,ffFixed,4,4);
Edit30.Text :=FloatToStrF(F4*1000000,ffFixed,4,4);
Edit23.Text :=FloatToStrF(S1,ffFixed,4,4);
Edit24.Text :=FloatToStrF(S2,ffFixed,4,4);
Edit25.Text :=FloatToStrF(S3,ffFixed,4,4);
Edit29.Text :=FloatToStrF(S4,ffFixed,4,4);
tt:=0;
n:=1;
t.Lines.Add('____');
mg1.Lines.Add('____');
mg2.Lines.Add('____');
mg3.Lines.Add('____');
mg4.Lines.Add('____');
p1.Lines.Add('____');
p2.Lines.Add('____');
p3.Lines.Add('____');
p4.Lines.Add('____');
T1.Lines.Add('____');
T2.Lines.Add('____');
T3.Lines.Add('____');
T4.Lines.Add('____');
REPEAT
//writeln('Opredelenie napravleniya rashoda');
//writeln;
if Y[1]>Y[3] then
begin
Pa1:=Y[1]; Pb1:=Y[3]; Ta1:=Y[2]; A:=-1; B:=1;
end
else begin
Pa1:=Y[3]; Pb1:=Y[1]; Ta1:=Y[4]; A:=1; B:=-1;
end;
if Y[1]>Y[5] then
begin
Pa2:=Y[1]; Pb2:=Y[5]; Ta2:=Y[2]; C:=-1; D:=1;
end
else begin
Pa2:=Y[5]; Pb2:=Y[1]; Ta2:=Y[6]; C:=1; D:=-1;
end;
if Y[5]>Y[7] then
begin
Pa3:=Y[5]; Pb3:=Y[7]; Ta3:=Y[6]; E:=-1; F:=1;
end
else begin
Pa3:=Y[7]; Pb3:=Y[5]; Ta3:=Y[8]; E:=1; F:=-1;
end;
if Y[3]>Y[5] then
begin
Pa4:=Y[3]; Pb4:=Y[5]; Ta4:=Y[4]; H:=-1; L:=1;
end
else begin
Pa4:=Y[5]; Pb4:=Y[3]; Ta4:=Y[6]; H:=1; L:=-1;
end;
//Расчёт расходов
if (Pb1/Pa1)>Betakr then
begin
H1:=2*k*(exp((2/k)*ln(Pb1/Pa1))-exp(((k+1)/k)*ln(Pb1/Pa1)))/(k-1)/R/Ta1;
if H1<0 then G12:=0
else
G12:=F1*Pa1*sqrt(H1);
end
else begin
H1:=2*k*(exp((2/k)*ln(Betakr))-exp(((k+1)/k)*ln(Betakr)))/(k-1)/R/Ta1;
if H1<0 then G12:=0
else
G12:=F1*Pa1*sqrt(H1);
end;
if (Pb2/Pa2)>Betakr then
begin
H2:=2*k*(exp((2/k)*ln(Pb2/Pa2))-exp(((k+1)/k)*ln(Pb2/Pa2)))/(k-1)/R/Ta2;
if H2<0 then G13:=0
else
G13:=F2*Pa2*sqrt(H2);
end
else begin
H2:=2*k*(exp((2/k)*ln(Betakr))-exp(((k+1)/k)*ln(Betakr)))/(k-1)/R/Ta2;
if H2<0 then G13:=0
else
G13:=F2*Pa2*sqrt(H2);
end;
if (Pb3/Pa3)>Betakr then
begin
H3:=2*k*(exp((2/k)*ln(Pb3/Pa3))-exp(((k+1)/k)*ln(Pb3/Pa3)))/(k-1)/R/Ta3;
if H3<0 then G34:=0
else
G34:=F3*Pa3*sqrt(H3);
end
else begin
H3:=2*k*(exp((2/k)*ln(Betakr))-exp(((k+1)/k)*ln(Betakr)))/(k-1)/R/Ta3;
if H3<0 then G34:=0
else
G34:=F3*Pa3*sqrt(H3);
end;
if (Pb4/Pa4)>Betakr then
begin
H4:=2*k*(exp((2/k)*ln(Pb4/Pa4))-exp(((k+1)/k)*ln(Pb4/Pa4)))/(k-1)/R/Ta4;
if H4<0 then G23:=0
else
G23:=F4*Pa4*sqrt(H4);
end
else begin
H4:=2*k*(exp((2/k)*ln(Betakr))-exp(((k+1)/k)*ln(Betakr)))/(k-1)/R/Ta4;
if H4<0 then G23:=0
else
G23:=F4*Pa4*sqrt(H4);
end;
t.Lines.Add(FloatToStrF(tt,ffFixed,2,3));
mg1.Lines.Add(FloatToStrF(G12,ffFixed,6,6));
mg2.Lines.Add(FloatToStrF(G13,ffFixed,6,6));
mg3.Lines.Add(FloatToStrF(G34,ffFixed,6,6));
mg4.Lines.Add(FloatToStrF(G23,ffFixed,6,6));
p1.Lines.Add(FloatToStrF(Y[1]/1000000,ffFixed,2,5));
p2.Lines.Add(FloatToStrF(Y[3]/1000000,ffFixed,2,5));
p3.Lines.Add(FloatToStrF(Y[5]/1000000,ffFixed,2,5));
p4.Lines.Add(FloatToStrF(Y[7]/1000000,ffFixed,2,5));
T1.Lines.Add(FloatToStrF(Y[2],ffFixed,3,2));
T2.Lines.Add(FloatToStrF(Y[4],ffFixed,3,2));
T3.Lines.Add(FloatToStrF(Y[6],ffFixed,3,2));
T4.Lines.Add(FloatToStrF(Y[8],ffFixed,3,2));
n:=n+1;
tt:=tt+DT;
max:=1; min:=1; i:=1;
repeat
i:=i+2;
if Y[i]>Y[max] then max:=i;
if Y[i]<Y[min] then min:=i;
until i=7;
PX:=Y[max];
PM:=Y[min];
//writeln('Maksimalnoe davlenie PX=',PX:3:2);
//writeln('Minimalnoe davlenie PM=',PM:3:2);
//writeln('PM/PX=',PM/PX:3:2);
//writeln;
V[1]:=k*(R*Ta2*G13*C+R*Ta1*G12*A)/V1;
V[2]:=Y[2]*(V1*V[1]-R*Y[2]*G13*C-R*Y[2]*G12*A)/(Y[1]*V1);
V[3]:= k*(R*Ta1*G12*B+R*Ta4*G23*H)/V2;
V[4]:=Y[4]*(V2*V[3]-R*Y[4]*G12*B- R*Y[4]*G23*H)/(Y[3]*V2);
V[5]:=k*(R*Ta2*G13*D+R*Ta3*G34*E+ R*Ta4*G23*L)/V3;
V[6]:=Y[6]*(V3*V[5]-R*Y[6]*G13*D-R*Y[6]*G34*E- R*Y[6]*G23*L)/(Y[5]*V3);
V[7]:=k*R*Ta3*G34*F/V4;
V[8]:=Y[8]*(V4*V[7]-R*Y[8]*G34*F)/(Y[7]*V4);
for i:=1 to 8 do
Y[i]:=Y[i]+V[i]*DT;
{writeln(file1, G1:6:6);
writeln(file2, G2:6:6);
writeln(file3, G3:6:6);
writeln(file4, PX:3:2);
writeln(file5, PM:3:2);
write('dlya prodolgenya nazgmite <Enter>'); readln; }
UNTIL PM>=0.95*PX;
end;
end.