Пример лабораторной работы в Labview
Запишем математические модели сигналов:
Конечный сигнал будет являться зашумленной суммой простых сигналов.
Создадим новый виртуальный прибор. У нас откроется два окна. Левое это лицевая панель, а правое окно это блочная схема.
Для того что бы наш цикл изменялся через определенные промежутки времени необходим цикл WhileLoop( while – пока, в то время как; loop – петля).
· Нажмем правой кнопкой мыши на блок-схеме и выберем в меню
Functions →Programming →Structures →WhileLoop
· Курсор мыши примет вид маленького пунктирного прямоугольника с черным левым верхним уголком
· Выделим ту область поля в блок схеме, в которую хотим поместить нашу программу , нажав и удерживая левую кнопку, обведем группу пунктирным прямоугольником.
· После того, как мы отпустим левую кнопку мыши, программа будет выглядеть так, как показано на рис. 1.1.
· Если действие не получилось с первого раза, можно его отменить, нажав клавиши <Ctrl>+<z>.
Рисунок 1.1 - Цикл WhileLoop
· После того, как мы поместили цикл WhileLoopна блок- схему, кнопка циклического выполнения заблокировалась, а на кнопке запуска программы появилось изображение сломанной стрелочки.
Нужно задать терминал условия выхода из цикла, у нас это будет кнопка Stop.
Исправим ошибку на блок-схеме. Для этого подключим к терминалу условия цикла кнопку, прерывающую его выполнение.
· Наведем указатель мыши на терминал условия цикла, и, нажав правую кнопку мыши, выберем в появившемся меню режим работы терминала StopifTrue. Убедимся, что иконка терминала приобрела соответствующий вид.
· Наведем указатель мыши на контакт терминала, и когда курсор превратится в катушку с проводом (Wiringtool), нажмем правую кнопку мыши
· В появившемся меню выберем CreateControl(создать элемент управления)
· В результате на передней панели появится кнопка управления Stop, а ее терминал на блок схеме автоматически соединится с терминалом условия цикла (см. рис. 1.2)
Рисунок 1.2 – Пример соединения кнопки STOP с условием цикла
На лицевой части появится такая кнопка.
В структуре WhileLoop есть два терминала:
LoopIteration (Повторение цикла). Имеет один контакт, расположенный справа – выход, значение которого соответствует количеству выполненных повторений цикла.
Синий цвет терминала и контакта показывает, что выходное значение представлено целым числом.
а) или б)
LoopCondition(Условие цикла) терминал условия выхода из цикла. Имеет один контакт слева – вход. Он может работать в двух режимах:
а) StopifTrue (остановить, если Истинный) – цикл прерывается, если на этот терминал поступает значение булевой переменной True (Истинный).
б) ContinueifTrue (продолжать, если Истинный) – цикл продолжается до тех пор, пока значение этого терминала –True. Зеленый цвет терминала и контакта показывает, что формат данных, передаваемых ему, булев (логический).
Расширим наше поле цикла. Для этого наведем стрелочку на само поле, и у нас границах поля появится синие квадраты. Щелкнув по ним правой кнопкой мыши и удерживая, зададим такой размер, который нам необходим.
В среде LabView все процедуры и функции представлены виде иконок.
Поместим на нашу блок-схему иконку операции деления.
· Нажмем правую кнопку мыши на белом поле окна блок схемы.
· В появившемся меню Functions (функции), выберем раздел Programming (программирование) →Numeric→Divide (Делить).
· Поместите на блок схему иконку оператора деления.
· Подведите курсор к иконке. По краям иконки появятся точки с отрезками линий – контакты, при помощи которых элементы блок-схемы соединяются между собой.
· Подведите курсор к контакту оператора делить.
· При этом он примет вид катушки с проводом (Wiringtool– инструмент для соединения проводами), а внизу появится подсказка – назначение данного контакта.
Для построения графка нам необходма радианная мера угла.
· Подведем курсов мыши к контакту. У и нажмем правой кнопкой мыши.
· Затем в появившемся окне выберем Create Constant
· У нас должно появится следующее . Нажмем на нолик и введем соответствующее число. Мы введем 360
Создадм консанту
· Нажмем правую кнопку мыши на белом поле окна блок схемы.
· В появившемся меню Functions (функции), выберем раздел Programming (программирование) →Numeric→Math ScientificConstant.
· Поместите на блок схему нашу константу.
· Соединим нашу константу с движком X функции умножения.
Так направление можно задавать, нажимая на левую кнопку мыши. Нажатие на правую кнопку отменяет рисование провода.
Создадим функцию умножения.
Для этого воспользуемся алгоритмом, который был описан выше и выберем в меню Numeric→Multiply(Умножить).
Помесим функцию на блок схему.
Соединим контакт X/Y - функции деления с контактом - функции умножения.
Контакт - функции умножения соединим с терминалом LoopIteration
Построение графика
· Нажмем правую кнопку мыши на белом поле окна блок схемы.
· В появившемся меню Functions(функции), выберемразделMathematics→→Elementary&SpecialFunctions→TrigonometricFunctions→Sine
· Поместите на блок схему иконку функции синуса.
· Соединим левый контакт функции синуса с контактом
функции умножения.
Создадим временную диаграмму отображения синуса
· Нажмем правую кнопку мыши на клетчатом окне лицевой панели.
· Поместим на переднюю панель самописец Modern→Graph→WaveformChart(cамописец, график изменения сигнала современем).
· На блок схеме перетащим терминал WaveformChartв цикл WhileLoop
· Соединим его с правым контактом функции Sine
Запусим нашу программу и посмотрим , что получилось.Мы видим , что график изменяется слишком быстро. Для того что бы он изменялся медленне настроим время за которое происходит одна итерация.
· Нажмем правую кнопку мыши на белом поле окна блок схемы.
· В появившемся меню Functions (функции), выберем раздел Programming (программирование) →Timing→Wait(ms).
· Поместите на блок схему нашэлемент времени.
· Создадим для него константу равную 50.
Теперь за время 50 мс происходит одна итерация.
Блок-схема должны выглядеть примерно, так как на рис. 1.3.
Лицевая панель показана на рис. 1.4.
Рисунок 1.3 – Пример построения синусоиды в блок-схеме
Рисунок 1.4 – Пример построения синусоиды на лицевой панеле
Запустим и посмотрим , что получилось. Теперь изменение графика стало удобным для восприятия.
Изменение амплитуды
· Для этого создадим функцю умножения
· Удалим провода соединяющие график и синус.
Создадим веркальный движок с указателем
изменения амплитуды
· Поместим на переднюю панель движок Modern→Numeric→VerticalFullSlide
Для того что бы изменять Max и Min шкалы достаточно нажать на цифру и вписать нужное нам значение. Аналогично меняем и название.
· Соединим контакт функции умножения с контактом вертикального движка.
· Контакт соединим с функцией Sine
· Контакт с нашим графиком
Должно получиться следующее, как показано на рис. 1.5
Рисунок 1.5 – Пример построения синусоиды с заданной задержкой
Запустим программу и попробуем изменить амплитуду
Сложение графиков
Создадим ещё один график Меандр
· Нажмем правую кнопку мыши на белом поле окна блок схемы.
· В появившемся менюFunctions(функции), выберем раздел Mathematics→→Elementary&SpecialFunctions→GatingFunctions → Square Functions.
Соединим, так как показано на рис. 1.6
Рисунок 1.6 – Пример сложения двух функций на блок-схеме
Индикатор изменения амплидуты для второго графика создать самостоятельно.
Создание шума
· Создадим случайную помеху, создаваемую генератором случайных чисел от 0 до 1 (Programming→Numeric→RandomNumber (0-1))
Изначально предел выпадение случайных чисел стоит от 0 до 1. Для нашей задачи предел выпадения чисел должен быть от -1 до1.
Добьемся изменения диапазона случайных чисел с помощь функций умножения, вычитания и констант. Полученная блок схема должна выглядеть, так как показано на рис. 1.7
Рисунок 1.7 – Пример сложения дувух функций с заданным диапазонам шума
На лицевой панеле на графике будет отображатся следующее
Сигнал изменяется, но при этом у него есть помехи.
На рис. 1.7.1 показано как изменятеся сигна при зачениях амплитуд не равных нулю
На рис. 1.7.2 аплитуда А1=0
На рис.1.7.3 амплитуда А2=0
Рисунок 1.7.1 – Зашумленная сумма сигналов
Рисунок 1.7.2 – Зашумленный сигнал меандера
Рисунок 1.7.3 - Зашумленный сигнал синуса
Для того что бы регулровать зависмость шума от чистого сигнала добавим вертикальный движок с указателем.
Воспользуемся функциям умноженя, деления и констант.
Получим слудующую блок-схему, которая показана на рис. 1.8
На лицевой панеле будет отображатся слудующее как показано на рис. 1.9
Рисунок 1.8 – Блок-схема готовой программы
Рисунок 1.9 – Лицевая панель готовой программы
Мы получили программу которая показывает изменение сигнала с изменением шума.
Так в этой программе выпадение случайных чисел происходит от -1 до 1.
График | А1/А2 | А1 | А2 | Проценное соотношение шума | |||
А | 8/5 | Б | В | ||||
А | 8/5 | Б | В | ||||
А | 8/5 | Б | В | ||||
А | 8/5 | Б | В | ||||
А | 8/5 | Б | В |
А Б В
1
2
3
4
5
Таблица нахождения сигналов
Синусоидальный | Functions (функции), Mathematics→Elementary&Special Functions→ Trigonometric Functions |
Меандр | Functions(функции), Mathematics→Elementary&SpecialFunctions→Gating Functions→ Square Functions. |
Треугольный | Functions(функции), SignalProcessing→Signal Generations→ Signal Generator by Duration ( наконтактетипсигналавыбратьTriangle) |
Прямоугольный | Functions(функции), Signal Processing→Signal Generations→ Signal Generator by Duration ( наконтактетипсигналавыбратьSquare) |
Пилообразный | Functions(функции), Signal Processing→Signal Generations→ Signal Generator by Duration ( на контакте тип сигнала выбрать Sawtooth) |
1.16. Варианты заданий:
№ | Сигнал 1 | Сигнал 2 |
![]() | ![]() | |
![]() | ![]() | |
![]() | ![]() | |
![]() | Треугольный* | |
![]() | ![]() | |
![]() | ![]() | |
![]() | ![]() | |
![]() | ![]() | |
![]() | Треугольный* | |
![]() | ![]() | |
![]() | ![]() | |
![]() | ![]() | |
![]() | ![]() | |
![]() | Треугольный* | |
![]() | ![]() | |
Треугольный* | ![]() | |
Треугольный* | ![]() | |
Треугольный* | ![]() | |
Треугольный* | Треугольный* | |
Треугольный* | ![]() | |
![]() | ![]() | |
![]() | ![]() | |
![]() | Треугольный* | |
![]() | ![]() | |
![]() | ![]() |
*Треугольный сигнал описывается системой:
,
где ,
Конечный сигнал представляет собой зашумленную сумму двух данных сигналов.
Диапазон шума
Содержание отчета
Отчет должен содержать в себе следующие пункты:
· Цель работы
· Задание и номер варианта
· Математическая формула конечного зашумленного сигнала
· Изображения данных сигналов и получившегося
· Скриншоты рабочих полей LabView с рабочим алгоритмом программы
· Краткое описание действий
· Выводы по работе
· Ответы на контрольные вопросы
1.18. Контрольные вопросы
1) Какими бывают сигналы (виды и определения)?
2) Формы сигналов и их различия.
3) Где используются "меандры"?
4) Что такое коэффициент заполнения. Что такое "скважность"?
5) К каким из двух типов сигналов относятся: синусоидальный, пилообразный и триггер сигналы?
6) Зарисовать график синусоидального сигнала, обозначить на нем все характеристики.
7) Что будет с периодом, если уменьшать частоту? Связь частоты и периода.
8) Когда пилообразный сигнал имеет зеркальное отражение самого себя?
9) Единственная реализация случайного процесса и в чем она заключается.
10) Возможна ли смена диапазона в случайном процессе? Если да, то как?
Список используемой литературы:
1. http://gos-y.narod.ru/htm/17.htm
2. http://life-prog.ru/1_32612_zakoni-raspredeleniya-sluchaynih-velichin.html
3. http://www.mir-koda.ru/full_leson_cpp.php?id=28
4. Методический материал «Сигналы и линейные системы»