Кинематический расчет кривошипно-шатунного механизма

Автор работы: Пользователь скрыл имя, 30 Марта 2013 в 12:53, курсовая работа

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

Целью работы является создание приложения в среде Delphi позволяющие определить кинематические параметры, положения главных точек кривошипно-шатунного механизма в зависимости от времени. А так же создание математической модели решения поставленной задачи при помощи математического пакета MathCad.
Для достижения цели выполнения курсовой работы, необходимо решить следующие задачи:
произвести формулировку задачи с конкретными данными;
провести предварительный анализ задачи, описать математический аппарат, который будет использоваться для её решения;
в соответствии с определенным заданием разработать алгоритм решения задачи;
разработать программу в среде Delphi, реализующую построенный алгоритм;
решить задачу с помощью интегрированного пакета MathCAD;
провести анализ полученных результатов;

Содержание работы

ВВЕДЕНИЕ 5
1 ПОСТАНОВКА ЗАДАЧИ 7
2 ТЕОРЕТИЧЕСКАЯ ЧАСТЬ 8
3 РАЗРАБОТКА ПРОГРАММЫ В СРЕДЕ DELPHI 11
3.1 Описания алгоритма решения задачи 11
3.2 Блок-схема алгоритма 12
3.3 Разработка пользовательского интерфейса 13
3.4 Тестирование программы 16
4 РАЗРАБОТКА ПРОГРАММЫ В СРЕДЕ MATHCAD 17
4.1 Тестирование программы 17
ЗАКЛЮЧЕНИЕ 19
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 20
ПРИЛОЖЕНИЕ А. Код программы в Delphi 21
ПРИЛОЖЕНИЕ Б. Графики зависимости координат точек А и В от времени 32
ПРИЛОЖЕНИЕ В. Графики зависимости скорости от времени 33

Файлы: 1 файл

Отчет 23.docx

— 406.55 Кб (Скачать файл)

Теперь это же начальное  условие задачи подставим для  рассчета в математический пакет MathСad, получим окно с промежуточными расчетами, представленное на рисунке 4.1:

Рисунок 4.1 – Промежуточные расчеты в MathCad

На рисунке 4.2 представлены результаты вычислений, полученные при помощи MathCad, которые с учетом программного округления соответствуют результатам, полученным при помощи программы Delphi.

Рисунок 4.2 – Решение задачи в MathCad

ЗАКЛЮЧЕНИЕ

 

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

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

Математический  пакет MathCad также позволяет решать системы уравнений и простые уравнения, но он отличается от Delphi  главным образом тем, что в её входном языке (MathCad), который максимально приближён к естественному математическому языку (многие функции уже заложены разработчиками, что значительно упрощает задачу), это говорит о том, что в отличие от программы Delphi  MathCad более удобен и более легок при решении.

 

 

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

 

  1. Культин, Н.Б., Delphi в задачах и примерах. – СПб.: БХВ.- Петербург, 2003 – 288 ст.
  2. Макаров Е.Г., Инженерные расчеты в MathCad. Учебный курс. – СПб.: Питер, 2003- 448 ст.
  3. Плис А.И., Сливина Н.А., MathCad. Математический практикум для инженеров и экономистов: Учеб.пособие. – 2-е изд., перераб. и доп. – М.:Финансы и статистика, 2003 - 656 ст. 
  4. Фаронов В.В., Delphi. Программирование на языке высокого уровня: Учебник для ВУЗов. – СПб.: Питер, 2005- 640 ст.
  5. Наранович О.И., Скобля С.Г. Информатика: методические указания и задания к лабораторным работам для студентов 2-го курса дневной формы обучения специальностей 40 01 02, 36 01 03, 36 01 01. Часть 3. –Барановичи: БарГУ, 2005.
  6. Положение о курсовых работах (проектах) №01-01; МО Республики Беларусь, БарГУ. – Барановичи, 2007.

 

 

 

 

 

 

 

 

 

 

ПРИЛОЖЕНИЕ А. Код программы в Delphi

unit Unit1;

 

interface

 

uses

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

  Dialogs, StdCtrls, ExtCtrls, TeeProcs, TeEngine, Chart, ComCtrls, Buttons,

  Grids, Series, XPMan, ExtDlgs;

 

