Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
37
Добавлен:
05.03.2016
Размер:
428.03 Кб
Скачать

Xlabel('Час, с'); ylabel('Рівень'); % написи вздовж осей

grid on % координатна сітка

Очевидно, позначеннявхідних і вихідних даних програми повинні співпадати із позначеннями відповідних данихпідпрограми.

Теперь поступимоінакше– напишемоізбережемо m-функцію підіменемton_sig.m:

%-------функція ton_sig.m -----------

% [s,t]=ton_sig(B,f1,Fi1,Fs,N1)

%---------------------------------------

% генерування гармонічного сигналу

% y = B * sin(2*pi*f1*x + Fi1),

% B - амплітуда;

% N1 - кількість відліків сигналу;

% f1 - частота;

% Fs - частота дискретизації;

% Fi1 - початкова фаза сигналу

%---------------------------------------

function [y,x] = ton_sig( B, f1, Fi1, Fs, N1 )

%---------------------------------------

x = (0:N1-1)/Fs; % моменти часу

y = B * sin( 2*pi*f1*x + Fi1 );

%-------- кінець функції ton_sig.m ----------

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

% гармонічний сигнал

[s,t]=ton_sig(1,100,pi/2,1000,20) % обчислення відліків сигналу

plot(t,s) % вивід графіку

title('Гармонічний сигнал') % заголовок

Xlabel('Час, с'); ylabel('Рівень'); % написи вздовж осей

grid on % координатна сітка

Якбачимо, тепер числовізначення вхідних даних задаютьсяяк аргументиm-функціїton_sig.m. Вихідніданіфункціївикористовуютьсядляпобудови графіку.

Очевидно, застосування m-функцій вигідно тоді, колиалгоритм формування значеньфункціїдостатньо складний:містить багато команді звертань до різноманітних бібліотечних функцій з складним синтаксисом.

Очевиднийінедолікm-функцій – необхіднопам’ятати їх синтаксис.Хоча,отримати потрібну інформацію можні, якщо в командному вікні задатикомандуhelp:

>> help ton_sig

В результатіна моніторівідобразиться коментарій, з якого починається m-функція. Длянаведеного вище прикладу текст допомоги має наступний вигляд:

%-------функція ton_sig.m -----------

% [s,t]=ton_sig(B,f1,Fi1,Fs,N1)

%---------------------------------------

% генерування гармонічного сигналу

% y = B * sin(2*pi*f1*x + Fi1),

% B - амплітуда;

% N1 - кількість відліків сигналу;

% f1 - частота;

% Fs - частота дискретизації;

% Fi1 - початкова фаза сигналу

%---------------------------------------

Таким чином, очевидний висновок:дуже важливо при програмуванні m-функцій постачати їх якісним і докладним коментарієм.

Моделювання дискретних сигналів в Simulink

Генеруваннясигналів вSimulink,звичайно,має свої особливості.Розглянемо їх.

