Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПРОЕКТИРОВАНИЕ ВИРТУАЛЬНЫХ ИЗМЕРИТЕЛЬНЫХ ПРИБОРОВ В СРЕДЕ LabVIEW.pdf
Скачиваний:
265
Добавлен:
26.03.2015
Размер:
2.01 Mб
Скачать

РАБОТА 7. ЛИНЕЙНАЯ ЦИФРОВАЯ ФИЛЬТРАЦИЯ

Цель работы – разработать виртуальный инструмент, осуществляющий линейную фильтрацию сигнала средствами, предоставляемыми сис-

темой LabVIEW.

Органы управления:

Vertical Slide – вертикальный ползунковый орган управления.

Функции:

Equi-Ripple LowPass.vi – равноволновой фильтр низкой частоты на основе алгоритма Паркса-МакКлина.

Equi-Ripple HighPass.vi – равноволновой фильтр высокой частоты на основе алгоритма Паркса-МакКлина.

Equi-Ripple BandPass.vi – равноволновой полосовой фильтр на основе алгоритма Паркса-МакКлина.

Equi-Ripple BandStop.vi – равноволновой заградительный фильтр на основе алгоритма Паркса-МакКлина.

Butterworth Filter.vi – фильтр Баттерворта.

Chebyshev Filter.vi – фильтр Чебышева.

Inverse Chebyshev Filter.vi – обращенный фильтр Чебышева.

Elliptic Filter.vi – эллиптический фильтр.

Bessel Filter.vi – фильтр Бесселя.

Build Array – построить массив.

Enumerated Constant – нумерованная константа.

В среде LabVIEW цифровая фильтрация осуществляется следующим образом: входной «аналоговый» сигнал представляется в дискретном виде (в виде совокупности отсчетов), после чего полученный сигнал умножают на весовую функцию, которая соответствует фильтру с необходимой полосой пропускания. Итоговый сигнал преобразуется во временной «аналоговый» вид, получая на выходе измененный – фильтрованный – сигнал.

Линейные фильтры должны удовлетворять условию суперпозиции, которое формулируется следующим образом:

L[a x(t)+b y(t)]= a L[x(t)]+b L[y(t)],

58

где a , b – константы; x(t), y(t) – сигналы; L[ ] – линейная операция

фильтрации.

Кроме этого, между входными и выходными величинами линейных фильтров можно найти соответствие посредством операции свертки.

В LabVIEW линейные фильтры расположены во вкладке Filters подменю Signal Processing меню Functions и представлены двумя типами фильтров. Фильтры первого типа являются фильтрами с конечной импульсной характеристикой. Также эти фильтры называют фильтрами КИХ или нерекурсивными фильтрами. В LabVIEW КИХ фильтры (FIR Filters) представлены в следующем составе:

Equi-Ripple LowPass.vi;

Equi-Ripple HighPass.vi;

Equi-Ripple BandPass.vi;

Equi-Ripple BandStop.vi.

Фильтры второго типа являются фильтрами, импульсная характеристика которых может быть теоретически бесконечной. Также эти фильтры называют фильтрами БИХ или рекурсивными. В LabVIEW БИХ фильтры (IIR Filters) представлены в следующем составе:

Butterworth Filter.vi;

Chebyshev Filter.vi;

Inverse Chebyshev Filter.vi;

Elliptic Filter.vi;

Bessel Filter.vi.

Для исследования свойств линейных фильтров воспользуемся функциями генерации разных сигналов совместно с функцией генерации однородного белого шума.

Создание передней панели.

1.Создайте новый ВИ – команда New VI в начальном диалоге LabVIEW.

2.Разместите на передней панели логические выключатель прибора и индикатор работы из вкладки Boolean меню Controls так, как это делалось

впредыдущих работах.

3.Разместите на панели графический индикатор Waveform Graph из вкладки Graph меню Controls, в котором будет отображаться зашумленный сигнал на входе фильтра. Воспользовавшись инструментом Edit Text , задайте подходящее название для этого органа управления, например «Сигнал на входе фильтра».

4.Разместите, аналогично предыдущему пункту, графический индикатор для отображения исходного и профильтрованного сигналов и задайте для них названия, например «Исходный и фильтрованный сигналы». Для

