Современные методы программирования и теоретические основы электротехники

Автор работы: Пользователь скрыл имя, 25 Декабря 2012 в 21:03, курсовая работа

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

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

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

ВВЕДЕНИЕ 4
1. ПОСТАНОВКА ЗАДАЧИ 5
2. ВХОДНЫЕ И ВЫХОДНЫЕ ДАННЫЕ 6
3. ВЫБОР АЛГОРИТМА И МЕТОДОВ РЕШЕНИЯ ЗАДАЧ ПРОЕКТИРОВАНИЯ 7
3.1 МЕТОД РАСЧЕТА ИНТЕГРАЛА ДЮАМЕЛЯ 7
3.2 ЭЛЕКТРИЧЕСКИЕ МАШИНЫ ПОСТОЯННОГО ТОКА 11
3.3 ТРЕХФАЗНЫЕ АСИНХРОННЫЕ ДВИГАТЕЛИ 15
4. ПРОГРАМНАЯ РЕАЛИЗАЦИЯ 19
4.1 C++BUILDER 6 19
4.2ОПИСАНИЕФУНКЦИЙ 22
4.3 КОД ПРОГРАММЫ. 23
4.4 БЛОК – СХЕМА ВЫВОДА ГРАФИКОВ 51
ЗАКЛЮЧЕНИЕ 52
ЛИТЕРАТУРА. 53

Файлы: 1 файл

Пояснительная записка СМП.docx

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

Критическое скольжение может быть найдено на основании уравнения (15) по известным параметрам обмотки ротора или из уравнения (17) по известным значениям моментов и скольжения для какого-либо характерного режима работы АД (пуск, номинальный режим). Например, критическое скольжение, соответствующее естественной механической характеристике, может быть найдено по известным для номинального режима скольжению sиом и вращающему моменту М* = 1

                                                              (2.18)

Рабочие характеристики двигателя — это зависимости n22), s (P2), М22), р1 (P2), 2), I12), соs 2). Или в относительных единицах: n2*2*), s (P2*), М2*2*), р1* (P2*), 2*), I1*2*), соs 2*) при U = const и f = const.

 

 

 

 

 

 

 

 

 

 

 

 

4.  ПРОГРАМНАЯ РЕАЛИЗАЦИЯ

4.1 C++BUILDER 6

 

C++Builder — одна из самых мощных систем, позволяющих на самом современном уровне создавать как отдельные прикладные программы Windows, так и разветвленные комплексы, предназначенные для работы в корпоративных сетях и в Интернете.  С++Builder – это среда объектно-ориентированного программирования.

Объектно-ориентированное  программирование.

Объектно-ориентированное  программирование (сокращенно ООП) — это в наше время совершенно естественный подход, к построению сложных (и не очень сложных) программ и систем.

Приложение, построенное по принципам объектной  ориентации — это не последовательность каких-то операторов, не некий жесткий алгоритм. Объектно-ориентрованная программа — это совокупность объектов и способов их взаимодействия. Отдельным (и главным) объектом при таком подходе во многих случаях можно считать пользователя программы. Он же служит и основным, но не единственным, источником событий, управляющих приложением.

Помимо  методов, работающих с отдельными данными, в объекте имеются методы, работающие со всей их совокупностью, меняющие их структуру. Таким об- / разом, объект является совокупностью свойств и методов. Но это пока нельзя считать законченным определением объекта, поскольку прежде, чем дать полное определение, надо еще рассмотреть взаимодействие объектов друг с другом.

Средой  взаимодействия объектов (как бы силовым  полем, в котором существуют объекты) являются сообщения, генерируемые в результате различных событий. События наступают, прежде всего, вследствие действий пользователя — перемещения курсора мыши, нажатия кнопок мыши или клавиш клавиатуры. Но события могут наступать и в результате работы самих объектов. В каждом объекте определено множество событий, на которые он может реагировать. В конкретных экземплярах объекта могут быть определены обработчики каких-то из этих событий, которые и определяют реакцию данного экземпляра объекта. К написанию этих обработчиков, часто весьма простых, и сводится, как будет видно далее, основное программирование при разработке графического интерфейса пользователя с помощью C++Builder.

