Моделирование работы плоского механизма

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    255,68 Кб
  • Опубликовано:
    2016-03-13
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Моделирование работы плоского механизма

Министерство образования и науки Российской Федерации

Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

«Южно-Уральский государственный университет»

Факультет «Приборостроительный»

Кафедра «Информационно-измерительная техника»







ПОЯСНИТЕЛЬНАЯ ЗАПИСКА К КУРСОВОЙ РАБОТЕ

по дисциплине «Информатика»

МОДЕЛИРОВАНИЕ РАБОТЫ ПЛОСКОГО МЕХАНИЗМА


Автор проекта

студент группы

Я.С. Загоскин




Челябинск 2014

Аннотация

Загоскин Я.С. Моделирование работы плоского механизма. Пояснительная записка к курсовой работе. - Челябинск: ЮУрГУ, ПС-136, 26с., 3 ил., 1 табл., библиогр. список - 1 наим.

Цель курсовой работы: создание оболочки моделирования работы кривошипно-шатунного механизма.

Задачи курсовой работы:

·    описание параметров механизма;

·        исследование кинематики механизма;

·        представление схемы и анимации движения механизма;

·        построение графика движения основных точек механизма;

·        представление таблицы с результатами расчетов.

Для решения поставленных задач была рассмотрена, изучена и подробно описана схема работы кривошипно-шатунного механизма, приведенная в задании, и его математическая модель.

Курсовая работа выполнена с помощью методов объектно-ориентированного программирования в среде Microsoft Visual Studio 2013 C++.

Оглавление

Аннотация

Оглавление

Введение

1. Математическая модель механизма

1.1 Кинематика точки B

1.2 Кинематика точек C и M

2. Алгоритм программы

3. Код программы

4. Результаты расчетов

Заключение

Библиографический список

Введение

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

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

Для достижения поставленной цели необходимо решить следующие задачи:

·    проанализировать схему данного механизма и исходные данные;

·        составить математическую модель механизма;

·        создать проект оболочки моделирования механизма в среде Microsoft Visual Studio 2013 C++.

Представленная в техническом задании схема механизма позволяет выделить основные его части:

·    шарнир цилиндрический A, неподвижный, закрепленный;

·        кривошип AB;

·        шарнир цилиндрический B;

·        шатун BC;

·        шарнир цилиндрический C;

·        кривошип CD;

·        шарнир цилиндрически D, неподвижный, закрепленный.

Из-за того, что все звенья механизма связаны между собой цилиндрическими шарнирами, механизм совершает движение только в плоскости - XoY.

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

1. Математическая модель механизма

Для построения математической модели кривошипно-шатунного механизма необходимо и достаточно изучить движение его основных трех точек: B, C и M.

Исходными данными для исследования кинематики точек являются: координаты точек A и D, длины кривошипов AB и CD и шатуна BC, длина отрезка BM, угловая скорость кривошипа AB.

1.1 Кинематика точки B


Из рисунка 1:

Рисунок 1 - Схема механизма


Из ∆ABH:

Таким образом, мы имеем:


1.2 Кинематика точек C и M


Для исследования кинематики точек C и M определим коэффициенты:


Используя рассчитанные коэффициенты, определим координаты точки C:


Координаты точки M:


Также была поставлена задача о скорости движения точки M.

Проекция скорости точки на ось-это производная по времени от соответствующей координаты:


Таким образом, получаем следующие зависимости:


2. Алгоритм программы

Приведем алгоритм программы:

1)  Создаем оконное приложение. В подпрограммы #pragma once -описываем элементы оконного приложения: Label, Timer, TextBox, PictureBox, Button, DataGridView. Приводим их к нужному нам виду, заносим в них исходные значения и т.д.

2)      В подпрограмме #pragma endregion объявляем все переменные и классы, используемые в требующихся функциях.

)        Описываем функцию void Calculation1(), в которую записывается математическая модель кривошипно-шатунного механизма;

)        Описываем функцию void Animation1(), которая реализует анимацию движения механизма.

)        Добавляем обработчик событий private: System::Void button1_Click, который при нажатии на кнопку «Старт» включает секундомер и активирует функцию ToFile1();

6)      private: System::Voidbutton2_Click - обработчик событий, который при нажатии на кнопку «Стоп» останавливает секундомер;

7)      private: System::Voidtimer1_Tick - обработчик событий, который активирует функцииCalculation1(), Animation1(), Graphic(), Table();

)        voidAnimation1() - функция, которая реализует анимацию движения механизма;