59

реализации отображения двух сигналов в одном графическом индикаторе воспользуйтесь инструментом Position/Size/Select . Наведите курсор на правый верхний угол прямоугольника с надписью Plot 0. Нажав и удерживая левую кнопку мыши, растяните этот прямоугольник в вертикальном направлении, пока не появится надпись Plot 1. Теперь вы можете установить независимые параметры отображения (цвет, тип и толщина линии) для разных сигналов. Задать названия для отдельных сигналов можно с помощью инструмента Edit Text . После выбора этого инструмента с панели инструментов наведите его на название по умолчанию (Plot 0 или Plot 1) и щелкните левой кнопкой мыши для изменения названия сигнала. Рекомендуем дать сигналам следующие названия: для Plot 0 – Вых, а для

Plot 1 – Вх.

5.Функции фильтрации имеют входы, которые определяют параметры соответствующего фильтра. Для управления некоторыми из этих параметров на передней панели необходимо разместить цифровые органы управления.

6.Из вкладки Numeric меню Controls разместите два цифровых органа

управления Knob для установки граничных частот фильтра и два ор-

гана управления Dial для изменения частоты сигнала и выбора его типа. Задайте для этих органов управления соответствующие названия, например: «Нижняя граничная частота», «Верхняя граничная частота», «Частота сигнала» и «Тип сигнала». В соответствии с заданием установите для созданных органов управления подходящий верхний диапазон задаваемых значений. Для этого, выбрав инструмент Edit Text , наведите курсор на число, определяющее верхний диапазон органа управления и, выделив установленное по умолчанию значение 10, введите с клавиатуры новую величину, после чего нажмите Enter. Воспользовавшись контекстным меню соответствующих органов управления, установите следующие типы данных: для граничных частот фильтра – тип числа с плавающей точкой, а для частоты сигнала – один из целочисленных типов.

7. Для органа управления «Тип сигнала» задайте целочисленный тип из контекстного меню. Диапазон изменения сигнала этого органа управления задайте от 0 до 3. Воспользуйтесь вкладкой контекстного меню органа управления Scale/Style и определите его разметку таким образом, чтобы были видны маркеры целых значений без указания конкретных числовых значений. Воспользуйтесь инструментом Edit Text и задайте текстовые надписи рядом с маркерами. Надписи могут быть такими: «Гармонический + белый шум», «Импульсный», «Белый шум», «АМ». При нанесении надписей соблюдайте их очередность согласно указанному выше, т.е. надписи «Гармонический + белый шум» должно соответствовать

60

вать значение элемента «Тип сигнала», равное 0, надписи «Импульсный» должно соответствовать значение 1 и т.д.

8. Для реализации возможности изменять порядок фильтра во время работы ВИ разместите на передней панели ползунковый цифровой орган

управления Vertical Slide из вкладки Numeric меню Controls. Задайте для него подходящее название, например «Порядок фильтра». Диапазон значений, установленный по умолчанию, можно оставить, потому что порядок фильтра более 10 использоваться не будет.

9.Для органа управления Vertical Slide установите целочисленный тип данных, воспользовавшись контекстным меню объекта.

10.Разместите на лицевой панели подходящие декоративные элементы, а также элементы с указанием варианта, фамилии разработчика и группы. Примерный вид передней панели приведен на рис. 7.1.

Рис. 7.1. Примерный вид передней панели разрабатываемого виртуального инструмента

11.Переключитесь в окно диаграммы командой Window/Show Diagram.

Создание диаграммы.

1.После переключения в окно диаграммы на ней уже должны находиться девять объектов: два графических индикатора, пять цифровых органа управления, логические выключатель и индикатор.

2.Разместите структуру цикла While Loop , внесите все имеющиеся элементы внутрь структуры и подключите терминал условия завершения цикла к логическому выключателю. Соедините логические индикатор

ивыключатель для отображения активности прибора. Новые элементы диаграммы размещайте внутри цикла.

61