Теперь  можно окончательно определить объект как совокупность свойств и методов, а также событий, на которые он может реагировать.

С целью организации динамического  распределения памяти во все объекты  заложены методы их создания — конструкторы и уничтожения — деструкторы. Конструкторы объектов, которые изначально должны присутствовать в приложении (прикладной программе), срабатывают при запуске программы. Деструкторы всех объектов, имеющихся в данный момент в приложении, срабатывают при завершении его работы. Но нередко и в процессе выполнения различные новые объекты (например, новые окна документов) динамически создаются и уничтожаются с помощью их конструкторов и деструкторов.

Основы  визуального программирования интерфейса.

Сколько существует программирование, столько  существуют в нем и тупики, в  которые оно постоянно попадает и из которых, в конце концов, доблестно  выходит. Один из таких тупиков или кризисов когда-то был связан с разработкой графического интерфейса пользователя. Программирование вручную всяких привычных пользователю окон, кнопок, меню, обработка событий мыши и клавиатуры, включение в программы изображений и звука требовало все больше и больше времени программиста. В ряде случаев весь этот сервис начинал занимать до 80-90% объема программных кодов. Причем весь этот труд нередко пропадал почти впустую, поскольку через год — другой менялся общепринятый стиль графического интерфейса, и все приходилось начинать заново.  Среда предоставляет формы (в приложении их может быть несколько), на которых размещаются компоненты. Обычно это оконные формы, хотя они могут быть сделаны невидимыми. На форму с помощью мыши переносятся и размещаются пиктограммы компонентов, имеющихся в библиотеках C++Builder. С помощью простых манипуляций можно изменять размеры и расположение этих компонентов.

Но  достоинства визуального программирования не сводятся к этому. Самое главное  заключается в том, что во время  проектирования формы и размещения на ней компонентов C++Builder автоматически формирует коды программы, включая в нее соответствующие фрагменты, описывающие данный компонент. А затем в соответствующих диалоговых окнах пользователь может изменить заданные по умолчанию значения каких-то свойств этих компонентов и, при необходимости, написать обработчики каких-то событий. То есть проектирование сводится, фактически, к размещению .компонентов на форме, заданию некоторых их свойств и написанию, при необходимости, обработчиков событий.

Компоненты  могут быть визуальные, видимые при работе приложения, и невизуальные, выполняющие те или иные служебные функции. Визуальные компоненты сразу видны на экране в процессе проектирования в таком же виде, в каком их увидит пользователь во время выполнения приложения. Это позволяет очень легко выбрать место их расположения и их дизайн — форму, размер, оформление, текст, цвет и т.д. Невизуальные компоненты видны на форме в процессе проектирования в виде пиктограмм, но пользователю во время выполнения они не видны, хотя и выполняют для него за кадром весьма полезную работу.  В библиотеки визуальных компонентов C++Builder включено множество типов компонентов, и их номенклатура очень быстро расширяется от версии к версии. Имеющегося уже сейчас вполне достаточно, чтобы построить практически любое самое замысловатое приложение, не прибегая к созданию новых компонентов. При этом даже неопытный программист, делающий свои первые шаги на этом поприще, может создавать приложения, которые выглядят совершенно профессионально.

Типы  объектов и, в частности, компонентов  библиотек C++Builder оформляются в виде классов. Классы — это типы, определяемые пользователем. В классах описываются свойства объекта, его методы и события, на которые он может реагировать.

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.2 ОПИСАНИЕ ФУНКЦИЙ

 

1. __fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner)

  Главная функция приложения. В ней происходит запуск базы данных и ini файла.

2. void __fastcall TForm1::ColorButton1Click(TObject *Sender)

 Функция для расчёта асинхронных двигателей

3. void __fastcall TForm1::ColorButton2Click(TObject *Sender)

Функция для вывода значений расчёта  асинхронных двигателей по умолчанию

4. void __fastcall TForm1::ColorButton3Click(TObject *Sender)

