Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LUCKY / SPETS.DOC
Скачиваний:
15
Добавлен:
16.04.2013
Размер:
7.64 Mб
Скачать

Результаты работы программы.

При помощи разработанной программы был произведен тепловой и электрический расчет нагревателя пирогенной горелки:

Исходные данные:

Результаты вычислений:

По результатам работы программы определены основные параметры разрабатываемого устройства, сделаны выводы о соблюдении условий по ваттной нагрузке. Полученные данные полностью согласуются с параметрами, определенными ранее при помощи оценочных расчетов и экспериментальных прогонов установки.

Примечание. Исходные тексты программы наObject Pascal приведены в приложении.

Главный файл проекта:

program ProjectTerra;

uses

Forms,

SVDal in 'SVDal.pas' {SetVar},

terra in 'terra.pas' {Form1},

About2 in 'About2.pas' {Form2},

scheme in 'scheme.pas' {Form3};

{$R *.RES}

begin

Application.Initialize;

Application.Title := 'Terra Incognita';

Application.CreateForm(TForm1, Form1);

Application.CreateForm(TSetVar, SetVar);

Application.CreateForm(TForm2, Form2);

Application.CreateForm(TForm3, Form3);

Application.Run;

end.

Диалог ввода переменных:

unit SVDal;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, Mask, CurrEdit, Spin;

Type

InputData = record

di: double;

d1: double;

d2: double;

d3: double;

d4: double;

dpr: double;

dnam: double;

dmagr: double;

res: double;

time: double;

sopr: double;

sec: longint;

num: longint;

end;

type

TSetVar = class(TForm)

Label1: TLabel;

GroupBox1: TGroupBox;

Edit1: TCurrencyEdit;

Edit7: TCurrencyEdit;

Edit2: TCurrencyEdit;

Edit3: TCurrencyEdit;

Edit4: TCurrencyEdit;

Edit5: TCurrencyEdit;

Edit8: TCurrencyEdit;

Edit9: TCurrencyEdit;

Button1: TButton;

Edit6: TCurrencyEdit;

Label6: TLabel;

Label10: TLabel;

CurrencyEdit1: TCurrencyEdit;

Label11: TLabel;

CurrencyEdit2: TCurrencyEdit;

GroupBox3: TGroupBox;

Label12: TLabel;

Label13: TLabel;

SpinEdit1: TSpinEdit;

SpinEdit2: TSpinEdit;

Label14: TLabel;