3.Для того чтобы исследовать свойства четырех типов цифровых фильтров, в разрабатываемом ВИ необходимо разместить четыре внутренних генератора сигнала. На выходах первого будет появляться синусоидальный сигнал с аддитивным белым шумом, с помощью второго генератора будем получать сигнал прямоугольной формы, выходом третьего будет сигнал «Белый шум», четвертый генератор предназначен для получения амплитудно-модулированного сигнала.

4.Для программирования возможности переключения внутренних ге-

нераторов сигнала разместите на диаграмме структуру Case из вкладки Structures меню Functions. По умолчанию эта структура имеет два кадра, но для наших целей потребуются четыре. Воспользуйтесь командой Add case контекстного меню объекта Case и добавьте еще два кадра.

5. Для генерации различных сигналов будут использованы функции генерации синусоидального сигнала Sine Pattern.vi и прямоугольного

сигнала Square Wave.vi , расположенные во вкладке Signal Generation

подменю Signal Processing меню Functions.

6.В нулевом кадре структуры Case реализуйте генератор синусоидального сигнала с аддитивным белым шумом. Для этого разместите внутри структуры объект Sine Pattern.vi. На опциональных для подключения входах amplitude и phase (degrees) по умолчанию присутствуют значения 1 и 0 соответственно. Их можно оставить неподключенными. К входу cycles присоедините орган управления «Частота сигнала». Для того чтобы задать число отсчетов сигнала на выходе, необходимо определить значение на входе samples. Число отсчетов сигнала будет использоваться на диаграмме несколько раз и является синхронизирующим для всей схемы. Чтобы задать это значение, расположите на диаграмме числовую констан-

ту Numeric Constant из вкладки Numeric меню Functions. С помощью инст-

румента Edit Text задайте для нее значение 1000. Чем больше это значение, тем лучше будет смоделирован сигнал. Соедините константу с входом samples.

7.В пределах структуры Case разместите функцию генерации нор-

мального шума Gaussian White Noise.vi из вкладки Signal Generation подменю Signal Processing меню Functions. К входу samples подключите синхронизирующее значение константы, как для элемента Sine Pattern.vi. На опциональных для подключения входах standard deviation (среднее отклонение) и seed (сброс фазы) по умолчанию присутствуют значения 1 и 0 соответственно. Оставьте эти входы неподключенными.

62

8.Для наложения белого шума на сгенерированный синусоидальный сигнал разместите на диаграмме функцию арифметического сложения Add из вкладки Numeric меню Functions. К входу x функции Add подключите выход Gaussian White Noise функции генерации белого шума, а к входу y – выход Sinusoidal Pattern функции генерации синусоиды.

9.В кадре 2 структуры Case реализуйте генератор при помощи функции Gaussian White Noise.vi аналогичным образом.

10.В кадре 1 структуры Case необходимо разместить генератор сигнала прямоугольной формы. Для этого воспользуйтесь функцией Square

Wave.vi из вкладки Signal Generation подменю Signal Processing меню

Functions. К входу samples подсоедините константу с числом отсчетов, а на вход нормированной частоты f подключите величину, равную отношению требуемой частоты сигнала к числу отсчетов. Для этого воспользуйтесь элементом Divide из вкладки Numeric меню Functions.

11.В кадре 3 структуры Case реализуйте генератор амплитудномодулированного сигнала. Для генерации несущей и модулирующего сигнала воспользуйтесь двумя функциями Sine Pattern.vi. Частота модулирующего сигнала ω1 , т.е. частота первой функции Sine Pattern.vi, должна

равняться частоте сигнала, устанавливаемой на лицевой панели прибора. Частота несущей ω2 , т.е. частота второй функции Sine Pattern.vi, должна

быть на порядок больше частоты модулирующего сигнала, т.е. первой функции Sine Pattern.vi. Для получения модулированного сигнала реализуйте с помощью функций Multiply, Add, а также с помощью двух ранее созданных функций Sine Pattern.vi, следующую известную формулу:

s(t)= (1+ M sin1t)) sin2t).

В рамках данной работы принят коэффициент модуляции M =1 . Для реализации поставленной задачи соедините входы samples обеих функций Sine Pattern.vi с константой количества отсчетов. Вход cycle первой функции Sine Pattern.vi соедините с элементом «Частота сигнала», а на аналогичный вход второй функции подайте значение константы на порядок выше частоты сигнала, заданной согласно варианту задания.