Функция для вывода дополнительных графиков для асинхронных двигателей

5. void __fastcall TForm1::BitmapButton6Click(TObject *Sender)

Функция для вывода выходных параметров МПТ в режиме генератора

6. void __fastcall TForm1::ColorButton4Click(TObject *Sender)

Функция для вывода выходных параметров МПТ в режиме генератора по умолчанию

7. void __fastcall TForm1::BitmapButton5Click(TObject *Sender)

Функия для вывода выходных параметров МПТ в режиме двигателя

8. void __fastcall TForm1::ColorButton5Click(TObject *Sender)

Функия для вывода выходных параметров МПТ в режиме двигателя по умолчанию

9. void __fastcall TForm1::BitmapButton7Click(TObject *Sender)

Функция вывода выходных параметров четырёхполюсника

10. void __fastcall TForm1::ColorButton6Click(TObject *Sender)

Функция вывода выходных параметров четырёхполюсника по умолчанию

11. void __fastcall TForm1::ColorButton7Click(TObject *Sender)

Функция для вывода графиков четырёхполюсника

 

 

 

 

 

 

 

 

 

4.3 КОД ПРОГРАММЫ.

 

UNIT1.CPP

#include <vcl.h>

#pragma hdrstop

 

#include "Unit1.h"

#include "Unit2.h"

#include "Unit3.h"

#include "Unit4.h"

#include "Unit5.h"

#include "Unit6.h"

#include "Unit7.h"

#include "Unit8.h"

#include "Unit9.h"

 

//#include <parametru.h>;

 

 

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma link "BitmapButton"

#pragma link "ColorButton"

#pragma link "AdvProgressBar"

#pragma link "GradientLabel"

#pragma link "AdvPageControl"

#pragma resource "*.dfm"

 

#include <IniFiles.hpp>

 

#include <bass.h>

#include <math.h>

#include <System.hpp>

 

 

//#include <jpeg.hpp>

//#include<complex>

 

HSTREAM chan;

HSAMPLE samp;

TForm1 *Form1;

 

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

        : TForm(Owner)

{

             //-------------------------------------------------------------------------;

//Забивание  значений в ini файлы;

     char WinDirChar[255];

     GetWindowsDirectory(WinDirChar,255);

     String IniFile = (String)WinDirChar +"\\INIin1.ini";

 

if (FileExists(IniFile))

  {

     TIniFile *Ini = new TIniFile(IniFile);

 

    //Для асинхронных двигателей;

     Edit1->Text = Ini->ReadString("Edits","Edit1","50");  //f частота;

     Edit2->Text = Ini->ReadString("Edits","Edit2","2");   //P- полюса;

     Edit8->Text = Ini->ReadString("Edits","Edit8","1475"); // n2 nom;

     Edit9->Text = Ini->ReadString("Edits","Edit9","4500"); //P nom;

     Edit10->Text = Ini->ReadString("Edits","Edit10","380"); // U1 nom;

 

     //Для МПТ в режиме генератора;

     Edit11->Text = Ini->ReadString("Edits","Edit11","10000"); //P nom;

     Edit12->Text = Ini->ReadString("Edits","Edit12","230");   //U nom;

     Edit13->Text = Ini->ReadString("Edits","Edit13","1450");  //n nom;

     Edit14->Text = Ini->ReadString("Edits","Edit14","0.3");   //R якоря;

     Edit15->Text = Ini->ReadString("Edits","Edit15","150");   //R в;

 

     //Для МПТ в режиме двигателя;

     Edit21->Text = Ini->ReadString("Edits","Edit21","4200");  //P nom;

     Edit22->Text = Ini->ReadString("Edits","Edit22","210");  //U nom;

     Edit23->Text = Ini->ReadString("Edits","Edit23","1500");  //n nom;

     Edit24->Text = Ini->ReadString("Edits","Edit24","0.20");  //R якоря;

     Edit25->Text = Ini->ReadString("Edits","Edit25","0.78");  //КПД ном;

 

     //Для четырехполюсников;

     Edit31->Text = Ini->ReadString("Edits","Edit31","15");  //A;

     Edit32->Text = Ini->ReadString("Edits","Edit32","1.2"); //tи;

     Edit33->Text = Ini->ReadString("Edits","Edit33","22000");  //R;

     Edit34->Text = Ini->ReadString("Edits","Edit34","0.000125");  //C;

 

        // Для самой формы;

        Form1->Left = Ini->ReadInteger("Position","left",437);

        Form1->Top = Ini->ReadInteger("Position","top",139);

 

        Form1->Height = Ini->ReadInteger("Size","Height",600);

        Form1->Width = Ini->ReadInteger("Size","Width",800);

    }

//К  заданию  асинхроные двигатели  таблица;

  TStringList *list = new TStringList;

  list->LoadFromFile("d://1.txt");

   for(int i=0;i<list->Count;i++)

{

  StringGrid1->Rows[i]->Delimiter=' ';

  StringGrid1->Rows[i]->DelimitedText= list->Strings[i];

  }

 

// проверка корректности загруженной  BASS.dll;

    if (HIWORD(BASS_GetVersion()) != BASSVERSION)

      {

       Application->MessageBoxA(0,"Не корректная версия BASS.DLL",MB_ICONERROR);

      }

       else

      return ;

   //Инициализвция аудио - по умолчанию ,44100 hz,stereo 16 bits;

   if (!BASS_Init( -1,44100, BASS_DEVICE_3D,0,NULL))

     {

     Application->MessageBoxA(0,"Ошибка инициализации аудио",MB_ICONERROR);

      }

     BASS_ChannelGetData(chan,fft,BASS_DATA_FFT1024);

 

}