9)      voidGraphic() - функция, которая отвечает за построение графиков движения основных точек механизма;

10) private: System::VoidForm1_Load - обработчик событий, который при запуске программы активирует инструменты прорисовки анимации и графиков движения точек механизма;

11) voidVelocity() - функция, вычисляющая скорость точки M;

12)    voidTable() - функция, заполняющая таблицу (элемент DataGridView) искомыми данными;

13)    voidToFile1() - функция записи результатов в отдельный файл формата .txt

3. Код программы


#pragma onceKursovaya {namespace System;namespace System::ComponentModel;namespace System::Collections;namespace System::Windows::Forms;namespace System::Data;namespace System::Drawing;

/// <summary>

/// Сводка для Form1

///

/// Внимание! При изменении имени этого класса необходимо также изменить

/// свойство имени файла ресурсов ("ResourceFileName") для средства компиляции управляемого ресурса,

/// связанного со всеми файлами с расширением .resx, от которых зависит данный класс. В противном случае,

/// конструкторы не смогут правильно работать с локализованными

/// ресурсами, сопоставленными данной форме.

/// </summary>ref class Form1 : public System::Windows::Forms::Form

{:(void)

{();

//

//TODO: добавьтекодконструктора

//

}:

/// <summary>

/// Освободить все используемые ресурсы.

/// </summary>

~Form1()

{(components)

{components;

}

}: : System::Windows::Forms::PictureBox^ pictureBox1;: : System::Windows::Forms::Timer^ timer6;: System::Windows::Forms::PictureBox^ pictureBox2;: System::Windows::Forms::DataGridView^ dataGridView1;: System::Windows::Forms::Label^ label105;: System::Windows::Forms::Label^ label88;: System::Windows::Forms::Label^ label89;: System::Windows::Forms::TextBox^ textBox41;: System::Windows::Forms::Label^ label90;: System::Windows::Forms::Label^ label91;: System::Windows::Forms::TextBox^ textBox42;: System::Windows::Forms::Button^ button11;: System::Windows::Forms::Label^ label92;: System::Windows::Forms::Label^ label93;: System::Windows::Forms::Label^ label94;: System::Windows::Forms::Label^ label95;: System::Windows::Forms::Label^ label96;: System::Windows::Forms::Label^ label97;: System::Windows::Forms::Label^ label98;: System::Windows::Forms::Label^ label99;: System::Windows::Forms::Label^ label100;: System::Windows::Forms::Label^ label101;: System::Windows::Forms::Label^ label102;: System::Windows::Forms::Label^ label103;: System::Windows::Forms::Label^ label104;: System::Windows::Forms::TextBox^ textBox43;: System::Windows::Forms::TextBox^ textBox44;: System::Windows::Forms::TextBox^ textBox45;: System::Windows::Forms::TextBox^ textBox46;: System::Windows::Forms::TextBox^ textBox47;: System::Windows::Forms::TextBox^ textBox48;: System::Windows::Forms::Button^ button12;: System::Windows::Forms::TextBox^ textBox1;: System::Windows::Forms::Label^ label1;: System::Windows::Forms::Label^ label2;: : : : System::ComponentModel::IContainer^ components;

private:

/// <summary>

/// Требуется переменная конструктора.

/// </summary>

#pragma region Windows Form Designer generated code

/// <summary>

/// Обязательный метод для поддержки конструктора - не изменяйте

/// содержимое данного метода при помощи редактора кода.

{>components = (gcnew System::ComponentModel::Container());>pictureBox1 = (gcnew System::Windows::Forms::PictureBox());>timer6 = (gcnew System::Windows::Forms::Timer(this->components));>pictureBox2 = (gcnew System::Windows::Forms::PictureBox());>dataGridView1 = (gcnew System::Windows::Forms::DataGridView());>label105 = (gcnew System::Windows::Forms::Label());>label88 = (gcnew System::Windows::Forms::Label());>label89 = (gcnew System::Windows::Forms::Label());>textBox41 = (gcnew System::Windows::Forms::TextBox());>label90 = (gcnew System::Windows::Forms::Label());>label91 = (gcnew System::Windows::Forms::Label());>textBox42 = (gcnew System::Windows::Forms::TextBox());>button11 = (gcnew System::Windows::Forms::Button());>label92 = (gcnew System::Windows::Forms::Label());>label93 = (gcnew System::Windows::Forms::Label());>label94 = (gcnew System::Windows::Forms::Label());>label95 = (gcnew System::Windows::Forms::Label());>label96 = (gcnew System::Windows::Forms::Label());>label97 = (gcnew System::Windows::Forms::Label());>label98 = (gcnew System::Windows::Forms::Label());>label99 = (gcnew System::Windows::Forms::Label());>label100 = (gcnew System::Windows::Forms::Label());>label101 = (gcnew System::Windows::Forms::Label());>label102 = (gcnew System::Windows::Forms::Label());>label103 = (gcnew System::Windows::Forms::Label());>label104 = (gcnew System::Windows::Forms::Label());>textBox43 = (gcnew System::Windows::Forms::TextBox());>textBox44 = (gcnew System::Windows::Forms::TextBox());>textBox45 = (gcnew System::Windows::Forms::TextBox());>textBox46 = (gcnew System::Windows::Forms::TextBox());>textBox47 = (gcnew System::Windows::Forms::TextBox());>textBox48 = (gcnew System::Windows::Forms::TextBox());>button12 = (gcnew System::Windows::Forms::Button());>textBox1 = (gcnew System::Windows::Forms::TextBox());>label1 = (gcnew System::Windows::Forms::Label());>label2 = (gcnew System::Windows::Forms::Label());

(cli::safe_cast<System::ComponentModel::ISupportInitialize^>(this->pictureBox1))->BeginInit();

(cli::safe_cast<System::ComponentModel::ISupportInitialize^>(this->pictureBox2))->BeginInit();

(cli::safe_cast<System::ComponentModel::ISupportInitialize^>(this->dataGridView1))->BeginInit();>SuspendLayout();

//

// pictureBox1

// >pictureBox1->BackColor = System::Drawing::SystemColors::Window;>pictureBox1->Location = System::Drawing::Point(511, 12);>pictureBox1->Name = L"pictureBox1";>pictureBox1->Size = System::Drawing::Size(588, 354);>pictureBox1->SizeMode = System::Windows::Forms::PictureBoxSizeMode::Zoom;>pictureBox1->TabIndex = 1;>pictureBox1->TabStop = false;

//

// timer6

// >timer6->Interval = 50;>timer6->Tick += gcnew System::EventHandler(this, &Form1::timer6_Tick);

//

// pictureBox2

// >pictureBox2->BackColor = System::Drawing::SystemColors::Window;>pictureBox2->Location = System::Drawing::Point(511, 391);>pictureBox2->Name = L"pictureBox2";>pictureBox2->Size = System::Drawing::Size(588, 354);>pictureBox2->TabIndex = 2;>pictureBox2->TabStop = false;

//

// dataGridView1

// >dataGridView1->ColumnHeadersHeightSizeMode = System::Windows::Forms::DataGridViewColumnHeadersHeightSizeMode::AutoSize;>dataGridView1->Location = System::Drawing::Point(12, 391);>dataGridView1->Name = L"dataGridView1";>dataGridView1->Size = System::Drawing::Size(480, 354);>dataGridView1->TabIndex = 3;

//

// label105

// >label105->AutoSize = true;>label105->Font = (gcnew System::Drawing::Font(L"Symbol", 8.25F, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point,_cast<System::Byte>(2)));>label105->Location = System::Drawing::Point(38, 255);>label105->Name = L"label105";>label105->Size = System::Drawing::Size(14, 13);>label105->TabIndex = 197;>label105->Text = L"a";

//

// label88

// >label88->AutoSize = true;>label88->Location = System::Drawing::Point(229, 256);>label88->Name = L"label88";>label88->Size = System::Drawing::Size(36, 13);>label88->TabIndex = 193;>label88->Text = L", град";

//

// label89

// >label89->AutoSize = true;>label89->Location = System::Drawing::Point(9, 255);>label89->Name = L"label89";>label89->Size = System::Drawing::Size(32, 13);>label89->TabIndex = 192;>label89->Text = L"Угол";

//

// textBox41

// >textBox41->Location = System::Drawing::Point(135, 248);>textBox41->Margin = System::Windows::Forms::Padding(3, 10, 3, 3);>textBox41->Name = L"textBox41";>textBox41->Size = System::Drawing::Size(80, 20);>textBox41->TabIndex = 191;>textBox41->Text = L"-20";

//

// label90

// >label90->AutoSize = true;>label90->Location = System::Drawing::Point(229, 223);>label90->Name = L"label90";>label90->Size = System::Drawing::Size(27, 13);>label90->TabIndex = 190;>label90->Text = L", см";

//

// label91

// >label91->AutoSize = true;>label91->Location = System::Drawing::Point(9, 223);>label91->Name = L"label91";>label91->Size = System::Drawing::Size(83, 13);>label91->TabIndex = 189;>label91->Text = L"Координата xD";

//

// textBox42

// >textBox42->Location = System::Drawing::Point(135, 215);>textBox42->Margin = System::Windows::Forms::Padding(3, 10, 3, 3);>textBox42->Name = L"textBox42";>textBox42->Size = System::Drawing::Size(80, 20);>textBox42->TabIndex = 188;>textBox42->Text = L"2";

//

// button11

// >button11->Location = System::Drawing::Point(312, 103);>button11->Name = L"button11";>button11->Size = System::Drawing::Size(115, 33);>button11->TabIndex = 187;>button11->Text = L"Стоп";>button11->UseVisualStyleBackColor = true;>button11->Click += gcnew System::EventHandler(this, &Form1::button11_Click);

//

// label92

// >label92->AutoSize = true;>label92->Location = System::Drawing::Point(229, 189);>label92->Name = L"label92";>label92->Size = System::Drawing::Size(30, 13);>label92->TabIndex = 186;>label92->Text = L", 1/с";

//

// label93

// >label93->AutoSize = true;>label93->Location = System::Drawing::Point(229, 156);>label93->Name = L"label93";>label93->Size = System::Drawing::Size(27, 13);>label93->TabIndex = 185;>label93->Text = L", см";

//

// label94

// >label94->AutoSize = true;>label94->Location = System::Drawing::Point(229, 123);>label94->Name = L"label94";>label94->Size = System::Drawing::Size(27, 13);>label94->TabIndex = 184;>label94->Text = L", см";

//

// label95

// >label95->AutoSize = true;>label95->Location = System::Drawing::Point(229, 90);>label95->Name = L"label95";>label95->Size = System::Drawing::Size(27, 13);>label95->TabIndex = 183;>label95->Text = L", см";

//

// label96

// >label96->AutoSize = true;>label96->Location = System::Drawing::Point(229, 57);>label96->Name = L"label96";>label96->Size = System::Drawing::Size(27, 13);>label96->TabIndex = 182;>label96->Text = L", см";

//

// label97

// >label97->AutoSize = true;>label97->Location = System::Drawing::Point(229, 21);>label97->Name = L"label97";>label97->Size = System::Drawing::Size(27, 13);>label97->TabIndex = 181;>label97->Text = L", см";

//

// label98

// >label98->AutoSize = true;>label98->Font = (gcnew System::Drawing::Font(L"Symbol", 8.25F, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point,_cast<System::Byte>(2)));>label98->Location = System::Drawing::Point(106, 190);>label98->Name = L"label98";>label98->Size = System::Drawing::Size(15, 13);>label98->TabIndex = 180;>label98->Text = L"w";

//

// label99

// >label99->AutoSize = true;>label99->Location = System::Drawing::Point(9, 189);>label99->Name = L"label99";>label99->Size = System::Drawing::Size(100, 13);>label99->TabIndex = 179;>label99->Text = L"Угловая скорость";

//

// label100

// >label100->AutoSize = true;>label100->Location = System::Drawing::Point(9, 156);>label100->Name = L"label100";>label100->Size = System::Drawing::Size(82, 13);>label100->TabIndex = 178;>label100->Text = L"Координата yA";

//

// label101

// >label101->AutoSize = true;>label101->Location = System::Drawing::Point(9, 123);>label101->Name = L"label101";>label101->Size = System::Drawing::Size(82, 13);>label101->TabIndex = 177;>label101->Text = L"Координата xA";

// label102

// >label102->AutoSize = true;>label102->Location = System::Drawing::Point(9, 90);>label102->Name = L"label102";>label102->Size = System::Drawing::Size(59, 13);>label102->TabIndex = 176;>label102->Text = L"Длина BM";

//

// label103

// >label103->AutoSize = true;>label103->Location = System::Drawing::Point(9, 57);>label103->Name = L"label103";>label103->Size = System::Drawing::Size(57, 13);>label103->TabIndex = 175;>label103->Text = L"Длина BC";

//

// label104

// >label104->AutoSize = true;>label104->Location = System::Drawing::Point(9, 24);>label104->Name = L"label104";>label104->Size = System::Drawing::Size(57, 13);>label104->TabIndex = 174;>label104->Text = L"Длина AB";

//

// textBox43

// >textBox43->Location = System::Drawing::Point(135, 182);>textBox43->Margin = System::Windows::Forms::Padding(3, 10, 3, 3);>textBox43->Name = L"textBox43";>textBox43->Size = System::Drawing::Size(80, 20);>textBox43->TabIndex = 173;>textBox43->Text = L"2";

//

// textBox44

// >textBox44->Location = System::Drawing::Point(135, 149);>textBox44->Margin = System::Windows::Forms::Padding(3, 10, 3, 3);>textBox44->Name = L"textBox44";>textBox44->Size = System::Drawing::Size(80, 20);>textBox44->TabIndex = 172;>textBox44->Text = L"0";

//

// textBox45

// >textBox45->Location = System::Drawing::Point(135, 116);>textBox45->Margin = System::Windows::Forms::Padding(3, 10, 3, 3);>textBox45->Name = L"textBox45";>textBox45->Size = System::Drawing::Size(80, 20);>textBox45->TabIndex = 171;>textBox45->Text = L"-2";

//

// textBox46

// >textBox46->Location = System::Drawing::Point(135, 83);>textBox46->Margin = System::Windows::Forms::Padding(3, 10, 3, 3);>textBox46->Name = L"textBox46";>textBox46->Size = System::Drawing::Size(80, 20);>textBox46->TabIndex = 170;>textBox46->Text = L"6";

//

// textBox47

// >textBox47->Location = System::Drawing::Point(135, 50);>textBox47->Margin = System::Windows::Forms::Padding(3, 10, 3, 3);>textBox47->Name = L"textBox47";>textBox47->Size = System::Drawing::Size(80, 20);>textBox47->TabIndex = 169;>textBox47->Text = L"11";

//

// textBox48

// >textBox48->Location = System::Drawing::Point(135, 17);>textBox48->Margin = System::Windows::Forms::Padding(3, 10, 3, 3);>textBox48->Name = L"textBox48";>textBox48->Size = System::Drawing::Size(80, 20);>textBox48->TabIndex = 168;>textBox48->Text = L"5";

//

// button12

// >button12->Location = System::Drawing::Point(312, 37);>button12->Name = L"button12";>button12->Size = System::Drawing::Size(115, 33);>button12->TabIndex = 167;>button12->Text = L"Старт";>button12->UseVisualStyleBackColor = true;>button12->Click += gcnew System::EventHandler(this, &Form1::button12_Click);

//

// textBox1

// >textBox1->Location = System::Drawing::Point(135, 287);>textBox1->Name = L"textBox1";>textBox1->Size = System::Drawing::Size(80, 20);>textBox1->TabIndex = 198;>textBox1->Text = L"0";

//

// label1

// >label1->AutoSize = true;>label1->Location = System::Drawing::Point(9, 290);>label1->Name = L"label1";>label1->Size = System::Drawing::Size(83, 13);>label1->TabIndex = 199;>label1->Text = L"Координата yD";

//

// label2

// >label2->AutoSize = true;>label2->Location = System::Drawing::Point(229, 294);>label2->Name = L"label2";>label2->Size = System::Drawing::Size(27, 13);>label2->TabIndex = 200;>label2->Text = L", см";

//

// Form1

// >AutoScaleDimensions = System::Drawing::SizeF(6, 13);>AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;>ClientSize = System::Drawing::Size(1136, 750);>Controls->Add(this->label2);>Controls->Add(this->label1);>Controls->Add(this->textBox1);>Controls->Add(this->label105);>Controls->Add(this->label88);>Controls->Add(this->label89);>Controls->Add(this->textBox41);>Controls->Add(this->label90);>Controls->Add(this->label91);>Controls->Add(this->textBox42);>Controls->Add(this->button11);>Controls->Add(this->label92);>Controls->Add(this->label93);>Controls->Add(this->label94);>Controls->Add(this->label95);>Controls->Add(this->label96);>Controls->Add(this->label97);>Controls->Add(this->label98);>Controls->Add(this->label99);>Controls->Add(this->label100);>Controls->Add(this->label101);>Controls->Add(this->label102);>Controls->Add(this->label103);>Controls->Add(this->label104);>Controls->Add(this->textBox43);>Controls->Add(this->textBox44);>Controls->Add(this->textBox45);>Controls->Add(this->textBox46);>Controls->Add(this->textBox47);>Controls->Add(this->textBox48);>Controls->Add(this->button12);>Controls->Add(this->dataGridView1);>Controls->Add(this->pictureBox2);>Controls->Add(this->pictureBox1);>DoubleBuffered = true;>Name = L"Form1";>Text = L"Механизмы";>Load += gcnew System::EventHandler(this, &Form1::Form1_Load);

(cli::safe_cast<System::ComponentModel::ISupportInitialize^>(this->pictureBox1))->EndInit();

(cli::safe_cast<System::ComponentModel::ISupportInitialize^>(this->pictureBox2))->EndInit();

(cli::safe_cast<System::ComponentModel::ISupportInitialize^>(this->dataGridView1))->EndInit();>ResumeLayout(false);>PerformLayout();

}

#pragma endregionAB, BC, BM, CD;xA, yA, xB, yB, xC, yC, xM, yM, xD, yD;w, l, alfa, R;a, b, c, d, k, h;t, delta_t;j; xC_now, yC_now, xB_now, yB_now, xM_now, yM_now, xC_before, yC_before, xB_before, yB_before, xM_before, yM_before;VxC, VyC, VxB, VyB, wBC;^canvas; ^canvas1; ^colour;^pen;::Drawing::Font ^font;^img;^br; ::IO::FileInfo ^Info;::IO::StreamWriter ^Writer;: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) { = this->pictureBox1->CreateGraphics();

canvas1 = this->pictureBox2->CreateGraphics();= gcnew Color(); = gcnew Pen(colour->Blue);= gcnew System::Drawing::Font(System::Drawing::FontFamily::GenericSansSerif,12,System::Drawing::FontStyle::Regular);>pictureBox1->Image = img->FromFile("Image.bmp");>dataGridView1->ColumnCount = 8;

j = 0;

}Calculation() { {= Double::Parse(this->textBox48->Text);= Double::Parse(this->textBox47->Text); = Convert::ToDouble(this->textBox46->Text); = Double::Parse(this->textBox45->Text);= Double::Parse(this->textBox44->Text);= Double::Parse(this->textBox43->Text);= Double::Parse(this->textBox42->Text);= Double::Parse(this->textBox1->Text);= Double::Parse(this->textBox41->Text);

}(System::FormatException ^e) {>timer6->Enabled = false;::Show("Ошибка ввода.", "Ошибка", MessageBoxButtons::OK, MessageBoxIcon::None);

}= alfa*3.14/180;= xA+AB*Math::Cos(w*t);= yA+AB*Math::Sin(w*t);= Math::Tan(alfa);= 1+k*k;= -k*xD;= 2*(k*(h-yB)-xB);= xB*xB-BC*BC+(h-yB)*(h-yB);= b*b-4*a*c;(d < 0) {>timer6->Enabled = false; >textBox48->Text = "5";>textBox47->Text = "11";>textBox46->Text = "6";>textBox45->Text = "-2";>textBox44->Text = "0";>textBox43->Text = "2";>textBox42->Text = "2";>textBox41->Text = "-20";>textBox1->Text = "0";::Show("Некорректные данные.", "Ошибка", MessageBoxButtons::OK, MessageBoxIcon::None); ;

}= (-b+Math::Sqrt(d))/(2*a);= k*xC+h;= (BM/BC)*(xC-xB)+xB;= (BM/BC)*(yC-yB)+yB;

}Animation() {= Brushes::Black;>DrawLine(pen,50,0,50,this->pictureBox1->Height); >DrawLine(pen,0,200,this->pictureBox1->Width,200); >DrawString("0",font,br,50,200); >DrawString("y",font,br,50,0);>DrawString("x",font,br,this->pictureBox1->Width-20,200); //Оси и подписи.>DrawLine(pen,(xA*20)+50,(-yA*20)+200,(xA*20)+45,(-yA*20)+210);>DrawLine(pen,(xA*20)+45,(-yA*20)+210,(xA*20)+55,(-yA*20)+210);>DrawLine(pen,(xA*20)+55,(-yA*20)+210,(xA*20)+50,(-yA*20)+200); //Крепление точки А.>DrawLine(pen,(xA*20)+50,(-yA*20)+200,(xB*20)+50,(-yB*20)+200);>DrawLine(pen,(xB*20)+50,(-yB*20)+200,(xC*20)+50,(-yC*20)+200); //Саммеханизм.

canvas->DrawRectangle(pen,(xC*20)+35,-(yC*20)+193,30.0,14.0); //Рисуем прямоугольник текущим пером по координатам верхнего левого угла, ширины и высоты.

canvas->DrawString("A",font,br,(xA*20)+50,(-yA*20)+200);>DrawString("B",font,br,(xB*20)+50,(-yB*20)+200);>DrawString("C",font,br,(xC*20)+50,(-yC*20)+200);>DrawString("M",font,br,(xM*20)+50,(-yM*20)+200); // Подписи точек.= Brushes::Red;>FillEllipse(br,(xC*20)+48,(-yC*20)+198,4.0,4.0);= Brushes::Green;>FillEllipse(br,(xB*20)+48,(-yB*20)+198,4.0,4.0);= Brushes::Purple;>FillEllipse(br,(xM*20)+48,(-yM*20)+198,4.0,4.0); //Точки.

}Graphic() {++; ->DrawLine(pen,50,0,50,this->pictureBox1->Height); ->DrawLine(pen,0,200,this->pictureBox1->Width,200); ->DrawString("0",font,br,50,200); ->DrawString("y",font,br,50,0);->DrawString("x",font,br,this->pictureBox1->Width-20,200); //Оси и подписи.= Brushes::Red;->FillEllipse(br,(xC*20)+48,(-yC*20)+198,4.0,4.0);= Brushes::Green;->FillEllipse(br,(xB*20)+48,(-yB*20)+198,4.0,4.0);= Brushes::Purple;->FillEllipse(br,(xM*20)+48,(-yM*20)+198,4.0,4.0);(j == 78 ) {->Clear(colour->White);= 0;

}

}Velocity() {= (xB_now-xB_before)/delta_t;= (yB_now-yB_before)/delta_t;= (xC_now-xC_before)/delta_t;= (yC_now-yC_before)/delta_t;= (xC-xB)*(VyC-VyB)-(yC-yB)*(VxC-VxB);

}Table() {_t = 1;(t <= (2*Math::PI/w)+1) {>dataGridView1->Rows[0]->Cells[0]->Value = "t";>dataGridView1->Rows[0]->Cells[1]->Value = "xB";>dataGridView1->Rows[0]->Cells[2]->Value = "yB";>dataGridView1->Rows[0]->Cells[3]->Value = "xC";>dataGridView1->Rows[0]->Cells[4]->Value = "yC";>dataGridView1->Rows[0]->Cells[5]->Value = "xM";>dataGridView1->Rows[0]->Cells[6]->Value = "yM";>dataGridView1->Rows[0]->Cells[7]->Value = "wBC";>dataGridView1->Rows[t]->Cells[0]->Value = Convert::ToString(Math::Round(t,4));>dataGridView1->Rows[t]->Cells[1]->Value = Convert::ToString(Math::Round(xB,4));>dataGridView1->Rows[t]->Cells[2]->Value = Convert::ToString(Math::Round(yB,4));>dataGridView1->Rows[t]->Cells[3]->Value = Convert::ToString(Math::Round(xC,4));>dataGridView1->Rows[t]->Cells[4]->Value = Convert::ToString(Math::Round(yC,4));>dataGridView1->Rows[t]->Cells[5]->Value = Convert::ToString(Math::Round(xM,4));>dataGridView1->Rows[t]->Cells[6]->Value = Convert::ToString(Math::Round(yM,4));(t >= 2) {_now = Convert::ToDouble(this->dataGridView1->Rows[t]->Cells[3]->Value);_before = Convert::ToDouble(this->dataGridView1->Rows[t-1]->Cells[3]->Value);_now = Convert::ToDouble(this->dataGridView1->Rows[t]->Cells[4]->Value);_before = Convert::ToDouble(this->dataGridView1->Rows[t-1]->Cells[4]->Value);_now = Convert::ToDouble(this->dataGridView1->Rows[t]->Cells[1]->Value);_before = Convert::ToDouble(this->dataGridView1->Rows[t-1]->Cells[1]->Value);_now = Convert::ToDouble(this->dataGridView1->Rows[t]->Cells[2]->Value);_before = Convert::ToDouble(this->dataGridView1->Rows[t-1]->Cells[2]->Value);();>dataGridView1->Rows[t-1]->Cells[7]->Value = Convert::ToString(Math::Round(wBC,4));

}

}

}ToFile() {= gcnew System::IO::FileInfo(Application::StartupPath+"\\File.txt");= Info->CreateText();= 0;();_before = xB;_before = yB;_before = xC;_before = yC;_before = xM;_before = yM;_t = (2*Math::PI/w)/1000;>WriteLine("t" + " | " + "xB" + " | " + "yB" + " | " + "xC" + " | " + "yC" + " | " + "xM" + " | " + "yM" + " | " + "wBC");(t = delta_t; t <= 2*Math::PI/w; t = t+delta_t) {();_now = xC;_now = yC;_now = xB;_now = yB;_now = xM;_now = yM;();>WriteLine(Convert::ToString(Math::Round(t-delta_t,4)) + " | " + Convert::ToString(Math::Round(xB_before,4))

+ " | " + Convert::ToString(Math::Round(yB_before,4)) + " | " + Convert::ToString(Math::Round(xC_before,4))

+ " | " + Convert::ToString(Math::Round(yC_before,4)) + " | " + Convert::ToString(Math::Round(xM_before,4))

+ " | " + Convert::ToString(Math::Round(yM_before,4)) + " | " + Convert::ToString(Math::Round(wBC,4)));_before = xC;_before = yC;_before = xB;_before = yB;_before = xM;_before = yM;

}>Close();

}: System::Void button12_Click(System::Object^ sender, System::EventArgs^ e) {>timer6->Enabled = true;();>dataGridView1->RowCount = Math::Truncate(2*Math::PI/w)+2;

canvas1->Clear(colour->White);

t = 0;

}: System::Void timer6_Tick(System::Object^ sender, System::EventArgs^ e) {>Clear(Color::White);++;();();();();

}

};

}

