Расрчитать удельную мощность трения дисков фрикционного тормоза в зависимости от момента трения тормоза и числа пар трения

Автор: Пользователь скрыл имя, 04 Апреля 2012 в 21:33, курсовая работа

Описание работы

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

Тормоза предназначены для уменьшения поступательной скорости, экстренной остановки или удержания на уклоне.

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

Содержание

ВВЕДЕНИЕ 5

1. МАТЕМАТИЧЕСКОЕ РЕШЕНИЕ ЗАДАЧИ 6

2. АЛГОРИТМИЗАЦИЯ ВЫЧИСЛИТЕЛЬНЫХ ПРОЦЕССОВ 8

3. ТАБЛИЦА ИДЕНТИФИКАТОРОВ 9

5. СТРУКТУРА ПРОГРАММНОГО ПРИЛОЖЕНИЯ 16

5.1. Падающее и контекстное меню 16

5.2. Статусная строка 16

5.3. Обработка исключительных ситуаций 17

5.4. Построение графических зависимостей 18

5.5. Создание анимации 18

5.6. Вызов внешнего приложения 19

5.7. Динамически подключаемые библиотеки 20

5.8. Использование системных диалогов 21

7. РАСЧЁТ КОНТРОЛЬНОГО ПРИМЕРА 28

ЗАКЛЮЧЕНИЕ 31

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ ИНФОРМАЦИИ 32

Работа содержит 1 файл

Пояснительная записка.docx

— 5.37 Мб (Скачать)

    LabeledEdit6: TLabeledEdit;

    N7: TMenuItem;

    N8: TMenuItem;

    N9: TMenuItem;

    GroupBox3: TGroupBox;

    LabeledEdit7: TLabeledEdit;

    LabeledEdit8: TLabeledEdit;

    LabeledEdit9: TLabeledEdit;

    GroupBox4: TGroupBox;

    Label1: TLabel;

    Label2: TLabel;

    Label3: TLabel;

    StatusBar1: TStatusBar;

    BitBtn1: TBitBtn;

    BitBtn2: TBitBtn;

    BitBtn3: TBitBtn;

    BitBtn4: TBitBtn;

    N10: TMenuItem;

    OpenDialog1: TOpenDialog;

    SaveDialog1: TSaveDialog;

    N11: TMenuItem;

    N6: TMenuItem;

    N12: TMenuItem;

    N13: TMenuItem;

    PopupMenu1: TPopupMenu;

    N14: TMenuItem;

    N15: TMenuItem;

    N16: TMenuItem;

    N17: TMenuItem;

    procedure N9Click(Sender: TObject);

    procedure N8Click(Sender: TObject);

    procedure N5Click(Sender: TObject);

    procedure N7Click(Sender: TObject);

    procedure BitBtn4Click(Sender: TObject);

    procedure BitBtn3Click(Sender: TObject);

    procedure BitBtn2Click(Sender: TObject);

    procedure BitBtn1Click(Sender: TObject);

    procedure N10Click(Sender: TObject);

    procedure FormCreate(Sender: TObject);

    procedure N11Click(Sender: TObject);

    procedure N6Click(Sender: TObject);

    procedure N4Click(Sender: TObject);

    procedure N12Click(Sender: TObject);

    procedure leFloatKeyPress(Sender: TObject; var Key: Char);

    procedure leIntKeyPress(Sender: TObject; var Key: Char);

    procedure N13Click(Sender: TObject);

    procedure N17Click(Sender: TObject);

    procedure N16Click(Sender: TObject);

    procedure N15Click(Sender: TObject);

    procedure N14Click(Sender: TObject);   

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  Form1: TForm1;

var

Fr, Fw: textfile;

n,m,i,j,zmin,zmax:Integer;

Mtrmin,Mtrmax,Ri,Re,Wr:Real;

implementation

uses Unit2, Unit3, Unit4, Unit5;

Procedure Ras(Var Mtr,z:real; Var Pud:real);

external 'Project2.dll';

{$R *.dfm}

procedure TForm1.N9Click(Sender: TObject);

begin

Close;

end;

