Реферати

Курсова робота: Обробка даних в автоматизованих системах

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

Амортизаційний і ремонтний фонди. ЗМІСТ Уведення 1. амортизаційний фонд......5 1.1 Призначення амортизаційного фонду......5 1.2 Формування амортизаційного фонду......9

Лакофарбові матеріали на основі вінілових полімерів. Лакофарбові матеріали на основі цих плівкоутворювальних швидко висихають при кімнатній температурі з утворенням покрить, що зберігають термопластичние властивості і володіють, дуже низької паропроницаемостью, великою міцністю, атмосферостойкостью, і в багатьох випадках - стійкістю до періодичного впливу кислот і лугів, негорючістю, нерозчинністю в оліях, спиртах і алифатических вуглеводнях.

Булгаковська Москва. 2. Булгаковська Москва. Автор: Булгаков М. А. Тонкий психолог - Булгаков, переплітаючи у своєму добутку "Майстер і Маргарита" реалістичне і фантастичне, домігся можливості сатирично зобразити Москву 30-х років.

Грабіж 3. Уведення Перехід до ринкової економіки, зв'язане з ним ускладнення відносин власності, а також зниження рівня життя багатьох громадян нашої країни привели до загострення криміногенної ситуації в цілому і до росту зазіхань на чуже майно - зокрема. Злочину проти власності і боротьба з ними перетворилися в одну із самих актуальних проблем сучасної юридичної практики.

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

Севастопольський національний технічний університет

Кафедра технічної кібернетики

КУРСОВИЙ ПРОЕКТ

на тему:

"Обробка даних в автоматизованих системах"

(альбом документів)

Севастополь

200 6

ЗАВДАННЯ

на курсовий проект (роботу) студента

Тема проекту (роботи) Обробка даних в автоматизованих системах

Термін здачі студентом закінченого проекту (роботи)

Вихідні дані проекту (роботи): внутрішній опір датчика Rи = 100 (Ом); вихідна напруга датчика Uс = 2.5 (мв), ефективне значення синфазної перешкоди Uсф = 1,1 (У), частота АЦП f = 500 (Гц), дозвіл по частоті b = 5 (Гц), період дискретизації Т=0.002 (с), максимальна погрішність синфазної перешкоди e=20%.

Зміст розрахунково-пояснювальної записки (список питань, що підлягають розробці)

1. Розробка технічного забезпечення: розрахунок інформаційно-вимірювального каналу автоматизованої системи, що складає з диференціального підсилювача й активного фільтра, по вихідним даним. 2. Розробка методичного забезпечення: короткі теоретичні зведення. 3. Розробка програмного забезпечення: алгоритм і програма оцінювання спектральної щільності.

