Министерство образования и науки Российской Федерации
Федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования
«Южно-Уральский государственный университет»
Факультет «Приборостроительный»
Кафедра «Информационно-измерительная
техника»
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА К КУРСОВОЙ РАБОТЕ
по дисциплине «Информатика»
МОДЕЛИРОВАНИЕ РАБОТЫ ПЛОСКОГО
МЕХАНИЗМА
Автор проекта
студент группы
Я.С. Загоскин
Челябинск 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 - Схема механизма
Из ∆ABH:
Таким образом, мы имеем:
Для исследования кинематики точек 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
#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";