type

  TForm1 = class(TForm)

    GroupBox1: TGroupBox;

    Label1: TLabel;

    Edit1: TEdit;

    Label2: TLabel;

    Edit2: TEdit;

    Label3: TLabel;

    Edit3: TEdit;

    Label4: TLabel;

    Edit4: TEdit;

    Label5: TLabel;

    Edit5: TEdit;

    PageControl1: TPageControl;

    B: TTabSheet;

    Chart1: TChart;

    Chart2: TChart;

    C: TTabSheet;

    Chart3: TChart;

    BitBtn3: TBitBtn;

    BitBtn4: TBitBtn;

    BitBtn5: TBitBtn;

    BitBtn6: TBitBtn;

    BitBtn7: TBitBtn;

    BitBtn2: TBitBtn;

    Image1: TImage;

    StringGrid1: TStringGrid;

    StringGrid3: TStringGrid;

    Series1: TLineSeries;

    Series2: TLineSeries;

    Series3: TLineSeries;

    Series4: TLineSeries;

    Timer1: TTimer;

    A: TTabSheet;

    SaveDialog1: TSaveDialog;

    Edit6: TEdit;

    Label6: TLabel;

    SavePictureDialog1: TSavePictureDialog;

    Button1: TButton;

    StringGrid2: TStringGrid;

    procedure BitBtn4Click(Sender: TObject);

    procedure BitBtn6Click(Sender: TObject);

    procedure BitBtn5Click(Sender: TObject);

    procedure BitBtn7Click(Sender: TObject);

    procedure FormCreate(Sender: TObject);

    procedure Timer1Timer(Sender: TObject);

    procedure BitBtn3Click(Sender: TObject);

    procedure BitBtn2Click(Sender: TObject);

    procedure Button1Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

 

var

Form1: TForm1;

 w, L1, fi, L2, t, Va, Vb,  Xa, Xb, Ya, Yb, Vax,Vbx, Vay,Vby, deltax, deltay:real;

 i,it,k:integer;

implementation

 

{$R *.dfm}

 

function signum(a,b: extended): integer;

begin

 if a=b then

  result:=0

 else

  if a<b then

   result:=-1

  else

   result:=1;

end;

 

procedure TForm1.BitBtn4Click(Sender: TObject);

begin

L1:=strtofloat(edit1.text);

L2:=strtofloat(edit2.text);

 Xb:=strtofloat(edit3.text);

 Yb:=strtofloat(edit4.text);

 w:=strtofloat(edit5.text);

 t:=0; i:=1;

 stringgrid1.Cells[0,0]:='Время, с';

 stringgrid1.Cells[1,0]:='Угол фи, рад';

 stringgrid2.Cells[0,0]:='X, м';

 stringgrid2.Cells[1,0]:='Y, м';

 stringgrid3.Cells[0,0]:='X, м';

 stringgrid3.Cells[1,0]:='Y, м';

 stringgrid1.Cells[2,0]:='Скорость точки А, м/с';

stringgrid1.Cells[3,0]:='Скорость точки В, м/с';

 while t<=2.3 do begin

  fi:=cos(w*t-PI/6.0);

  Xa:=L1*cos(fi);

  Ya:=L1*sin(fi);

  Vax:=L1*w*sin(w*t-PI/6.0)*sin(Cos(w*t-PI/6.0));

  Vay:=-L1*w*sin(w*t-PI/6.0)*cos(Cos(w*t-PI/6.0));

  Va:=sqrt(sqr(Vax)+sqr(Vay));

  deltax:=(Xb-Xa);

  deltay:=sqrt(abs(sqr(L2)-sqr(deltax)));

  Yb:=Ya-deltay;

  Vbx:=0;

  Vby:=20*cos(w*t-PI/6.0)-(20*sin(w*t-PI/6.0)*signum(36-sqr(2*cos(w*t-PI/6.0)-1.0),0)*(2*cos(w*t-PI/6.0)-1.0))/sqrt(abs(36-sqr(2*cos(w*t-PI/6.0)-1)));

  Vb:=sqrt(sqr(Vbx)+sqr(Vby));

  stringgrid1.Cells[0,i]:=floattostr(t);

  stringgrid1.Cells[1,i]:=floattostrf(fi,ffgeneral,3,2);

  stringgrid2.Cells[0,i]:=floattostrf(Xa,ffgeneral,3,2);

  stringgrid2.Cells[1,i]:=floattostrf(Ya,ffgeneral,3,2);

  stringgrid3.Cells[0,i]:=floattostrf(Xb,ffgeneral,3,2);

  stringgrid3.Cells[1,i]:=floattostrf(Yb,ffgeneral,3,2);

  stringgrid1.Cells[2,i]:=floattostrf(Va,ffgeneral,3,2);

  stringgrid1.Cells[3,i]:=floattostrf(Vb,ffgeneral,4,2);

  t:=t+0.01; i:=i+1;

  series1.AddXY(t,Vb);

  series2.AddXY(t,Xa);

  series3.AddXY(t,Ya);

  series4.AddXY(t,Yb);

 end;

