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

Автор: Пользователь скрыл имя, 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 Мб (Скачать)

zmin:=StrToInt(Form1.LabeledEdit4.Text);

zmax:=StrToInt(Form1.LabeledEdit5.Text);

Wr:=StrToFloat(Form1.LabeledEdit7.Text);

Re:=StrToFloat(Form1.LabeledEdit8.Text);

Ri:=StrToFloat(Form1.LabeledEdit9.Text);

stMtr:=(Mtrmax-Mtrmin)/m;

with Form3 do

begin

{Построение зависимости Pud от Mtr}

Series1.Clear;

Series2.Clear;

Series3.Clear;

  for i:=0 to m-1 do

    with StringGrid1 do

      begin

      Series1.AddXY(StrToFloat(cells[1,i+1]),StrToFloat(cells[1,i+1]));

      Series2.AddXY(StrToFloat(cells[1,i+1]),StrToFloat(cells[5,i+1]));

      Series3.AddXY(StrToFloat(cells[1,i+1]),StrToFloat(cells[n,i+1]));

      Series2.Title:='при z='+ cells[5,0];

      Series1.Title:='при z='+ FloatToStr(zmin);

      Series3.Title:='при z='+ FloatToStr(zmax);

      end;

{Построение зависимости Pud от z}

Series4.Clear;

Series5.Clear;

Series6.Clear;

  for i:=0 to n-1 do

    with StringGrid1 do

      begin

      Series4.AddXY(StrToFloat(cells[i+1,0]),StrToFloat(cells[i+1,1]));

      Series5.AddXY(StrToFloat(cells[i+1,0]),StrToFloat(cells[i+1,5]));

      Series6.AddXY(StrToFloat(cells[i+1,0]),StrToFloat(cells[i+1,m]));

      Series4.Title:='при Mtr='+ cells[0,1];

      Series5.Title:='при Mtr='+ cells[0,5];

      Series6.Title:='при Mtr='+ cells[0,m];

      end;

{Построение 3D зависимости Pud от Mtr и z}

Series7.Clear;

Mtr:=Mtrmin;

  Repeat

  z:=zmin;

    repeat

    Pud7:=Mtr*abs(Wr)/pi*(Re*Re-Ri*Ri)*z;

    Series7.AddXYZ(Mtr,Pud7,z);

    z:=z+1

    until z>=zmax;

   Mtr:=Mtr+stMtr

  until Mtr>=Mtrmax

end;

Form3.ShowModal;

end;

procedure TForm2.BitBtn6Click(Sender: TObject);

var

  WordApp, NewDoc, WordTable: OLEVariant;

  iRows, iCols, iGridRows, jGridCols: Integer;

begin

  SaveDialog1.DefaultExt := 'doc';

  SaveDialog1.Filter := 'Документ MS Word (*.doc)|*.doc';

  SaveDialog1.FileName := 'Результаты расчетов';

  if not SaveDialog1.Execute then

    Exit;

  try

    WordApp := CreateOleObject('Word.Application');

  except

    Exit

  end;

  NewDoc := WordApp.Documents.Add;

  iCols := StringGrid1.ColCount;

  iRows := StringGrid1.RowCount;

  WordTable := NewDoc.Tables.Add(WordApp.Selection.Range, iRows, iCols);

  WordTable.Range.Font.Size := 8;

  for iGridRows := 1 to iRows do

    for jGridCols := 1 to iCols do

      WordTable.Cell(iGridRows, jGridCols).Range.Text :=

        StringGrid1.Cells[jGridCols - 1, iGridRows - 1];

  WordApp.ActiveDocument.SaveAs(SaveDialog1.FileName);

  WordApp.Quit;

  WordApp := Unassigned;

  NewDoc := Unassigned;

  WordTable := Unassigned;

end;

 

 

procedure TForm2.BitBtn7Click(Sender: TObject);

var

  XLApp,Sheet,Column:Variant;

  i,j,m,n: Integer;