Візьмемоз бібліотеки блоківSimulinkдва блоки:Sine Wave(з розділуSourcesScope(з розділуSinks).Об’єднавши їх, отримаєму просту схему(рис.3).

Рис.3

Потім подвійним клацанням по блоку осцилоскопаактивізуємо вікно, яке імітує екран осцилоскопа,ізапустимо модель (кнопкаStart simulation). В результатіотримаємозображеннявідрізку синусоїди(рис.4).

Рис.4

Як бачимо, генерувати гармонічний сигнал в середовищіSimulinkнавіть простіше, ніж в середовищі Matlab. Однакце не так, адже потрібно ще вміти керувати параметрамигармонічного сигналу. Те,щоамплітуда гармонічного сигналує рівноюодиниці–це просто співпадіння. Дійсно, позамовчуваннюамплітуда генерованого сигналуприйнята рівноюодиниці. Однак частотою,початковоюфазоюі тривалістю сигнала ми ще не керуємо.

Двічіклацнемо по блокуSine Wave– в результатіз’явитьсявікноналаштувань параметрів (рис.5).Клацнувши по кнопціHelp,отримаємо інструкцію по даному блоку, сутьякоїполягає в наступному –уданомублоцівиконуєтьсяоперація

Ізнаведеного виразу та написівна рис.5 стає зрозумілим зміст чотирьох змінних: амплітуди,кутової частоти, початкової фази та постійної складової.Залишається невідомимзміст змінної „час”.

Зупиняючись на цьому важливому питанні, відмітимо різницю між поняттями „час” та „модельний час”. Так, генерування відрізку сигналу тривалістю 1 с (модельний час) може тривати значно коротший проміжок часу, наприклад, 0.1 с (реальний час). Швидкість генерування залежить від об’єму обчислень, швидкодії комп’ютера, від вибраного алгоритму моделювання, и т.д. Крім того, цілком можливий зворотній ефект – для складного алгоритму процедура моделювання відрізку сигналу тривалістю 0.1 с може тривати декілька секунд.

Сигнал може генеруватися двох типів: неперервний time-based і дискретний sample-based. Для моделюванняроботинеперервних систем рекомендуютьвикористовувати неперервнийтипtime-based, а для моделювання роботидискретних систем – дискретний типsample-based [2].

Якщо встановленотипtime-based, тодіпараметрSample timeможе прийматизначення:

  • 0 (по замовчуванню) – блокпрацює в неперервному режимі;

  • >0 - блок працюєв дискретномурежимі;

  • -1 – блок працює в тому ж режимі, що і приймаючий блок.

Яквказано вHelp, робота в неперервномурежиміможе приводити до великих похибок генерації на великих проміжках модельног часу.

Робота в дискретному режимі заставляє блок вести себе таким чином, ніби до виходу неперервного генератора було під’єднано блок Zero-Order Hold. Дійсно, зібравши дві схеми (рис.6) і задавши в обидвох випадках значення параметра Sample time, рівним 0.5 (вікно на лаштувань блока Zero-Order Hold показане на рис.7), отримаєм ідентичні результати (рис.8).

Рис.5

Рис.6

Рис.7

Рис.8

Таким образом, блок Zero-Order Hold можно трактовать как “дискретизатор”, т.е. часть АЦП, ответственную за дискретизацию сигнала. Иногда блок Zero-Order Hold именуют АЦП [4]. По нашему мнению, это не корректно, поскольку дискретизированный сигнал в “подлинном” АЦП подвергается еще и квантованию по уровню. В блоке Zero-Order Hold, однако, квантование не производится.

Несколько слов о построении графиков. Помимо блока Scope, график можно построить и с помощью блокаX-Y-Graf, на верхний входXкоторого нужно подать последовательность моментов времени с помощью блокаClock(часы), а на нижний входY– значения генерируемого сигнала (рис.9).

Рис.9

В результатіна попередньо налаштованому (у відповідному вікні на лаштування задаються граничні значення аргументу і функції, а також вказується значення параметраSample time)плотарі буде відображеновказаний на рис.10 графік,якщо для блокуX-Y-GrafзаданоSample time=-1.

Рис.10

Графік будедещо інакшим(рис.11),якщодля блокуX-Y-GrafзаданоSample time=0.5.

Рис.11

Ще про один ізспособівпобудовиграфіків. Масививідліківмоментівчасута відповідних значеньсигналуможназадопомогою блокуTo Workspaceекспортуватиз середовищаSimulinkдосередовищаMatlab(рис.13).

Рис.13

При цьому,як показуєпрактика,кращевсього задатиформатarrayдляекспортованихданих (рис.14).

Рис.14

Далі побудуємо графік в середовищіMatlabзадопомогою командиplot(x,y)(рис.15).

Рис.15

Підсумуємо результати проведених дослідів.

Сигнал типу time-based при роботі блоку генерації в режимі неперервного часу має вигляд гладкої функції часу, а в режимі дискретного часу – вигляд ступінчатого сигналу, такого, як якщо би до виходу генератора плавного сигналу був під’єднаний блок Zero-Order Hold, який є дискретизатором типу “відлік-зберігання”.

Іншими словами, задаючи режим дискретного часу, ми уникаємо необхідності використання блоку Zero-Order Hold.

А тепер згенеруємо в Simulink відрізок дискретного гармонічного сигналу з тими самими параметрами, які були задані в Matlab: амплітуда 1, частота 100 Гц, частота дискретизації 1000 Гц, початкова фаза , кількість відліків 20.

Збираємзновусхему з генераторатаосцилоскопа.Увікні-масціналаштуваннягенераторавказуєм потрібні числові значення параметрів, задаєм тип time-basedіприсвоюємозначенняSampletime= 0.001 (рис.16).

Рис.16

Після запуску моделі отримуєм на екрані осцилоскопа зовсім не ту картину, яку сподівались (рис.17).

Рис.17

Причина проста – потрібно ще налаштувати параметри моделювання: задатипочаток і кінець модельногочасу(в нашомувипадкуце0і0.02 с,відповідно), а також вибратиалгоритм моделювання (тип «рішателя»). На рис.18 показановікно налаштуванняпараметрів моделювання,яке активізуєтьсяпри виборіпозиціїменюSimulation/Simulation parameters.

Рис.18

Крім того, налаштуємо параметри осцилоскопу, клацнувши по кнопці ParametersнавікніScope(рис.19a,b).

  1. b)

Рис.19

Після запуску моделі на екрані осцилоскопа з’явиться зображення (рис.20).

Рис.20

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

>> y1=ScopeData(:,1);

>> y2=ScopeData(:,2);

>> plot(y1,y2)

можна побудувати графік згенерованої функції засобами Matlab(рис.21).

Рис.21

Порівнюючирис.21тарис.1,можна зауважити лише одну відмінність – при моделюваннівSimulinkзгенеровано21 точку, тодіяк вMatlabзгенеровано20 точок. Причинавідмінності проста: наінтервалімодельногочасупри частотідискретизаціїзнаходитьсямоментівчасу, дляяких будезгенерованосигнал. Очевидно,цяобставинавраховується,якщо досягнутиповного співпадіння результатів моделювання в середовищахMatlabтаSimulink.

Література

  1. Продеус А.Н., РодіноваМ.В. Безпаперова технологія проведення практикумів із статистичної обробки сигналів. – Электроника и связь, №20, 2003,pp.117-120

  2. Гультяев А. Имитационное моделирование в среде Windows. – С-Пб, КОРОНА принт, 1999. – 287 с.

  3. Скляр Б. Цифровая связь. Теоретические основы и практическое применение. – М.,С-Пб,К., изд.дом «Вильямс», 2003. – 1092 с.

  4. КалюжнийО.Я. Моделювання систем передачі сигналів в обчислювальному середовищі MATLAB-Simulink. – К., “Політехніка”, 2004. – 135 с.

13

Соседние файлы в папке лабораторні