4. Результаты расчетов

Таблица 1 - Результаты расчетов

t

 xB

 yB

 xC

 yC

 xM

 yM

 wBC

0

 3

 0

 13,2154

 -4,0798

 8,5721

 -2,2254

 -103,308

0,0031

 2,9999

 0,0314

 13,2043

 -4,0758

 8,566

 -2,2089

 -103,0779

0,0063

 2,9996

 0,0628

 13,193

 -4,0717

 8,5597

 -2,1924

 -102,842

0,0094

 2,9991

 0,0942

 13,1815

 -4,0675

 8,5531

 -2,1758

 -102,6045

0,0126

 2,9984

 0,1257

 13,1696

 -4,0632

 8,5464

 -2,1592

 -102,3641

0,0157

 2,9975

 0,1571

 13,1576

 -4,0588

 8,5394

 -2,1425

 -102,1174

0,0188

 2,9964

 0,1885

 13,1453

 -4,0543

 8,5322

 -2,1258

 -101,8708

0,022

 0,2198

 13,1327

 -4,0498

 8,5248

 -2,109

 -101,6201

0,0251

 2,9937

 0,2512

 13,12

 -4,0451

 8,5171

 -2,0922

 -101,3632

0,0283

 2,992

 0,2826

 13,1069

 -4,0404

 8,5092

 -2,0754

 -101,1046

