Розробка програми для відображення динаміки параметрів технологічного процесу чи пристрою автоматики
Завдання
Розробити програму для відображення схеми електричного кола з послідовним з’єднанням активного опору, індуктивності та ємності, перехідного процесу зміни струму та аналізу впливу параметрів елементів кола на перехідний процес.
(найменування вищого учбового закладу)
Кафедра
Дисципліна
Спеціальність
Курс _____________Група _____________Семестр
ЗАВДАННЯ
на курсову роботу студента
(прізвище, ім’я, по батькові)
1. Тема роботи
2. Термін здачі студентом закінченої роботи
3. Вихідні дані до роботи
4. Зміст розрахунково-пояснювальної записки (перелік питань, які належать розробці)
5. Перерахунок допоміжного матеріалу
6. Дата видачі завдання
КАЛЕНДАРНИЙ ПЛАН
№ п/пНайменування етапів курсової роботиТермін виконання етапів роботиПримітки
Студент
(підпис)
Керівник
(підпис) (прізвище, ім’я, по батькові)
“______” ___________________ 20 ___ р.
Зміст
Бланк завдання2
Зміст4
Вступ5
Опис процесів, що відбуваються в електричному колі.6
Лістинг програми.9
Приклади роботи програми.12
Особливості організації програмного забезпечення ілюстрації процесів, що відбуваються в електричному колі.
13
Вступ.
Велике значення, в природі в цілому і в електротехніці зокрема, мають коливальні явища. На основі цих процесів побудовано ряд складних електронних механізмів, складовими яких є різноманітні генератори необхідних коливань.
В даній курсовій роботі, я розглянув один із видів коливань електричного струму, а саме розряд ємності на індуктивність та опір.
Для наочної ілюстрації даного процесу я склав програму на мові програмування “С”, яка будує графіки зміни струму та напруги з часом. Програма має досить зручне меню за допомогою якого ЕОМ веде діалог з користувачем. Всі дані введені під час цьго діалогу записуються в файл історії (history.dat), який можна переглянути за допомогою будь-якого текстового редактора або за допомогою однієї з команд DOS (наприклад, “more history.dat”).
Опис процесів, що відбуваються в електричному колі.
Велике практичне значення мають явища коливального розряду ємності на індуктивність та опір.
Рис. 1 Схема кола
Нехай конденсатор С (рис. 1) спочатку заряджається від деякого джерела електроенергії до напруги U. Потім перемикачем К конденсатор перемикається на індуктивність L, яка з'єднана послідовно з опором r. Конденсатор починає розряджатися, його заряд q і напруга UC зменшуються, а в контурі виникає розрядний струм
(1)
Але в даному розрядному контурі струм повинен зростати поступово, оскільки на нього впливає ЕРС самоіндукції
(2)
Таким чином, струм в колі формується під впливом напруг конденсатора і ЕРС самоіндукції:
Підставивши в останню рівність вирази (1) і (2), отримаємо диференціальне рівняння другого порядку для процесу розряду:
(3)
Розв'язок даного рівняння будемо шукати в вигляді
і оскільки характеристичне рівняння має два корені
,
то звідси отримаємо
(4)
Як відомо, в контурі L, C власна кутова частота незатухаючих коливань
позначимо величину
вона називається коефіцієнтом затухання.
Використовуючи дані позначення, отримуємо:
(5)
Якщо < 0, то розряд конденсатора є коливальним, а при 0 – аперіодичним процесом. На практиці великий інтерес являє перший випадок, який розглянемо нижче. При , тобто коли або , , де . Позначимо .
Таким чином,
в відповідності з чим на основі (4) напруга конденсатора, що розряджається
(5)
Щоб визначити дві сталі А1 та А2, необхідна ще одна рівність. Для цього використаємо рівняння розрядного струму:
.
Звернімося до початкових умов; при t=0 згідно з другим законом комутації напруга на конденсаторі
,
а згідно з першим законом комутації при
.
На основі цих початкових умов сталі будуть рівні:
та
Підставивши отримані значення в (5) та одночасно замінивши отримаємо:
(6)
Можемо отримати відношення , тобто будемо вважати, що та відображають катети прямокутного трикутника; гіпотенуза цього трикутника
Розділивши та помноживши (6) на , отримаємо:
(7)
після чого легко отримаємо рівняння розрядного струму:
(8)
Як показують (7) та (8), напруга конденсатора та його розрядну силу струму можна розглядати як таку, що змінюється синусоїдально з часом, причому їх амплітуди зменшуються по експоненціальному закону; сталою затухання цих коливань служить величина
Щоб побудувати відповідні графіки, доцільно спочатку побудувати допоміжні криві експонент
та
Криві затухаючих напруги та сили струму повинні вписуватися в межі, обмежені вказаними допоміжними кривими та їх дзеркальними відображеннями відносно осі абсцис.
При ввімкненні коливального контуру (при ) під постійну напругу U процес можна розглядати як поєднання примусового та вільного:
;
Вимушена напруга
а вимушений струмДиференціальне рівняння (3) буде тепер справедливе для вільної складової . В початковий момент t=0 згідно законам комутації
та
На основі цього
та
Таким чином, для вільної напруги конденсатора буде справедливим вираз (7), лише в ньому слід замінити U на –U, що дозволить скласти рівняння напруги конденсатора, що заряджається:
та рівняння зарядного струму:
.
Лістинг програми.
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
//Функцiя, яка описує змiну струму
float I (float c, float l, float r,float t,float u)
{float wo,w2,b,i,e=M_E;
b=r/2*l;
wo=sqrt(1/l*c);
w2=sqrt(fabs(wo-b*b));
i=-u*wo*c*wo*pow(e,-b*t)*sin(w2*t-M_PI)/w2;
return i;}
//Функцiя, яка описує змiну напруги
float U (float c, float l, float r,float t,float u)
{float w2,wo,b,uf,e=M_E;
b=r/2*l;
wo=sqrt(1/l*c);
w2=sqrt(fabs(wo-b*b));
uf=u-pow(e,-b*t)*u*(w2*cos(w2*t)+sin(w2*t))/w2;
return uf;}
main()
{int kodkey;
//Вiзитка
clrscr();
printf ("Курсова робота з курсу ""Програмування та алгоритмiчнi мови"".\nВиконав: студент АУТП-11\nТАРАС Б.I.\nРIВНЕ 2002");
delay (4000);
//Головне меню
menu:
clrscr();
printf ("1. ESC=вихiд \n2. ENTER=продовжити\n");
kodkey=getch();
if (kodkey==27) goto end;
if (kodkey==13) goto start;
else {printf ("ПОМИЛКА: Невiрно натиснута клавiша.");
sound (1000);
delay (500);
nosound ();
delay (700);
goto menu;}
//Меню вводу
start:
clrscr ();
printf ("1.ESC=повернутися в основне меню");
printf ("\n2.ENTER=продовжити\n");
kodkey=getch ();
if (kodkey==27) goto menu;
//Ввiд значень L,C,R
if (kodkey==13)
{float l,c,r,u,k;
printf ("Введiть значення ємностi:\nC=");
scanf ("%f",&c);
printf ("Введiть значення iндуктивностi:\nL=");
scanf ("%f",&l);
printf ("Введiть значення опору:\nR=");
scanf ("%f",&r);
printf ("Введiть значення початкової напруги:\nU=");
scanf ("%f",&u);
printf ("Введiть масштаб:");
scanf ("%f",&k);
//Вибiр виду грфiка: I(t) або U(t)
m:
printf ("\nЯку залежнiсть будувати: I(t) чи U(t)?");
printf ("\nНатиснiть вiдповдну клавiшу: I(t)=i; U(t)=u\n");
kodkey=getch();
if (kodkey!=105 && kodkey!=117)
{printf ("ПОМИЛКА: Невiрно натиснута клавiша.");
sound (1000);
delay (500);
nosound ();
delay (700);
goto m;}
//Запис значень в файл
FILE*fp;
if((fp=fopen("history.dat","a"))==NULL)
{perror("history.dat");
return 1;}
{time_t t;
time(&t);
fprintf(fp,"\n\n%sC=%f, L=%f, R=%f, U=%f, Масштаб=%f,",ctime(&t),c,l,r,u,k);
if (kodkey==105) fprintf (fp," Графiк I(t)");
if (kodkey==117) fprintf (fp," Графiк U(t)");
fclose (fp);}
//Iнiцiалiзацiя графiчного режиму
int gdriver = DETECT, gmode;
initgraph(&gdriver, &gmode, "c:\\bcpp\\bgi");
//Побудова вiсь координат i сiтки
setcolor(6);
int dx;
for (dx=0; dx<=640; dx+=10)
{line (0,dx,640,dx);
line (dx,640,dx,0);}
setcolor(10);
rectangle(0,0,639,479);
line(0,240,640,240);
line(20,0,20,640);
setcolor (15);
outtextxy (10,250,"O");
if (kodkey==105) outtextxy (10,10,"I");
if (kodkey==117) outtextxy (10,10,"U");
outtextxy (620,250,"t");
//Побудова графiка
{float t,i,uf;
moveto(20,240);
if (kodkey==105)
{for (t=0; k*t*10<=600; t+=0.0009)
{i=-I(c,l,r,t,u);
lineto(k*10*t+20,k*10*i+240);}}
if (kodkey==117)
{for (t=0; k*t*10<=600; t+=0.0009)
{uf=-U(c,l,r,t,u);
lineto(k*10*t+20,k*10*uf+240);}}
getch();
closegraph ();}
goto menu;}
//Вiзитка
end:
clrscr ();
printf ("Курсова робота з курсу ""Програмування та алгоритмiчнi мови"".\nВиконав: студент АУТП-11\nТАРАС Б.I.\nРIВНЕ 2002");
delay (4000);
}
Приклади роботи програми.
Вхідні дані:
C=4
L=0.4
R=3
U=2
масштаб=2
Графіки, що побудувала програма:
Рис. 2 Графік I(t)
Рис. 3 Графік U(t)
Особливості організації програмного забезпечення ілюстрації процесів, що відбуваються в електричному колі.
Для забезпечення зручності встановлення програми та компонентів необхідних для її роботи, всі необхідні файли були поміщені в саморозпаковуючийся архів INSTALL.EXE. Сюди ввійшли:
Ім’я файлуРозмір в байтахОпис
En-drv.com7463Розширений кирилічний драйвер української мови для ОС MS-DOS
Install.txt1784Описовий файл встановлених файлів
History.dat-Файл історії введених значень
Kr.bat23Виконуваний файл, який перед запуском програми завантажує розширений кирилічний драйвер української мови для ОС MS-DOS автоматично
Kr.docФайл звіту по курсовій роботі
Kursova.cpp3329Файл програми на мові програмування “С”
Kursova.exe64960“exe”-файл програми
Shema.bmp4214Схема електричного кола