12. Теперь необходимо установить на диаграмме требуемую функцию фильтрации. Для этого, в соответствии с заданием, разместите на диаграмме, вне структуры Case, функцию фильтрации из вкладки Filters подменю Signal Processing меню Functions, приведенной на рис. 7.2. Все функции фильтрации имеют одинаковые входы и выходы, за исключением некоторых специфических входов для полосовых фильтров. На рис. 7.3 для примера показаны входы/выходы функции фильтра Баттерворта.

63

Рис. 7.2. Различные цифровые фильтры

Рис. 7.3. Входы/выходы функции цифрового фильтра Баттерворта

Рис. 7.4. Выбор объекта перечня

13.Для выбора типа фильтра

(Lowpass – низкой частоты, Highpass – высокой частоты, Bandpass –

полосового или Bandstop – заграждающего) используется вход filter type. На этом входе должны быть значения из диапазона от 0 до 3, соответствующие типам, описанным выше.

14.Для выбора типа фильтра удобно воспользоваться элементом

Enumerated Constant (в даль-

нейшем Enum) из вкладки Numeric меню Functions, приведенной на рис. 7.4. В этом элементе строковым константам соответствуют числовые значения, и на диаграмме им удобно воспользоваться для возможного последующего его изменения. Имеются два способа для того, чтобы добавить перечень на диаграмму. Первый, наиболее простой, заключается в создании константы для входа filter type функции фильтрации посредством команды Create constant контекстного меню. Однако этот способ примитивен, и применять его в данной работе не рекомендуется. Второй является более трудоемким, для его реализации выполните описанные ниже действия. Из соответствующей вкладки палитры Functions разместите на диаграмме объект перечня (Enum). Список констант созданного перечня состоит из одной пустой строки. С помощью инструмента Edit Text измените ее значение на Lowpass, соответствующее значению 0. Обратите внимание, что имена констант чувствительны к регистру. Наведите

64

курсор мыши на элемент Enum и вызовите контекстное меню этого элемента, нажав правую кнопку мыши. Выберите команду Add Item After. После этого введите значение новой константы – Highpass (значение 1). Повторив описанные выше действия, введите еще две константы: Bandpass (значение 2) и Bandstop (значение 3). При необходимости удалить пункт из перечня воспользуйтесь командой Remove Item, предварительно выделив ненужный пункт перечня. Изменять значение на выходе перечня можно с помощью инструмента Operate Value , наведя курсор мыши на элемент и щелкнув левой кнопкой. В появившемся при этом списке строк выберите Lowpass. Подключите заполненный список к входу filter type функции фильтрации.

15.Селектор структуры Case соедините с элементом «Тип сигнала». После подключения селектора структуры необходимо проверить соответствие типов генераторов, реализованных в структуре Case, с порядковыми номерами элемента «Тип сигнала» на передней панели.

16.Для того чтобы закончить включение функции фильтрации в схему, выполните следующие действия. К входу sampling frequency функции фильтрации подсоедините значение константы, равное числу отсчетов сигнала. Выходы органов управления «Нижняя граничная частота» и «Верхняя граничная частота» подсоедините к входам low cutoff freq и high cutoff freq соответственно. Обратите внимание на то, что значение на входе high cutoff freq используется только при моделировании заградительного и полосового фильтров. Выход органа управления «Порядок фильтра» соедините с входом order. Вход X соедините с выходами генераторов, размещенных в кадрах структуры Case.

17.Для корректного отображения значений по оси абсцисс на графическом индикаторе «Сигнал на входе фильтра» необходимо подать на его вход кластер из трех элементов: начального значения, шага сетки и массива значений. Для формирования кластера разместите функцию Bundle из вкладки Cluster меню Functions. Воспользовавшись инструментом Position/Size/Select , увеличьте число входов этой функции до 3. Для этого «зацепите» курсором мыши за любой угол элемента Bundle и растяните в вертикальном направлении. В качестве начального значения, очевидно, следует использовать значение, равное 0. Для получения этого значения на схеме воспользуйтесь числовой константой Numeric Constant из вкладки Numeric меню Functions. Задайте для нее значение 0 и подсоедините к верхнему входу функции Bundle. В качестве шага сетки по оси x нужно использовать значение, обратное числу отсчетов сигнала. Воспользуйтесь