procedure FormShow(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure Button1Click(Sender: TObject);

private

OKPressed: Boolean;

{ Private declarations }

public

{ Public declarations }

end;

var

SetVar: TSetVar;

idata: InputData;

implementation

uses terra;

{$R *.DFM}

procedure TSetVar.FormShow(Sender: TObject);

begin

Edit1.Value := idata.di;

Edit2.Value := idata.d1;

Edit3.Value := idata.d2;

Edit4.Value := idata.d3;

Edit5.Value := idata.d4;

Edit7.Value := idata.dpr;

Edit8.Value := idata.dnam;

Edit9.Value := idata.dmagr;

Edit6.Value := idata.res;

CurrencyEdit1.Value:=idata.sopr;

CurrencyEdit2.Value:=idata.time;

SpinEdit1.Value:=idata.sec;

SpinEdit2.Value:=idata.num;

OKPressed := False;

end;

procedure TSetVar.FormClose(Sender: TObject; var Action: TCloseAction);

begin

if OKPressed Then

Begin

if

((Edit1.Value<=Edit2.Value)or(Edit2.Value<=Edit3.Value)

or(Edit3.Value<=Edit4.Value)or(Edit4.Value<=Edit5.Value)

or(Edit8.Value<=2*Edit7.Value)or(Edit9.Value<=2*Edit7.Value)

or(Edit1.Value<=0)or(Edit2.Value<=0)or(Edit3.Value<=0)

or(Edit4.Value<=0)or(Edit5.Value<=0)or(Edit7.Value<=0)

or(Edit8.Value<=0)or(Edit9.Value<=0)or(((Edit3.ValueEdit4.Value)/ 2<=Edit8.Value)or(Edit6.Value<=Edit7.Value)or(SpinEdit1.Value<=0 )or(SpinEdit2.Value<=0)or(CurrencyEdit2.Value<=0))

then

begin

Application.MessageBox('Подумайте еше разок хорошенько!','Некорректный ввод!',MB_OK+MB_ICONERROR);

Action:=caNone;

OKPressed := False;

end Else

Begin

idata.di := Edit1.Value;

idata.d1 := Edit2.Value;

idata.d2 := Edit3.Value;

idata.d3 := Edit4.Value;

idata.d4 := Edit5.Value;

idata.dpr := Edit7.Value;

idata.dnam := Edit8.Value;

idata.dmagr := Edit9.Value;

idata.res := Edit6.Value;

idata.sec := SpinEdit1.Value;

idata.num := SpinEdit2.Value;

idata.time := CurrencyEdit2.Value;

Form1.SpeedButton1.Enabled:=TRUE;

Form1.SpeedButton7.Enabled:=TRUE;

Form1.N14.enabled:=TRUE;

Form1.N8.enabled:=TRUE;

End;

end;

end;

procedure TSetVar.Button1Click(Sender: TObject);

begin

OKPressed := True;

Form1.ProgressBar1.Position:=0;

Form1.Label4.Caption:='0';

Form1.Label3.Caption:='N/D';

Form1.Label8.Caption:='N/D';

Form1.Label10.Caption:='N/D';

Form1.Label12.Caption:='N/D';

Form1.Label14.Caption:='N/D';

end;

end.

Главное окно программы:

unit terra;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

Menus, ComCtrls, Buttons, ExtCtrls, AppEvent, RXShell, RXSlider, RXClock,

RXCtrls, Animate, StdCtrls, RXSpin, RXDice, SpeedBar, OleCtnrs, PicClip;

type

TForm1 = class(TForm)

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N5: TMenuItem;

N6: TMenuItem;

N7: TMenuItem;

N8: TMenuItem;

N9: TMenuItem;

N10: TMenuItem;

N11: TMenuItem;

N12: TMenuItem;

N13: TMenuItem;

Panel1: TPanel;

SpeedButton1: TSpeedButton;

RxLabel1: TRxLabel;

Bevel1: TBevel;

SpeedButton7: TSpeedButton;

StatusBar1: TStatusBar;

ProgressBar1: TProgressBar;

N14: TMenuItem;

N4: TMenuItem;

RxLabel2: TRxLabel;

Bevel2: TBevel;

Label1: TLabel;

SpeedButton8: TSpeedButton;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

N15: TMenuItem;

SpeedButton5: TSpeedButton;

Label6: TLabel;

Label7: TLabel;

Label8: TLabel;

Label9: TLabel;

Label10: TLabel;

Label11: TLabel;

Label12: TLabel;

Label13: TLabel;

Label14: TLabel;

procedure SpeedButton4Click(Sender: TObject);

procedure SpeedButton5Click(Sender: TObject);

procedure N10Click(Sender: TObject);

procedure N13Click(Sender: TObject);

procedure SpeedButton1Click(Sender: TObject);

procedure N12Click(Sender: TObject);

procedure N8Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure N2Click(Sender: TObject);

procedure SpeedButton8Click(Sender: TObject);

procedure SpeedButton7Click(Sender: TObject);

procedure FormOnClic(Sender: TObject);

procedure FormClick(Sender: TObject);

private

procedure DisplayHint(Sender: TObject);

{ Private declarations }

public

{ Public declarations }

protected

Procedure CreateParams(var Params: TCreateParams); override;

end;

var

Form1: TForm1;

implementation

uses SVDal, About2, scheme,math;

{$R *.DFM}

Procedure TForm1.CreateParams(var Params: TCreateParams);

Begin

Inherited CreateParams(Params);

Params.Style := Params.Style and not (WS_MAXIMIZEBOX or WS_THICKFRAME);

End;

procedure TForm1.SpeedButton4Click(Sender: TObject);

begin

SetVar.ShowModal;

end;

procedure TForm1.SpeedButton5Click(Sender: TObject);

begin

iData.di:=125;

iData.d1:=88;

iData.d2:=72;

iData.d3:=40;

iData.d4:=12;

iData.dpr:=1;

iData.dnam:=8;

iData.dmagr:=100;

iData.res:=1.5;

iData.sopr:=1.2;

iData.time:=10;

iData.sec:=2;

iData.num:=4;

SpeedButton1.Enabled:=TRUE;

SpeedButton7.Enabled:=TRUE;

N8.Enabled:=TRUE;

N14.Enabled:=TRUE;

ProgressBar1.Position:=0;

Label4.Caption:='0';

end;

procedure TForm1.N10Click(Sender: TObject);

begin

SetVar.ShowModal;

end;

procedure TForm1.N13Click(Sender: TObject);

var userResponse : integer;

begin

userResponse := Application.MessageBox('Программа Terra предназначена для произв'+

'едения теплового и электрического расчета нагревателя пирогенной горелки','О программе',MB_OK+

MB_ICONINFORMATION+MB_SYSTEMMODAL);

end;

procedure TForm1.SpeedButton1Click(Sender: TObject);

begin

iData.di:=0;

iData.d1:=0;

iData.d2:=0;

iData.d3:=0;

iData.d4:=0;

iData.dpr:=0;

iData.dnam:=0;

iData.dmagr:=0;

iData.res:=0 ;

iData.sopr:=0;

iData.time:=0;

iData.sec:=0;

iData.num:=0;

SpeedButton1.Enabled:=FALSE;

SpeedButton7.Enabled:=FALSE;

N8.Enabled:=FALSE;

N14.Enabled:=FALSE;

ProgressBar1.Position:=0;

Label4.Caption:='0';

Label4.Caption:='0';

Label3.Caption:='N/D';

Label8.Caption:='N/D';

Label10.Caption:='N/D';

Label12.Caption:='N/D';

Label14.Caption:='N/D';

end;

procedure TForm1.N12Click(Sender: TObject);

begin

Form2.ShowModal;

end;

procedure TForm1.N8Click(Sender: TObject);

begin

Form1.SpeedButton1Click(Form1);

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

Application.OnHint:=DisplayHint;

end;

procedure TForm1.DisplayHint(Sender: TObject);

begin

StatusBar1.SimpleText:=Application.Hint;

end;

procedure TForm1.N2Click(Sender: TObject);

begin

Close;

end;

procedure TForm1.SpeedButton8Click(Sender: TObject);

begin

Form3.Show;

end;

{==================================================}

procedure TForm1.SpeedButton7Click(Sender: TObject);

var

N:integer;

U,R,l,powerRes,powerH,powerO:double;

function GetRe(w,l,v:double):double;

begin

GetRe:= w*l/v;

end;

function GettGsr(tst,tin,tout:double):double;

begin

GettGsr:= tst-((tout-tin)/ln((tst-tin)/(tst-tout)));

end;

{=====================================================}

procedure HDefineTemp(var powerH:double,N:integer);

const

roH: double =0.4;

laH: double =387E-3;

vH: double =1;

CpH: double =14655;

G: double =2.8E-5;

var

F,tPrev,tHsten,alpha,Nu,Qst,Qg,Qpot,Pe:double;

begin

tHsten:=N;

F:=pi*iData.d3*iData.dmagr*1E-6;

Pe:=4*G*roH*CpH*1000/(pi*(iData.d3-iData.d4)*laH);

If Pe*(iData.d3-iData.d4)/iData.dmagr>12

then Nu:= 1.61*Power((Pe*(iData.d3-iData.d4)/iData.dmagr),1/3)

else Nu:= 3.66;

alpha:=Nu*laH*1000/(iData.d3-iData.d4);

repeat

Qst:=alpha*F*(tHsten-GettGsr(tHsten, tPrev,N));

Qg:=CpH*roH*G*(N-tPrev);

Qpot:=2*pi*0.15*(tHsten-30)*iData.dmagr*1E-3/ln(iData.di/iData.d3);

tHSten:=tHsten+0.5;

until (Qst>(Qg+Qpot));

powerH:=Qst;

end;

{==================================================}

procedure ODefineTemp(var powerO:double,N:integer);

const

roO: double =0.6;

laO: double =52E-3;

vO: double =1;

CpO: double =754;

G: double =1.2E-4;

var

F, tPrev,tOsten,alpha,Nu,Qst,Qg,Qpot,Pe:double;

begin

tOsten:=N;

F:=pi*iData.d2*iData.dmagr*1E-6;

Pe:=4*G*roO*CpO*1000/(pi*(iData.d1-iData.d2)*laO);

If Pe*(iData.d1-iData.d2)/iData.dmagr>70

then Nu:= 1.85*Power((Pe*(iData.d1-iData.d2)/iData.dmagr),1/3)

else Nu:= 7.6;

alpha:=Nu*laO*1000/(iData.d1-iData.d2);

repeat

Qst:=alpha*F*(tOsten-GettGsr(tOsten, tPrev,N));

Qg:=CpO*roO*G*(N- tPrev);

Qpot:=2*pi*0.15*(tOsten-30)*iData.dmagr*1E-3/ln(iData.di/iData.d1);

tOSten:=tOsten+0.5;

until (Qst>(Qg+Qpot));

powerO:=Qst;

end;

begin

For N = 20 to 800 do

begin

ODefineTemp(powerO,N);

ProgressBar1.Position:=50;

Label4.Caption:='50';

HDefineTemp(powerH/);

ProgressBar1.Position:=100;

Label4.Caption:='100';

powerRes:= powerRes+powerO+powerH+3450/iData.time;

end;

Label3.Caption:=IntToStr(Ceil(powerRes));

l:=idata.sec*idata.num*(idata.dmagr/idata.res)*pi*idata.dnam*1E-1;

Label8.Caption:=FloatToStr((round(powerRes*10/

(l*pi*iData.dpr*1E-1)))/10);

R:=round(4*idata.sopr*l/

(pi*idata.dpr*idata.dpr*idata.sec))/10;

Label10.Caption:=FloatToStr(R);

U:=round(Sqrt(powerRes*R/2));

Label12.Caption:=FloatToStr(U);

Label14.Caption:=FloatToStr(round(U*10/R)/10);

{Label6.Font.Color:=clRed;}

end;

end.

Дипломный проект Страница 53

Соседние файлы в папке LUCKY