Програмування у середовищі Turbo Pascal

 

Міністерство освіти та науки України

Національний Гірничий Університет

Кафедра системного аналізу та управління










Курсова робота

з дисципліни: "Програмування"




Виконав:

Ст. гр. Саіт-10 Александров А.Ю.

Керівник: ас. Гаранжа Д.М.









Дніпропетровськ 2011


Зміст


Вступ

. Постановка задачі

. Таблиця символьних імен

. Блок-схеми

. Лістинг програми

. Лістинг результатів

Висновок

Список використаної літератури



Вступ


У науці та техніці часто мають справу з періодичними явищами - явищами, що повторюються через деякий проміжок часу T, який має назву період. Прикладом може бути рух електричної машини, що через певний проміжок часу робить оберт і проходить через своє початкове положення. Цей же принцип використовується і в більшості електротехнічних пристроїв, які базуються на змінному струмі. Наприклад, мережа побутового живлення має частоту 50 Гц. Це означає, що протягом секунди сигнал у мережі повторює своє початкове значення 50 разів.

Ця курсова робота виконана для відновлення вхідного сигналу, який заданий графо аналітично за методом розкладання на гармоніки методом Фурє. У курсовій роботі наведені алгоритми та блок-схеми програм на мові Turbo Pascal, які реалізують поставлену задачу.

Мета роботи полягає у закріпленні навичок програмування у середі Turbo Pascal .



1. Постановка задачі


У ході виконання курсової роботи потрібно скласти схему алгоритму та програму, яка б обчислювала:

а) миттєве значення імпульсного сигналу на протязі двох періодів з виводом результатів у табличному та графічному вигляді;

б) значення шпаруватості, частоти та коефіцієнта заповнення імпульсів;

в) середнє значення напруги за час тривалості імпульсу;

г) спектральний склад імпульсів та активну ширину спектру;

д) діюче значення напруги за період.

Дані спектрального аналізу потрібно зберегти у типізованих дискових файлах.

Відновити сигнал за усіченим до заданої гармоніки спектрам,

прочитаним з дискового файлу. Спектр усікається за таким принципом:

+ № варіанта = 5 + 1 = 6.

Активну довжину імпульсу на рівні 0,5А.

Середньоквадратичну похибку відновленого сигналу.

Додаткове завдання.

Конвертувати дані про поточні значення спектру сигналу в текстовий формат і зберегти на диску.

Вхідний сигнал задано формулою:

При: А=10V, =100ms, T=2000ms.



2. Вхідний сигнал



. Лістинг програми