Список графічного матеріалу (з точними визначеннями обов'язкових креслень) схема електрична принципова вимірювального каналу, схема алгоритму роботи основної програми.

КАЛЕНДАРНИЙ ПЛАН

№п/п

Назва етапів курсового проекту (робота)

Термін виконання етапів проекту (роботи)

Позначки

1

Розробка технічного забезпечення

2

Розрахунок попереднього підсилювача

3

Розрахунок активного фільтра

4

Розробка методичного забезпечення

5

Розробка прикладного програмного забезпечення

6

Оформлення пояснювальної записки

7

Захист курсового проекту

ЗМІСТ

Уведення

1. Технічне забезпечення

1.1 Розрахунок інформаційно-вимірювального каналу САУ

2. Методичне забезпечення

2.1 Опис моделі АЦП

2.2 Спектральний аналіз на основі перетворення Фур'є

3. Розробка прикладного програмного забезпечення

3.1 Загальні зведення

3.2 Опис використовуваних модулів

3.3 Керівництво користувача

3.4 Опис функцій

3.5 Тестування ПО

Висновок

Бібліографічний список

Додатка

УВЕДЕННЯ

Метою курсового проекту є розробка технічного і програмного забезпечення автоматизованої системи наукових досліджень (АСНИ).

АСНИ призначена для спектрального аналізу даних, що надходять від первинних перетворювачів фізичних величин, що характеризують деякий технологічний процес. До складу АСНИ входять наступні підсистеми:

- підсистема вимірів - інформаційно-вимірювальний канал (ИИК);

- підсистема передачі даних;

- підсистема обробки даних;

- підсистема візуалізації і документування результатів.

Аналого-цифрові перетворювачі (АЦП) є пристроями, що приймають вхідні аналогові сигнали і генерують відповідні їм цифрові сигнали, придатні для обробки мікропроцесорами й іншими цифровими пристроями.

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

Сучасний етап характеризується масовим використанням великих і сверхбольших інтегральних схем ЦАП і АЦП високими експлуатаційними параметрами, що володіють: швидкодією, малими погрішностями, многоразрядностью.

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

1. ТЕХНІЧНЕ ЗАБЕЗПЕЧЕННЯ

Підсистема збору даних складається з декількох інформаційно-вимірювальних каналів і каналів керування (якщо система активного типу). Підсистему збору даних (ПСД) у ряді випадків компонують у виді підсистеми УСО.

Малюнок 1.1 - Підсистема збору даних

КК - керуючий канал;

ИИК - інформаційно-вимірювальний канал;

МШС - мікропроцесорна система;

КК містить:

Малюнок 1.2 - Керуючий канал

НУ - підсилювач, що нормує;

Д - датчик;

ДУ - диференціальний підсилювач;

Датчик призначений для перетворення фізичних величин в аналогові: сигнал - напруга (чи струм).

Диференціальний підсилювач призначений для рішення двох задач: придушення синфазної перешкоди і посилення сигналу від датчика.

Коефіцієнт придушення синфазного сигналу:

(1.1)

Придушення синфазної перешкоди залежить від якості операційного підсилювача. Значення Кіс приводиться в паспортних даних і залежить від начіпних елементів (від розкиду їхніх номінальних значень).

ФНЧ. В електричних, радіотехнічних і телемеханічних установках часто зважується задача: із сукупного сигналу, що займає широку смугу частот, виділити один чи кілька складових сигналів з більш вузькою смугою. Сигнали заданої смуги виділяють за допомогою частотних електричних фільтрів.

До частотних електричних фільтрів різної апаратури пред'являються різні, часом суперечливі вимоги. В одній області частот, що називається смугою пропущення, сигнали не повинні послаблятися, а в іншою, називаною смугою затримування, ослаблення сигналів не повинне бути менше визначеного значення. Фільтр вважають ідеальним, якщо в смузі пропущення отсутствует ослаблення сигналів і фазо-частотная характеристика линейна (немає перекручування форми сигналів), а поза смугою пропущення сигнали на виході фільтра відсутні.

У залежності від діапазону частот, що відносяться до смуги пропущення, розрізняють низькочастотні, високочастотні, смугові, смугасто-гнітючі, виборчі (селективні) і що загороджують (режекторние) фільтри. Властивості лінійних фільтрів можуть бути описані передатною функцією, що дорівнює відношенню зображень по Лапласові вихідного і вхідного сигналів фільтра. ФНЧ запобігає улучення високочастотних перешкод.

Фільтр низьких частот застосовується як противомаскировочний (противоподменний) фільтр для виключення ефекту підміни, тому що має бути дискретизація аналогового сигналу з частотою fацп, те задача полягає в запобіганні ефекту підміни. Помилки дискретизації виявляються в можливості прояву ефектів підміни частот.

Параметри АЦП: частота Найквиста і частота дискретизації:

(1.2)

(1.3)

де Т - період дискретизації.

Ефект підміни частот виникає в тому випадку, коли fmax, що знаходиться в спектрі досліджуваного сигналу, fmax > F.

Якщо ефект підміни частот має місце, то отриману вибірку у виді цифрових отсчетов можемо пропустити через цифровий фільтр високих частот.

Для того щоб запобігти прояв ефекту підміни частот, необхідно перед АЦП поставити фільтр нижніх частот, частота зрізу якого дорівнювала б частоті Найквиста.

1.1 Розрахунок інформаційно-вимірювального каналу САУ

- Диференціальний вимірювальний підсилювач:

У найпростішому випадку як вимірювальний підсилювач може бути використаний ОУ в диференціальному включенні (малюнок 1.3). При виконанні умови R1/R2=R3/R4 посилення диференціального сигналу набагато більше посилення синфазного сигналу і коефіцієнт ослаблення синфазного сигналу (КОСС) буде максимальним.

Малюнок 1.3 - Схема найпростішого вимірювального підсилювача

Uc.max = 2.5 мв - вихідна напруга датчика;

Uсф = 1.1 У - ефективне значення синфазної перешкоди;

d = 5% - припустимий відсоток придушення (максимальна погрішність) синфазної перешкоди;

Rc = 100 Ом - внутрішній опір датчика;

Якщо КООС = 15000 (і вище) за знайденим значенням вибирають тип операційного підсилювача. Необхідний коефіцієнт ослаблення синфазної перешкоди:

(1.4)

(1.5)

Якщо не вдається знайти, то задача зважується на 3-х операційних підсилювачах.

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

(1.6)

визначається з наступних розумінь: якщо резистори мають допуск:

(1.7)

(1.8)

(1.9)

Вибираємо = 0,01

(1.10)

Для найкращого узгодження датчика з підсилювачем приймаємо опір датчика рівним вхідному опору:

(1.11)

(1.12)

Знаходимо опір зворотного зв'язку:

(1.13)

Як операційний підсилювач DA приймаємо K140УД9, що має коефіцієнт придушення синфазного сигналу не менш 80 дб.

- Фільтри нижніх частот:

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

(1.14)

Малюнок 1.4 - Найпростіший фільтр нижніх частот першого порядку

Замінивши s на , одержимо частотну характеристику фільтра. Для реалізації загального підходу доцільно нормувати комплексну перемінну s. Покладемо

(1.15)

де - кругова частота зрізу фільтра. У частотній області цьому відповідає

(1.16)

Частота зрізу фільтра на малюнку 1.4 дорівнює:

(1.17)

звідси одержимо

(1.18)

(1.19)

Використовуючи передатну функцію для оцінки залежності амплітуди вихідного сигналу від частоти, запишемо:

(1.20)

При , тобто для випадку, коли частота вхідного сигналу ", |W(j)| = 1/. Це відповідає зниженню коефіцієнта передачі фільтра на 20 дб на декаду.

Якщо необхідно одержати більш швидке зменшення коефіцієнта передачі, можна включити n фільтрів нижніх частот послідовно. Передатна функція такої системи має вид:

(1.21)

де , ,..., - дійсні позитивні коефіцієнти. З цієї формули випливає, що |W(j)| ~ 1/ при . Полюса передатної функції речовинні негативні. Такою властивістю володіють пасивні RC-фільтри n-го порядку. З'єднавши послідовно фільтри з однаковою частотою зрізу, одержимо:

(1.22)

- цей випадок відповідає критичному загасанню.

Передатна функція фільтра нижніх частот (ФНЧ) у загальному виді може бути записана як

(1.23)

де , ,..., - позитивні дійсні коефіцієнти;

- коефіцієнт підсилення фільтра на нульовій частоті.

Порядок фільтра визначається максимальним ступенем перемінної S. Для реалізації фільтра необхідно розкласти поліном знаменника на множники. Якщо серед нулів полінома є комплексні, то розглянуте раніше представлення полінома (1.5) не може бути використано. У цьому випадку варто записати його у виді добутку квадратних тричленів:

(1.24)

де і - позитивні дійсні коефіцієнти. Для поліномів непарних порядків коефіцієнт b1 дорівнює нулю.

Реалізація комплексних нулів полінома на пасивних RC-ланцюгах неможлива. Застосування індуктивних котушок у низькочастотній області небажано через великі габарити і складність виготовлення котушок, а також через появу паразитних індуктивних зв'язків. Схеми з операційними підсилювачами дозволяють забезпечити комплексні нулі поліному без застосування індуктивних котушок. Такі схеми називають активними фільтрами. Розглянемо різні способи завдання характеристик ФНЧ.

Широке застосування знайшли фільтри Бесселя, Баттерворта і Чебишева, що відрізняються крутістю нахилу амплітудно-частотної характеристики (АЧХ) на початку смуги затримування і колебательностью перехідного процесу при східчастому впливі.

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

Амплітудно-частотна характеристика фільтра Чебишева спадає більш круто за частотою зрізу. У смузі пропущення вона, однак, не монотонна, а має хвилеподібний характер з постійною амплітудою. При заданому порядку фільтра більш різкому спаду амплітудно-частотної характеристики за частотою зрізу відповідає велика нерівномірність у смузі пропущення. Коливання перехідного процесу при східчастому вхідному впливі сильніше, ніж у фільтра Баттерворта.

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

Той чи інший вид фільтра при заданому його порядку визначається коефіцієнтами полінома передатної функції (1.24) фільтра.

- Реалізація фільтрів на операційних підсилювачах:

З ростом порядку фільтра його фільтруючі властивості поліпшуються. На одному ОУ досить просто реалізується фільтр другого порядку. Для реалізації фільтрів нижніх частот, вищих частот і смугових фільтрів широке застосування знайшла схема фільтра другого порядку Саллена-Ки. На малюнку 1.5 приведений її варіант для ФНЧ. Негативний зворотний зв'язок, сформований за допомогою дільника напруги R3, (- 1)R3, забезпечує коефіцієнт підсилення, рівний . Позитивний зворотний зв'язок обумовлений наявністю конденсатора З2. Передатна функція фільтра має вид:

(1.25)

Малюнок 1.5 - Активний фільтр нижніх частот другого порядку

Розрахунок схеми істотно спрощується, якщо із самого початку задати деякі додаткові умови. Можна вибрати коефіцієнт підсилення . Тоді ( - 1)R7 = 0, і резистивний дільник напруги в ланцюзі негативного зворотного зв'язку можна виключити. ОУ виявляється включеним за схемою повторювача, що неінвертує. У найпростішому випадку він може бути навіть замінений емиттерним повторювачем на складеному транзисторі. При = 1 передатна функція фільтра приймає вид:

(1.26)

Знаходимо значення ємності конденсатора З1:

(1.27)

(1.28)

(1.29)

Відповідно до методики приймаємо наступні параметри фільтра для розрахунку елементів схеми Саллена - Ки: А = 1, У = 1.4142, З = 1

(фільтр Баттерворта другого порядку з коефіцієнтом передачі А = 1).

Знаходимо значення ємності конденсатора З2:

(1.30)

(1.31)

Знаходимо опір резистора R2:

(1.32)

(Ом)

(1.33)

(1.34)

(1.35)

Тому що А = 1, то , а .

Приймаємо :

(1.36)

У випадку, якщо коефіцієнт передачі фільтра А > 1, то величини R3і R4вибираються з умови R4/R3= А-1. У якості ОУ можна вибрати мікросхему ДО140 УД9.

- Розрахунок підсилювача, що нормує:

Як нормирующего підсилювач вибираємо операційний підсилювач LM 741:

Малюнок 1.6 - Схема підсилювача, що нормує

Коефіцієнт підсилення розраховується по формулі:

(1.37)

Максимальне значення амплітуди вхідного сигналу, прийнятне для АЦП, дорівнює , максимальне значення амплітуди вхідного сигналу датчика дорівнює , коефіцієнт підсилення ФНЧ , коефіцієнт підсилення ДУ . Тоді

(1.38)

(1.39)

Вибираємо опору: R9=1 кому, R10=23 кому.

2. МЕТОДИЧНЕ ЗАБЕЗПЕЧЕННЯ

2.1 Опис моделі АЦП

Однієї з найважливіших задач, розв'язуваних автоматизованими системами, є збір і обробка даних, що надходять від первинних перетворювачів (датчиків), установлених на об'єктах автоматизації. Ці дані розглядають як тимчасові ряди.

Часовий ряд - це безліч спостережень, генерируемих послідовно в часі. У залежності від того, як змінюється час: чи безупинно дискретно, розрізняють тимчасові ряди безупинні і дискретні.

Сучасні автоматизовані системи обробляють дані за допомогою комп'ютерів, тому всі дані, що надходять у виді аналогових сигналів, перетворяться в цифрову форму.

При дослідженні процесу аналого-цифрового перетворення будуть розглядатися наступні тимчасові ряди:

Х (t) - вихідна фізична величина (безупинний ряд);

х (t) - вихідний сигнал датчика у вольтах, що відповідає функції Х (t) (безупинний ряд);

З (t) - вихід х (t) датчика, переведений у безупинні отсчети (безупинний ряд);

З (i) - вихід х (t) датчика, переведений у безупинні отсчети, виконані в дискретні моменти часу з періодом Т (дискретний ряд);

с (і) - вихід х (t) датчика, переведений в округлені отсчети, отримані після операції квантування (дискретний часовий ряд);

е (і) - погрішність, рівна З (i) - з (і).

Фіктивний часовий ряд З (t) уведений тут тільки для зручності. Як часовий ряд З (t), так і ряд з (і) виміряються в одних одиницях - отсчетах. Часовий ряд З (t) є просто результат лінійного перетворення функції х (t) виду:

(2.1)

Наприклад, якщо динамічний діапазон зміни значень тимчасового ряду х (t) на вході АЦП лежить у межах від -5В до + 5В и йому відповідає інтервал зміни значень тимчасового ряду З (t) від 0 до 1023 на виході (АЦП має 10 розрядів), те А = 102.3 (отсч/У) і В = 511.5 (отсч/У).

2.2 Спектральний аналіз на основі перетворення Фур'є

Дискретне перетворення Фур'є (фінітне) визначається наступним співвідношенням:

(2.2)

де X(k) - значення (комплексне) дискретного перетворення Фур'є, визначене в частоті з номером k;

x(і) - значення (речовинне) вихідного тимчасового ряду, визначене в момент часу з номером і;

T - період дискретизації;

N - кількість отсчетов (довжина) тимчасового ряду.

Дискретне перетворення Фур'є зв'язує спектральну характеристику (комплексний спектр) X(k), визначену в дискретних значеннях частоти (з номером k), з дискретними значеннями тимчасового ряду (сигналу) x(і), визначеними в дискретні моменти часу (з номером і).

Точність представлення спектральної характеристики визначається дозволом по частоті:

(2.3)

Зворотне дискретне перетворення Фур'є визначається наступним співвідношенням:

(2.4)

З порівняння формул (2.2) і (2.4) випливає, що вони відрізняються знаком показника експоненти, множником перед знаком суми, а також перемінної підсумовування. Це дозволяє будувати єдині програми для прямого і зворотного перетворень Фур'є.

Застосовуючи формулу Ейлера, вираження (2.2) можна привести до виду:

(2.5)

де

(2.6)

Оцінювання спектральної щільності потужності (СПМ) за допомогою дискретного перетворення Фур'є здійснюється по формулі:

(2.7)

де X(k) - дискретне перетворення Фур'є (спектральна характеристика) тимчасового ряду , що відповідає процесу x(t), що володіє властивістю ергодичності;

T - період дискретизації процесу x(t);

N - довжина тимчасового ряду.

Риса в правій частині формули (2.7) означає операцію осреднения. Застосування формули (2.7) без операції осреднения приводить до одержання "грубої" оцінки СПМ. Формула (2.6) дозволяє обчислити оцінку СПМ за допомогою статистичного осреднения модуля спектральної характеристики сукупності даних, поділеного на довжину запису даних. Статистичне осреднение необхідно тут тому, що ординати спектральної характеристики є випадковими величинами, що змінюються для кожної використовуваної реалізації випадкового тимчасового ряду .

Операція осреднения зменшує статистичну мінливість, чи підвищує статистичну стійкість. У спектральному аналізі випадкових тимчасових рядів на статистичну стійкість впливають два параметри - дозвіл по частоті і довжина запису .

Можна показати, що оцінки ПСМ приблизно мають розподіл з n ступенями волі, де . Більш того, для досить великих n, наприклад, , розподіл апроксимується гауссовским (нормальним) розподілом. У цьому випадку нормоване стандартне відхилення (стандартне відхилення, зв'язане з оцінюваною величиною, тобто процентна помилка, чи, у статистичній термінології, "коефіцієнт розкиду") визначається співвідношенням:

(2.8)

Величину називають стандартною помилкою. Якщо , то

.

Результат означає, що обчислення оцінки СПМ із використанням повної довжини тимчасового ряду має стандартну помилку, рівну 100%.

Якщо відрізок поділити на m ділянок, то в цьому випадку:

(2.9)

Підставляючи отриманий результат у (2.7), знайдемо:

(2.10)

Таким чином, для підвищення точності оцінювання СПМ необхідно вихідний часовий ряд довжини N розбити на m ділянок довжини Nу, обчислити для кожного i-го ділянки по формулі (1), а потім знайти осредненную оцінку по формулі:

(2.11)

Варто мати на увазі, що дозвіл по частоті в розглянутому випадку визначається зі співвідношення . Число ступенів волі для знайденої оцінки СПМ можна знайти в такий спосіб:

(2.12)

Отже, для підвищення ступенів волі і, відповідно, статистичної стійкості оцінок СПМ необхідно збільшувати число ділянок для осреднения.

Підвищення числа ступенів волі можна досягти іншим способом - осреднением по частотах.

Згладжена оцінка:

(2.13)

отримана осреднением - сусідніх оцінок спектральної характеристики, має розподіл з числом ступенів волі, рівним приблизно 2l. Це випливає з теорії про додавання величин, що мають розподіл .

Слід зазначити, що дозвіл по частоті в даному випадку визначиться зі співвідношення:

(2.14)

Оскільки операція осреднения лінійна, оцінку СПМ можна знайти, комбінуючи осреднение по ділянках з осреднением по частотах. При цьому спочатку виконується осреднение по ділянках, а потім - по частотах. При осредненії по m ділянках з наступним осреднением сусідніх спектральних оцінок у підсумку виходять оцінки, число ступенів волі яких дорівнює . Дозвіл у цьому випадку дорівнює .

3. РОЗРОБКА ПРИКЛАДНОГО ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ

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

3.1 Загальні зведення

Розроблювальна програма призначена для моделювання роботи системи обробки інформації, що складає з АЦП і блоку аналізу. Блок аналізу дозволяє знаходити характеристики генерируемого тимчасового ряду, робити пряме і зворотне перетворення Фур'є й аналізувати отримані результати, оцінювати спектральну щільність потужності декількома способами. У програмі так само передбачається блок, що генерує вихідний часовий ряд ( щонадходить на вхід АЦП).

Вхідними даними для програми є: розрядність АЦП; динамічний діапазон напруг АЦП; період дискретизації АЦП; амплітуда вхідного сигналу; число отсчетов (елементів генерируемого тимчасового ряду); число гармонік і їхньої величини; дозвіл по частоті; % погрішність оцінювання спектральних плотностей; база усереднення.

Вихідними даними є ряди: вихідний часовий ряд, дискретний часовий ряд, помилка квантування, груба і згладжена оцінки спектрів потужності і т.д.

3.2 Опис використовуваних модулів

Програма складається з одного основного модуля Unit1 і додаткового модуля Unit2. Також у програмі використовуються функції ftt і mo, оформлені в однойменні модулі.

Модуль Unit1 являє собою головне вікно програми і містить основні функції: tsg - генерації тимчасового ряду, grub- аналізу грубої оцінки й оцінки осредненной по частоті, sred - аналізу оцінки осредненной за допомогою розбивки на ділянки і smooth - аналізу оцінки зі спектральним вікном.

Модуль Unit2 є допоміжним і містить тільки інформативні повідомлення.

Модуль FFT містить функцію швидкого перетворення Фур'є.

Модуль MO містить функцію, що виконує перебування математичного чекання тимчасового ряду.

3.3 Керівництво користувача

При запуску програми відкривається вікно наступного виду

Малюнок 3.1 - Загальний вид вікна програми

Вікно складається з декількох основних частин. Блок уведення вихідних даних, де необхідно ввести параметри тимчасового ряду, що підлягає генерації. Усі дані вводяться в чисельному виді, знак поділу - кома. Число гармонік задається компонентом SpinEdit, і відразу після зміни її значення в таблиці під нею установлюється відповідне число осередків для введення значень гармонік. Число гармонік у даній програмі можна встановлювати в межах від 1 до 20.

Вихідні дані для спектрального аналізу вводяться аналогічним образом. Це процентна помилка, дозвіл по частоті і база осреднения.

Блок операцій дозволяє здійснювати три операції. Це генерація ряду, спектральний аналіз і очищення графіків і таблиць.

Генерація ряду проводиться на основі введених даних для ряду. Дані дискретного тимчасового ряду зберігаються у файл. При цьому виводяться графіки вихідного ряду, ряду на виході АЦП, помилки квантування, а також чисельні дані по цих рядах. Останнє буде виглядати так:

Малюнок 3.2 - Вид вікна програми після генерації ряду

Вид вікна з графіком, наприклад, вихідного врем. ряду, буде таким:

Малюнок 3.3 - Вихідний врем. ряд після його генерації

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

У таблицю виводяться як значення ординат спектрів, так і частоти, що відповідають їм, окремо для грубої оцінки СПМ і для оцінки осредненной по ділянках. Для оцінки осредненной по частотах частоти ті ж, що і для грубої оцінки СПМ.

Так буде виглядати вікно з чисельними даними після спектрального аналізу:

Малюнок 3.4 - Вид вікна програми після спектрального аналізу

Ці дані зберігаються у файл, щоб забезпечити можливість побудови їх згодом, у тому числі й в інших прикладних програмах.

Вікно з графіком, наприклад, грубої оцінки СПМ, буде виглядати так:

Малюнок 3.5 - Вид вікна програми після спектрального аналізу

3.4 Опис функцій

void _fastcall tsg (int Nt, int Ng, float amp, float dt, float *fi, float *vr) - служить для генерації тимчасового ряду. Алгоритм одержання тимчасового ряду полягає в підсумовуванні значень усіх гармонік у кожен конкретний момент часу. Кількість отсчетов часу задається, і кінець тимчасового інтервалу виходить шляхом множення числа отсчетов на період дискретизації.

Nt - довжина тимчасового ряду;

Ng - кількість гармонік;

mp - амплітуда гармонік;

dt - період дискретизації;

fi - вхідний масив частот гармонік;

vr - вихідний масив (часовий ряд);

void smooth(int N, float *mas, float *mas1, int num)

Функція вікон згладжування в залежності від переданого їй індексу застосовує алгоритм згладжування або за допомогою вікна Гудмена, або вікна Гудмена-Еноксона-Отнеса. Використовується як допоміжну функцію при обчисленні оцінки спектральної щільності потужності.

N - довжина в. р.

mas - в. р., що підлягає згладжуванню

num - індекс виду вікна. num=1 - вікно Гудмена, num=2 - вікно Гудмена-Ериксона-Отнеса

mas1 - згладжений в. р.

float fft (float *x, float *y, Int N, Int m, Int Ind) - швидке перетворення Фур'є.

x і y - вхідні/вихідні масиви;

N - довжина тимчасового ряду;

m - ступінь двійки (розрядність АЦП);

Ind - показник перетворення БПФ: Ind =1 - пряме, Ind =2 - зворотне.

void sred (float *x, float *y, float *vr, int Nt, float dt, float amp, float b) - припускає обчислення згладженої оцінки методом усереднення по відрізках (ділянкам).

x і y - вхідні/вихідні масиви;

Nt - довжина тимчасового ряду;

dt - період дискретизації;

amp - амплітуда гармонік;

vr - вхідний масив (часовий ряд);

b - дозвіл;

void _fastcall grub (float *x, float *y, float *vr, int Nt, float b, float dt, float amp) - містить у собі обчислення грубої оцінки спектральної щільності, а так само обчислює в залежності від заданих умов згладжену по частотах оцінку щільності.

x і y - вхідні/вихідні масиви;

Nt - довжина тимчасового ряду;

dt - період дискретизації;

amp - амплітуда гармонік;

vr - вхідний масив (часовий ряд);

b - дозвіл.

3.5 Тестування ПО

Вихідні дані:

- Кількість гармонік - 5;

- Частоти гармонік: 60, 80, 100, 120, 140;

- Період дискретизації - 0,002 з;

- Розрядність АЦП - 12

- Амплітуда сигналу - 2,5 В

- Діапазон вхідних напруг від -2,5 В до +2,5 В;

- Статична помилка - 20%;

- Дозвіл - 5 Гц;

Результатами роботи програми є вихідний (мал. 3.6) і дискретний (мал. 3.7) тимчасові ряди, груба (мал. 3.8) оцінка СПМ, згладжені оцінки СПМ методами осреднения по ділянках (мал. 3.9), по частотах (мал. 3.10) і оцінка СПМ зі спектральним вікном (мал. 3.11)

Малюнок 3.6 - Вихідний часовий ряд

Малюнок 3.7 - Дискретний часовий ряд

Малюнок 3.8 - Груба оцінка СПМ

Малюнок 3.9 - Згладжена оцінка СПМ методом осреднения по ділянках

Малюнок 3.10 - Згладжена оцінка СПМ методом осреднения по частотах

Малюнок 3.11 - Оцінка СПМ зі спектральним вікном

Уже при аналізі грубого спектра ми можемо спостерігати п'ять сплесків, що відповідають п'ятьом гармонікам вхідного сигналу. Відповідні сплескам частоти, як ми можемо помітити, дорівнюють частотам гармонік сигналу. У нашому прикладі це частоти 60, 80, 100, 120, 140 Гц.

При осредненії грубої оцінки двома методами виявляються наступні закономірності. По-перше, спостерігається ефект розмивання частот. Для методу осреднения по частотах, наприклад, він залежить від вибору бази осреднения. По-друге, можна помітити вирівнювання сплесків по чи амплітуді ж, принаймні, скорочення розкиду значень. Відзначимо, що найбільше наочно ефект осреднения грубої оцінки СПМ просліджується при наявності в ній випадкової складовий (зашумления).

ВИСНОВОК

У даному курсовому проекті розробили технічне і програмне забезпечення автоматизованої системи наукових досліджень (АСНИ).

Був виконаний розрахунок інформаційно-вимірювального каналу АСНИ, що складає з диференціального підсилювача й активного фільтра по вихідним даним. Визначили необхідний КООС (коефіцієнт ослаблення синфазного сигналу), мінімально необхідний коефіцієнт підсилення диференціального сигналу Кдиф, вибрали схемотехническое рішення, знайшли придатний тип операційного підсилювача і розрахували елементи схеми відповідно до знайденого Кдиф. Порядок фільтра прийняли рівним 2.

Розробили програмне забезпечення й алгоритми, програму оцінювання спектральної щільності з дозволом по частоті b. При цьому розрахували необхідну довжину вихідного тимчасового ряду для періоду дискретизації Т и помилки оцінювання e.

Скористалися мовою програмування З++ і готовим програмним модулем швидкого перетворення Фур'є.

Розроблена програма дозволяє моделювати роботу АСНИ:

- генерує вихідний часовий ряд;

- моделює роботу АЦП;

- аналізує грубу оцінку спектральної щільності потужності;

- аналізує поліпшену оцінку спектральної щільності потужності двома методами - розбивкою на ділянки, осреднением по частотах.

БІБЛІОГРАФІЧНИЙ СПИСОК

1. Моделювання й обробка даних, що надходять від аналого-цифрових перетворювачів: Методичні вказівки до виконання лабораторної роботи з дисципліни "Обробка даних в автоматизованих системах" / Сост. Л. А. Краснодубец. - Севастополь: Изд-во Севнту, 2002.-11с.

2. Дослідження дискретного перетворення Фур'є: Методичні вказівки до виконання лабораторної роботи з дисципліни "Обробка даних в автоматизованих системах" / Сост. Л. А. Краснодубец. - Севастополь: Изд-во Севнту, 2002.- 13с.

3. Оцінювання спектральних плотностей за допомогою швидкого перетворення Фур'є: Методичні вказівки до виконання лабораторної роботи з дисципліни "Обробка даних в автоматизованих системах" / Сост. Л. А. Краснодубец. - Севастополь: Изд-во Севнту, 2002.- 13с.

4. А. Я. Архангельський - Програмування в Delphi 6.- М.: ЗАТ "Видавництво БІНОМ", 2002 р. - 1120 с.

5. Х. М. Дейтл, П. Дж. Дейтл - Як програмувати на З++. - М.: ЗАТ "Видавництво БІНОМ", 2003 р. - 1031с.

6. ДСТ 2.105-95 ЕСКД. Загальні вимоги до текстових документів.

7. ДСТ 2. 701-84 ЕСКД. Схеми. Види і типи. Загальні вимоги до виконання.

ДОДАТОК А (ОБОВ'ЯЗКОВЕ)

Текст програми

//-

#include < vcl.h >

#pragma hdrstop

#include < math.h >

#include "fft.cpp"

#include "Unit1_my.h"

#include "Unit2.h"

#include "Unit3.h"

#include "fstream.h"

#include "mo.cpp"

//-

#pragma package(smart_init)

#pragma link "CSPIN"

#pragma resource "*.dfm"

TADC *ADC;

//-

void smooth(int N,float *mas,float *mas1,int num)

{float a[4];int l1,l2;

if (num==1) {a[1]=0.1817;a[2]=-0.1707;a[3]=0.1476;}

if (num==2) {a[1]=0.35;a[2]=-0.0875;a[3]=0.0625;}

for (int k=0;k < N;k++)

{mas1[k]=mas[k];

for (int i=1;i < =3;i++){

if ((k-i) < 0) l1=k-i+N;

else l1=k-i;

if ((k+i) > N-1) l2=k+i-N;

else l2=k+i;

mas1[k]=mas1[k]+a[i]*(mas[l1]+mas[l2]);}

if (num==1) mas1[k]=mas1[k]*1.1679;

if (num==2) mas1[k]=mas1[k]*1.267;

}

}

//-

_fastcall TADC::TADC(TComponent* Owner)

: TForm(Owner)

{

}

//-

void _fastcall tsg(int Nt,int Ng, float amp,float dt,float *fi,float *vr)

{

int i,j;

float ti,s;

try{

ti=0.0;

for(j=0;j < Nt;j++){

s=0.0;for(i=0;i < Ng;i++) s+=amp*sin(2.0*M_PI*fi[i]*ti)/Ng;

vr[j]=s;

ti+=dt;

}

}catch (...){

Application- > MessageBox("Перевір себе!!!","Ошибочка вийшла", MB_OK);

}

}

void _fastcall TADC::HarmonicNumberChange(TObject *Sender)

{

Freq- > RowCount=HarmonicNumber- > Value;

}

//-

void _fastcall TADC::Button1Click(TObject *Sender)

{

float dt, *vr, *fi, b, eps, ti, amp, Umin, Umax, Cx;

int Nt, Ng, i, level;

TListItem *ListItem;

Series1- > Clear();

LineSeries1- > Clear();

try{

std:: FILE *outfile;

SaveDialog- > Title = "Збереження файлу тимчасового ряду";

if((eps = StrToFloat(Error- > Text)) < =0) eps=1;

if(eps > 1) eps=1;

if((b = StrToFloat(BText- > Text)) < =0) b=1;

Ng=StrToInt(HarmonicNumber- > Value);

dt=StrToFloat(dtText- > Text);

Nt=(int)1.0/(dt*b);

amp=StrToFloat(Amlitude- > Text);

Nt = pow(2,ceil(log(Nt/sqrt(eps))/log(2)));

Umin=StrToFloat(MinUText- > Text);

Umax=StrToFloat(MaxUText- > Text);

Cx=(pow(2,StrToInt(CapacityText- > Text))-1)/(Umax-Umin);

if (SaveDialog- > Execute()){

outfile = std::fopen(SaveDialog- > FileName.c_str(), "w");

if (outfile)

{fprintf(outfile,"%f\n%d\n%f\n",dt,Nt,amp);

}

fi=(float*)malloc(Ng*sizeof(float));

for(i=0;i < Ng;i++) fi[i]=StrToFloat(Freq- > Cells[0][i]);

vr=(float*)malloc(Nt*sizeof(float));

tsg(Nt,Ng, amp, dt, fi, vr);

ti=0.0;

ListView1- > Items- > Clear();

ListView1- > Column[2]- > Caption="Вихідний часовий ряд";

ListView1- > Column[3]- > Caption="Дискретний часовий ряд";

for(i=0;i < Nt;i++,ti+=dt) {

LineSeries1- > AddXY(ti,vr[i],"",clRed);

ListItem=ListView1- > Items- > Add();

ListItem- > Caption=IntToStr(i);

ListItem- > SubItems- > Add(FloatToStr(ti));

ListItem- > SubItems- > Add(FloatToStr(vr[i]));

if(vr[i] < Umin) vr[i]=Umin;

else if(vr[i] > Umax) vr[i]=Umax;

level=floor(Cx*(vr[i]-Umin)+0.4999999);

ListItem- > SubItems- > Add(IntToStr(level));

fprintf(outfile,"%d\n",level);

Series1- > AddXY(i,level,"",clGreen);

}

fclose(outfile);free(fi);free(vr);}

}catch (...){

Application- > MessageBox("Перевір себе!!!","Ошибочка вийшла", MB_OK);

}

}

//-

void _fastcall TADC::Button2Click(TObject *Sender)

{

int Nt,i,j;

float *vr, *x, *y, amp, dt, mx, *Sxx,*Sxx1;

std:: FILE *DR,*VR;

TListItem *ListItem;

Series1- > Clear();

BarSeries1- > Clear();

BarSeries2- > Clear();

try {

float b=StrToFloat(BText- > Text);

OpenDialog- > Title="Завантаження файлу з тимчасовим рядом";

if(OpenDialog- > Execute()){

VR=std::fopen(OpenDialog- > FileName.c_str(),"r");

fscanf(VR,"%f\n%d\n%f\n",&dt,&Nt,&);

//Читання тимчасового ряду

vr=(float*)malloc(Nt*sizeof(float));

x=(float*)malloc(Nt*sizeof(float));

y=(float*)malloc(Nt*sizeof(float));

Sxx=(float*)malloc(Nt*sizeof(float));

Sxx1=(float*)malloc(Nt*sizeof(float));

float ti=0.0;

ListView1- > Items- > Clear();

ListView1- > Column[2]- > Caption="Дискретний часовий ряд";

ListView1- > Column[3]- > Caption="Центрований часовий ряд";

for(i=0;i < Nt;i++,ti+=dt) {fscanf(VR,"%f\n",&vr[i]);

Series1- > AddXY(i,vr[i],"",clGreen);

ListItem=ListView1- > Items- > Add();

ListItem- > Caption=IntToStr(i);

ListItem- > SubItems- > Add(FloatToStr(ti));

ListItem- > SubItems- > Add(FloatToStr(vr[i]));

}

SaveDialog- > Title = "Збереження файлу грубої оцінки";

int razm=ceil(log(Nt)/log(2));

int N1=pow(2,ceil(log(Nt)/log(2)));

if (SaveDialog- > Execute()){

DR = std::fopen(SaveDialog- > FileName.c_str(), "w");

fprintf(DR,"%f\n%d\n%f\n",dt,N1,amp);

for(i=0;i < N1;i++){x[i]=vr[i];y[i]=0.0;}

mx=me(vr,N1);

for(i=0;i < N1;i++) {x[i]=x[i]-mx;

//Sxx[i]=x[i]; Sxx1[i]=y[i]; //

ListItem=ListView1- > Items- > Item[i];

ListItem- > SubItems- > Add(FloatToStr(x[i]));

}

fft(x,y,N1,razm,1); //

//fft(Sxx,Sxx1,N1,razm,1); //

//smooth(N1,Sxx,x,1); smooth(N1,Sxx1,y,1); //

for(i=0;i < N1;i++) Sxx[i]=(dt/Nt)*(x[i]*x[i]+y[i]*y[i]);

float b1=1/(dt*N1);

for(i=0;i < N1;i++){ fprintf(DR,"%f\n",Sxx[i]);

BarSeries1- > AddXY(i*b1,Sxx[i],"",clTeeColor);

ListItem=ListView1- > Items- > Item[i];

ListItem- > SubItems- > Add(FloatToStr(i*b1));

ListItem- > SubItems- > Add(FloatToStr(Sxx[i]));

}

fclose(DR);

if(RadioGroup1- > ItemIndex==1)

{

//Осреднение по частоті

float s=0.0;

int l=StrToInt(FreqEdit- > Text);

SaveDialog- > Title="Збереження файлу оцінки методом частотного осреднения";

if(SaveDialog- > Execute())

{DR = std::fopen(SaveDialog- > FileName.c_str(), "w");

fprintf(DR,"%f\n%d\n%f\n",dt,N1,amp);

for(i=0;i < N1-l;i++){s=0.0;

for(j=i;j < i+l;j++)s=s+Sxx[j];

fprintf(DR,"%f\n",s/l);

BarSeries2- > AddXY(i*b1,s/l,"",clTeeColor);

ListItem=ListView1- > Items- > Item[i];

ListItem- > SubItems- > Add(FloatToStr(i*b1));

ListItem- > SubItems- > Add(FloatToStr(s/l));

}

fclose(DR);

}

}else if(RadioGroup1- > ItemIndex==0){

// Осреднение по ділянках

SaveDialog- > Title = "Збереження файлу оцінки методом розбивки на ділянки";

int Ny=1/(dt*b);

razm=ceil(log(Ny)/log(2));

Ny=pow(2,razm);

if (SaveDialog- > Execute()){

DR = std::fopen(SaveDialog- > FileName.c_str(), "w");

fprintf(DR,"%f\n%d\n%f\n",dt,Ny,amp);

int m=ceil(Nt/Ny);

for(i=0;i < Ny;i++) Sxx[i]=0;

for(j=0;j < m;j++){

for(i=0;i < Ny;i++) if (j*Ny+i > Nt) {x[i]=0;y[i]=0;} else {x[i]=vr[j*Ny+i];y[i]=0;}

mx=me(x,Ny);for(i=0;i < Ny;i++) x[i]=x[i]-mx;

fft(x,y,Ny,razm,1);

for(i=0;i < Ny;i++) Sxx[i]+=(dt/Ny)*(x[i]*x[i]+y[i]*y[i]);

}

for(i=0;i < Ny;i++) {

fprintf(DR,"%f\n",Sxx[i]/m);

float b1=1/(dt*Ny);

BarSeries2- > AddXY(i*b1,Sxx[i]/m,"",clTeeColor);

ListItem=ListView1- > Items- > Item[i];

ListItem- > SubItems- > Add(FloatToStr(i*b1));

ListItem- > SubItems- > Add(FloatToStr(Sxx[i]/m));

}

fclose(DR);

}

}

}

free(vr); free(x); free(y); free(Sxx);

fclose(VR); }

}catch(...)

{

Application- > MessageBox("Перевір себе!!!","Ошибочка вийшла", MB_OK);}

}

//-

void _fastcall TADC::Help1Click(TObject *Sender)

{

Form2- > Visible=true;

}

//-

void _fastcall TADC::N5Click(TObject *Sender)

{

Form3- > Visible=true;

}

//-

void _fastcall TADC::N6Click(TObject *Sender)

{

ADC- > Close();

}

//-