end;

 

procedure TForm1.BitBtn6Click(Sender: TObject);

begin

series1.Clear;

series2.Clear;

series3.Clear;

series4.Clear;

end;

 

procedure TForm1.BitBtn5Click(Sender: TObject);

begin

Timer1.Enabled:=true;

end;

 

procedure TForm1.BitBtn7Click(Sender: TObject);

begin

Timer1.Enabled:=false;

end;

 

procedure PaintA(img: TImage; Ax,Ay,Bx,By:real);

var

 dx,dy:integer;

begin

 dx:=100;

 dy:=200;

 k:=20;

//Оy

 img.Canvas.MoveTo(dx,20);

 img.Canvas.LineTo(dx,img.Height-dy);

 img.Canvas.MoveTo(dx,20);

 img.Canvas.LineTo(dx-5,25);

 img.Canvas.MoveTo(dx,20);

 img.Canvas.LineTo(dx+5,25);

//Оx

 img.Canvas.MoveTo(dx,img.Height-dy);

 img.Canvas.LineTo(img.Width-dx,img.Height-dy);

 img.Canvas.LineTo(img.Width-dx-5,img.Height-dy-5);

 img.Canvas.MoveTo(img.Width-dx,img.Height-dy);

 img.Canvas.LineTo(img.Width-dx-5,img.Height-dy+5);

//L1

 img.Canvas.MoveTo(dx,img.Height-dy);

 img.Canvas.LineTo(dx+Trunc(Ax*k),img.Height-dy-Trunc(Ay*k));

//L2

 img.Canvas.LineTo(dx+Trunc(Bx*k)+5,img.Height-dy-Trunc(By*k)-5);

//прямоугольник

 img.Canvas.MoveTo(dx+Trunc(Bx*k),img.Height-dy-Trunc(By*k)-5);

 img.Canvas.LineTo(dx+Trunc(Bx*k),img.Height-dy-Trunc(By*k)+20);

 img.Canvas.Rectangle(dx+Trunc(Bx*k),img.Height-dy-Trunc(By*k)-5,

                      dx+Trunc(Bx*k)+10,img.Height-dy-Trunc(By*k)+30);

//подписи

 img.Canvas.TextOut(img.Width-dx,img.Height-dy,'X');

 img.Canvas.TextOut(dx-15,25,'Y');

 img.Canvas.TextOut(dx-10,img.Height-dy-10,'O');

// А

 img.Canvas.TextOut(dx+Trunc(Ax*k),img.Height-dy-Trunc(Ay*k)-15,'A');

// B

 img.Canvas.TextOut(dx+Trunc(Bx*k)+15,img.Height-dy-Trunc(By*k)-25,'B');

//опора

 img.Canvas.Polygon([Point(dx,img.Height-dy),

                     Point(dx-10,img.Height-dy+15),

                     Point(dx+10,img.Height-dy+15)]);