kursovoy;Graph, CRT;=10;=0.1;=2;=10000;=200;_usech=6;=0.001;=Pr/(n-1);=20;=240;=100;=20;=array [1..n] of real;GD, GM, GE: integer;, U2: massiv; tu, k, q, f: real; ua: real;DFT(a,b: massiv; n,s: integer; var c,d: massiv);i, j: integer; arg:real; q,w:massiv;s=1 theni:=1 to n do begin[i]:=0; d[i]:=0;j:=1 to n do begin:=-2*pi*(j-1)*(i-1)/n;[i]:=c[i]+a[j]*cos(arg);[i]:=d[i]+a[j]*sin(arg);;[i]:=c[i]/n;[i]:=d[i]/n;i:=1 to n do begin[i]:=0; w[i]:=0;j:=1 to n do begin:= 2*pi*(j-1)*(i-1)/n;[i]:=q[i]+a[j]*cos(arg)-b[j]*sin(arg);[i]:=w[i]+b[j]*cos(arg)-a[j]*sin(arg);;[i]:=sqrt(sqr(q[i])+sqr(w[i]));q[i]<=0 then[i]:=-c[i];;;F_U(t: real): real;t <= (Pr/2) then_U:=-A*(1-exp(-1*t/tau))_U:=A*(1-exp(-1*(Pr-t)/tau));;Simpson_F9(sn: integer): real;a, b, h, s: real; i: integer;:=Pr/2;:=Pr;:=(b-a)/(sn-1);:=0;i:=1 to sn-1 do:=s+4*F_U(a+i*h)+2*F_U(a+(i+1)*h);_F9:=h*(s+F_U(a)-F_U(b))/3;;Simpson_F12(sn: integer): real;a, b, h, s: real; i: integer;:=0;:=Pr;:=(b-a)/(sn-1);:=0;i:=1 to sn-1 do:=s+4*sqr(F_U(a+i*h))+2*sqr(F_U(a+(i+1)*h));_F12:= h*(s+sqr(F_U(a))-sqr(F_U(b)))/3;;Graphic;x,y: real;: integer;:=0;:=F_U(x);[1]:=y;(x0+round(x*xz), y0-round(y*yz));i:=2 to n do begin:=x+dt;:=F_U(x);[i]:=y;(x0+round(x*xz), y0-round(y*yz));;:=0;:=F_U(x);(x0+Pr*xz+round(x*xz), y0-round(y*yz));i:=2 to n do begin:=x+dt;:=F_U(x);(x0+Pr*xz+round(x*xz), y0-round(y*yz));;;Graphic2;x,y: real;: integer;:=0;:=U2[1];(x0+round(x*xz), y0-round(y*yz));i:=2 to n do begin:=x+dt;:=U2[i];(x0+round(x*xz), y0-round(y*yz));;:=0;:=U2[1];(x0+Pr*xz+round(x*xz), y0-round(y*yz));i:=2 to n do begin:=x+dt;:=U2[i];(x0+Pr*xz+round(x*xz), y0-round(y*yz));;;Parametri_Impulsa;x, y, tx: real;, l: integer;:=0;:=0;:=Pr/(bigN-1);i:=1 to bigN do beginF_U(x) > 0 then inc(l);:=x+tx;;:= round(100*(Pr*l/bigN))/100;:=1/Pr; {F7}:=Pr/tu; {F8}:=1/q;('Parametry impulsa:');('Chastota impulsa = ', f:0:2);('');('Skvaznost = ', q:0:2);('');('Koeficient zapolneniya impulsa = ', k:0:2);;Sr_Napryazenie;a, b, h1, h2: real;, sn2: integer;:=Pr/2;:=Pr;:=sqrt(eps);:=h1/2;:=round((b-a)/h1)+1;:=round((b-a)/h2)+1;(Simpson_F9(sn2)-Simpson_F9(sn1)) > eps do:=sn2;:=h2;:=h1/2;:=round((b-a)/h2)+1;;('Srednie napriajenie za vremea dlitelnosti impulsa = ', Simpson_F9(sn2)/tu:0:5);('');;Parametri_Impulsa2;fr: file of real;, m: integer;, d, b: massiv;, f, sum: real;(u1, b, n, 1, c, d);(fr, 'save.dat');(fr);:=0;:=0;i:=1 to n do begin:=sqrt(sqr(c[i])+sqr(d[i]));:=-arctan(d[i]/c[i]);(fr, s, f);:=sum+s/2;sum < 0.95*ua then inc(m);;:=m+1;('Aktivna shirina spektra m = ', m);('Parametry spektra sohraneny na disk');(fr);;Deistvyushee_Naprazenie;a, b, h1, h2: real;, sn2: longint;:=0;:=Pr;:=sqrt(eps);:=h1/2;:=round((b-a)/h1)+1;:=round((b-a)/h2)+1;(Simpson_F12(sn2)-Simpson_F12(sn1)) > eps do begin:=sn2;:=h2;:=h1/2;:=round((b-a)/h2)+1;;:=sqrt(Simpson_F12(sn2)/Pr);('Effectivnoe znachenie napryazeniya za period = ', ua:0:5);;Vostanovlenie_Signala;fr: file of real;: integer;, d, b: massiv;, f, sum: real;(fr, 'save.dat');(fr);i:=1 to N_usech do begin(fr, s, f);[i]:=s*cos(f);[i]:=s*sin(f);;i:=N_usech+1 to n do begin[i]:=0;[i]:=0;;(c, d, n, -1, u2, b);(fr);;Impuls_Pri_05A;z: real;, l: integer;:=0;i:=1 to n do beginU2[i] >= A/2 then inc(l);;l<>0 then z:=round(100*Pr *l/n)/100;('Aktivnaya dlina impulsa na urovne 0,5A = ', z:0:2);;SK_Oshibka;er: real;: integer;:=0;i:=1 to n do:=er+sqr(u1[i]-u2[i]); {F16}:=sqrt(er/(n-1)/n);('Srednekvadraticheskaya oshibka = ', er:0:5);;Sohranenie;ft: text;: integer;(ft, 'save.txt');(ft);i:=1 to n do writeln(ft, u2[i]:0:5);(ft);;i, j: integer;: real;;:=Detect;(GD, GM, '');:=GraphResult;GE<>GrOk then('Graph mode error!');;(red);(0, y0, 640, y0);(x0, 0, x0, 480);(5, 5, 'U');(630, 245, 'T');(5, 245, '0');(x0+5+xz*2 div 2, 250, 'T/2');(x0+5+xz*4 div 2, 250, 'T');(x0+5+xz*6 div 2, 250, '3T/2');(x0+5+xz*8 div 2, 250, '2T');(5, y0-yz*A, 'A');(0, y0+yz*A, '-A');(15, y0-yz*A, 25, y0-yz*A);(15, y0+yz*A, 25, y0+yz*A);i:=1 to 10 do begin(x0+(xz*2*i) div 2, 235, x0+(xz*2*i) div 2, 245);;(white);_Signala;;(green);;;;;_Impulsa;('');_Napryazenie;('');_Impulsa2;('');_Naprazenie;('');_Pri_05A;('');_Oshibka;;:= 0;j:=1 to n div 20 do begin;('-------------------------------');('| t | U(t) | U2(t) |');('-------------------------------');i:=(j-1)*20+1 to j*20 do begin('| ', x:0:2, ' | ' ,U1[i]:0:2, ' ', '| ' ,U2[i]:0:2, ' |');:= x+dt;;('-------------------------------');;;