procedure TForm1.N8Click(Sender: TObject);

begin

WinExec('calc.exe',SW_RESTORE);

end;

procedure TForm1.N5Click(Sender: TObject);

begin

Form5.ShowModal;

end;

procedure TForm1.N7Click(Sender: TObject);

begin

Form2.BitBtn3.Click;

end;

procedure TForm1.BitBtn4Click(Sender: TObject);

begin

Close;

end;

procedure TForm1.BitBtn3Click(Sender: TObject);

begin

WinHelp(Handle, 'help/help.hlp', HELP_CONTEXT, 2);

end;

 

procedure TForm1.BitBtn2Click(Sender: TObject);

begin

WinExec('calc.exe',SW_RESTORE);

end;

procedure TForm1.BitBtn1Click(Sender: TObject);

var Mtr,Mtrmin,Mtrmax,z,zmin,zmax,Re,Wr,Ri,stMtr,stz,Pud:real;

    n,m,i,j:Integer;

begin

DecimalSeparator:='.';

n:=StrToInt(Form1.LabeledEdit6.Text);

m:=StrToInt(Form1.LabeledEdit3.Text);

Mtrmin:=StrToFloat(LabeledEdit1.Text);

Mtrmax:=StrToFloat(LabeledEdit2.Text);

zmin:=StrToInt(LabeledEdit4.Text);

zmax:=StrToInt(LabeledEdit5.Text);

Wr:=StrToFloat(LabeledEdit7.Text);

Re:=StrToFloat(LabeledEdit8.Text);

Ri:=StrToFloat(LabeledEdit9.Text);

AssignFile(Fw,'Данные.txt');

Rewrite(Fw);

writeLn(Fw,labeledEdit1.text);

writeLn(Fw,labeledEdit2.text);

writeLn(Fw,labeledEdit3.text);

writeLn(Fw,labeledEdit4.text);

writeLn(Fw,labeledEdit5.text);

writeLn(Fw,labeledEdit6.text);

writeLn(Fw,labeledEdit7.text);

writeLn(Fw,labeledEdit8.text);

writeLn(Fw,labeledEdit9.text);

CloseFile(Fw);

If (Mtrmin<>0) then

  begin

  MessageDlg('Некорректно  введены данные',mtWarning,[mbOk],0);

  LabeledEdit1.SetFocus;

  Exit;

  end;

If (Mtrmin>Mtrmax) then

  begin

  MessageDlg('Mtrmin равен нулю',mtWarning,[mbOk],0);

  LabeledEdit1.SetFocus;

  Exit;

  end;

If (Mtrmax>30715) or (Mtrmax<Mtrmin) then

  begin

  MessageDlg('Некорректно  введены данные',mtWarning,[mbOk],0);

  LabeledEdit2.SetFocus;

  Exit;

  end;

If (zmin<=0) then

  begin

  MessageDlg('zmin положительная  величина',mtWarning,[mbOk],0);

  LabeledEdit4.SetFocus;

  Exit;

  end;

If (zmax>16) then

  begin

  MessageDlg('Максимальное количество пар трения равно 16',mtWarning,[mbOk],0);

  LabeledEdit5.SetFocus;

  Exit;

  end;

If (n<>zmax) then

  begin

  MessageDlg('Некорректно  введены данные',mtWarning,[mbOk],0);

  LabeledEdit6.SetFocus;

  Exit;

  end;

If (n<=0) then

  begin

  MessageDlg('количество точек разбиения должно быть больше нуля',mtWarning,[mbOk],0);

  LabeledEdit6.SetFocus;

  Exit;

  end;

If (m<=0) then

  begin

  MessageDlg('количество точек разбиения должно быть больше нуля',mtWarning,[mbOk],0);

  LabeledEdit3.SetFocus;

  Exit;

  end;

If (m>1000) then

  begin

  MessageDlg('количество точек разбиения не должно превышать 1000',mtWarning,[mbOk],0);

  LabeledEdit3.SetFocus;

  Exit;

  end;

stMtr:=(Mtrmax-Mtrmin)/m;

stz:=(zmax-zmin+1)/n;