//---------------------------------------------------------------------------

void __fastcall TForm1::BitmapButton1Click(TObject *Sender)

{

//Освобождаем  объекты перед закрытием;

  BASS_Stop();//останавливаем проигрывание;

  BASS_StreamFree(chan);//освобождаем звуковой канал;

  BASS_Free();//освобождаем ресурсы используемые BASS;

Close();

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::Image1MouseDown(TObject *Sender,

      TMouseButton Button, TShiftState Shift, int X, int Y)

{

//Передвижение  картинки по экрану;

const int SC_DRAGMOVE = 0xF012;

    if (WindowState!=wsMaximized)

        {

          ReleaseCapture();

          Perform(WM_SYSCOMMAND, SC_DRAGMOVE, 0);

         }

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::BitmapButton2Click(TObject *Sender)

{

flag==0;

povtor=0;

  if(flag==2)

{

  povtor=1;

// BASS_ChannelSetPosition(chan,BASS_POS_BYTE);

  BASS_ChannelPlay(chan,FALSE);

  flag=1;

}

  else

{

if (OpenDialog1->Execute())//пользователь выбирает файл

  {

  //povtor++;

  if(povtor==2)

  {

    ShowMessage("Вы не можете два раза подряд нажимать плей!!!");

  }

AnsiString b=OpenDialog1->FileName;//считываем имя файла

  char *a=b.c_str();//переводим тип AnsiString в char

 

  //создаем поток для нашего MP3 файла

  chan=BASS_StreamCreateFile(FALSE, a, 0, 0, 0);

//Запускаем  звучание песни

BASS_ChannelPlay(chan,FALSE);

  povtor++;

}

}

  flag=1;

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::FormCreate(TObject *Sender)

{

BASS_Init( -1,44100, BASS_DEVICE_3D,0,NULL);

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::BitmapButton4Click(TObject *Sender)

{

if(flag==1)

{

BASS_ChannelPause(chan);

flag=2;

}

else

ShowMessage("Нажмите Play!!!");

//return;

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::BitmapButton3Click(TObject *Sender)

{

if(flag==1)

{

BASS_ChannelStop(chan);  // останавливаем звучание

BASS_StreamFree(chan);   // освобождаем ресурсы

flag=1;

}

else

ShowMessage("Нажмите Play!!!");

//return;

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::Timer1Timer(TObject *Sender)

Информация о работе Современные методы программирования и теоретические основы электротехники