Sohranenie;.

таблиця лістинг программа pascal

4. Блок-схеми


Рис.1. Блок-схема процедури DFT. Робить пряме та зворотне перетворення Фурє


Рис.2. Блок-схема процедури F_U. Задає функцію


Рис.3. Блок-схема процедури Simpson_F9. Формулі Сімпсона для значення середньої напруги


Рис.4. Блок-схема процедури Simpson_F12. Формулі Сімпсона для значення ефективної напруги



Рис.5. Блок-схема процедури Graphic. Малює графік функції


Рис.6. Блок-схема процедури Graphic2. Малює графік відновленої функції


Рис.7. Блок-схема процедури Parametri_Impulsa. Розраховує шпаруватість, коефіцієнт та частоту заповнення імпульсу



Рис.8. Блок-схема процедури SR_Napryzenie. Розраховує значення середньої напруги


Рис.9. Блок-схема процедури Parametri_Impulsa2. Розраховує активну ширину спектра і зберігає данні про спектральній аналіз на диск у файл Save.dat


Рис.10. Блок-схема процедури Deistvyushee_Naprazenie. Розраховує значення ефективної напруги


Рис.11. Блок-схема процедури Vostanovlenie_Signala. Відновлює сигнал за данними з файла Save.dat


Рис.12. Блок-схема процедури Impuls_Pri_05A. Активну довжину імпульсу на рівні 0,5А


Рис.13. Блок-схема процедури SK_Oshibka. Розраховує помилку


Таблиця символьних імен

№ЗміннаФізична величинаЧто обозначает1AVНаруга2taumHzЧастота3PrMsПеріод4bigN-Кількість точок для розрахунку імпульса5N-Кількість точок6N_usech-Кількість гармонік7dt-Змінна кроку дискретизації8eps-Точність для формули Сімпсона9y0-Зміщення по у10x0-Зміщення по х11xz-Масштаб по х12yz-Масштаб по у13U1Значення заданої функції14U2Значення усіченої функції15n-Кількість точок дискретизації16s-Значення вектора S17i-Змінна циклу18j-Змінна циклу19GD-Graph Driver20GM-Graph Mode21GE-Graph error22sn-Значення за формулою Сімпсона23l-Кількість точок функції >024fr-Файл25er%Середньоквадратична похибка26m-Активная ширина спектра27sum-Активна довжина спектра28zMsАктивна довжина імпульсу на рівні 0,5А29h-Величина кроку у формулі Сімпсона30x-Координата х31y-Координата у32tx-Крок при підрахуванні імпульсу33t-Змінна t34tuMsДовжина імпульсу35k-Коефіцієнт заповнення імпульсу36qMs-1Шпаруватість37fmHzЧастота імпульсу38uaVЕфективна напруга39a-Границя інтегрування40b-Границя інтегрування


5. Лістинг результатів


Скріншоти розрахунків


Скріншоти значень сигналу







Завдання для MC Excel


Рис. 16. Функція у MC Excel



Висновок


За допомогою методу розкладання на гармоніки, було відновлено вхідний сигнал за 6 гармоніками. При збільшенні числа гармонік, за якими відновлюється сигнал, різниця між вхідним та відновленним сигналом наближається до нуля. При зменшенні числа гармонік графік відновленного сигналу поступово відхиляється від вхідного.

У ході роботи був побудований графік вхідного та відновленого сигналу, виведені дані вхідного та відновленого сигналів та розрахунки згідно варіанту.

Дані вхідного сигналу, фазового спектру збережені у типізовані файли з назвою "Save.dat". Додатково, фазовий спектр збережений у текстовий файл "Save.txt" для побудови у Microsoft Excel заданого сигналу у функції часу.



Список використаної літератури


1.Аладьев В.З. Тупло В.Г. Turbo Pascal для всех. -К.: Техника, 1993. -176с.

2.Немнюгін С.А. Turbo Pascal.-М.:Питер, 2000. -491стр.


Міністерство освіти та науки України Національний Гірничий Університет Кафедра системного аналізу та управління Кур

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