Математичне моделювання та дослідження роботи системи статичного слідкування за швидкістю задаючого вала

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
ІКТА
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2010
Тип роботи:
Розрахункова робота
Предмет:
Динамічні елементи систем керування
Група:
СІ-21

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”  РОЗРАХУНКОВА РОБОТА з курсу “Динамічні елементи систем керування” Тема 4. Варіант 1. Вхідна дія 4 «Математичне моделювання та дослідження роботи системи статичного слідкування за швидкістю задаючого вала» Частина 1. Розрахунок передатної функції системи та побудова графіків характеристик АФХ, АЧХ, ФЧХ Схема роботи пристрою :  Замінюємо похідні операторами Лапласа :    Побудуємо 3 графіки, які характеризують дану систему : АФХ, АЧХ, ФЧХ. 1. АФХ – Амплітудно-фазова характеристика 2. АЧХ – Амплітудно-частотна характеристика 3. ФЧХ – Фазо-частотна характеристика Текст програми написаний мовою C++ із виведенням результатів у файл : HEADER_FILE---------------------------------------------------------------------------------- //--------------------------------------------------------------------------- #ifndef Unit1H #define Unit1H //--------------------------------------------------------------------------- #include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> #include <Chart.hpp> #include <DbChart.hpp> #include <ExtCtrls.hpp> #include <TeEngine.hpp> #include <TeeProcs.hpp> #include <Series.hpp> //--------------------------------------------------------------------------- class TForm1 : public TForm { __published: // IDE-managed Components TDBChart *DBChart1; TDBChart *DBChart2; TDBChart *DBChart3; TButton *Button1; TLineSeries *Series2; TLineSeries *Series3; TLineSeries *Series1; void __fastcall Button1Click(TObject *Sender); private: // User declarations public: // User declarations __fastcall TForm1(TComponent* Owner); //Початок.Параметри системи-------------------------------------------------- double TM,T1,T2,C,KEMP,KEP,K1,K2; //Кінець.Параметри системи--------------------------------------------------- //Початок.Змінні табулювання------------------------------------------------- double w,wk,h,P,Q,H,Fi; //Кінець.Змінні інтегрування------------------------------------------------- //Початок.Додаткові змінні--------------------------------------------------- double K,D1,D2,D3; //Кінець.Додаткові змінні---------------------------------------------------- }; //--------------------------------------------------------------------------- extern PACKAGE TForm1 *Form1; //--------------------------------------------------------------------------- #endif CPP_FILE----------------------------------------------------------------------------------------- //--------------------------------------------------------------------------- #include <Math.h> #include <vcl.h> #pragma hdrstop #include <fstream.h> #include <iostream.h> #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { using namespace std; //Початок. Параметри системи------------------------------------------------- TM=0.006; T1=0.1; T2=0.02; C=2; KEMP=10; KEP=1; K1=1.01; K2=1; h=0.01; wk=400; //Кінець. Параметри системи-------------------------------------------------- //Початок. Створюємо та відкриваємо файл для запису даних-------------------- fopen("D:\DESK_w_P_Q_H_Fi.dat","w+"); fstream DESK_w_P_Q_H_Fi("D:\DESK_w_P_Q_H_Fi.dat"); //Кінець. Створюємо та відкриваємо файл для запису даних--------------------- //Початок. Обчислюємо АФХ, АЧХ, ФЧХ------------------------------------------ for (w=0;w<=wk;w=w+h) { K=C*K2*K1*KEP; D1=1+K*K2-(T1*T2+(T1+T2)*TM)*pow(w,2.0); D2=(T1+T2+TM)*w-T1*T2*TM*pow(w,3.0); D3=K*K1; P=(D1*D3)/(pow(D1,2.0)+pow(D2,2.0)); Q=-1.0*(D2*D3)/(pow(D1,2.0)+pow(D2,2.0)); H=pow((pow(P,2.0)+pow(Q,2.0)),(1.0/2.0)); Fi=atan(Q/P); if(P<0) { Fi=Fi-M_PI; } //Початок.Записуємо дані у файл---------------------------------------------- DESK_w_P_Q_H_Fi<<w<<" "<<P<<" "<<Q<<" "<<H<<" "<<Fi<<endl; //Кінець.Записуємо дані у файл----------------------------------------------- //Початок. Будуємо графіки АФХ, АЧХ, ФЧХ------------------------------------- Series1->AddXY(P,Q,"",clRed); Series2->AddXY(w,H,"",clRed); Series3->AddXY(w,Fi,"",clRed); //Кінець. Будуємо графіки АФХ, АЧХ, ФЧХ-------------------------------------- } //Кінець. Обчислюємо АФХ, АЧХ, ФЧХ------------------------------------------- //Початок.Закриваємо файл---------------------------------------------------- DESK_w_P_Q_H_Fi.close(); //Кінець.Закриваємо файл----------------------------------------------------- } //--------------------------------------------------------------------------- Графіки залежностей : Графік АФХ :  Графік АЧХ :  Графік ФЧХ :  Частина 2. Розрахунок перехідного процесу в системі та побудова графіків вихідної величини і помилки системи  Текст програми написаний мовою C++ із виведенням результатів у файл : HEADER_FILE---------------------------------------------------------------------------------- //--------------------------------------------------------------------------- #ifndef Unit1H #define Unit1H //--------------------------------------------------------------------------- #include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> #include <Chart.hpp> #include <DbChart.hpp> #include <ExtCtrls.hpp> #include <Series.hpp> #include <TeEngine.hpp> #include <TeeProcs.hpp> //--------------------------------------------------------------------------- class TForm1 : public TForm { __published: // IDE-managed Components TDBChart *DBChart1; TDBChart *DBChart2; TButton *Button1; TDBChart *DBChart4; TLineSeries *Series1; TDBChart *DBChart5; TLineSeries *Series2; TDBChart *DBChart6; TLineSeries *Series3; TLineSeries *Series4; TLineSeries *Series5; void __fastcall Button1Click(TObject *Sender); private: // User declarations public: // User declarations __fastcall TForm1(TComponent* Owner); //Початок.Параметри системи-------------------------------------------------- double TM,T1,T2,C,KEMP,KEP,K1,K2; //Кінець.Параметри системи--------------------------------------------------- //Початок.Змінні інтегрування------------------------------------------------ double Y[4]; double tend,h,t,Tper,a; //Кінець.Змінні інтегрування------------------------------------------------- //Початок.Додаткові змінні--------------------------------------------------- double sw,sw2,k1,k2,k3,k4; //Кінець.Додаткові змінні---------------------------------------------------- }; //--------------------------------------------------------------------------- extern PACKAGE TForm1 *Form1; //--------------------------------------------------------------------------- #endif CPP_FILE----------------------------------------------------------------------------------------- //--------------------------------------------------------------------------- #include <Math.h> #include <vcl.h> #pragma hdrstop #include <fstream.h> #include <iostream.h> #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //Початок. Вхідна дія------------------------------------------------------- double WBX(double,double sw1); double WBX(double arg,double sw1) { double a1,y,h1,Tper1; a1=0.1; Tper1=a1*2; h1=0.00001; if((0+sw1*Tper1-h1/2<=arg)&&(arg<a1+sw1*Tper1+h1/2)) { y=(arg-Tper1*sw1)/a1; }; return y; }; //Кінець. Вхідна дія--------------------------------------------------------- //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { using namespace std; //Початок. Параметри системи------------------------------------------------- TM=0.006; T1=0.1; T2=0.02; C=2; KEMP=10; KEP=1; K1=1.01; K2=1; h=0.00001; a=0.1; Tper=2*a; tend=4*Tper; //Кінець. Параметри системи-------------------------------------------------- //Початок. Створюємо та відкриваємо файл для запису даних-------------------- fopen("D:\DESK_t_UK_UP_WBUX_DW.dat","w+"); fstream DESK_t_UK_UP_WBUX_DW("D:\DESK_t_UK_UP_WBUX_DW.dat"); //Кінець. Створюємо та відкриваємо файл для запису даних--------------------- //Початок. Початові параметри побудови вхідної дії--------------------------- sw=0; sw2=1; //Кінець. Початові параметри побудови вхідної дії---------------------------- //Початок. Початкові умови--------------------------------------------------- Y[0]=0; Y[1]=0; Y[2]=0; //Кінець. Початкові умови---------------------------------------------------- //Початок. Обчислюємо UK, UP, w, QBUX, DQ------------------------------------ for (t=0;t<=tend;t=t+h) { //Початок. Параметри побудови вхідної дії------------------------------------ if((sw2*Tper-h/2<=t)&&(t<=sw2*Tper+h/2)) { sw=sw+1; sw2=sw2+1; }; //Кінець. Параметри побудови вхідної дії------------------------------------- //Введемо позначення--------------------------------------------------------- //1.Y[0]=UK //2.Y[1]=UP //3.Y[2]=WBUX //4.Y[3]=WBX-WBUX=DW //Введемо позначення--------------------------------------------------------- //Початок. Метод Рунге-Кутта------------------------------------------------- //Початок. Рівняння 1-------------------------------------------------------- k1=h*(K1*KEP*(K1*WBX(t,sw)-K2*Y[2])-Y[0])/T1; k2=h*(K1*KEP*(K1*WBX(t,sw)-K2*Y[2])-(Y[0]+k1/2))/T1; k3=h*(K1*KEP*(K1*WBX(t,sw)-K2*Y[2])-(Y[0]+k2/2))/T1; k3=h*(K1*KEP*(K1*WBX(t,sw)-K2*Y[2])-(Y[0]+k3))/T1; Y[0]=Y[0]+(k1+2*k2+2*k3+k4)/6; //Кінець. Рівняння 1--------------------------------------------------------- //Початок. Рівняння 2-------------------------------------------------------- k1=h*(K2*Y[0]-Y[1])/T2; k2=h*(K2*Y[0]-(Y[1]+k1/2))/T2; k3=h*(K2*Y[0]-(Y[1]+k2/2))/T2; k4=h*(K2*Y[0]-(Y[1]+k3))/T2; Y[1]=Y[1]+(k1+2*k2+2*k3+k4)/6; //Кінець. Рівняння 2--------------------------------------------------------- //Початок. Рівняння 3-------------------------------------------------------- k1=h*(C*Y[1]-Y[2])/TM; k2=h*(C*Y[1]-(Y[2]+k1/2))/TM; k3=h*(C*Y[1]-(Y[2]+k2/2))/TM; k4=h*(C*Y[1]-(Y[2]+k3))/TM; Y[2]=Y[2]+(k1+2*k2+2*k3+k4)/6; //Кінець. Рівняння 3--------------------------------------------------------- //Початок. Рівняння 4-------------------------------------------------------- Y[3]=WBX(t,sw)-Y[2]; //Кінець. Рівняння 4--------------------------------------------------------- //Кінець. Метод Рунге-Кутта-------------------------------------------------- //Початок.Записуємо дані у файл---------------------------------------------- DESK_t_UK_UP_WBUX_DW<<t<<" "<<Y[0] <<" "<<Y[1]<<" "<<Y[2]<<" "<<Y[3]<<endl; //Кінець.Записуємо дані у файл----------------------------------------------- //Початок. Будуємо графіки UK, UP, w, QBUX, DQ------------------------------- Series1->AddXY(t,Y[0],"",clRed); Series2->AddXY(t,Y[1],"",clRed); Series3->AddXY(t,Y[2],"",clRed); Series4->AddXY(t,WBX(t,sw),"",clRed); Series5->AddXY(t,Y[3],"",clRed); //КІнець. Будуємо графіки UK, UP, w, QBUX, DQ-------------------------------- } //Кінець. Обчислюємо UK, UP, w, QBUX, DQ------------------------------------- //Початок.Закриваємо файл---------------------------------------------------- DESK_t_UK_UP_WBUX_DW.close(); //Кінець.Закриваємо файл----------------------------------------------------- } //--------------------------------------------------------------------------- Графіки залежностей : Вихідна величина :  Помилка системи :  Список основних ідентифікаторів : Частина 1 : Fi – фаза w – частота H – амплітуда wk – кінцева частота табулювання h – крок табулювання TM, T1, T2, C, KEMP, KEP, K1, K2 – параметри системи P – дійсна частина передатної функції за Лапласом Q – уявна частина передатної функції за Лапласом DESK_w_P_Q_H_Fi – файл для запису результатів K, D1, D2, D3 – додаткові змінні для обрахунку P та Q Частина 2 : Y[4] – масив змінних інтегрування TM, T1, T2, C, KEMP, KEP, K1, K2 – параметри системи Tper – період t – час інтегрування WBX – вхідна частота tend – кінцевий час інтегрування sw, sw2 – перемикачі для поперіодної побудови вхідної величини h – крок інтегрування k1, k2, k3, k4 – коефіцієнти методу Рунне-Кутта DESK_t_UK_UP_WBUX_DW – файл для запису результатів Висновок : Дослідив роботу системи статичного слідкування за швидкістю задаючого вала. Розрахував частотні характеристики АФХ, АЧХ, ФЧХ та побудув їх графіки. Проінтегрував систему диференціальних рівнянь системи та побудував графіки вихідної частоти і помилки системи. Система намагається змусити вал обертатися із заданою частотою. Графік вихідної частоти свідчить про правильну роботу системи, оскільки повторює вхідну частоту, а отже і про вірно розв’язане поставлене завдання.
Антиботан аватар за замовчуванням

20.12.2013 18:12-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!