With Form2.StringGrid1 do

begin

cells[0,0]:='Mtr\z';

RowCount:=m+1;

ColCount:=n+1;

Mtr:=Mtrmin;

z:=zmin;

for i:=1 to n do

for j:=1 to m do

begin

Mtr:=Mtrmin+j*stMtr;

z:=zmin+i*stz-1;

Ras(Mtr,z,Pud);

Cells[i,0]:=FloattoStr(z);

Cells[0,j]:=FloatToStr(RoundTo(Mtr,-0))+'Н*м';

Cells[n-i+1,j]:=FloatToStr(RoundTo(Pud,-5));

end;

Form2.ShowModal;

end;

end;

procedure TForm1.leFloatKeyPress(Sender: TObject; var Key: Char);

begin

  case Key of

    '0'..'9', #8:;

    '.', ',': Key := DecimalSeparator

  else

    Key := #0;

  end;

end;

procedure TForm1.leIntKeyPress(Sender: TObject; var Key: Char);

begin

  case Key of

    '0'..'9', #8:;

  else

    Key := #0;

  end;

end;

procedure TForm1.N10Click(Sender: TObject);

begin

if SaveDialog1.Execute then

  begin

  AssignFile(Fw,'Данные.txt');

  Rewrite(Fw);

  WriteLn(Fw,labeledEdit1.text);

  WriteLn(Fw,labeledEdit2.text);

  WriteLn(Fw,labeledEdit3.text);

  WriteLn(Fw,labeledEdit4.text);

  WriteLn(Fw,labeledEdit5.text);

  WriteLn(Fw,labeledEdit6.text);

  WriteLn(Fw,labeledEdit7.text);

  WriteLn(Fw,labeledEdit8.text);

  WriteLn(Fw,labeledEdit9.text);

  CloseFile(Fw);

  end;

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

DecimalSeparator:='.';

Assignfile(Fr,'Данные.txt') ;

Reset(Fr);

readLn(Fr,Mtrmin);

readLn(Fr,Mtrmax);

readLn(Fr,n);

readLn(Fr,zmin);

readLn(Fr,zmax);

readLn(Fr,m);

readLn(Fr,Wr);

readLn(Fr,Re);

readLn(Fr,Ri);

closeFile(Fr);

LabeledEdit1.Text:=FloatToStr(Mtrmin);

LabeledEdit2.Text:=FloatToStr(Mtrmax);

LabeledEdit3.Text:=FloatToStr(n);

LabeledEdit4.Text:=IntToStr(zmin);

LabeledEdit5.Text:=IntToStr(zmax);

LabeledEdit6.Text:=IntToStr(m);

LabeledEdit7.Text:=FloatToStr(Wr);

LabeledEdit8.Text:=FloatToStr(Re);

LabeledEdit9.Text:=FloatToStr(Ri);

end;

procedure TForm1.N11Click(Sender: TObject);

begin

OpenDialog1.Execute;

end;

procedure TForm1.N6Click(Sender: TObject);

begin

Form1.BitBtn1.Click;

end;

procedure TForm1.N4Click(Sender: TObject);

begin

WinHelp(Handle, 'help/help.hlp', HELP_CONTEXT, 1);

end;

procedure TForm1.N12Click(Sender: TObject);

begin

LabeledEdit1.Clear;

LabeledEdit2.Clear;

LabeledEdit3.Clear;

LabeledEdit4.Clear;

LabeledEdit5.Clear;

LabeledEdit6.Clear;

LabeledEdit7.Clear;

LabeledEdit8.Clear;

LabeledEdit9.Clear;

end;

procedure TForm1.N13Click(Sender: TObject);

begin

Assignfile(Fr,'Данные.txt') ;

Reset(Fr);

readLn(Fr,Mtrmin);

readLn(Fr,Mtrmax);

readLn(Fr,n);

readLn(Fr,zmin);

readLn(Fr,zmax);

readLn(Fr,m);

readLn(Fr,Wr);

readLn(Fr,Re);

readLn(Fr,Ri);

closeFile(Fr);

LabeledEdit1.Text:=FloatToStr(Mtrmin);

