Кинематический расчет кривошипно-шатунного механизма
СОДЕРЖАНИЕ
ВВЕДЕНИЕ 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].
Целью работы является создание приложения в среде Delphi позволяющие определить кинематические параметры, положения главных точек кривошипно-шатунного механизма в зависимости от времени. А так же создание математической модели решения поставленной задачи при помощи математического пакета MathCad.
Объектом исследования данной работы является применение ЭВМ для достижения поставленных целей. Предметом исследования является программы Delphi и Mathcad.
Разрабатываемая программа должна включать следующие функции:
- расчет таких характеристик как скорость точки B выходного звена – ползуна, нахождение координат точек А и В в момент времени t;
- представление графического решения задачи.
Для достижения цели выполнения курсовой работы, необходимо решить следующие задачи:
- произвести формулировку задачи с конкретными данными;
- провести предварительный анализ задачи, описать математический аппарат, который будет использоваться для её решения;
- в соответствии с определенным заданием разработать алгоритм решения задачи;
- разработать программу в среде Delphi, реализующую построенный алгоритм;
- решить задачу с помощью интегрированного пакета MathCAD;
- провести анализ полученных результатов;
- сделать общие выводы
ПОСТАНОВКА ЗАДАЧИ
Необходимо определить кинематические характеристики кривошипно-ползунного механизма, описанного схемой рисунок 1.1.
Рисунок 1.1 – Схема механизма:
1 – Стержень ОА; 2 – Стержень АВ; 3 – ползун.
В таблице 1.1 находятся данные, которые используются в ходе выполнения курсовой работы.
Таблица 1.1 – Входная информация
, м |
Закон движения |
||||
2 |
6 |
1 |
-4 |
10 |
ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
Для нахождения кинематических характеристик простого механизма будем использовать аналитический метод. Это удобней и быстрее, нежели использовать графический метод либо графоаналитическое интегрирование. Для этого необходимо решить две задачи. Это задача о положениях и задача о передаточных функциях.
Задача о положениях:
, (1.1)
где – длина стержня ОА;
– координата точки А по оси ОХ;
– угол поворота.
, (1.2)
где – координата точки А по оси ОУ.
, (1.3)
где –координата точки В по оси ОХ.
, (1.4)
где – координата точки В по оси ОУ;
– длина стержня АВ;
а – зависит от положения ползуна относительно начала координат, если ползун находится в низу а=-1.
Теперь можно найти координаты всех точек в любом положении кривошипа и в любой момент времени. Теперь необходимо определить скорости точек А и В, для этого необходимо решить задачу о передаточных функциях:
Скорость точки А раскладываем на 2-е скорости относительно осей.
, (1.5)
где – проекция вектора скорости точки А на ось 0Х;
– угловая частота вращения.
, (1.6)
где – проекция вектора скорости точки А на ось 0У.
, (1.7)
где – модуль скорости точки А.
Далее мы можем найти проекции скоростей точки В на оси X и Y:
, (1.8)
где – проекция вектора скорости точки В относительно оси Х.
, (1.9)
где – проекция вектора скорости точки B на ось 0Y.
, (1.10)
где – модуль скорости точки В.
РАЗРАБОТКА ПРОГРАММЫ В СРЕДЕ DELPHI
Описания алгоритма решения задачи
Описание алгоритма реализации
1) Вводим начальные данные l1, l2, XB, YB, w
2) Находим значение промежуточных вычислений:
- – из закона движения кривошипа для заданного момента времени
- XA – по формуле 1.1
- YA – по формуле 1.2
- XB – по формуле1.4
- VA – по формуле 1.7
- VB – по формуле 1.10
Блок-схема алгоритма
да нет
Рисунок 3.1 – Блок-схема
Разработка пользовательского и
нтерфейса
Используемые идентификаторы представлены в таблице 3.1.
Таблица 3.1 - Таблица идентификаторов
Математическое обозначение |
||||||||||||
Delphi |
L1 |
L2 |
xa |
ya |
yb |
vax |
vbx |
vby |
vay |
t |
va |
vb |
Описание среды программирования Delphi.
Программа в среде Delphi составляется как описание алгоритмов, которые будут выполняться, если возникает определенное событие, связанное с формой или с каким либо из размещенных на ней компонентов. Для каждого обрабатываемого события с помощью страницы Events инспектора объектов в тексте программы организуется процедура (procedure), между ключевыми словами begin и end которой программист записывает на языке ObjectPascal требуемый алгоритм.
Проект программы в Delphi состоит из, собственно, файла проекта (файл с расширением .dpr), одного или нескольких файлов исходного текста (с расширением .pas), файлов с описанием окон формы (с расширением .dfm) и еще нескольких вспомогательных файлов.
В файле проекта находится
информация о модулях, составляющих
данный проект. Файл проекта автоматически
создается и редактируется
Файл исходного текста – программный модуль (Unit) предназначен для размещения в нем программистом текстов программ на языке Pascal.[1]
Окно формы представляет
собой проект Windows-окна программы. На
этом окне в процессе написания программы
размещаются необходимые
Форма программы должна содержать следующие элементы интерфейса:
- Исходные данные;
- Решение задачи, представленное в виде таблицы и графика зависимости;
- Анимация движения механизма;
Рисунок 3.2-Форма программы
Код программы для данной задачи содержится в ПРИЛОЖЕНИИ 1.
Описание кнопок расположенных на главной форме программы:
1.Кнопка«Выйти» закрывает программу.
2. Кнопка «Вычислить и построить» выполняет расчет и выводит решение на форму в виде таблицы и графика.
3.Кнопка«Очистить графики» очищает построенные графики.
4.Кнопка«Пуск анимации» запускает в движение систему.
5.Кнопка«Сохранить» сохраняет данные в текстовый файл.
6.Кнопка«Сохранение анимации» сохраняет изображение системы.
7.Кнопка«Справка» открывает помощь по использованию программы.
Интерфейс разработанного приложения довольно прост и удобен в использовании. Состоит из следующих компонентов:
- Label - служит для отображения текста на экране
- Edit - стандартный управляющий элемент Windows для ввода. Он может быть использован для отображения короткого фрагмента текста и позволяет пользователю вводить текст во время выполнения программы. Так же может быть использован и для вывода текстовой информации.
- Chart – компонент предназначен для графического представления числовых данных.
- StringGrid – компонент, представляющий текстовые данные в виде таблицы.
- PageControl – компонент, позволяющий создавать несколько объемных страниц на форме.
- Canvas– стандартный компонент, позволяющий нарисовать и промоделировать движение кривошипно-ползунного механизма.
- SaveDialog – предназначен для сохранения данных в файл.
- SavePictureDialog – предназначен для сохранения файла изображения.
- XPManifest – предназначен для отображения интерфейса в стиле Windows XP.
- Timer – вводит необходимые задержки между выполнением тех или иных действий.
- Button – компонент, выполняющий функцию кнопок, при нажатии на которых выполняется заданное программой действие.
Тестирование программы
На рисунке 3.3 представлены результаты использования приложения.
Рисунок 3.3- Результаты использования приложения
Результаты расчетов представлены на рисунке 3.4.
Рисунок 3.4-Полученное решение задачи в виде численных значений, занесенных в таблицу
По полученным координатам точки A и точки B, а также их скоростей, строим графики [ПРИЛОЖЕНИЕ В].
РАЗРАБОТКА ПРОГРАММЫ В СРЕДЕ MATHCAD
4.1 Тестирование программы
Используемые идентификаторы представлены в таблице 4.1.
Таблица 4.1 - Таблица идентификаторов
Математическое обозначение |
||||||||||||
MathCad |
L1 |
L2 |
xb |
xa |
yb |
ya |
Vax |
Vay |
Vbx |
Vby |
t |
Описание программы MathCad:
MathCad —это популярная система компьютерной математики, предназначенная для автоматизации решения массовых математических задач в самых различных областях науки, техники и образования. Помимо собственно вычислений, как численных, так ианалитических, они позволяют с блеском решать сложные оформительские задачи, которые с трудом даются популярным текстовым редакторам или электронным таблицам. [2]
Формулы — основные объекты рабочего листа. Новый объект по умолчанию является формулой. Чтобы начать ввод формулы, надо установить крестообразный курсор в нужное место и начать ввод букв, цифр, знаков операций. При этом создается область формулы, в которой появляется уголковый курсор, охватывающий текущий элемент формулы, например имя переменной (функции) или число.
Чтобы выделить элементы формулы, которые в рамках операции должны рассматриваться как единое целое, используют клавишу ПРОБЕЛ. При каждом ее нажатии уголковый курсор «расширяется», охватывая элементы формулы, примыкающие к данному. После ввода знака операции элементы в пределах уголкового курсора автоматически заключаются в скобки. Элементы формул можно вводить с клавиатуры или с помощью специальных панелей управления. Панели управления открывают с помощью меню View (Вид) или кнопками панели управления Math (Математика).[3]
Теперь это же начальное условие задачи подставим для рассчета в математический пакет MathСad, получим окно с промежуточными расчетами, представленное на рисунке 4.1:
Рисунок 4.1 – Промежуточные расчеты в MathCad
На рисунке 4.2 представлены результаты вычислений, полученные при помощи MathCad, которые с учетом программного округления соответствуют результатам, полученным при помощи программы Delphi.
Рисунок 4.2 – Решение задачи в MathCad
ЗАКЛЮЧЕНИЕ
В ходе курсовой работы по предложенному нам заданию, необходимо было разработать алгоритм для определения кинематических характеристик механизма. Для этого был использован аналитический метод, так как он наиболее прост и легок в решении для столь простого механизма. В данной работе необходимо было найти значения кинематических характеристик на интервале времени, что и было выполнено на практике при помощи Delphi, а также интегрированного пакета MathCad. В результате выполнения были получены абсолютно одинаковые результаты, что показывает о правильности выполнения работы. Аналитический метод расчетов больше всего подходит для решения поставленной задачи. Легко программируются т.к. для вычисления последовательных значений нужно знать лишь одно предыдущее. Метод является само стартующим, величина интервала времени может легко изменяться. Этот метод широко применяется и используется в создании различных программ и приложений.
Среда Delphi является очень удобной при решении такого рода задач, так как позволяет не с большой точностью с помощью программного кода найти корни того или иного уравнения, таким образом, для достижения наибольшей точности в расчетах лучше использовать программу Delphi.
Математический пакет MathCad также позволяет решать системы уравнений и простые уравнения, но он отличается от Delphi главным образом тем, что в её входном языке (MathCad), который максимально приближён к естественному математическому языку (многие функции уже заложены разработчиками, что значительно упрощает задачу), это говорит о том, что в отличие от программы Delphi MathCad более удобен и более легок при решении.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
- Культин, Н.Б., Delphi в задачах и примерах. – СПб.: БХВ.- Петербург, 2003 – 288 ст.
- Макаров Е.Г., Инженерные расчеты в MathCad. Учебный курс. – СПб.: Питер, 2003- 448 ст.
- Плис А.И., Сливина Н.А., MathCad. Математический практикум для инженеров и экономистов: Учеб.пособие. – 2-е изд., перераб. и доп. – М.:Финансы и статистика, 2003 - 656 ст.
- Фаронов В.В., Delphi. Программирование на языке высокого уровня: Учебник для ВУЗов. – СПб.: Питер, 2005- 640 ст.
- Наранович О.И., Скобля С.Г. Информатика: методические указания и задания к лабораторным работам для студентов 2-го курса дневной формы обучения специальностей 40 01 02, 36 01 03, 36 01 01. Часть 3. –Барановичи: БарГУ, 2005.
- Положение о курсовых работах (проектах) №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(
Vay:=-L1*w*sin(w*t-PI/6.0)*
Va:=sqrt(sqr(Vax)+sqr(Vay));
deltax:=(Xb-Xa);
deltay:=sqrt(abs(sqr(L2)-sqr(
Yb:=Ya-deltay;
Vbx:=0;
Vby:=20*cos(w*t-PI/6.0)-(20*
Vb:=sqrt(sqr(Vbx)+sqr(Vby));
stringgrid1.Cells[0,i]:=
stringgrid1.Cells[1,i]:=
stringgrid2.Cells[0,i]:=
stringgrid2.Cells[1,i]:=
stringgrid3.Cells[0,i]:=
stringgrid3.Cells[1,i]:=
stringgrid1.Cells[2,i]:=
stringgrid1.Cells[3,i]:=
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.
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.
img.Canvas.LineTo(img.Width-
img.Canvas.LineTo(img.Width-
img.Canvas.MoveTo(img.Width-
img.Canvas.LineTo(img.Width-
//L1
img.Canvas.MoveTo(dx,img.
img.Canvas.LineTo(dx+Trunc(
//L2
img.Canvas.LineTo(dx+Trunc(
//прямоугольник
img.Canvas.MoveTo(dx+Trunc(
img.Canvas.LineTo(dx+Trunc(
img.Canvas.Rectangle(dx+
dx+Trunc(Bx*k)+10,img.Height-
//подписи
img.Canvas.TextOut(img.Width-
img.Canvas.TextOut(dx-15,25,'
img.Canvas.TextOut(dx-10,img.
// А
img.Canvas.TextOut(dx+Trunc(
// B
img.Canvas.TextOut(dx+Trunc(
//опора
img.Canvas.Polygon([Point(dx,
Point(dx-10,img.Height-dy+15),
Point(dx+10,img.Height-dy+15)]
//штрихи
img.Canvas.MoveTo(dx-10,img.
img.Canvas.LineTo(dx-8,img.
img.Canvas.MoveTo(dx-6,img.
img.Canvas.LineTo(dx-4,img.
img.Canvas.MoveTo(dx-2,img.
img.Canvas.LineTo(dx,img.
img.Canvas.MoveTo(dx+2,img.
img.Canvas.LineTo(dx+4,img.
img.Canvas.MoveTo(dx+6,img.
img.Canvas.LineTo(dx+8,img.
img.Canvas.MoveTo(dx+10,img.
img.Canvas.LineTo(dx+12,img.
end;
procedure TForm1.FormCreate(Sender: TObject);
var
Ax0,Ay0,Bx0,By0: real;
begin
BitBtn4.Click;
Ax0:=StrToFloat(StringGrid2.
Ay0:=StrToFloat(StringGrid2.
Bx0:=StrToFloat(StringGrid3.
By0:=StrToFloat(StringGrid3.
PaintA(Image1,Ax0,Ay0,Bx0,
it:=1;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
Ax0,Ay0,Bx0,By0:real;
begin
Image1.Canvas.Brush.Color:=
Image1.Canvas.FillRect(
Ax0:=StrToFloat(StringGrid2.
Ay0:=StrToFloat(StringGrid2.
Bx0:=StrToFloat(StringGrid3.
By0:=StrToFloat(StringGrid3.
PaintA(Image1,Ax0,Ay0,Bx0,
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:=
if SavePictureDialog1.Execute then begin
Image1.Picture.SaveToFile(
end;
end;
end.
ПРИЛОЖЕНИЕ Б. Графики зависимости координат точек А и В от времени
Рисунок Б.1 – Графики зависимости координат точек А от времени в Delphi
Рисунок Б.2 – График зависимости координаты точки В от времени в Delphi
Рисунок Б.3 – График зависимости координаты точки А от времени в Mathcad
Рисунок Б.4- График зависимости координаты точки от времени в MathCad
ПРИЛОЖЕНИЕ В. Графики зависимости скорости от времени
Рисунок В.1 – График зависимости скорости от времени в Delphi
Рисунок В.2 – График зависимости скорости от времени в MathCad

- Кинематический расчет плоских шарнирных механизмов
- Кинематический расчет привода
- Кинематический расчет привода
- Кинематический расчет привода и выбор электродвигателя
- Кинематический расчет привода и выбор электродвигателя
- Кинематический расчет привода,конструирование редуктора
- Кинематический расчет привода станка
- Кинематический и силовой расчты привода
- Кинематический и энергетический расчеты приводной станции
- Кинематический расчёт
- Кинематический расчет. Выбор электрического дви- гателя
- Кинематический расчет двигателя
- Кинематический расчет и выбор электродвигателя
- Кинематический расчет конического редуктора