begin

  SaveDialog1.DefaultExt := 'xls';

  SaveDialog1.Filter := 'Документ MS Excel (*.xls)|*.xls';

  SaveDialog1.FileName := 'Результаты расчетов';

  if not SaveDialog1.Execute then

    Exit;

  try

    XLApp := CreateOleObject('Excel.Application');

  except

    Exit

  end;

  XLApp.WorkBooks.Add(-4167);

  XLApp.WorkBooks[1].WorkSheets[1].Name := 'Результаты  расчетов';

  Column := XLApp.WorkBooks[1].WorkSheets['Результаты  расчетов'].Columns;

  n := StringGrid1.ColCount;

  m := StringGrid1.RowCount;

  for i := 1 to m + 1 do

    Column := XLApp.WorkBooks[1].WorkSheets['Результаты  расчетов'].Rows;

  Column.Columns[1].Font.Bold := True;

  Column.Rows[1].Font.Bold := True;

  Column.Rows[1].Font.Italic := True;

  Column.Rows[2].Font.Bold := True;

  Sheet := XLApp.WorkBooks[1].WorkSheets['Результаты  расчетов'];

  Form1.Enabled := False;

  for i := 0 to m do

    for j := 0 to n do

      Sheet.Cells[j + 2, i + 1] := '''' + StringGrid1.Cells[i, j];

  Form1.Enabled := True;

  Sheet.Cells[1, 2] := Label1.Caption;

  XLApp.ActiveWorkBook.SaveAs(SaveDialog1.FileName);

  XLApp.Quit

end;

procedure TForm2.BitBtn4Click(Sender: TObject);

begin

AutoSizeGridColmn(StringGrid1,i);

end;

procedure TForm2.BitBtn2Click(Sender: TObject);

begin

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

end;

procedure TForm2.BitBtn5Click(Sender: TObject);

var

  HTMLFile: TextFile;

  i,j: Integer;

begin

  SaveDialog1.DefaultExt := 'html';

  SaveDialog1.Filter := 'HTML-файл (*.html)|*.html';

  SaveDialog1.FileName := 'Результаты расчетов';

  if SaveDialog1.Execute then

  begin

    AssignFile(HTMLFile, SaveDialog1.FileName);

    Rewrite(HTMLFile);

    Writeln(HTMLFile, '<html>');

    Writeln(HTMLFile, '<head>');

    Writeln(HTMLFile,'<metahttp-equiv="Content-Type" content="text/html;'+

      'charset=windows-1251">');

    Writeln(HTMLFile, '<title>Результаты  расчетов</title>');

    Writeln(HTMLFile, '</head>');

    Writeln(HTMLFile, '<body>');

    Writeln(HTMLFile, '  <center><font size="6"><b>' + Label1.Caption +

      '</b></font></center>');

    Writeln(HTMLFile, '  <table border=1 cellspacing=0 cellspading=0>');

    for i := 0 to StringGrid1.RowCount do

    begin

      Writeln(HTMLFile, '    <tr>');

      for j := 0 to StringGrid1.ColCount do

        if (j = 0) or (i = 0) then

          Writeln(HTMLFile, '      <td><b><i>' +

            StringGrid1.Cells[j, i] + '</i></b>')

        else

          Writeln(HTMLFile, '      <td>' + StringGrid1.Cells[j, i]);

    end;

    Writeln(HTMLFile, '  </table>');

    Writeln(HTMLFile, '</body>');

    Writeln(HTMLFile, '</html>');

    CloseFile(HTMLFile);

  end;

end;

end.

 Unit3.pas

unit Unit3;

interface

uses

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

  Dialogs, StdCtrls, TeEngine, TeeFunci, Series, ExtCtrls, TeeProcs, Chart,

  ComCtrls, Buttons, TeeSurfa;

type

  TForm3 = class(TForm)

    PageSetupDialog1: TPageSetupDialog;

    PageControl1: TPageControl;

    TabSheet1: TTabSheet;

    Chart1: TChart;

    TabSheet2: TTabSheet;

    Chart2: TChart;

    Series1: TLineSeries;

    TabSheet3: TTabSheet;

    BitBtn1: TBitBtn;

    BitBtn2: TBitBtn;

    BitBtn3: TBitBtn;

    StatusBar1: TStatusBar;

    Series2: TLineSeries;

    Series3: TLineSeries;

    Series4: TLineSeries;

    Series5: TLineSeries;

    Series6: TLineSeries;

    Chart3: TChart;

    Series7: TSurfaceSeries;

    procedure BitBtn1Click(Sender: TObject);

    procedure BitBtn3Click(Sender: TObject);

    procedure BitBtn2Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  Form3: TForm3;

implementation

uses Unit2, Unit1;

{$R *.dfm}

procedure TForm3.BitBtn1Click(Sender: TObject);

begin

Close;

end;

procedure TForm3.BitBtn3Click(Sender: TObject);

begin

if PageSetupDialog1.Execute then

  begin

  Chart1.print;

  Chart2.print;

  Chart3.print;

  end;

end;

procedure TForm3.BitBtn2Click(Sender: TObject);

begin

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

end;

end.

Unit4.pas

unit Unit5;

interface

uses

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

  Dialogs, StdCtrls, ExtCtrls, Buttons, Math, ComCtrls;

type

  TForm5 = class(TForm)

    Memo1: TMemo;

    BitBtn1: TBitBtn;

    Image1: TImage;

    Timer1: TTimer;

    Memo2: TMemo;

    Memo3: TMemo;

    Label1: TLabel;

    BitBtn2: TBitBtn;

    StatusBar1: TStatusBar;

    procedure FormCreate(Sender: TObject);

    procedure BitBtn1Click(Sender: TObject);

    procedure Timer1Timer(Sender: TObject);

    procedure BitBtn2Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  Form5: TForm5;

  direction: integer;

  ld_x, rd_x, p_y, inter: integer;

const

  ld_points : array[1..2] of integer = (46, 82);

  rd_points : array[1..2] of integer = (228, 192);

implementation

uses Unit1;

{$R *.dfm}

procedure Draw;

begin

  with Form5.Image1.Canvas do

  begin

  Rectangle(137, 8, 192, 173);        {êîëåñî}

  MoveTo(138, p_y);

  LineTo(192, p_y);                   {çàñå÷êà íà êîëåñå}

  Rectangle(ld_x,67, ld_x+55, 231);   {äèñê òîðìîçà}

  Rectangle(rd_x,67, rd_x+55, 231);   {äèñê òîðìîçà}

  end;

end;

procedure Clean;

begin

Form5.Image1.Canvas.Rectangle(0,0, Form5.Image1.Width, Form5.Image1.Height);

end;

procedure TForm5.FormCreate(Sender: TObject);

begin

Memo1.Clear;

Memo1.Lines.Add('Ïðîãðàììà ðàñ÷¸òà  óäåëüíîé ìîùíîñòè òðåíèÿ äèñêîâ  ôðèêöèîííîãî òîðìîçà â çàâèñèìîñòè  îò ìîìåíòà òðåíèÿ òîðìîçà  è ÷èñëà ïàð òðåíèÿ.');

Memo2.Clear;

Memo2.Lines.Add('Âûïîëíèë');

Memo2.Lines.Add('ñòóäåíò ãðóïïû 101217 Å.À.Áðóì');

Memo2.Lines.Add('Ïðîâåðèë                         Â.Â.Ðàâèíî');

Memo3.Clear;

Memo3.Lines.Add('Êàôåäðà "Òðàêòîðû"');

Memo3.Lines.Add('Àâòîòðàêòîðíûé  ôàêóëüòåò');

Memo3.Lines.Add('ÁÍÒÓ');

Label1.Caption:='PARTIZAN740@yandex.ru';

p_y:=9;

ld_x:=ld_points[1];

rd_x:=rd_points[1];

inter:=0;

end;

procedure TForm5.BitBtn1Click(Sender: TObject);

begin

Close;

end;

procedure TForm5.Timer1Timer(Sender: TObject);

begin

Clean;

if p_y > 169 then p_y := 8 else p_y := p_y+5;

if ld_x = ld_points[1] then

begin

direction:=0;

end;

if ld_x >= ld_points[2] then

begin

  direction:=1;

  p_y := p_y-5;

end;

if direction = 0 then

begin

  inc(ld_x);

  dec(rd_x);

end

else

begin

  if (ld_x = ld_points[2]) then

    begin

      if (inter > 10) then

      begin

       inter:=0;

       dec(ld_x);

       inc(rd_x);

      end

      else

      inc(inter);

    end

    else

    begin

    dec(ld_x);

    inc(rd_x);

    end;

end;

Draw;

end;

procedure TForm5.BitBtn2Click(Sender: TObject);

begin

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

end;

end.

 

 

2) Презентация программы(MS PowerPoint):

 

 

 

 

 

 

 

 

 

 




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