Дискретизація експериментальних даних на LabVIEW 1


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

Зробити програму, здатну самостійно здійснити дискретизацію, чогось не пробував ніхто (навіть кращі з кращих обмежувалися чимось типу MathCAD), тому таку програму зроблю зараз я 🙂 Але, аби не було спокуси нею користуватися просто так, у програмі будуть невеличкі помилки, тому, шановні студенти, майте на увазі 😉

Для початку що таке дискретизація. Методичка каже наступне (а хто ми такі, аби не вірити методичкам):

Операція дискретизації зводиться до подання безперервного протягом часу T сигналу x(t) низкою його миттєвих значень xq=x(tq), q=1..n, взятих у задані, строго фіксовані моменти часу tq, які називають моментами дискретизації. 

Отже, для проведення дискретизації потрібно мати якісь експериментальні дані. Методичка пропонує нам провести дискретизацію наступного сигналу y(t) = C sin(B t) + A sin(D t), причому значення A,B,C,D задано у варіантах завдань.

Відповідно, почнемо роботу із створення двох синусоїд, для чого я використовую ExpressVI Simulate Signal (дві штуки: для корисного сигналу та завади відповідно). Це далеко не найкращий варіант, але зробити можна швидко і без особливих заморочок, тому мета виправдовує засоби. Відразу ж наголошую – на виході з цих ExpressVI отримуємо дані динамічного типу, тому треба їх конвертувати за допомогою вузла Convert from DDT у масиви.

Далі потрібно здійснити власне дискретизацію, причому треба мати можливість змінити частоту цієї дискретизації. Я це роблю дуже просто: вибираю із масиву кожен N-ний елемент, причому значення N задається із лицьової панелі. Наскільки це правильно  – питання відкрите, але суть процесу воно ілюструє, тож на цьому і зупинимося.

У циклі перебираємо всі елементи масиву і, якщо номер (індекс) елемента націло ділиться на наше N, то додаємо цей елемент до нового масиву. Для “збирання” цього масиву використовується вузол зворотнього зв’язку Feedback Node, про який я вже писав. Ну і структура Case. Там пояснювати нічого, просто треба не забути ініціалізувати масив пустою константою і розібратися з тим, як працює автогенерування масивів за допомогою циклів.

Дискретизація експериментальних даних на LabVIEW

Дискретизація експериментальних даних на LabVIEW

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

Дискретизація експериментальних даних у LabVIEW

Дискретизація експериментальних даних у LabVIEW

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

Почитайте ще оце:


Залиште коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

Думка на тему “Дискретизація експериментальних даних на LabVIEW