//штрихи

 img.Canvas.MoveTo(dx-10,img.Height-dy+15);

 img.Canvas.LineTo(dx-8,img.Height-dy+19);

 img.Canvas.MoveTo(dx-6,img.Height-dy+15);

 img.Canvas.LineTo(dx-4,img.Height-dy+19);

 img.Canvas.MoveTo(dx-2,img.Height-dy+15);

 img.Canvas.LineTo(dx,img.Height-dy+19);

 img.Canvas.MoveTo(dx+2,img.Height-dy+15);

 img.Canvas.LineTo(dx+4,img.Height-dy+19);

 img.Canvas.MoveTo(dx+6,img.Height-dy+15);

 img.Canvas.LineTo(dx+8,img.Height-dy+19);

 img.Canvas.MoveTo(dx+10,img.Height-dy+15);

 img.Canvas.LineTo(dx+12,img.Height-dy+19);

end;

 

procedure TForm1.FormCreate(Sender: TObject);

var

Ax0,Ay0,Bx0,By0: real;

begin

BitBtn4.Click;

Ax0:=StrToFloat(StringGrid2.Cells[0,1]);

Ay0:=StrToFloat(StringGrid2.Cells[1,1]);

Bx0:=StrToFloat(StringGrid3.Cells[0,1]);

By0:=StrToFloat(StringGrid3.Cells[1,1]);

 PaintA(Image1,Ax0,Ay0,Bx0,By0);

 it:=1;

end;

 

procedure TForm1.Timer1Timer(Sender: TObject);

var

Ax0,Ay0,Bx0,By0:real;

begin

Image1.Canvas.Brush.Color:=ClWhite;

 Image1.Canvas.FillRect(Image1.Canvas.ClipRect);

Ax0:=StrToFloat(StringGrid2.Cells[0,it]);

Ay0:=StrToFloat(StringGrid2.Cells[1,it]);

Bx0:=StrToFloat(StringGrid3.Cells[0,it]);

By0:=StrToFloat(StringGrid3.Cells[1,it]);

 PaintA(Image1,Ax0,Ay0,Bx0,By0);

 it:=it+1;

 if(it=64) then it:=1;

end;

 

procedure TForm1.BitBtn3Click(Sender: TObject);

var

I: Byte;

F: TextFile;

S: String;

begin

 AssignFile(F, Edit6.Text);

 Rewrite(F);

 for I := 0 to StringGrid1.RowCount - 1 do begin

  S:=StringGrid1.Cells[0,I] +' | '+ StringGrid1.Cells[1,I] +' | '+ StringGrid1.Cells[2,I] +' | '+StringGrid1.Cells[3,I] +' | '+StringGrid2.Cells[0,I] +' | '+StringGrid2.Cells[1,I] +' | '+StringGrid3.Cells[0,I] +' | '+StringGrid3.Cells[1,I];

  Writeln(F,S)

 end;

 CloseFile(F)

end;

 

procedure TForm1.BitBtn2Click(Sender: TObject);

begin

 showmessage('Курсовая по информатике. L1,L2-длины стержней. Xb,Yb-координаты В. W-угловая частота вращения. Работа содержит таблицу с координатами и скоростями, графики и модель движения системы.  Руководитель: Тимовец А.Н.   Выполнил: Наливко О.И.  БарГУ 2012г');

end; //справка

 

//сохранение файла изображения

procedure TForm1.Button1Click(Sender: TObject);

var

 FName:string;

begin

 FName:=edit6.text;

SavePictureDialog1.FileName:=FName;

 if SavePictureDialog1.Execute then begin

  Image1.Picture.SaveToFile(SavePictureDialog1.FileName+'.jpg');

 end;

end;

 

end.

 

 

 

 

 

 

ПРИЛОЖЕНИЕ Б. Графики зависимости координат точек А и В от времени

 

Рисунок Б.1 – Графики зависимости координат точек А от времени в Delphi

 

Рисунок Б.2 – График зависимости координаты точки В от времени в Delphi

 

Рисунок Б.3 – График зависимости координаты точки А от времени в Mathcad

 

Рисунок Б.4- График зависимости координаты точки от времени в MathCad

 

ПРИЛОЖЕНИЕ В. Графики зависимости скорости от времени

 

Рисунок В.1 – График зависимости скорости от времени в Delphi

 

Рисунок В.2 – График зависимости скорости от времени в MathCad

 

 


Информация о работе Кинематический расчет кривошипно-шатунного механизма