3,1071

 2,9881

 -0,345

 13,3207

 -4,1181

 8,6241

 -2,4031

 -105,6267

3,1102

 2,9902

 -0,3136

 13,3124

 -4,1151

 8,6205

 -2,3872

 -105,4328

3,1133

 2,992

 -0,2823

 13,3038

 -4,112

 8,6166

 -2,3712

 -105,2357

3,1165

 2,9937

 -0,2509

 13,295

 -4,1088

 8,6126

 -2,3552

 -105,036

3,1196

 2,9952

 -0,2195

 13,2859

 -4,1055

 8,6083

 -2,3391

 -104,8311

3,1228

 2,9965

 -0,1881

 13,2766

 -4,1021

 8,6038

 -2,323

 -104,6223

 2,9975

 -0,1567

 13,267

 -4,0986

 8,5991

 -2,3068

 -104,4135

3,1291

 2,9984

 -0,1253

 13,2572

 -4,095

 8,5941

 -2,2906

 -104,1984

3,1322

 2,9991

 -0,0939

 13,2471

 -4,0913

 8,5889

 -2,2743

 -103,9802

3,1353

 2,9996

 -0,0625

 13,2367

 -4,0876

 8,5835

 -2,258

 -103,7602

кривошипный кинематика программа

Заключение

Создана оболочка моделирования работы кривошипно-шатунного механизма методами объектно-ориентированного программирования:

Рисунок 2 - Оболочка моделирования работы кривошипно-шатунного механизма в среде Visual Studio 2013 C++

На основании исследованной кинематики и параметров механизма была приведена схема механизма, создана анимация его движения и график движения основных точек:

Рисунок 3 - Параметры и схема механизма, анимация движения механизма, график движения точек В, С, М.

В пояснительной записке приведена таблица с требующимися данными: координаты точек В, С, и М, скорость точки М.

Следовательно, поставленные задачи решены.

Библиографический список

Моделирование движения плоского механизма /сост. А.А. Лысова. - Челябинск: Изд. ЮУрГУ, 2013. - 170 с.

Похожие работы на - Моделирование работы плоского механизма

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!