функцией Reciprocal из вкладки Numeric меню Functions для вычисления этого значения. К входу x этой функции подсоедините синхронизирующую константу, а выход соедините со средним входом функции Bun-

65

dle. К нижнему входу функции Bundle подсоедините выходы генераторов. Полученный с помощью функции Bundle кластер следует подать на вход графического индикатора «Сигнал на входе фильтра».

18.Для графического индикатора «Исходный и фильтрованный сигналы» следует дополнительно разместить функцию Bundle. Аналогично предыдущему пункту подключите только верхние два входа этой функции, а третий вход несколько позже следует соединить с выходом элемента Build

Array. Установите элемент Build Array из вкладки Array меню Functions. При помощи инструмента Position/Size/Select создайте два входа на элементе Build Array. Нижний вход соедините с выходом генерируемого сигнала от структуры Case, а верхний с выходом функции фильтра. Теперь выход Build Array соедините с третьим свободным входом функции Bundle. Выход этой функции соедините с графическим индикатором «Исходный и фильтрованный сигналы». Примерный вид диаграммы разрабатываемого ВИ представлен на рис. 7.5.

Рис. 7.5. Примерный вид диаграммы разрабатываемого виртуального инструмента

19.Сохраните ВИ в файле на диске (команда File/Save As…). Файл с разработанным ВИ сохраните в личном каталоге, который был создан в предыдущих работах.

20.В соответствии с вариантами установите значения в органах управления и запустите разработанную программу на выполнение с помощью команды Run.

66

Варианты заданий

Вариант

Функция фильтра-

Порядок фильт-

Частота сигна-

Надпись на прибо-

 

ции

ра

ла

ре

1

ERL

3

4

A, B

2

ERH

4

6

A, C

3

ERBP

5

4

A, D

4

ERBS

6

5

A, E

5

BF

7

3

A, F

6

CF

8

5

A, G

7

ICF

9

6

A, B, C

8

EF

7

7

A, C, D

9

BF

5

4

A, D, F

10

ERL

3

7

A, E, G

11

ERH

2

8

A, F, G

12

ERBP

5

5

A, B, D

13

ERBS

4

4

A, C, E

14

BF

6

6

A, D, F

15

CF

8

7

A, E, F

16

ICF

10

3

A, B, E

17

EF

9

8

A, C, F

18

BF

8

7

A, B, C, D

19

ERL

7

5

A, C, D, F

20

ERH

6

5

A, D, F, G

Пример выставки органов управления передней панели для различных типов фильтров (порядок фильтра равен 5, частота несущей АМ-колебания равна 30)

 

Гармонический сигнал + шум

 

Импульсный сигнал

 

Гранич-

Частота

Верхняя час-

Гранич-

Частота

Верхняя час-

 

ная часто-

ная часто-

 

сигнала

тота сигнала

сигнала

тота сигнала

 

та

 

 

та

 

 

ФНЧ

4

2

-

8

2

-

25

2

-

15

5

-

 

ФВЧ

5

2

-

30

2

-

5

6

-

1

2

-

 

ПФ

2

10

20

10

20

60

15

10

40

30

20

60

 

ЗФ

5

10

20

25

4

45

15

10

20

5

8

45

 

 

 

Белый шум

 

 

АМ сигнал

 

Гранич-

Частота

Верхняя час-

Гранич-

Частота

Верхняя час-

 

ная часто-

ная часто-

 

сигнала

тота сигнала

сигнала

тота сигнала

 

та

 

 

та

 

 

ФНЧ

15

-

-

30

2

-

5

-

-

20

3

-

 

ФВЧ

15

-

-

20

3

-

30

-

-

30

3

-

 

ПФ

5

-

20

20

3

50

5

-

100

40

3

100

 

ЗФ

30

-

100

20

5

50

30

-

40

40

5

100

 

67