LabeledEdit2.Text:=FloatToStr(Mtrmax);

LabeledEdit3.Text:=FloatToStr(n);

LabeledEdit4.Text:=IntToStr(zmin);

LabeledEdit5.Text:=IntToStr(zmax);

LabeledEdit6.Text:=IntToStr(m);

LabeledEdit7.Text:=FloatToStr(Wr);

LabeledEdit8.Text:=FloatToStr(Re);

LabeledEdit9.Text:=FloatToStr(Ri);

end;

procedure TForm1.N17Click(Sender: TObject);

begin

Close;

end;

procedure TForm1.N16Click(Sender: TObject);

begin

WinExec('calc.exe',SW_RESTORE);

end;

procedure TForm1.N15Click(Sender: TObject);

begin

Form5.ShowModal;

End;

procedure TForm1.N14Click(Sender: TObject);

begin

BitBtn1.Click;

end;

end.

Unit2.pas

unit Unit2;

interface

uses

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

  Dialogs, StdCtrls, Grids, ComCtrls, Buttons, Menus,ComObj, TypInfo,

  WebServExp, WSDLBind, XMLSchema, WSDLPub;

type

  TForm2 = class(TForm)

    StringGrid1: TStringGrid;

    Label1: TLabel;

    Label2: TLabel;

    StatusBar1: TStatusBar;

    BitBtn1: TBitBtn;

    BitBtn2: TBitBtn;

    BitBtn3: TBitBtn;

    BitBtn6: TBitBtn;

    BitBtn7: TBitBtn;

    SaveDialog1: TSaveDialog;

    BitBtn4: TBitBtn;

    BitBtn5: TBitBtn;

    procedure FormCreate(Sender: TObject);

    procedure BitBtn1Click(Sender: TObject);

    procedure BitBtn3Click(Sender: TObject);

    procedure BitBtn6Click(Sender: TObject);

    procedure BitBtn7Click(Sender: TObject);

    procedure BitBtn4Click(Sender: TObject);

    procedure BitBtn2Click(Sender: TObject);

    procedure BitBtn5Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  Form2: TForm2;

implementation

uses Unit1, Unit3, Unit4;

{$R *.dfm}

procedure AutoSizeGridColmn(Grid:TStringGrid; Column:Integer);

var i,temp,max:Integer;

begin

max:=0;

  for i:=0 to (Grid.RowCount-1) do

    begin

    temp:=Grid.Canvas.TextWidth(Grid.Cells[Column,i]);

      if temp>max then max:= temp;

    end;

Grid.ColWidths[Column]:=max+Grid.GridLineWidth+3;

end;

procedure TForm2.FormCreate(Sender: TObject);

var n,m,i,j:Integer;

begin

DecimalSeparator:='.';

n:=StrToInt(Form1.LabeledEdit6.Text);

m:=StrToInt(Form1.LabeledEdit3.Text);

With StringGrid1 do

begin

  ColCount:=n+1;

  RowCount:=m+1;

  Cells[0,0]:='Mrt\z';

  for i:=1 to n do

  Cells[i,0]:=IntToStr(i);

  for j:=1 to m do

  Cells[0,j]:=IntToStr(j);

end;

end;

procedure TForm2.BitBtn1Click(Sender: TObject);

begin

Close;

end;

procedure TForm2.BitBtn3Click(Sender: TObject);

var n,m,i,j,zmin,zmax:Integer;

    Mtrmin,Mtrmax,Ri,Re,Wr,z,Pud1,Pud2,Pud3,Pud4,Pud5,Pud6,Pud7:Real;

    Mtr,stMtr:Real;

begin

DecimalSeparator:='.';

n:=StrToInt(Form1.LabeledEdit6.Text);

m:=StrToInt(Form1.LabeledEdit3.Text);

Mtrmin:=StrToFloat(Form1.LabeledEdit1.Text);

Mtrmax:=StrToFloat(Form1.LabeledEdit2.Text);

Информация о работе Расрчитать удельную мощность трения дисков фрикционного тормоза в зависимости от момента трения тормоза и числа пар трения