Київ - ahv.kpi.ua

106
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ УКРАЇНИ „КИЇВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ імені ІГОРЯ СІКОРСЬКОГО ” КОМП’ЮТЕРНО-ІНТЕГРОВАНІ ТЕХНОЛОГІЧНІ КОМПЛЕКСИ МЕТОДИЧНІ ВКАЗІВКИ до виконання лабораторних робіт для студентів напряму підготовки „Автоматизація та комп'ютерно-інтегровані технології” Частина 1 Рекомендовано Вченою радою інженерно-хімічного факультету Київ НТУУ “КПІ” 2016

Upload: others

Post on 20-Dec-2021

9 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Київ - ahv.kpi.ua

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ УКРАЇНИ

„КИЇВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ імені ІГОРЯ

СІКОРСЬКОГО ”

КОМП’ЮТЕРНО-ІНТЕГРОВАНІ ТЕХНОЛОГІЧНІ

КОМПЛЕКСИ

МЕТОДИЧНІ ВКАЗІВКИ

до виконання лабораторних робіт для студентів

напряму підготовки

„Автоматизація та комп'ютерно-інтегровані технології”

Частина 1

Рекомендовано Вченою радою інженерно-хімічного факультету

Київ

НТУУ “КПІ”

2016

Page 2: Київ - ahv.kpi.ua

Комп’ютерно-інтегровані технологічні комплекси-1: Метод. вказівки до викон. лабор.

робіт для студ. напр. „Автоматизація та комп'ютерно-інтегровані технології”. Частина

1/ Уклад.: Я. Ю. Жураковський, Є. С. Черьопкін. – К. : НТУУ ”КПІ“, 2016. – 107 с.

Гриф надано Вченою радою ІХФ

(Протокол № від 2016 р.)

Навчальне видання

КОМП’ЮТЕРНО-ІНТЕГРОВАНІ ТЕХНОЛОГІЧНІ

КОМПЛЕКСИ-1

Методичні вказівки до виконання лабораторних робіт для студентів напряму підготов-

ки „Автоматизація та комп'ютерно-інтегровані технології”

Частина 1

Укладачі: Жураковський Ярослав Юрійович

Черьопкін Євген Сергійович

Відповідальний

редактор А. І. Жученко, докт. техн. наук, проф.

Рецензент Д. О. Ковалюк, канд. техн. наук, доц.

Авторська редакція

Page 3: Київ - ahv.kpi.ua

3

ЗМІСТ

ВСТУП ................................................................................................................. 4

1. АРИФМЕТИЧНІ ТА ЛОГІЧНІ ОПЕРАЦІЇ В LabVIEW...........................20

2. ПРОГРАМУВАННЯ ЦИКЛІВ..................................................................... 37

3. СТРУКТУРИ Sequence і Case ...................................................................... 51

4. МАСИВИ І КЛАСТЕРИ............................................................................... 65

5. ВІРТУАЛЬНІ ОСЦИЛОГРАФИ.................................................................. 80

Список рекомендованої літератури................................................................. 94

Додаток 1. Numeric Data Types ........................................................................ 96

Додаток 2. Expression Node .............................................................................. 99

Додаток 3. Специфікатори формату..............................................................104

Page 4: Київ - ahv.kpi.ua

4

ВСТУП

Пакет прикладних програм LabVIEW (Laboratory Virtual Instrument

Engineering Workbench) забезпечує програмну підтримку автоматизованих

систем для наукових досліджень (АСНД) і автоматизованих систем управ-

ління (АСУ). Персональний комп'ютер традиційної комплектації доповне-

ний багатофункціональними блоками введення та виведення аналогової і

цифрової інформації для стаціонарних і портативних комп'ютерів, станда-

ртних інтерфейсів (VME, IEEE RS), мереж промислових контроллерів (зо-

внішніх адаптерів) при застосуванні відповідного програмного забезпе-

чення, перетворюється на сучасну SCADA систему.

Середовище LabVIEW багатофункціональне і забезпечує:

а) обмін інформацією із зовнішніми вимірювальними, управляючими

пристроями;

б) аналіз і обробку отриманої інформації;

в) збір, зберігання і передачу (у тому числі мережами) інформації;

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

інструментами);

д) забезпечення призначеного для користувача інтерфейсу АСУ і

АСНД.

Поєднання двох і більше функцій LabVIEW дозволяє створити ефек-

тивну систему управління, контролю та передачі даних.

Головна особливість LabVIEW з точки зору користувача – графічна

інтерпретація мови програмування. Графічна мова – мова функціональних

блок-діаграм – дозволяє значно спростити створення, наприклад, програм

управління зовнішнім об'єктом або обробки даних, отриманих від зовніш-

нього пристрою. В той же час в середовищі LabVIEW можливе викорис-

тання програм на мові Сі. Можливості системи розширюються за рахунок

Page 5: Київ - ahv.kpi.ua

5

додаткових бібліотек для роботи з базами даних (SQL, Toolkit), обробки

зображень (Convert VI), ПІД -регулюванню (PID Control), нечіткій логіці

(Fuzzi Logic) та ін.

Управління експериментом – одне з можливих застосувань

LabVIEW. Для користувача управління експериментом зводиться до робо-

ти з панеллю віртуальної установки на екрані монітора, де він спостерігає

за необхідними параметрами і управляє програмно-апаратним комплексом.

У середовищі LabVIEW створюють віртуальні прилади, що моделю-

ють окремі функції вимірювального або управляючого комплексу або весь

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

або моделювання властивостей об’єкту та системи керування. Користувач

працює з, так званими, віртуальними інструментами (ВІ) (від англ. virtual

instrument – VI), що забезпечують достатню міру адекватності модельова-

них процесів реальним.

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

«National Instruments LabVIEW». В цих методичних вказівках описано ро-

боту із версією програми 6і.

На екрані з'являється діалогове вікно програми (рис. 1.1) з наступни-

ми пунктами: New VI (Новий ВІ), Open VI (Відкрити ВІ), DAQ Solutions

(Рішення задач введення/виводу), Search Examples (Пошук прикладів),

LabView Tutorial (Навчання), Exit (Вихід).

Page 6: Київ - ahv.kpi.ua

6

Рис. 1.1. Діалогове вікно LabVIEW

Після вибору "New VI" на екрані монітора відкриваються два вікна:

вікно лицьової панелі інструменту (Front Panel), що має сірий фон та ім’я

за замовчуванням «Untitled 1», і вікно блок-діаграми (Block Diagram) із бі-

лим фоном та ім’ям «Untitled 1 Diagram*» (рис. 1.2). Переключення між ві-

кнами здійснюється з клавіатури командою [Ctrl+E] або вибором вікна за

допомогою миші.

Зірочка (*) у назві вікна діаграми означає, що файл не збережено на

диску.

У кожному з вікон користувачеві доступні меню у верхній частині

вікон, палітра інструментів (Tools Palette) та палітри елементів управління

(Controls Palette) і функцій (Function Palette). Доступні пункти у будь-

якому меню виділені яскравішим кольором.

Page 7: Київ - ahv.kpi.ua

7

Рис.1.2. Вікна лицьової панелі і блок-діаграми

Меню забезпечує загальну взаємодію LabVIEW з користувачем. Ко-

ристувачеві надається ряд можливостей, з яких найчастіше використову-

ються:

Пункт меню File дозволяє виконувати стандартні операції з файлами,

такі як New (створити новий файл) [Ctrl+N]; Open (завантажити файл);

Close (закрити файл); Save (Save As, Save And Copy As) (записати як, запи-

сати і скопіювати як) [Ctrl+S]; Exit (вихід з LabVIEW) [Ctrl+Q].

Пункт Edit дозволяє здійснювати редагування програм, а саме Cut

(вирізати заздалегідь відмічений блок) [Ctrl+X]; Copy (копіювати блок)

[Ctrl+C]; Paste (вставити блок) [Ctrl+V]; Remove Broken Wires (видалити

розірвані лінії з'єднання) [Ctrl+B].

Пункт Operate використовується для керування виконанням програ-

ми: Run (запуск програми на виконання) [Ctrl+R]; Stop (зупинка виконання

програми) [Ctrl+.].

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

Пункт Browse дозволяє проглядати властивості поточного VI, напри-

клад, Show VI Hierarchy (показати ієрархію підпрограм VI).

Пункт Window дозволяє викликати відповідні палітри та працювати

із вікнами: Show Diagram (Ctrl + E) (перехід між вікнами); Show Control

Вікно діаграми

Вікно лицьової панелі

Меню

Page 8: Київ - ahv.kpi.ua

8

Pallete (показати палітру інструментів для лицьової панелі); Show Functions

Pallete (показати палітру інструментів для блок-діаграми); Show Tools

Pallete (показати палітру інструментів для редагування); Show Help

Window (перехід у вікно підказки); Tile (показ вікон лицьової панелі і

блок-діаграми одночасно); Size to Screen (розтягнути поточне вікно на весь

екран);

Пункт Help дозволяє користуватися різними типами довідки: Show

Context Help (виклик контекстної короткої довідки, яка відображається в

окремому вікні і видає інформацію про об'єкт на який наведений покажчик

миші) [Ctrl+H]; Context and Index (виклик повної довідкової системи);

Examples (пошук прикладів програм).

Основні і часто використовувані функції винесені на панель у вигля-

ді кнопок (рис. 1.3).

Рис. 1.3 – Кнопки меню

Кнопка запуску програми (Run) набуває вигляду розламаної

стрілки якщо в діаграмі програми є помилка. При спробі пуску про-

грами із помилкою з’являється повідомлення про помилку і відкривається

Run

(пуск про-

грами)

Run Continu-

ously

(пуск програми

циклічно)

Abort Execu-

tions

(зупинка

програми)

Pause

(пауза у

виконанні

програми)

Highlight

Execution

(показ пе-

реміщення

даних в

програмі)

Start Single Stepping

(пуск покрокового

виконання програ-

ми)

Text Settings

(встанлення параметрів

тексту – шрифт, розмір,

колір тощо)

Align/Distribute

Object, Reorder

(вирівнювання та

розміщення об’єктів

на панелях)

Page 9: Київ - ahv.kpi.ua

9

вікно "Error List" із діагностикою помилки, що дозволяє швидко знайти її

місце та усунути.

Для активізації будь-якого доступного режиму курсор встановлюють

на відповідну іконку і натискають ліву кнопку миші. Система сигналізує

про включення режиму: вибрана іконка змінює колір.

Контекстне (ситуаційне) меню доступне з робочого поля будь-якого

вікна і іконки при натиснутій правій клавіші миші. Залежно від того, на

якому об'єкті встановлений курсор, зміст меню змінюється: можуть бути

запропоновані засоби редагування іконок; зміна статусу блоку, заміна бло-

ку, діагностика помилок редагування, вибір шрифтів, елементи пунктів го-

ловного меню Controls і Functions і т. п. Використання ситуаційного меню

багато в чому прискорює і спрощує процес програмування в середовищі

LabVIEW.

В середовищі LabVIEW доступні п'ять режимів редагування. Режими

діють в межах робочого простору панелі. Змінити режим можна за допо-

могою палітри інструментів "Tools Palette" (рис. 1.4), що викликається з

меню Window/Show_Tools_Pelette.

Рис. 1.4 – Палітра інструментів

Помістивши вказівник миші на одну з п'яти кнопок, натисненням лі-

вої клавіші миші змінюють поточний режим редагування на режим клаві-

ші, що натискається. При цьому змінюється вид вказівника миші, коли він

Page 10: Київ - ahv.kpi.ua

10

переноситься в робочий простір. Це робиться з метою постійного нагаду-

вання користувачеві про поточний режим редагування.

Операційний інструмент (Operating Tool). Цей режим застосову-

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

кнопки, змінюють позиції вимикачів, управляють значеннями цифрових

задавачів тощо. Ці програмні операції покажчика миші нагадують дії руки

оператора на пульті реального приладу. Операційний інструмент автома-

тично вмикається під час виконання програми.

Інструмент позиціювання (Positioning Tool). Використовується

для виділення, переміщення та змінення розмірів об’єктів.

Інструмент створення ярликів (Labeling Tool). Використовується

для зміни існуючих та створення нових текстових ярликів на панелях діаг-

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

нюючого напису тощо).

Інструмент зв’язування (Wiring Tool). Використовується для

зв’язування об’єктів на панелі діаграми. Активним елементом курсору є

кінець «дроту», що виходить з «котушки».

Інструмент виклику меню об’єкту (Shortcut Menu Tool). Викли-

кає контекстне меню властивостей об'єкту при натисненні лівої кнопки

миші. У інших режимах контекстне меню викликається правою кнопкою

миші.

Інструмент прокрутки (Scroll Tool). Використовується для пере-

міщення робочої поверхні панелей (дублює використання кнопок «прокру-

тки» зображення).

Page 11: Київ - ahv.kpi.ua

11

Інструмент точки переривання (Breakpoint Tool). Використову-

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

дженні програми.

Інструмент для створення тимчасового індикатора – точки «про-

би» (Probe Tool), у будь-якому місці програми при її налагодженні.

Інструмент копіювання кольору (Color Copy Tool). Дозволяє

скопіювати колір будь-якого об'єкту для подальшого використання.

Інструмент розфарбування (Coloring Tool). Використову-

ється для розфарбовування об'єктів і фону вікон програми.

Окрім описаних вище існує дві палітри інструментів, що доступні

тільки на відповідних вікнах програми і викликаються правою кнопкою

миші на робочому полі відповідного вікна або за допомогою меню

"Window":

1) Controls Palette (палітра елементів управління) – у вікні лицьової

панелі в режимі редагування;

2) Functions Palette (палітра функцій) – меню функціональних блоків

– доступно у вікні діаграми в режимі редагування.

Редагування

У режимі редагування об'єктів із використанням інструменту пози-

ціювання , окрім вибору об'єкту з меню Controls і Functions, можливі

наступні операції:

а) виділення блоку (елементу): курсор встановити на об'єкт і натис-

нути ліву клавішу миші. Навколо відміченого об'єкту з'являється пунктир-

ний контур. Для того, щоб виділити відразу декілька об'єктів, необхідно

Page 12: Київ - ahv.kpi.ua

12

клацнути лівою клавішею миші на кожному з них при затиснутій клавіші

[SHIFT];

б) видалення блоку (елементу): виділити об'єкт і натиснути [Delete];

в) перенесення блоку (елементу): виділити об'єкт, встановити на ньо-

го курсор і перемістити курсор в потрібне місце, затиснувши ліву кнопку

миші;

г) зміна розмірів блоку (елементу): виділити об’єкт, курсор встано-

вити на куті об'єкту і дочекатися появи кутової відмітки. Натиснувши і не

відпускаючи ліву кнопку миші, розтягнути об'єкт до необхідного розміру;

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

тому числі в інший файл) засобами пункту головного меню Edit.

Завдання: завантажити приклад програми керування технологічним

процесом:

Help\Examples\Demonstrations\Process_Control\Control_Mixer_Process та

проаналізувати роботу програми.

Приклад 1

Організація введення числових даних з лицьової панелі і виведення

даних на цифровий індикатор та графік.

1) Запускаємо середовище LabVIEW і обираємо створення нового ВІ.

2) Працюємо у вікні лицьової панелі «Untitled 1» в режимі редагу-

вання об'єктів.

3) Вибираємо елемент вводу з палітри елементів управління

Controls_Palette\Numeric\Digital_Control (рис. 1.5) і вказуємо місце його ро-

зташування на лицьовій панелі.

Page 13: Київ - ahv.kpi.ua

13

Рис. 1.5

Відразу після розміщення елементу відкривається поле ярлика еле-

менту, за умовчанням «Numeric». Набираємо з клавіатури назву пристрою,

наприклад, «sampler» і відключаємо режим введення з клавіатури переміс-

тивши вказівник на вільне поле вікна і натиснувши ліву кнопку миші, або

кнопку із галочкою, що з’являється у верхньому рядку меню поряд із кно-

пкою Run. Вибираємо елементи виводу з палітри

Controls_Palette\Graph\Waveform_Chart та Controls_Palette\Numeric\Di-

gital_Indicator. Розміщуємо елементи вводу і виводу на лицьовій панелі

(рис. 1.6, а) пересуваючи їх за допомогою обраного інструменту позицію-

вання .

4) Переходимо у вікно діаграми «Untitled 1 Diagram*». При необхід-

ності переміщуємо блоки, які відповідають елементам вводу і виводу, на

полі діаграми. Знайти відповідність блоків на вікнах лицьової панелі та ді-

аграми можна за допомогою подвійного клацання лівою кнопкою миші на

блоці або клацнувши правою кнопкою миші на блоці викликати меню вла-

стивостей та обрати пункт «Find Terminal» (для об’єктів лицьової панелі)

або пункт «Find Indicator» (для об’єктів діаграми).

Page 14: Київ - ahv.kpi.ua

14

Front Panel Block Diagram

а) б)

Рис. 1.6

5) Вибираємо інструмент зв’язування На вікні діаграми встанов-

люємо зв'язок "елемент вводу – елемент виводу", для чого розміщуємо ак-

тивний елемент курсору (тобто кінець дроту, що виходить з котушки) на

блок "sampler" (іконка блоку починає блимати) і, затиснувши ліву кнопку

миші ведемо курсор до блоку елементу виводу «Waveform_Chart». Коли

іконка блоку виводу почне блимати, відпускаємо ліву кнопку. Якщо лінія

зв'язку пунктирна, (це означає, що зв'язок не встановлений або встановле-

ний невірно), видаляємо лінію (за допомогою відкату [Ctrl+Z] або комбі-

нацією [Ctrl+B] або виділивши лінію інструментом позиціювання – стріл-

кою і натиснувши [Delete]) і повторюємо операцію встановлення зв'язку. В

результаті треба отримати картинку, що показана на (рис. 1.6, б). Тут по-

ряд розташовані зображення елементів на лицьовій панелі та на діаграмі,

які відповідно позначені «Front Panel» та «Block Diagram».

Page 15: Київ - ahv.kpi.ua

15

6) Виходимо з режиму встановлення зв'язку обираючи операційний

інструмент .

7) Переходимо у вікно лицьової панелі «Untitled 1».

8) Переходимо в режим виконання програми циклічно

«Run_Continuously» натискаючи кнопку у меню. Курсор автоматично

переходить в режим операційного інструменту при виконанні програ-

ми.

9) Вводимо дані у елемент вводу «sampler» спостерігаємо за зміною

даних на графіку.

10) Зупиняємо виконання програми кнопкою «Abort_Execution» .

11) Виходимо з LabVIEW за допомогою головного меню File\Exit. У

меню «Save Changes?» вибираємо «Yes» і у вікні «Name_the_VI» в ниж-

ньому рядку записуємо ім'я створеного файлу з розширенням *.vi.

Приклад 2

Отримати на графічному екрані синусоїдальний сигнал.

1) Виконуємо крок 1 прикладу 1 і за допомогою пункту головного

меню File\Open завантажуємо файл, створений при виконанні прикладу 1.

Встановлюємо режим інструменту позиціювання і переходимо у

вікно діаграми «Untitled 1 Diagram*». Видаляємо раніше встановлений

зв'язок «елемент вводу – елемент виводу», тобто «sampler – Waveform

chart», викликаємо палітру «Functions» клацнувши правою кнопкою миші

на полі діаграми і обираємо генератор сигналу білого шуму в пункті меню

«Functions\Analyze\Signal_Procesisng\Signal_Generation\Sine_Pattern». Роз-

міщуємо його на діаграмі (рис. 1.7, а) і переходимо в режим зв’язування

.

Page 16: Київ - ahv.kpi.ua

16

а) б)

в)

Рис. 1.7

Функціональні блоки в LabVIEW мають, так звані, вхідні та вихідні

термінали для підключення вхідних даних та виведення результатів роботи

блоку. Якщо на блок навести інструмент зв’язування, котушку, то стануть

видимими термінали та висвітиться назва терміналу, на який в даний мо-

мент вказує котушка. На рис. 1.7, б котушка вказує на верхній лівий термі-

нал, назва якого, «samples» з’явилася нижче. Назви та призначення усіх те-

рміналів конкретного блоку можна знайти у довідковій системі, наприклад,

у контекстній довідці (рис. 1.7, в), яка викликається з меню «Help\Context

help».

Отже, до терміналу «samples» блоку «Sine_Pattern» підключимо еле-

мент вводу «sampler». Він задає кількість точок дискретизації повного пе-

ріоду синусоїди, які видасть на виході блок «Sine_Pattern». Встановимо та-

кож зв'язок між терміналом «Sinusoidal Pattern» блоку «Sine_Pattern» та

Page 17: Київ - ahv.kpi.ua

17

графічним вікном «Waveform_Chart». Додатково створимо задавач амплі-

туди синусоїди. Для цього наведемо вказівник інструменту зв’язування,

«котушку», на термінал «amplitude» блоку «Sine_Pattern» та клацнемо пра-

вою кнопкою миші. У меню, що з’явилося, обираємо пункт

«Create\Control» (рис. 1.8). На полі діаграми та на лицьовій панелі приладу

з’явиться новий елемент вводу із ім’ям «amplitude».

Рис. 1.8

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

грами «Run» . Змінюючи значення «sampler» та «amplitude» дивимося

на зміну синусоїди на графіку (рис. 1.9).

Front Panel Block Diagram

Page 18: Київ - ahv.kpi.ua

18

Рис. 1.9 – Результат виконання прикладу 2

Для того, щоб вставити зображення діаграми та лицьової панелі про-

грами у документ, наприклад, для оформлення протоколу роботи, можна

скористатися пунктом меню «File\Print...». Тут у послідовності діалогових

вікон пропонується обрати обсяг даних, що буде надруковано, параметри

сторінки, а також тип файлу, до якого будуть записані зображення діагра-

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

ти тип файлу «RTF» (рис. 1.10).

Page 19: Київ - ahv.kpi.ua

19

Рис. 1.10 – Послідовність вікон «Print...» меню «File»

Page 20: Київ - ahv.kpi.ua

20

1. АРИФМЕТИЧНІ ТА ЛОГІЧНІ ОПЕРАЦІЇ В LabVIEW

Мета роботи: надбання вмінь програмування арифметичних та логі-

чних операцій в середовищі LabVIEW.

При роботі в середовищі LabVIEW нерідко виникає необхідність оп-

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

гляду, імітувати роботу якого-небудь пристрою і т. п. Для цього в пакеті

передбачена можливість використання різних математичних операцій з

цифровими даними, зокрема, арифметичні і логічні операції.

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

роботі в LabVIEW як в системі візуального програмування, без підключен-

ня до комп'ютера реальних пристроїв. В цьому випадку математичні опе-

рації допомагають описати в середовищі LabVIEW математичні моделі до-

сліджуваного об'єкту і експериментальної установки.

Математичні операції в середовищі LabVIEW вибираються відповід-

ними пунктами меню палітри Functions (Функції), такими як Structures

(структури), Numeric (арифметичні), Boolean (Булеві), String (рядкові) і

т. д.

Пункт головного меню Functions доступний тільки у вікні діаграми в

режимі редагування. Вибір необхідної функції здійснюється традиційним

способом: курсор на відповідній іконці, ліва кнопка миші.

Page 21: Київ - ahv.kpi.ua

21

Рис. 2.1 – Арифметичні операції

Досить часто в математичних формулах використовуються числові

константи (довільні або загальновживані). Для введення довільної конста-

нти необхідно вибрати Functions\Numeric\Numeric_Constant, величину кон-

станти змінюють в текстовому режимі. Загальноприйняті константи (π –

число Пі, Na – число Авогадро, е – основа натурального логарифму тощо)

вибираються у тому ж пункті меню

Functions\Numeric\Additional_Numeric_Constant.

Приклад 1. Реалізувати арифметичну операцію A = (B + C)/5, вве-

дення і виведення інформації у цифровій формі.

У вікні лицьової панелі відбираємо і розміщуємо два елементи циф-

рового вводу Control\Numeric\Digital_Control та присвоюємо їм імена B і C,

один елемент цифрового виводу Control\Numeric\Digital_Indicator із ім’ям

A. Переходимо у вікно діаграми і, відкоригувавши взаємне розташування

елементів управління, доповнимо схему наступними елементами:

Page 22: Київ - ahv.kpi.ua

22

1) константа (дорівнює 5): Functions\Numeric\Constants і вво-

димо «5» із клавіатури;

2) оператори додавання і ділення: Functions\Numeric\Add і

Functions\Numeric\Divide відповідно.

Переходимо в режим встановлення зв'язків і в необхідному порядку

сполучаємо між собою елементи схеми.

Front Panel Block Diagram

Рис.2.2 – Приклад реалізації арифметичної операції

У іконки оператора ділення три термінали: верхній кут [x] (ділене),

нижній кут [y] (дільник), правий кут [x/y] (частка) (див. рис. 2.3). При ви-

конанні з'єднання курсор необхідно наводити на "гаряче" поле, що відпо-

відає тій змінній, з якою треба встановити зв'язок. При цьому обране "га-

ряче" поле підсвічується і показується його назва.

а) б)

Рис.2.3 – Термінали арифметичної операції ділення:

а) термінали; б) «гарячі» поля, що відповідають терміналам

Page 23: Київ - ahv.kpi.ua

23

Зверніть увагу на різні кольори, якими позначені лінії зв’язку та еле-

менти. Елементи вводу-виводу мають помаранчевий колір і блоки мають

вигляд прямокутника із написом [DBL], що відповідає типу змінної по-

двійної точності із плаваючою точкою (Double-precision floating-point

numbers). Константа, за замовчуванням, має тип довге ціле число (Long

integer numbers) довжиною 32 біти. Типи змінних можна змінювати за до-

помогою меню, що викликається правою кнопкою миші, пункт Representa-

tion (рис. 2.4). Типи змінних, що використовуються у LabVIEW дивись у

Додатку 1. Для конвертації числових типів змінних використовують блоки

Functions\Numeric\Conversion.

Рис.2.4 – Вибір типу змінної

Page 24: Київ - ahv.kpi.ua

24

ЛОГІЧНІ ОПЕРАЦІЇ

If you ask electronics engineer

"To be or not to be ?" ,

his answer will be "One!"

Для логічних операцій елементами вводу будуть перемикачі, тумб-

лери та кнопки, а елементами виводу – індикаторні лампи. Ці елементи ро-

зташовані в меню Controls\Boolean. Блоки логічних операцій можна знайти

в меню Functions\Boolean. Булева алгебра використовує два стану змінних:

True (Вірно) та False (Хибно), або у бінарному представленні відповідно 1

та 0. Функціональні блоки булевої алгебри та зв’язки між ними в системі

LabVIEW зображують зеленим кольором (рис.2.4).

Рис.2.4 – Логічні операції

Приклад. Розробити програму, у якій із використанням логічних

операторів реалізується така функція: сигнальна лампа HL загориться тіль-

ки якщо дві кнопки SB1 та SB2 увімкнені.

Page 25: Київ - ahv.kpi.ua

25

Створюємо нову програму, на лицьовій панелі розташовуємо дві

кнопки із індікаторною лампою Controls\Boolean\Push_Button – це будуть

кнопки SB1 та SB2. У якості сигнальної лампи HL обираємо зображення

круглої світлодіодної лампи Controls\Boolean\Round_LED (рис. 2.5).

Оскільки лампа HL має світитися тільки коли обидві кнопки SB1,

SB2 натиснуті, обираємо логічну операцію І (And) Functions\Boolean\And.

Рис. 2.5 – Результат виконання прикладу

Page 26: Київ - ahv.kpi.ua

26

Використання структури FORMULA NODE

Для виконання складніших арифметичних або логічних операцій ви-

користовується структура Формула (Formula Node) з розділу

Functions\Structure. Вона є прямокутним текстовим полем, призначеним

для запису математичних та логічних операцій у синтаксисі аналогічному

мовам високого рівня типу Паскаля. Список доступних для використання

функцій і операцій можна отримати в довідковій системі. Дії у Formula

Node проводяться над змінними, які необхідно позначити як вхідні і вихід-

ні, привласнивши їм індивідуальні імена. Для цього в контекстному меню

Formula Node (викликається правою кнопкою миші при розташуванні вка-

зівника на рамці Formula Node) вибирають пункти Add Input (додати вхід),

Add Output (додати вихід). Ці входи і виходи служитимуть терміналами

приєднання зв'язків, для чого їх треба назвати відповідно до імен змінних,

що використовуються у Formula Node (рис. 2.6).

Рис. 2.6 – Додавання вхідної змінної до формули

Приклад 2. Для реалізації виразу A = (B + C)/5 за допомогою Форму-

ли, необхідно вставити прямокутне поле Formula Node на діаграму, додав-

Page 27: Київ - ahv.kpi.ua

27

ши йому довільний розмір. Помістити вказівник миші на прямокутник і,

натиснувши праву клавішу миші, вибрати в контекстному меню Add Input

(додати вхід). У поле, що з'явилося, вписати ім'я входу «В» (рис. 2.6). Ана-

логічно додати вхід «С». Потім, в контекстному меню вибрати Add Output

(додати вихід) і назвати його «А». Всередині прямокутника Formula Node

вписати арифметичний вираз «A = (B + C)/5;». Підключити за допомогою

котушки до входів і виходів відповідні елементи управління і індикації.

Front Panel Block Diagram

Рис. 2.7 – Приклад використання Formula Node

Зверніть увагу, що у Formula Node в якості десяткового роздільника

використовується крапка, наприклад «10.58». Кожен арифметичний вираз

має закінчуватися крапкою із комою «;».

Якщо потрібно виконати обчислення виразу лише із однією змінною,

можна скористатися блоком Expression Node (Вираз). На рис. 2.8 показано

приклад використання Expression Node для переведення колової (кутової)

частоти (радіан за секунду) у період коливань (секунди). Оператори та фу-

нкції для блоків Formula Node та Expression Node наведені у додатку 2.

Рис. 2.8 – Приклад використання Expression Node

Page 28: Київ - ahv.kpi.ua

28

Type Cast

Кожен тип даних зберігається в пам'яті компютера у вигляді харак-

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

ретується по-різному. Використання функції «Type Cast» (зміна типу) з па-

літри Functions\ Numeric\ Data Manipulation\ може змінити тип даних. Рис.

2.9 показує деякі приклади перетворення формату між рядками і числови-

ми даними, а також між будь-якими даними і булевими даними.

Рис. 2.9 Приклади використання функції «Type Cast»

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

новим типом даних. Таким чином, застосування функції може приводити

до помилок і завжди має використовуватися із обережністю.

Функція «Type Cast» може бути корисна для роботи з Enums (перелі-

ками). Рис. 2.10 показує перетворення цілого числа в перелік. На рис. 2.10a

показано невірну реалізацію цієї задачі, на рис. 2.10б правильна реалізація.

Page 29: Київ - ahv.kpi.ua

29

Enums мають тип даних U16 за замовчуванням, який може бути змі-

нений на U8 і U32. На рис 2. 4a Enums з типом за замовчуванням U16 ви-

користовується із джерелом даних типу U32. Оскільки ці два типи даних

не сумісні, «Type Cast» не обробляє байт як очікувано і для вхідного зна-

чення «2» на виході маємо «sine» замість бажанго «tangent».

Рис. 2.10 Використання «Type Cast» для перетворення Integer у Enumerated

а) невірна; б) правильна реалізація

Щоб уникнути помилок такого типу, які важко діагностувати, корис-

но завжди робити перетворення прямо перед викликом «Type Cast», щоб

це було показано на блок-схемі, оскільки стандартне представлення інших

джерел даних можуть бути I32 (лічільник ітерацій у циклах), U32 (перет-

ворення формату) тощо, і у потоку даних за колірним кодуванням явно не

відрізнятися (рис. 2.10б). З міркувань сумісності варто не змінювати тип

даних за замовчуванням Enum-змінних.

Page 30: Київ - ahv.kpi.ua

30

Завдання 1:

1.1 ВІ перетворює значення температури з градусів Цельсія в темпе-

ратуру за шкалою Кельвіна (К = °С + 273,15)

1.2 ВІ перетворює значення температури з градусів Цельсія в темпе-

ратуру за шкалою Реомюра (°R = 4/5*°С)

1.3 ВІ перетворює значення температури за шкалою Кельвіна в гра-

дуси Цельсія (°С = К – 273,15)

1.4 ВІ перетворює значення температури за шкалою Реомюра в гра-

дуси Цельсія (° С = 5/4 *R)

1.5 ВІ перетворює значення температури за Фаренгейтом в градуси

Цельсія (°F = 9/5*°С + 32)

1.6 ВІ перетворює значення температури за шкалою Реомюра в тем-

пературу за Фаренгейтом (°F = 9/4*°R + 32)

1.7 ВІ перетворює значення напруги і сили струму за законом Ома в

опір (R = U / I)

1.8 ВІ перетворює значення температури за Кельвіном в температуру

за шкалою Реомюра (° R = 4/5*( К – 273,15))

1.9 ВІ перетворює за законом Ома значення напруги і опору в силу

струму (I = U / R)

1.10 ВІ перетворює значення динамічної в'язкості μ в кінематичну ν

в'язкість (ν = –μ / ρ)

1.11 ВІ перетворює значення напруги (мВ) і сили струму (мкА) в по-

тужність (Вт) (P = I*U)

1.12 ВІ перетворює значення напруги (U) і сили струму (А) в потуж-

ність (Вт) (P = I*U)

1.13 ВІ перетворює значення маси (кг) і часу (с) у масову витрату

(кг / с) (G = m / t)

Page 31: Київ - ahv.kpi.ua

31

1.14 ВІ перетворює значення маси (кг) та обсягу (м3) в щільність (кг /

м3) (ρ = m / V)

1.15 ВІ перетворює значення обсягу (м3) і часу (с) в об'ємну витрату

(м3 / с) (G = V / t)

1.16. ВІ перетворює значення тиску з мм. рм. ст. у Паскалі (Па=

133.3*мм. рт. ст.)

1.17. ВІ перетворює значення тиску з атм у мм. рм. ст. (мм. рм. ст. =

759.9*атм)

1.18. ВІ перетворює значення тиску з кгс/см2 у мм. рм. ст. (мм. рм.

ст.= кгс/см2 *735)

1.19. ВІ перетворює значення тиску з бар у Паскалі (Па= 105 *бар)

1.20. ВІ перетворює значення тиску з бар у кгс/см2 (кгс/см

2=

1.0197*бар)

1.21. ВІ перетворює значення тиску з мм. рм. ст. у мм. в. ст. (мм. в.

ст.= 13.3*мм. рт. ст.)

1.22. ВІ перетворює значення тиску з мм. в. ст. у мм. рм. ст. (мм. рт.

ст.= 0.075* мм. в. ст.)

1.23. ВІ перетворює значення об’єму з м3 у літри (л= 10

3* м

3)

1.24. ВІ перетворює значення об’єму з галонів рідини (США) у літри

(л = 3.79*галон(США))

1.25. ВІ перетворює значення об’єму з галонів рідини (Британський)

у літри (л = 4.55*галон(Британський))

1.26. ВІ перетворює значення об’єму з барелів у літри (л= 159* ба-

рель)

1.27. ВІ перетворює значення об’єму пінтів у літри (л=0.568*пінт)

1.28. ВІ перетворює значення довжини з дюмів в метри (м=0.0254*

дюймів)

Page 32: Київ - ahv.kpi.ua

32

1.29. ВІ перетворює значення довжини з миль в метри (м = 1609*

миль)

1.30. ВІ перетворює значення довжини з миль (морських) в метри

(м= 1852* миль (морських))

1.31. ВІ перетворює значення об’єму літрів у сантілітри (л = 100*cl)

Завдання 2. .Реалізувати наступні арифметичні вирази:

а) використовуючи арифметичні блоки (див. приклад 1);

б) використовуючи структуру Structure\Formula Node (див. прик-

лад 2. Зверніть увагу на написання функцій в Formula Node (див. Додаток

2).

2.1 a= (2b + 2c )/(e2 + 1);

2.2 a=1/(d5 - 6.5);

2.3 a=10.4c+(3sin b - 0.1)/4;

2.4 a= k e s/(1 - t);

2.5 a = a= k(1 - eb/t );

2.6 a = a= (sin b + cos b)2;

2.7 a= bc + lg 2.7;

2.8 a= (lg b + log2 b )tg 5;

2.9 a= (b+1)c(d-1)5

2.10 a= (11+ 9c-3b2 -d3) / e3

2.11 a=1- b2 - 6dc .

2.12 a= b+ 8d(c+ 2)3 .

2.13 a= - 6b

c2 + 4d+12.

2.14 a= 8c-16-12 (c- 2)d3 .

2.15 a= ec + 4d+3b .

Page 33: Київ - ahv.kpi.ua

33

2.16 a= 3c - 5d5-3b2

.

2.17 a= b2 +16

9cd -8.

2.18 a= eb - 6c+ 9

(d-1)2.

2.19 a= (2b+d)e-2(c+1).

2.20 a= ed(b-1)

2(c-1).

2.21 a= 3lnc

b-3-d.

2.22 a= -(2b+1)ed(c+1).

2.23 a= d- e-2(b+2)

2(c+ 2).

2.24 a= (2-c)(d2 - 4)b .

2.25 a= (b+ 2) / (c- 4)d3 .

2.26 a= sinb+ coscd

3 .

2.27 a= ln( 2cos(b)- (d- c).

2.28 a= (d+3)ebc .

2.29 a= 9+ 6b-3b2

cd - 2c+13.

2.30 a= (c-1)2

eb+d .

Page 34: Київ - ahv.kpi.ua

34

Завдання 3. Реалізувати наступні логічні функції (A і В – входи, С –

вихід). Як джерела введення (A, B) двійкової інформації необхідно вико-

ристовувати перемикачі з розділу Controls Boolean. Індикацію (C) здійсни-

ти лампою з того ж розділу меню.

3.1

A B C

0 0 0

0 1 1

1 0 1

1 1 0

3.2

A B C

0 0 1

0 1 0

1 0 1

1 1 1

3.3

A B C

0 0 0

0 1 0

1 0 0

1 1 1

3.4

A B C

0 0 1

0 1 1

1 0 1

1 1 0

3.5

A B C

0 0 1

0 1 1

1 0 0

1 1 1

3.6

A B C

0 0 1

0 1 0

1 0 0

1 1 1

3.7

A B C

1 0 0

0 1 0

0 0 1

1 1 0

3.8

A B C

1 0 1

0 1 1

1 1 1

0 0 0

3.9

A B C

1 0 0

0 1 1

0 0 0

1 1 1

3.10

A B C

0 1 1

1 1 0

1 0 1

0 1 1

3.11

A B C

0 1 0

0 0 1

1 0 0

1 1 1

3.12

A B C

1 1 1

0 1 0

1 0 1

0 0 1

3.13

A B C

1 0 0

0 1 0

0 0 1

1 1 0

3.14

A B C

0 0 1

1 0 0

1 1 1

0 1 0

3.15

A B C

1 0 1

0 1 0

0 0 0

1 1 1

Page 35: Київ - ahv.kpi.ua

35

3.16

A B C

1 1 0

0 1 1

1 0 1

0 0 0

3.17

A B C

0 1 1

0 0 0

1 0 1

1 1 1

3.18

A B C

0 0 1

1 1 0

1 0 0

0 1 1

3.19

A B C

0 1 1

0 0 1

1 0 1

1 1 0

3.20

A B C

1 0 1

1 1 1

0 1 0

0 0 1

3.21

A B C

1 1 0

0 1 1

1 0 0

0 0 1

3.22

A B C

1 0 1

0 1 0

0 0 1

1 1 1

3.23

A B C

0 1 0

1 0 1

0 0 0

1 1 0

3.24

A B C

1 0 1

0 0 1

0 1 0

1 1 0

3.25

A B C

1 0 1

0 1 0

0 0 1

1 1 1

3.26

A B C

1 1 0

0 0 1

0 1 0

1 0 1

3.27

A B C

1 1 1

1 0 1

0 1 1

0 0 0

3.28

A B C

0 0 0

1 1 0

0 1 1

1 0 1

3.29

A B C

0 1 1

1 1 0

1 0 1

0 0 0

3.30

A B C

1 1 1

1 0 0

0 1 1

0 0 1

Page 36: Київ - ahv.kpi.ua

36

Контрольні запитання

1. З яких основних компонентів складається Ваш ВП?

2. Які вузли на блок-діаграмі ВП Ви знаєте?

3. Як відображаються термінали даних і які функції вони виконують?

4. Які типи даних Ви знаєте?

5. Як з'єднуються об'єкти?

6. З яких підпалітр складається палітра Controls (Елементів)?

7. З яких підпалітр складається палітра Functions (Функцій)?

8. Як здійснюється запуск розробленого ВП?

9. Назвіть призначення кнопок на блок-діаграмі.

10. Назвіть призначення кнопок на лицьовій панелі.

11. Що таке елемент управління і елемент відображення?

12. Назвіть основні типи даних.

13. Як ввести число в елемент управління?

14. Для чого призначений формульний блок Formula Node? Як ство-

рити термінал на кордоні блоку Formula Node?

Page 37: Київ - ahv.kpi.ua

37

2. ПРОГРАМУВАННЯ ЦИКЛІВ

Мета роботи: навчитися використанню циклів в середовищі

LabVIEW.

Оператори повторення (цикли) передбачають виконання деяких дій

(тіла циклу) кілька разів. В середовищі LabVIEW цикли відносять до еле-

ментів під назвою «структури» і розташовані за шляхом:

Function\Structures\. Розрізняють такі види циклів:

а) петля «за завданням» (For Loop),

б) петля «за умовою» (While Loop),

Петля за завданням For Loop.

Ця структура працює аналогічно оператору цикла із заданим числом

кроків (ітерацій) N, записаному у вигляді:

for i=0 to N-l do ...

Для організації ітераційного процесу в блок-схемі попередньо на па-

нелі діаграми створюють поле структури For Loop необхідного розміру, а

потім розміщують всередині об'єкти функціональної блок-схеми.

Page 38: Київ - ahv.kpi.ua

38

(с)

Рис. 3.1 Структура For Loop: (а) в LabVIEW із зазначенням терміна-

лів, (b) еквівалентна схема алгоритму, (с) із підключеними терміналами

Виклик на панель діаграми структури For Loop здійснюється за шля-

хом: Function\Structures\For_Loop. Зображення іконки структури з'являєть-

ся на панелі діаграми (рис. 3.1). «Зачепивши» стрілкою мишки зображення

іконки за один з її кутів і, утримуючи ліву кнопку миші в натиснутому ста-

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

функціональній панелі знаходилися будь-які об'єкти, які виявилися закри-

тими зверху полем вказаної структури, то це не означає, що вони потрапи-

ли всередину неї. Така ситуація може послужити причиною помилки.

Page 39: Київ - ahv.kpi.ua

39

Представлена на рис.3.1 петля за завданням містить генератор ітера-

цій "і" і лічильник кількості ітерацій "N".

Перед виконанням оператора циклу значення N повинне бути задане,

наприклад, за допомогою константи, що знаходиться за адресою

Function\Numeric\Numeric_Constant. Після виклику константи на панель ді-

аграми її значення записується всередину прямокутника (в даному випадку

задаємо N = 50).

При і = N – 1 цикл зупиняється. Загальна кількість значень і (з ура-

хуванням і = 0), в яких здійснюються ітерації, дорівнює N. Останнє зна-

чення і = N – 1.

Продемонструємо властивості структури як генератора ітерацій. З

цією метою викличемо Controls\Graph\Waveform_Graph. На лицьовій пане-

лі з'явиться екран індикатора. На панелі діаграми з'явиться символ індика-

тора з написом DBL. Розміщуємо його за межами циклу.

За допомогою «котушки» з'єднуємо константу «50», розташовану так

само за межами петлі, із лічильником “N”. Генератор циклу “i” з'єднуємо з

символом індикатора (якщо з'єднання виконано правильно [DBL] прийме

значення [I32], що означає, що індикатор буде працювати із цілими

(Integer) числами довжиною 32 біти) (рис. 3.2). Про типи даних дивись До-

даток 1.

Рис. 3.2

Page 40: Київ - ahv.kpi.ua

40

Лінія з'єднання генератора ітерацій і індикатора має різну товщину:

всередині петлі вона тонка, за її межами вона потовщена. Відповідно до

прийнятих в LabVIEW позначеннями це означає, що від генератора «і» до

тунелю (місце перетину з'єднання з рамкою петлі) передаються числа.

Цикл перетворює числа в масив та від тунелю до індикатора передається

вже масив чисел.

Після запуску програми спостерігаємо лінійно зростаючі значення

«і» від 0 до 49.

Цикл For може мати зсувні регістри (Shift Registers), що позначають-

ся символами .

Зсувні регістри використовуються для передачі результатів обчис-

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

наченні зсувного регістру грає роль стрілки, що вказує напрям передачі ре-

зультатів: стрілка вгору означає передачу даних у наступну ітерацію; стрі-

лка вниз – передача даних із попередньої ітерації.

Зсувні регістри використовуються для передачі результатів обчис-

лень в ітераційному процесі від правого зсувного регістру до ліво-

го. Кількість зсувних регістрів теоретично необмежена, тобто є можливість

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

ту зсувного регістру на прикладі рис. 3.3 на схеми.

Рис. 3.3

Page 41: Київ - ahv.kpi.ua

41

Порядок побудови схеми на функціональній панелі:

1) Розміщуємо структуру «For Loop» потрібного розміру.

2) Розміщуємо покажчик миші на праву чи ліву межу рамки петлі,

натискаємо ПКМ і у контекстному меню вибираємо команду «Add Shift

Register» («Додати зсувний регістр»). Після відпускання ПКМ на лівій і

правій сторонах петлі з'являється пара зсувних регістрів. Зсувний регістр

на лівій стороні петлі містить дані з (і – 1) кроку циклу.

Щоб додати додатковий зсувний регістр на лівій стороні петлі, необ-

хідно помістити покажчик миші на наявний на лівій стороні зсувний ре-

гістр, натиснути ПКМ і вибрати команду «Додати елемент» («Add

Element»). Такий зсувний регістр виконує функцію отримання даних з кро-

ку циклу (і – 2). Додавання нових додаткових зсувних регістрів дає можли-

вість отримувати дані з (і – k)-го кроку циклу (тут k – кількість зсувних ре-

гістрів).

Видалення одного зсувного регістру або всіх зсувних регістрів про-

водиться ПКМ при розташування покажчика миші на зсувному регістрі та

виборі у контекстному меню команд «Видалити елемент» («Remove

Element») або «Видалити всі» («Remove All») відповідно. Зсувний регістр

також можна видалити натиснувши [Delete].

3) Всередині циклу розміщуємо індикатор (Controls\), генератор ви-

падкового числа (Function\Numeric\Random_Number_(0–1)) і функцію ви-

значення максимального\мінімального з двох чисел

(Function\Comparison\Max&Min). За межами петлі розміщуємо константу,

яка задає початкове значення максимуму і константу «N» – кількість ітера-

цій, функцію визначення максимального та мінімального значення в маси-

ві (Function\Array\Array_Max&Min). Додаємо два цифрових індикатора на

панель керування для виводу результатів роботи. Виконуємо з'єднання

Page 42: Київ - ahv.kpi.ua

42

елементів у відповідності зі схемою на рис 3.3. Задаємо початкове значен-

ня лівому зсувному регістру 0, значення N = 100.

Натискаємо кнопку "Run" програми і спостерігаємо результат її ро-

боти.

У даному прикладі реалізовані два методи пошуку максимуму:

1. Всередині циклу, шляхом порівняння кожного згенерованого чис-

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

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

но у лівому зсувному регістрі як 0;

2. Поза циклом, пошуком максимуму в отриманому масиві випадко-

вих чисел.

Використовуємо структуру «For Loop» для побудови перехідної ха-

рактеристики аперіодичного ланки 1-го порядку: Y(t) = K (1 – ехр (τ / dТ)).

Рис. 3.4

У даній схемі (рис. 3.4) крім елементарних операцій, використову-

ється функція "Exponential", яку можна знайти за адресою Func-

tion\Numeric\Logarithmic.

Page 43: Київ - ahv.kpi.ua

43

Петля за умовою While Loop

Аналогічно петлі за завданням (For Loop) петля за умовою (While

Loop) призначена для створення схем із циклічними процесами. Структура

«While Loop» за своєю дією аналогічна умовному оператору циклу, який

виконується до тих пір, поки задана змінна типу boolean не прийме зна-

чення FALSE. Еквівалентна форма запису наступна:

DO ... (Текст підпрограми із заданою умовою), WHILE (умова вико-

нується).

Рис. 3.5 Структура While Loop: (а) в LabVIEW із зазначенням терміналів,

(b) еквівалентна схема алгоритму

Структура While Loop знаходиться у панелі Func-

tion\Structures\While Loop.

Усередині петлі розташовується термінал ітерацій «i» ( ) та термі-

нал умови ( ).

Звичайні мови програмування підтримують два типи WHILE конс-

трукцій, як показано на малюнку 3.6. Вони називаються pre- і post-тест ре-

жими. У режимі pre-тест умова перевіряється до виконання кожної ітера-

ції, і якщо результат FALSE, то виконання циклу переривається. У режимі

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

Page 44: Київ - ahv.kpi.ua

44

но основною відмінністю є те, що у post-тестовому режимі, навіть якщо

умова FALSE, при першому виконанні або першій ітерації, цикл буде ви-

конаний хоча б один раз, оскільки тест виконується тільки в кінці ітерації.

LabVIEW підтримує тільки post-тестовий режим.

Рис. 3.6 (а) Pre-тестовий режим і (b) post-тестовий режим

у While loop

While Loop виконує підпрограму, доки термінал умови отримує ви-

значене логічне значення. За замовчуванням, термінал умови працює за

правилом «Continue if True», тобто While Loop виконує свою підпрограму

доки термінал умови не отримує значення FALSE. Можна змінити правило

поведінки і зовнішній вигляд терміналу умови, клацнувши правою кноп-

кою на термінал або контур циклу While і обравши правило «Stop if True» з

контекстного меню. Коли термінал умови працює за правилом «Stop if

True», While Loop виконує свою підпрограму доки термінал умови не

отримує значення TRUE. Якщо термінал умови непідключений, ВI показує

помилку.

Термінал ітерацій «i» містить кількість виконаних ітерацій. Ітерації

рахуються починаючи з нуля. Протягом першої ітерації термінал ітерацій

«i» повертає «0».

Page 45: Київ - ahv.kpi.ua

45

Рис. 3.7

Побудуємо діаграму, аналогічну попередній, але із циклом While

Loop. Зупинку циклу реалізуємо за допомогою кнопки

Control\Boolean\Push Button, приєднавши її до і «вимикача» ітерацій. Для

спостереження за побудовою графіка у часі скористаємося функцією за-

тримки в часі Functions\Date&Time\Wait (ms), задавши час очікування кон-

стантою.

На екрані спостерігаємо побудову графіка перехідної функції.

КОНТРОЛЬ ЧАСУ

Коли цикл закінчує виконання ітерації, він відразу ж починає вико-

нання наступної ітерації, якщо не досягнуто стану зупинки. Більшості до-

датків необхідно точне управління частотою або часом ітерації між послі-

довними операціями циклу. Виникає потреба контролювати швидкість, ви-

конання процесу, наприклад, швидкість, з якою значення даних виводяться

на графік. Можна використовувати функцію очікування в циклі та чекати

заданий час в мілісекундах перед повторним виконанням циклу. LabVIEW

має дві функції очікування. Функція очікування перебуває всередині цик-

лу, щоб дозволити ВI призупинитися протягом певного часу. Це дозволяє

процесору вирішувати інші завдання під час очікування. Функції очікуван-

Page 46: Київ - ahv.kpi.ua

46

ня використовують годинник операційної системи у мілісекундах. Це фун-

кції Wait Until Next ms Multiple та Wait (ms), як показано на рис 3.8 (а) та (b)

відповідно.

Рис. 3.8 Функції (а) Wait Until Next ms Multiple та (b) Wait (ms)

Wait Until Next ms Multiple контролює лічильник мілісекунд і чекає,

доки лічильник мілісекунд не досягне значення, що кратне вказаному часу.

Ця функція може бути використана для синхронізації. Можна залишити

цю функцію в циклі, щоб контролювати швидкість виконання циклу. Для

ефективнного використання цієї функції час виконання коду повинен бути

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

шої ітерації циклу є невизначеною (рис 3.9а).

Функція Wait (ms) додає час очікування до часу виконання коду. Це

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

Wait (мс) чекає, доки лічильник мілісекунд не нарахує суму, що дорівнює

вказаному на вході числу. Ця функція гарантує, що швидкість виконання

циклу буде не менше заданої користувачем (рис 3.9б).

Page 47: Київ - ahv.kpi.ua

47

а)

б)

Рис. 3.9

Page 48: Київ - ahv.kpi.ua

48

ЗАВДАННЯ:

Побудувати графік функції (див. Табл. 3.1), використовуючи струк-

тури "While Loop" і "For Loop".

Табл. 3.1

Варіант Функція

1 y= - xx+ 2

æ

èç

ö

ø÷

2 ex - 3 sin x + e

(x-1)

3 5 lg (x+4) – 15

4 ln x3 + tg x

2

5 10 (15 log2 x +10 log2 x3)

6 x! / ln (x+x4)

7 x!+(x-1)!

8 x!/((x-1)!)

9 .)sin2ln( xy =

10 .cossin xxey -=

11 ).cosln(sin xxy -=

12 .)cos2ln( xy -=

13 .

2

cossin xxy

+=

14 .

)cos(sin

12xx

y-

=

15 .)3()2( 3 23 2 +-+= xxy

16 .)52( )2(2 +-+= xexy

17 .

3

3

x

ey

x

-=

-

Page 49: Київ - ahv.kpi.ua

49

18 .3

3ln2 -

+=

x

xy

19 .)12( )1(2 xexy --=

20 .1

6ln -

+=

x

xy

21 .

4ln33

+-=

x

xy

22 .

23

42xx

y-+

=

23 .

2

2

÷ø

öçè

æ

+-=

x

xy

24 .

42

)1(42

2

++

+=

xx

xy

25 .

)1(

962

2

-

+-=

x

xxy

26 .

4

8

2

2

-

--=

x

xy

27 .

42

13222

23

x

xxxy

-

--+=

28 .

14

342

3

-

-=

x

xxy

29 y= x2 - 4x- (x- 2)ln(x-1)

30 y= 2 ln(x+1)- 2x+ x2 +1

Page 50: Київ - ahv.kpi.ua

50

Контрольні запитання

1. З яких основних компонентів складається Ваш ВП?

2. Які прийоми використання циклу While Ви знаєте?

3. Як виміряти температуру з інтервалом 30 с протягом 2 хв?

4. Як і навіщо використовуються зсувні регістри в ВП?

5. Як додати 1 до значення лічильника ітерацій після завершення ви-

конання циклу?

6. Назвіть елементи циклу For.

7. Назвіть елементи циклу While.

8. Опишіть необхідність ініціалізації регістрів зсуву.

9. Як ви можете контролювати швидкість, з якою цикл виконується?

10. У чому різниця між використанням терміналів умови «Stop if

True» та «Continue if True» у циклі While Loop?

Page 51: Київ - ahv.kpi.ua

51

3. СТРУКТУРИ Sequence і Case

Мета роботи: придбання навиків програмування структур Sequence і

Case в середовищі LabVIEW.

Умовний оператор Case Structure

Умовна структура (Case Structure) є багатошаровою керованою стру-

ктурою. Шлях до структури: Functions\Structures\Case. Управління викону-

ється через селектор (мітка «?»), який є на рамці структури. Селектор мож-

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

лектор може керуватися, за умовчуванням, булевими даними True/False,

або цифровими чи строковими даними. У структура Case містить не менше

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

Управління задається або вручну (Controls\Boolean) або як результат вико-

нання логічних операцій. При пуску програми виконується підпрограма

того аркуша структури, позначення якого відповідає поточному значенню

функції селектора.

Якщо потрібна кількість керованих підпрограм більше двох, то при

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

цьому випадку до мітки селектора “?” на рамці структури підключають не

булевий елемент, а, наприклад, числовий задатчик. Після підключення за-

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

на цифрове.

Page 52: Київ - ahv.kpi.ua

52

Block Diagram

Рис. 4.1

За допомогою контекстного меню на рамці структури опціями «До-

дати аркуш» («Add Case After») або «Додати аркуш» («Add Case Before»)

додається аркуш після або перед відкритим аркушем. Таким чином, можна

додати необхідну кількість аркушів структури. Відкритий аркуш видаля-

ється опцією «Видалити аркуш» («Remove Case»). Слід зазначити, що при

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

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

програми виконується підпрограма того аркуша, номер якого вказує у ни-

нішній момент датчик чисел селектора.

Page 53: Київ - ahv.kpi.ua

53

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

ням булевої функції. Структура має два аркуші, позначені значеннями бу-

левої функції: True і False (Рис. 4.1).

Елементом схеми, що управляє, є елемент порівняння «0». При ви-

конанні даної умови на селектор поступає значення булевої функції «True»

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

нойменним позначенням. Якщо задане число “<0”, змінна селектора набу-

ває значення False і з цього кроку виконується програма іншого аркуша

(False), де на індикатор видається константа “ 99999” і виводиться однок-

нопочне діалогове вікно (Functions\Time&Dialog\One Button Dialog) з на-

писом, заданою строковою константою (Functions\String\String Constant).

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

ням чисел (номерів листів структури).

Block Diagram

Page 54: Київ - ahv.kpi.ua

54

Рис. 4.2

На рис. 4.2, структура має три аркуші (0, 1 та 2).

При виклику касетної структури, вона має вигляд структури для

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

числовий задатчик, позначення листів змінюється на цифрове, але як і ра-

ніше залишається два аркуші: нульовий і перший. При відкритому першо-

му аркуші другий аркуш додається з контекстного меню опцією «Додати

аркуш після» («Add Case After»).

На цих листах відповідно розташовані операції обчислення абсолют-

ної, відносної та приведеної похибки приладу. На виході є один індикатор,

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

Управління роботою підпрограм, розташованих на трьох листах, здійсню-

Page 55: Київ - ahv.kpi.ua

55

ється вручну за допомогою задатчика “Вибір”, підключеного до селектора.

Для того, щоб зробити задатчик цілочисельним, необхідно на панелі діаг-

рами викликати контекстне меню задатчика, пункт “Representation” (пред-

ставлення). У полі, що з'явилося, обрати тип «Integer 8 bit» “[I8]”.

Якщо задати задатчику "0", то після пуску програми виконувати-

меться підпрограма нульового аркуша. Підпрограми першого і другого ли-

стів виконуватися не будуть. Внаслідок чого на індикаторі з'явиться зна-

чення абсолютної помилки. При зміні значення на задатчику буде викону-

ватися програма на відповідному аркуші.

Для коректної роботи структури необхідно вказати, який аркуш ви-

конувати, якщо число на задатчику не відповідає жодному з номерів арку-

шів (наприклад, «5»). Для цього одному з аркушів структури присвоюють

статус «Default» («за умовчуванням») за допомогою пункту контекстного

меню «Make This The Default Case».

Послідовна структура (Sequence Structure)

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

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

ються на окремому аркуші або сукупності аркушів структури.

Виклик структури здійснюється за шляхом

Functions\Structures\Sequence. Після виклику, структура містить однин ар-

куш. Для додавання листів до структури використовують контекстне ме-

ню, пункти «Add Frame After» та «Add Frame Beforе» – додати аркуш після

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

куша вказується номер поточного аркуша. «Перегортати» аркуші можна

або за допомогою лівої і правої стрілки біля індикатора, або за допомогою

контекстного меню «Show Frame».

Page 56: Київ - ahv.kpi.ua

56

На кожному аркуші створюється своя схема (підпрограма), що може

бути не пов'язана (або зв'язана) зі схемами на інших аркушах.

Зв'язок із зовнішніми об'єктами здійснюється крізь «тунелі» на рамці

структури. Тунель має вигляд чорного прямокутника, якщо з'єднання

зроблено вірно. Білі тунелі сигналізують про неправильне або відсутність

з'єднання. Тунель утворюється на рамці природним чином при з'єднанні

зовнішнього і внутрішнього елементу котушкою.

Тунель утворюється в будь-якому місці рамки, якщо з'єднати зовні-

шній або внутрішній елемент схеми з місцем рамки, де розташовувати-

меться майбутній тунель. Тунелі діють на всіх аркушах (до них можна під-

ключатися на будь-якому аркуші); сигнал від джерела до приймачів може

поширюватися у напрямі збільшення номерів аркушів.

Зв'язок внутрішніх об'єктів, розташованих на різних аркушах, здійс-

нюється за допомогою локального переходу (Sequence Local), який викли-

кається контекстним меню за допомогою опції «Додати локальний пере-

хід» («Add Sequence Local»). Локальний перехід у вигляді жовтого квадра-

тика з'являється з внутрішньої сторони рамки біля того місця рамки, на яке

направлений покажчик миші. З'єднання «локальний перехід» пронизує всі

листи блокнота, але на попередні листи не поширюється, тому до конкрет-

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

викликаний, і на подальших за ним листах. Важливо відзначити, що лока-

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

лише у напрямі збільшення номера листів.

Рекомендується спочатку до локального переходу підключати дже-

рело сигналу, після чого на всіх листах, де діє перехід, на нім з'являється

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

ють бути вироблені з'єднання на інших листах.

Page 57: Київ - ahv.kpi.ua

57

На рис.4.3 показаний приклад структури Sequence. На екрані зобра-

ження схеми представлене в компактному вигляді – всі листи накладені

один на одний. При друці принтер роздруковує всі аркуші багатошарових

структур.

Рис. 4.3

З одним зовнішнім об'єктом структуру зв'язує тунель, що пронизує

всі аркуші. Цей зовнішній об'єкт може бути підключений до структури на

будь-якому аркуші — це ніяк не відіб'ється на роботі структури, оскільки

тунель передає сигнали в обох напрямах. Для з'єднання внутрішніх елеме-

нтів структури, розташованих на різних листах використовуються локаль-

ний перехід.

Enum (перелік)

Для реалізації та програмної обробки списків вибору, наприклад, для

днів тиждня або календарних місяців, використовують тип даних Enum,

enumerated type (перелік). У цьому типі даних кожному елементу переліку

присвоюється додатне число в діапазоні 0...n, що дозволяє обробляти дані

в алгоритмі незалежно від типу запису.

Page 58: Київ - ahv.kpi.ua

58

Для цього в LabVIEW використовуються елементи-кільця «Ring» та

Enums. Відповідні вхідні і вихідні елементи знаходяться у Controls\ Ring &

Enum і відповідні константи у палітрі Functions\ Numeric.

За допомогою елементів управління «Ring» можна створити списки

вибору для тексту з зображеннями, або тільки тексту або тільки для зобра-

жень (Text Ring, Pict Ring, Text & Pict Ring). Кожен елемент пов'язаний з

додатним числом типу даних U16. Приклад програми, у якій може бути

обрана функція зі списку (Sinus, Cosinus, Tangens, Cotangens), показаний

на рис 4.4.

Рис 4.4 Використання Ring Controls

При підключенні до Ring типу Control елементу керування Case ви-

бір здійснюється залежно від обраного пункту Ring. При цьому назви пун-

ктів у Ring мають сенс тільки для користувача, оскільки на вихід Ring ви-

дається тільки відповідне числове значення.

Page 59: Київ - ahv.kpi.ua

59

У порівнянні з Ring-типами типи Enums мають у LabVIEW велику

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

ні від 0... n, типу даних U16 і на вихід передається ім'я обраного елемента.

На рис. 4.5 показаний приклад, який функціонально ідентичний рис. 4.4.

Рис. 4.5 Використання Enum Controls

З поля вибору Enum передається не тільки число, що відповідає об-

раному значенню, а також і текст елементу списку. Це дозволяє створюва-

ти більш складні програмні структури і значно поліпшує читаність.

Навігація по різних варіантах вибору спроститься і буде простіше

зробити зміну програми, тому що прив'язка кожного варіанту вибору від-

бувається за допомогою рядка, а не за допомогою чисельного значення.

Таким чином, слід по можливості при програмуванні використовувати

Enum.

Перетворення формату між переліком і рядком потрібно у випадку,

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

Page 60: Київ - ahv.kpi.ua

60

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

казаний на рис. 4:6.

Рис. 4.6 Перетворення форматів між Enums та Strings

У верхній частині рис. 4.6 за допомогою функції «Format Into String»

обраний елемент переліку Enums на виході функції представлений у ви-

гляді рядка. У нижній частині рис. 4.6 функція «Scan From String» порів-

нює вхідний рядок з елементами переліку Enums і забезпечує на виході

функції знову перелік Enums, в якому вхід, який відповідає вхідному ряд-

ку, є обраним.

У випадку, коли для вхідного рядка ніякого еквівалента в переліку

Enum не знайдено, LabVIEW відображає вікно з повідомленням про поми-

лку. У Enum на виході функції буде обраний перший запис.

Page 61: Київ - ahv.kpi.ua

61

ЗАВДАННЯ

Використовуючи CASE структуру написати програму, яка дозволяє:

1. Залежно від вибору, що здійснюється цифровим задатчиком,

будувати графік cos(x), sin(x) або x2.

2. Залежно від вибору, що здійснюється текстовим задатчиком,

будувати графік cos(x) 2, sin(x)

2 або x

3.

3. Виводити текстове персональне вітання в однокнопочному ві-

кні, залежно від введеного імені користувача. Наприклад: «Даша» - «Гар-

ного дня, Дашенька!», «Іван» – «Servus!»

4. побудувати графік функції

=

10,sin

105,

5,0

xx

xx

x

y ;

5.побудувати графік функції

=

10,0

105,1

5,0

x

x

x

y ;

6.побудувати графік функції

=

2,cos10

2,sin10

,0

xx

xx

x

y ;

7.побудувати графік функції

+

=

15,22

1510,10

10,0

xx

x

x

y ;

8. побудувати графік функції

9. побудувати графік функції

Page 62: Київ - ahv.kpi.ua

62

10. побудувати графік функції

11. побудувати графік функції

12. побудувати графік функції

13. Генеруємо випадкове ціле число від -9 до 9. Якщо воно є додат-

нім - додати до нього 1; якщо від'ємним - відняти від нього 2; якщо нуль,

то замінити його на 12.

14. . Генеруємо 40 випадкових цілих чисел від -12 до 12. В залежнос-

ті від діапазону в який потрапляє число, записуємо його у один з 4 масивів.

Діапазони (-12,-3), (-2,1), (2,5), (6,12).

15. Дано два числа (a, b). Обчилити занчення «с» за формулою: a + b,

якщо а – непарне і a * b, якщо а – парне.

16. Дано цілі числа a, b, c. Якщо a <= b <= c, то всі числа замінити їх

квадратами, якщо a> b> c, то кожне число замінити найбільшим з них, в

іншому випадку змінити знак кожного числа.

17. Вивести у тексовій формі номер чверті в якій належить точка з

координатами (x, y), за умови, що x і y відмінні від 0.

18. Дано три цілих числа, знайти середнє з них. Середнім назвемо

число, яке більше найменшого з даних чисел, але менше максимального.

Page 63: Київ - ahv.kpi.ua

63

19. Генеруємо 20 випадкових чисел. Порівнюємо попарно два числа і

в одновимірному масиві записати '1', якщо вони відрізняються не більше

ніж на 20, інакше записати "0".

20. Дано номер місяця. Вивести в однокнопочному вікні назву пори

року (весна, літо і так далі) або слово 'Помилка', якщо місяця з таким но-

мером не існує.

21. Дано цілочисельні координати точки на площині. Вивести в од-

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

22. Дано цілочисельні координати точки на площині. Якщо точка

збігається з початком координат, то вивести в однокнопочному вікні «по-

чаток координат». Якщо точка не збігається з початком координат, але ле-

жить на осі OX або OY, то вивести в однокнопочному вікні відповідне по-

відомлення. Якщо точка не лежить на координатних осях вивести «Точка

десь у площині».

23. побудувати графік функції

24. побудувати графік функції

25. Генеруємо випадкове число від 0 до 10. На екрані має світитися

відповідна кількість лампочок. (Число-імпульсний код. Числу 1 відповідає

1 лампа, 2 – 2 лампи, і т.д.).

26.Дано математичний вираз (секретний). При введенні відповіді на

запит з’являється повідомлення “Вірно” або “Помилка”. Це простий вид

паролю, коли поінформовані особи знають математичну операцію, а не ко-

Page 64: Київ - ahv.kpi.ua

64

дове слово. Наприклад, пароль «(х+10)/2», тоді у відповідь на запит «х=6»

відповідь має бути «8».

27. Дано число. Вивести в однокнопочному вікні повідомлення що

число “парне” чи “непарне”.

28. Дано число. Вивести в однокнопочному вікні повідомлення що

число “додатне” чи “від’ємне”.

29. Дано ціле число. Вивести в однокнопочному вікні повідомлення

що число “двозначне” чи “не двозначне”.

30. Дано два числа. Вивести у однокнопочному вікні повідомлення

про сумму та різницю цих чисел.

Page 65: Київ - ahv.kpi.ua

65

4. МАСИВИ І КЛАСТЕРИ

Мета роботи: отримання вмінь користування масивами та кластера-

ми в середовищі LabVIEW.

Масиви

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

ваної множини елементів одного типу. Масиви можуть бути різної розмір-

ності. Під розмірністю будемо розуміти кількість координат структури ма-

сиву.

Індекс елемента масиву показується в індексному дисплеї масиву

(Index Display). Елементом масиву може служити цифровий елемент

(Numeric), булевський елемент (Boolean), рядок (String) та інші, що викли-

каються з меню «Controls» на панелі контролю.

Створення масива.

На панелі управління вибрати Controls \ Array & Cluster \ Array і по-

містити значок масиву на передню панель. Потім вибрати тип елементів

масиву з перерахованих вище. Для цього на передній панелі вибрати, на-

приклад, Controls \ Numeric \ Digital Indicator і помістити значок індикатора

всередину поля масиву. Зображення індикатора масиву на діаграмі прийме

вигляд, відповідний заданому типу елементів.

Рис. 5.1

На панелі управління масив зображується у вигляді таблиці, розміри

якої можна змінювати розтягуванням. Індексний дисплей показує індекс

Page 66: Київ - ahv.kpi.ua

66

поточного елемента масиву, обраного для перегляду. Поточний вибір зо-

бражується у лівому верхньому куті масиву.

Для збільшення розмірності масиву необхідно виділити масив і в

контекстному меню вибрати пункт Add Dimension - з'явиться ще один ін-

дексний дисплей. Поле вікна масиву можна розтягувати до необхідних ро-

змірів, причому кількість відображуваних елементів масиву не пов'язано з

його істинної розмірністю.

Рис. 5.2

Створимо масив Control і підключимо його до масиву Indicator. З'єд-

наємо їх між собою. Запустивши програму на циклічне виконання можна

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

Control.

Рис. 5.3

Створимо більш складну програму, яка реалізує заповнення масива

даними, отриманими від датчика температури, а також робить аналіз отри-

маних даних.

Front Panel

Page 67: Київ - ahv.kpi.ua

67

Block Diagram

Рис. 5.4

Тут використано імітатор цифрового термометра (Digital Termometr),

який знаходиться в меню Function \ Tutorial \. Виходом цього інструменту є

значення температури в градусах Цельсія або Фаренгейта (залежно від вхі-

дного параметра: True - Цельсія, False - Фаренгейта).

Інструменти Array size (розмір масиву) і Max & Min (максимальне і

мінімальне значення) знаходяться в меню Function \ Array. За допомогою

інструменту Mean (математичне очікування) обчислюється математичне

сподівання значення температури.

Page 68: Київ - ahv.kpi.ua

68

Приклад: Створення багатовимірних масивів

Дво- та багатовимірні масиви можуть бути створені за допомогою

автоматичної індексації, якщо використати вкладені цикли. Розглянемо ге-

нерацію таблиці ASCII, 256 символів якої можуть бути представлені в дво-

вимірному масиві з 16 рядків і 16 стовпців (рис. 5.5).

Рис. 5.5

Для генерації таблиці ASCII достатньо двох вкладених циклів For

loop, кількість ітерацій у кожному дорівнює 16 (фіг. 5.5). Для створення

одного символу зсувний регістр першого циклу ініціалізується нулем, і на

кожній ітерації значення регістра зсуву збільшується на одиницю. Отже, в

цілому генеруються цілі числа в діапазоні від 0 до 255. Ці цілі числа з до-

помогою функції «Type Cast» (перетворення типу) можуть бути перетво-

рено в рядки. Внутрішній цикл генерує відповідний одновимірний масив з

16 елементів (стовпців) і зовнішній цикл розташовує ці одновимірні маси-

ви поряд, щоб сформувати двовимірний масив з 16 рядків.

Звичайно, це завдання можна реалізувати і інакше.

Приклад з використанням функції «Reshape Array» показана на рис.

5.6. Тут зпершу в циклі створюється одновимірний масив, який містить всі

Page 69: Київ - ahv.kpi.ua

69

256 символів ASCII. Згодом, одновимірний масив перетворюється у дво-

вимірний масив з 16 рядків і стовпців за допомогою функції «Reshape

Array».

Рис. 5.6

За допомогою функції «Byte Array To String» існує альтернативна

можливість перетворення формату при генерації таблиці ASCII (рис 5.7).

Викоистовуємо перетворення цілого числа в рядок, використовуючи масив

байтів. Перш ніж обробляти значення лічильника ітерацій «і» у форматі

І32 перетворюємо його у формат U8.

Рис. 5.7

Page 70: Київ - ahv.kpi.ua

70

Кластери

У LabVIEW, як у мові «Сі» та інших мовах програмуваня, під клас-

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

тери відрізняються від масивів наявністю у кластерах різного типу даних.

Як і масив, кластер є структурою, яка групує дані. Однак на відміну

від масиву кластер може групувати дані різних типів (логічні, числові і т.

д.). Об'єднання декількох груп даних в кластер усуває безлад на блок-

діаграмі і зменшує кількість полів вводу / виводу даних, необхідних підп-

рограмі ВП. Максимально можлива кількість полів вводу / виводу даних

одного ВП складає 28. Якщо лицьова панель містить більше 28 елементів,

які необхідно використовувати в ВП, можна деякі з них об'єднати у клас-

тер і зв'язати кластер з полем вводу / виводу даних.

Так само як масиви і багато інших елементів, кластери по функціо-

нальному призначенню можуть бути керуючими елементами (задатчика) і

керованими елементами (приймачами, індикаторами), однак кластер не

може одночасно містити елементи управління і відображення даних. Без-

посередня передача даних від кластера-задатчика до кластеру-приймачу

можлива тільки для кластерів, тотожних за типами елементів і кількісним

складом і типів та елементів.

Зв'язка (збірка) кластерів виконується аналогічно побудові масиву.

Кластер викликається через Controls \ Array & Cluster \ Cluster. У обрамле-

ний рамкою квадрат кластеру заносять його елементи. Елементи вибира-

ють з меню «Controls».

Page 71: Київ - ahv.kpi.ua

71

Рис. 5.8

Рядок-задатчик або рядок-приймач викликаються відповідно за адре-

сою: Controls \ String & Table \ String Control або String Indicator.

При необхідності прибрати елемент з кластера його переміщають за

межі рамки кластеру мишею.

Як вже зазначалося, кластери можуть бути як задатчиками, так і

приймачами. На контрольної панелі при виклику з'являється порожня рам-

ка кластера-задатчика. Але функціональне призначення кластера (задатчик

або індикатор) встановлюється автоматично з функціональної приналеж-

ності першого внесеного в кластер елементи: якщо перший внесений еле-

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

чика і навпаки. Всім іншим внесеним елементам кластера, незалежно від їх

приналежності до задатчіків або індикаторів, буде надано функціональне

призначення кластеру автоматично. Таким чином, всі елементи кластеру-

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

На будь-якій стадії складання кластера його функціональне призначення

можна змінити на протилежне за допомогою меню кластера, що виклика-

ється ПКМ, опцією Change to Indicator (Control). Одночасно і автоматично

змінюється функціональне призначення всіх елементів кластера.

До пуску схеми всі елементи кластеру-задатчика повинні мати необ-

хідні значення, всі елементи кластеру-приймача можуть мати будь-які зна-

Page 72: Київ - ahv.kpi.ua

72

чення, в тому числі і залишатися порожніми, тобто мати значення, прийня-

ті для них за замовчуванням.

Кластер можна збирати програмно. У цьому випадку він виступає в

ролі приймача, а його елементи, кожен за своїм каналом, отримують зна-

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

дача інформації від елементів до кластеру вимагає застосування двокана-

льного зв'язку (Bundle): Functions \ Array & Cluster \ Bundle.

Від кластера-задатчика інформацію можна передавати кластеру-

приймачу безпосередньо, з'єднавши їх напряму. Але в цьому випадку оби-

два кластеру повинні бути тотожні за типом елементів і їх кількісним

складом. Наприклад, на рис. при запуску програми інформація від задат-

чика (Cluster) переписується в приймач (Cluster2), елементи якого перед

запуском були порожніми.

Front Panel

Block Diagram

Page 73: Київ - ahv.kpi.ua

73

Рис. 5.9

Розв'язка (розбирання) кластерів

Процедуру виділення з кластерів елементів будемо називати розв'яз-

кою або розбиранням кластеру. Розбирання кластера виконується за допо-

могою блоку Unbundle (Functions \ Array & Cluster \ Unbundle) або блоку

Unbundle by Name. У першому випадку виділення елементів кластера від-

бувається в тому ж порядку в якому вони були поміщені в кластер при йо-

го створенні. При використанні блока Unbundle by Name - "розв'язка за

ім'ям" – в рядках блоку з'являються імена елементів знаходяться в кластері.

В обох випадках можливе виділення не всіх, а лише деяких елементів кла-

стера.

Комбінуючи розв'язку і зв'язку кластерів можна вносити зміни в

елементи кластеру.

Побудуємо графік Waveform Graph зміни параметра в часі викорис-

товуючи кластерну структуру. Кластер повинен містити масив значень

змінної, початковий час і крок за часом.

Front Panel

Page 74: Київ - ahv.kpi.ua

74

Block Diagram

Рис. 5.10

Завдання

1. Створити двомірний масив, що складається з трьох рядків і 4-х

стовпців. Відсортувати перший рядок за зростанням, знайти максимальний

та мінімальний елемент у третьому рядку і замінити їх нулями. Вивести

результати на екран. Побудувати графік залежності елементів 2-го рядка

від елементів 3 й.

2. Створити двомірний масив, що складається з двох рядків і шести

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

елементів двовимірного масиву у відповідному стовпці. Відсортувати

отриманий масив за зростанням, знайти максимальний та мінімальний

елементи.

Page 75: Київ - ahv.kpi.ua

75

3. Створити кластер, що містить номер бригади, прізвища членів

бригади у вигляді масиву рядків, поточну дату і час, отримані від машин-

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

4. Створіть ВП, який повністю змінює порядок елементів у одномір-

ному масиві, що містить 10 випадкових чисел. Наприклад, елемент масиву

з індексом 0 стає елементом масиву з індексом 9, а елемент масиву з індек-

сом 1 стає елементом масиву з індексом 8, і так далі.

5. Створіть ВП, який генерує одновимірний масив і потім попарно

перемножує елементи, починаючи з елементів з індексами 0 і 1 і т.д., а по-

тім виводить результати в масив елементів відображення даних. Напри-

клад, вхідний масив має значення {1, 23, 10, 5, 7, 11}, а в результаті вихо-

дить масив {23, 50,77}.

6. Створіть ВП, який генерує одновимірний масив що містить 80 ви-

падкових чисел, і видає частина масиву, починаючи з індексу a до індексу

b, а і b задаються користувачем. На лицьову панель вивести масив випад-

кових чисел і отриманий масив.

7. Створіть ВП, який генерує одновимірний масив випадкових чисел

до тих пір, поки не натиснута кнопка на лицьовій панелі. На лицьову па-

нель вивести отриманий масив і його розмірність.

8. Створіть ВП, який генерує двовимірний масив випадкових чисел,

що містить 3 рядки і 10 стовпців. Замінити в цьому масиві всі елементи го-

ловної діагоналі на їх квадрати. На лицьову панель вивести початковій і

отриманий масив.9. Створіть ВП, який генерує одновимірний масив випа-

дкових чисел і сортує отриманий масив в порядку зростання. На лицьову

панель вивести масив випадкових чисел, відсортований масив та кількіть

елементів масиву.

Page 76: Київ - ahv.kpi.ua

76

10. Створіть ВП, який генерує одновимірний масив випадкових чи-

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

вий номер. Замінити цим значенням кожен 3-й елемент масиву.

11. Створіть ВП, який генерує одновимірний масив випадкових чи-

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

номер. Замініть цим значення останні 4 елементи масиву.

12. Створіть ВП, який генерує двовимірний масив випадкових чисел,

що містить 4 рядки і 5 стовпців. Кожний 2-й елемент масиву замінити на

його квадратний корінь

13. Створіть ВП, який генерує одновимірний масив (15 елементів),

що складається з елементів ряду Фабоначчі.

14. Створіть ВП, який генерує двовимірний масив випадкових чисел

розмірністю 5 × 6, і видає частину цього масиву розмірністю 3 × 5. На ли-

цьову панель вивести вихідний масив випадкових чисел і початковий ма-

сив масив

15. Створіть ВП, який генерує одновимірний масив (4 елементів),

Кожен елемент якого є значенням факторіалу попереднього елементу (пе-

ршим елементів встановити 3).

16. Створіть ВП, який генерує двовимірний масив випадкових чисел

розмірністю 5 × 6. Виконати заміну елементів у кожному стопці. Напри-

клад, елемент стовпця з індексом 0 стає елементом стовпця з індексом 5, а

елемент стовпця з індексом 1 стає елементом стовпця з індексом 4, і так

далі.

17. Створіть ВП, який генерує одновимірний масив випадкових чи-

сел до тих пір, поки мінімальний елемент масиву не стане рівним числу,

введеному в елемент управління на лицьовій панелі.

Page 77: Київ - ahv.kpi.ua

77

18. Створіть ВП в якому генерується масив з 20 випадкових цілих

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

сиву, діляться на перший елемент.

19. Створіть ВП в якому всі елементи масиву А=(а1,а2,...,аn),

наступні за елементом, що дорівнює max(а1,а2,...,аn), множаться на

max(а1,а2,...,аn).

20. Створіть ВП в якому всі парні елементи масиву А=(а1,а2,...,аn)

замінити їх квадратами.

21. Створіть ВП в якому заданий масив А=(а1,а2,...,аn). Побудувати

масив В, кожний елемент якого обчислюється за формулою bi=i*ai2. Зна-

чення і вводиться на лиьовій панелі.

22. Створіть ВП в якому в початковому масиві А=(а1,а2,...,аn),

поміняти місцями максимальний і мінімальний елементи масиву.

23. Створіть ВП в якому генерується масив випадкових чисел [-

10,10]. Всі додатні числа зменшити на число М=3.

24. Створіть ВП в якому підрахувати кількість елементів масиву

А=(а1,а2,...,аn), що відповідають умові ak2<k

2

25. Створіть ВП в якому заданий масив з 10 чисел. Всі його нульові

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

вий і змінений масив.

26. Створіть ВП в якому заданий масив А=(а1,а2,...,аn) та число Р.

Треба побудувати масив, кожний елемент якого обчислюється за прави-

лом bi=ai, якщо ai>Р, bi=P, якщо ai Р.

27. Створіть ВП в якому задані масив А=(а1,а2,...,аn) та В=(в1,в2,...,

вn). Треба побудувати масив C, кожний елемент якого обчислюється за

правилом ci =bi+ai

28. Створіть ВП в якому необхіно знайти мінімальний елемент серед

парних елементів масиву А=(а1,а2,...,аn)

Page 78: Київ - ahv.kpi.ua

78

29. Створіть ВП в якому заданий масив А=(а1,а2,...,аn). Обчислити

суму елементів масиву, які не менші деякого числа Р.

30. Створіть ВП в якому задані масив А=(а1,а2,...,аn) та В=(в1,в2,...,

вn). Треба побудувати масив C, кожний елемент якого обчислюється за

правилом ci=(bi+ai)2

Контрольні питання

1. З яких основних компонентів складається Ваш ВП?

2. Які типові прийоми створення масиву констант Ви знаєте?

3. Які функції роботи з масивами Ви знаєте?

4. Що таке поліморфні функції?

5. Як створити багатомірний масив?

6. Які функції створення масивів Ви знаєте?

7. Як створити двовимірний масив в циклі For?

8. Як об'єднати два одновимірних масиву в двовимірний масив?

9. Як об'єднати два одновимірних масиву в більш довгий масив тієї ж

розмірності?

10. Яке призначення елемента Старт підмножини в підпрограмі ВП?

11. Яка функція генерує випадкове число в межах від 0 до 1?

12. Як вибирається кількість елементів підмножини в підпрограмі

ВП?

13. Що розуміється під терміном «Кластер»?

14. Які типові прийоми створення кластерів Ви знаєте?

15. Які функції відображення кластерів Ви знаєте?

16. Як створити кластер на лицьовій панелі?

17. Як збираються і демонтуються кластери?

18. Які функції обробки кластерів Ви знаєте?

19. Що таке поліморфізм у кластерах?

Page 79: Київ - ahv.kpi.ua

79

20. Яке основна відмінність кластера від масиву?

21. Який порядок розміщення елементів в кластері?

22. Як подивитися і змінити порядковий номер об'єкта, поміщеного в

кластер?

23. Як змінити кількість полів вводу / виводу в кластері?

24. Як встановлюють розмір кластера?

Page 80: Київ - ahv.kpi.ua

80

5. ВІРТУАЛЬНІ ОСЦИЛОГРАФИ

Мета роботи: : отримання вмінь користування віртуальними осцило-

графами в середовищі LabVIEW.

Типи віртуальних осцилографів

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

личин здійснюється віртуальними осцилографами (Graph), які виклика-

ються з панелі управління за маршрутом: Controls \ Graph \. Меню містить

9 типів осцилографів:

1 Waveform Chart

2 Waveform Graph

3 XY Graph

4 Intensity Chart

5 Intensity Graph

6 Digital Waveform Graph

7,8,9 3-D Graph`s

Після виклику відповідного осцилографа на лицьовій панелі виникає

зображення екрана осцилографа з двома додатковими елементами управ-

ління: один розташовується у правого верхнього кута – редактор графіків

(Legend), другий пульт розташовується під екраном – редактор режимів

(Palette). На панелі діаграми з'являється символ осцилографа. Осцилограф

є приймачем сигналу, тому його зображення є входом, про що свідчить то-

нка лінія контурного прямокутника. Екран осцилографа і його зображення

на діаграмі з'являються разом з мітками, куди рекомендується відразу ж з

клавіатури внести текст мітки для позначення осцилографа.

Page 81: Київ - ahv.kpi.ua

81

Вибір відповідного осцилографа залежить від мети дослідження, ре-

жиму роботи, елементів схеми. Осцилографи 1, 2 і 3 мають екран з двома

координатами і докладно розглядаються нижче. Осцилографи 4 і 5 мають

екран з трьома координатами і в даній роботі не розглядаються.

Спочатку дамо коротку характеристику осцилографам Waveform

Chart, Waveform Graph, XY Graph. Waveform Chart дозволяє спостерігати

часові залежності сигналів, вісь абсцис градуюється номерами вибірок.

Waveform Chart зображує дані у міру того, як вони надходять на його вхід.

Waveform Chart може запам'ятовувати (або накопичувати) дані: при ново-

му запуску програми осцилограф зберігає попередню інформацію, виво-

дить її на екран. Після очищення екрана користувачем (див. Меню осцило-

графа) процес накопичення інформації на екрані починається знову. Осци-

лограф Waveform Chart може бути і багатопроменевим і багатоекранним.

Рис. 6.1 Осцилограф Waveform Chart:

1 – назва (Label); 2 – шкала Y (Y - scalе); 3 – шкала X (X - scale); 4 – панель

управління шкалами (Scale legend); 5 – палітра інструментів для роботи з

графіком (Graph palette); 6 – панель управління графіком (Plot legend)

Page 82: Київ - ahv.kpi.ua

82

Осцилограф Waveform Graph також дозволяє спостерігати часові за-

лежності сигналів, тобто вісь абсцис його екрану також проградуйована

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

ний осцилограф є аналогом реального осцилографа з періодичною розгор-

ткою. Осцилограф реєструє процес за час одного пуску програми. При но-

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

раф Waveform Graph може бути багатопроменевим. На вхід Waveform

Graph можна подати функцію від часу, тоді необхідно сформувати класте-

рну структуру (із використанням Bundle) яка складається з початкового

значення координати х, прирощення dx і масиву значень y.

Рис. 6.2 Осцилограф Waveform Graph:

1 – панель керування властивостями графіків (Plot legend); 2 – курсор

(Cursor); 3 – основна розмірна сітка (Grid mark); 4 – додаткова розмірна сі-

тка (Mini-grid mark); 5 – палітра елементів управління графіком (Graph

palette); 6 – панель переміщення курсору (Cursor mover); 7 – панель керу-

вання властивостями курсору (Cursor legend); 8 – панель управління шка-

лою (Scale legend); 9 – шкала X (X - scale); 10 – шкала Y (Y - scale); 11 –

власна мітка графіка (Label)

Page 83: Київ - ahv.kpi.ua

83

На рис. 6.3 наведено приклади простих схем підключення Waveform

Chart та Waveform Graph.

Рис. 6.3 Схеми підключення Waveform Chart та Waveform Graph.

Показана на рис. 6.4 програма дозволяє відображати на осцилографи

два графіки одночасно в одній системі координат. Цикл For формує масиви

Page 84: Київ - ahv.kpi.ua

84

значень синуса і косинуса, які об'єднуються за допомогою блоку Build

Array (Function \ Array \).

Рис. 6.4 Відображення двох графіків в одній системі координат

Двокоординатний осцилограф XYGraph

XYGraph є двокоординатним осцилографом. Координатою «проме-

ня» осцилографа по горизонталі (х) і по вертикалі (у) керують два довіль-

них сигнали, які задає користувач.

Осцилограф може використовуватися для спостереження залежнос-

тей між змінними у часі сигналами x(t) і y(t). У програмі сигнали х і у

представлені не як функції реального часу x(t) і y(t), коли параметр t для

Page 85: Київ - ahv.kpi.ua

85

обох сигналів абсолютно однаковий, а як функції вибірок x(i) і y(i). Осци-

лограф XY-Graph, фактично, здійснює перехід від параметричної залежно-

сті F(x(i), y(i)) до функціональної залежності у(х). Для забезпечення точно-

сті переходу важливою умовою стає питання синхронізації в реальному

часі всіх вибірок з однаковими номерами «i»r. Для виконання цієї умови

необхідно, щоб вибірки з номером ik як для сигналу x(ik), так і для сигналу

y(ik) були зроблені водночас.

Front Panel

Block Diagram

Рис. 6.5 XY Graph

На рис. 6.5 зображено схему у якій використано блок Bundle

(Function\Clucter) який формує кластер. Кластер подається на вхід

Page 86: Київ - ahv.kpi.ua

86

XYGraph. Причому першим масивом в кластері буде масив «x» координа-

ти, потім «y» координата.

Побудова годографа АФХ може бути виконана на осцилографі XY

Graph. На рис. 6.6 наведено приклад побудови амплітудно-фазової частот-

ної характеристики. Представлена схема панелі діаграм із циклом For

Loop, де лічильник ітерацій «i» домножується на коефіцієнт 0,1 та викори-

стовується в якості змінної – частоти w.

Front Panel

Block Diagram

Рис. 6.6

Page 87: Київ - ahv.kpi.ua

87

При виконанні i-го кроку циклу значення функцій Re(w), Im(w) об'є-

днуються в кластер за допомогою блоку Bundle. На терміналі, що розташо-

ваний на виході циклу, формується одновимірний масив, кожним елемен-

том якого є кластер із парою значень Re(w) та Im(w). Для i = N виконання

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

ченням лічильника циклу i = N–1. Всього буде виконано N коків (і=0, 1, 2,

.., N–1). Сигнал верхнього входу Bundle управляє координатою «променя»

за віссю абсцис, сигнал нижнього входу управляє координатою «променя»

за віссю ординат. Зазначені функції є дискретними функціями і результа-

том виконання програми є N точок на екрані осцилографа (для наочності

кожна точка з'єднана з сусідньою у послідовності номерів вибірок).

Багатоекранний режим осцилографа Waveform Chart

При роботі з осцилографом Waveform Chart існує можливість ство-

рення на його основі багатоекранного осцилографа, коли кожен графік де-

кількох сигналів можна виводити на окремий екран. При цьому по осі Y

масштаб на кожному екрані встановлюється автоматично. Схема створен-

ня багатоекранного осцилографа така ж, як і багатопроменевого. На рис.

6.7 розглянуто приклад переробки осцилографа Waveform Chart в режим

двоекранного осцилографа.

Page 88: Київ - ahv.kpi.ua

88

Front Panel

Block Diagram

Рис. 6.7

Оскільки багатоекранний осцилограф є таким самим як і багатопро-

меневий осцилограф, але має кращий сервіс, функціональні схеми переве-

дення осцилографа Waveform Graph (або Waveform Chart) в багатопроме-

невий режим і схеми переведення осцилографа Waveform Chart в багатоек-

ранний режим можуть відрізняться тільки типом осцилографа. Наявність

відповідного генератора вихідних даних на вході осцилографів Waveform

Chart і Waveform Graph переводить їх у багатопроменевий режим.

Для створення багатоекранного осцилографа з осцилографа

Waveform Chart необхідно розтягнути редактор графіків до необхідної кі-

Page 89: Київ - ahv.kpi.ua

89

лькості (в даному прикладі до двох). Потім з контекстного меню осцилог-

рафа Waveform Chart викликати команду "додатковий екран" (Stack Plots).

В результаті виконання цієї команди замість одного екрану з'явиться стіль-

ки екранів, скільки графіків має редактор графіків. Екрани розташовуються

по вертикалі як і графіки редактора графіків. Після виконання команди

«Додатковий екран» (Stack Plots) кількість екранів можна змінювати шля-

хом розтяжки або стиснення редактора графіків на необхідну кількість

графіків. Кількість екранів не пов'язана з кількістю графіків і може бути

будь-яким. При рівності числа екранів і числа графіків графіки розташо-

вуються по одному на екрані відповідно до їх номерами. Якщо екранів ме-

нше, то на перших екранах розташовуються по одному перші графіки, а на

останньому екрані – решта всіх інших. Якщо екранів більше, тоді останні

екрани є зайвими і залишаються порожніми. Повернення до одного екрану

проводиться командою «Поєднання графіків» (Overlay Plots), яка змінила

команду «Додатковий екран» (Stack Plots) і перебуває в тій самій позиції,

або стисненням редактора графіків до однієї позиції (Plot 0).

Page 90: Київ - ahv.kpi.ua

90

Завдання:

1. Вивести на екран осцилографа криву перехідного процесу і оди-

ничний ступінчастий імпульс. Забезпечити можливість "прокрутки" зо-

браження і масштабування.

2 Створіть ВП, який генерує двовимірний масив випадкових чисел

розмірністю 5 × 10 і відображає на графіку рядки отриманого масиву

3 Створіть ВП, який генерує одновимірний масив випадкових чисел і

отримані значення виводить на графік. Також відображає апроксимацію

отриманих даних.

4 Створіть ВП, який генерує двовимірний масив випадкових чисел

розмірністю 11 × 4 і відображає на графіку стовпці отриманого масиву.

5 Створіть ВП, який генерує одновимірний масив випадкових чисел

в діапазоні від 0 до 100 (складається з 7 елементів) до тих пір, поки мініма-

льне значення масиву не стане рівним числу, введеному в елемент управ-

ління на лицьовій панелі. На лицьову панель вивести отриманий масив, йо-

го графік, мінімальний елемент і число ітерацій.

6 Створіть ВП, який генерує два одновимірних масиву випадкових

чисел, потім об'єднує ці масиви в двовимірний масив чисел і відображає на

графіку рядки отриманого масиву

7 Створіть ВП, який генерує одновимірний масив випадкових чисел

до тих пір, поки не натиснута кнопка на лицьовій панелі. На лицьову па-

нель вивести отриманий масив, його розмірність і графік

8 Створіть ВП, який на лицьовій панелі містить кластер, що склада-

ється з 10 числових елементів управління. На графіку відображуватимете

значення, введені з елементів управління

9 Створіть ВП, який генерує двовимірний масив випадкових чисел

розмірністю 5 × 6 і видає частина цього масиву розмірністю 4 × 5. На ли-

Page 91: Київ - ahv.kpi.ua

91

цьову панель вивести початковий масив випадкових чисел, отриманий ма-

сив і їх графіки

10 Створіть ВП, який генерує одновимірний масив випадкових чи-

сел {0, 1, 2} довжиною 100 елементів. Вивести на графік частоту появи чи-

сел {0, 1, 2} в масиві.

11 Створіть ВП, який генерує двовимірний масив випадкових чисел

розмірністю 3 × 7 і відображає на графіку рядки отриманого масиву

12 Створіть ВП, який генерує одновимірний масив випадкових чисел

в діапазоні від -10 до 40 (складається з 5 елементів) до тих пір, поки мак-

симальний елемент масиву не буде дорівнювати числу, введеному в еле-

мент управління на лицьовій панелі. На лицьову панель вивести отрима-

ний масив, його відображення на графіку, максимальний елемент і кіль-

кість ітерацій.

13 Створіть ВП, який генерує одновимірний масив випадкових чисел

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

масив випадкових чисел, відсортований масив і їх графіки

14 Створіть ВП, який генерує масив випадкових чисел розмірністю 5

× 6. Вивести на графі рядкки сумма елементів яких більша 50.

15 Створіть ВП, який генерує масив випадкових чисел розмірністю 3

× 4. Вивести на графі стовпчики сумма елементів яких більша 20.

16 Створіть ВП, який генерує масив випадкових чисел 5 × 6. Вивести

на графік рядки в яких міститься найбільший і найменьший елементи

17 Створіть ВП, який генерує масив випадкових чисел 5 × 5 Вивести

на графік елементи головної діагоналі

18 Створіть ВП, який кожні 20 секунд змінює функцию для побудо-

ви з синуса на косинус (Waveform Chart)

19 Створіть ВП, який генерує масив випадкових чисел 5 × 6. Вивести

на графік рядки які починаються з відємного елемента

Page 92: Київ - ahv.kpi.ua

92

20 Створіть ВП, який генерує масив випадкових чисел 5 × 6. Вивести

на графік найменьші елемнти кожного рядка.

21 Створіть ВП, який генерує масив випадкових чисел 5 × 6. Вивести

на графік найбільші елемнти кожного стовпчика.

22 Створіть ВП з масивом який має розмірність 5 × 6. Заповніть його

числами з діапазону [-10; 10]. Вивести на графік рядки з усіма додатніми

елементами.

22 Створіть ВП з масивом який має розмірність 5 × 6. Заповніть його

числами з діапазону [-10; 10]. Вивести на графік стовпчики з усіма

від’ємними елементами.

23 Створіть ВП, який генерує масив випадкових чисел 5 × 5 Вивести

на графік елементи нижче головної діагоналі.

24 Створіть ВП, який генерує масив випадкових чисел 2 × 8 Вивести

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

25 Створіть ВП, який генерує масив випадкових чисел 5 × 5. Кожні

20 секунд виводити на грфік наступний рядок масиву.

26 Створіть ВП, який генерує масив випадкових чисел 5 × 5. Вивес-

ти на графік рядок масиву, номер якого задається за допомогою елементу

Numeric Control

27 Створіть ВП, який генерує масив випадкових чисел 5 × 5. Вивести

на графік 5 найбільших елементів.

28 Створіть ВП, який генерує одновимірний масив випадкових чи-

сел. Вивести на графік парні елементи масиву

29 Створіть ВП, який генерує одновимірний масив випадкових чи-

сел. Вивести на графік елементи масиву кратні 3-м

30 Створіть ВП, який генерує масив випадкових чисел 5 × 6. Вивести

на графік лише додатні елементи.

Page 93: Київ - ahv.kpi.ua

93

Контрольні запитання

1. Назвіть основні елементи графіка Діаграм. Для чого він призначе-

ний?

2. Назвіть основні елементи графіка осцилограми. Для чого він приз-

начений?

3. Які режими відображення даних на графіку Діаграм Ви знаєте?

4. З якими даними працює графік безлічі осцилограмах?

5. Яка функція визначає середнє значення масиву?

6. Яка функція визначає мінімальне і максимальне значення масиву?

7. Який ВП служить для апроксимації графіка осцилограми у Вашо-

му ВП?

8. Як встановити певний стиль точок, колір і тип лінії на графіку?

Page 94: Київ - ahv.kpi.ua

94

Список рекомендованої літератури

1. Пейч, Л. И. LabVIEW для новичков и специалистов / Л. И. Пейч,

Д. А. Точилин, Б. П. Поллак. – М. : Горячая линия – Телеком, 2004. – 384 с.

2. Демирчяна, К. С. Использование виртуальных инструментов

LabVIEW / под ред. К. С. Демирчяна, В. Г. Миронова. –М. : Солон-Р; Ра-

дио и связь; Горячая линия – Телеком, 1999. – 268 с.

3. Учебный курс LabVIEW Express. Базовый курс 1. – М. : National

Instruments Corporation, 2003. – 354 с. (Электронная копия ni.com;

www.labview.ru).

4. Дивин, А. Г. Автоматизация измерений, контроля и испытаний :

лабораторный практикум. Ч. 1 : Основы работы впрограммной среде

LabVIEW // А. Г. Дивин, В. М. Жилкин, А. Д. Свириденко. – Тамбов : Изд-

во Тамб. гос. техн. ун-та, 2005. –44 с.

5. Автоматизация измерений, контроля и испытаний : учебное посо-

бие / С. В. Мищенко, А. Г. Дивин, В. М. Жилкин, С. В. Пономарев, А. Д.

Свириденко. – Тамбов : Изд-во Тамб. гос. техн. ун-та, 2007. – 116 с. – 100

экз. – ISBN 5-8265-0604-0 (978-5-8265-0604-2).

6. Загидуллин Р. Ш. LabVIEW в исследования и разработках. – М.:

Горячая линия-Телеком, 2005. – 352 с.: ил.

7. Бутырин П. А. Автоматизация физических исследований и экспе-

римента: компьютерные измерения и виртуальные приборы на основе

LabVIEW 7 / Под ред. Бутырина П. А. / П. А. Бутырин, Т. А. Васьковская,

В. В. Каратаев, С. В. Материкин. – М.: ДМК-Пресс, 2005. – 264 с.

8. Суранов А. Я. LabVIEW 7: Справочник по функциям / А. Я. Сура-

нов. – М.:ДМК-Пресс, 2005. – 512 с.

Page 95: Київ - ahv.kpi.ua

95

9. Тревис Дж. Labview для всех / Дж. Тревис, Дж. Кринг. –М.: ДМК

Пресс, 2011. – 904 с.

10. Васильев В. Г. Моделирование систем автоматического управле-

ния в программной среде LabVIEW / В. Г. Васильев. – Тверь, 2007. – 25 c.

11. Жуков К. Г. Модельное проектирование встраиваемых систем в

LabVIEW. –М.: ДМК Пресс, 2011. – 688 с.

12. Mütterlein, Bernward. Handbuch für die Pogrammierung mit

LabVIEW [mit Studentenversion LabVIEW 8.6]. – Heidelberg : Spektrum

Akademischer Verlag, 2009. – 516 S. – ISBN 978-3-8274-2337-5

Page 96: Київ - ahv.kpi.ua

96

Додаток 1. Numeric Data Types

Числа із плаваючою точкою в LabVIEW відповідають стандарту

ANSI/IEEE 754-1985. Є три типи чисел з плаваючою точкою.

Extended-precision (EXT) (підвищена точність)– При збереженні чис-

ла підвищеної точності на диску, LabVIEW зберігає їх у незалежному від

платформи 128-бітовім форматі, таким самим, як формат Sun для пам'яті. У

пам'яті, розмір і точність змінюються залежно від платформи.

Double-precision (DBL) (подвійна точність) – Число подвійної точно-

сті з плаваючою точкою має 64-бітний IEEE формат з подвійною точністю.

Формат подвійної точності є форматом за замовчуванням для числових

об'єктів.

Single-precision (SGL) (одинарна точність) –Числа з одинарною точ-

ністю з плаваючою точкою мають 32-бітний IEEE формат з одинарною то-

чністю.

У більшості випадків використовують числа з плаваючою точкою

подвійної точності. Числа з плаваючою точкою одинарної точності вико-

ристовують, коли важлива економія пам'яті і не будете перевищений діапа-

зон чисел. Числа з плаваючою точкою підвищеної точності використову-

ють тільки в разі потреби. Швидкодія і точність арифметичних операцій

підвищеної точності змінюється в залежності від платформи.

Integers представляють цілі числа і можуть бути додатними або відє-

мними. Є три типи чисел.

Long (I32) Long цілі числа мають 32 біта пам'яті.

Word (I16) Word цілі числа мають 16 бітів пам'яті.

Byte (I8) Byte цілі числа мають 8 бітів пам'яті.

У більшості випадків, краще використовувати довге ціле long integer.

Page 97: Київ - ahv.kpi.ua

97

Коли LabVIEW перетворює числа з плаваючою точкою в цілі числа,

VI округлює число до найближчого парного числа. Наприклад, 2,5 округ-

люється до 2, а 3,5 округлюється до 4.

Цілі числа без знака представляють тільки невід'ємні цілі числа і

мають більший діапазон додатних чисел, ніж цілі числа зі знаком, тому що

число бітів однакові для обох типів. (Беззнакові числа являють собою тіль-

ки позитивні цілі числа і мають те саме число бітів, як і цілі числа із зна-

ком.) Є три типи чисел без знака.

Long (U32) – Long беззнакові цілі числа мають довжину 32 біт.

Word (U16) – Word беззнакові цілі числа мають довжину 16 біт.

Byte (U8) – Byte беззнакові цілі числа мають довжину 8 біт.

Page 98: Київ - ahv.kpi.ua

98

Numeric Data Types Table

Тип числових даних Біт для збере-ження на диску

Приблизна кіль-кість знаків після коми

Приблизний діапазон

Extended-precision floating-point

128 змінюється від 15 до 33 в залежно-сті від платформи

Мінімальне додатне число: 6.48e-4966 Максимальне додатне число: 1.19e+4932 Мінімальне відємне число: -6.48e-4966 Максимальне відємне число: -1.19e+4932

Double-precision floating-point

64 15 Мінімальне додатне число: 4.94e-324 Максимальне додатне число: 1.79e+308 Мінімальне відємне число: -4.94e-324 Максимальне відємне число: -1.79e+308

Single-precision floating-point

32 6 Мінімальне додатне число: 1.40e-45 Максимальне додатне число: 3.40e+38 Мінімальне відємне число: -1.40e-45 Максимальне відємне число: -3.40e+38

Long signed integer

32 9 -2,147,483,648 до 2,147,483,647

Word signed integer

16 4 -32,768 до 32,767

Byte signed integer

8 2 -128 до 127

Long unsigned integer

32 9 0 до 4,294,967,295

Word unsigned integer

16 4 0 до 65,535

Byte unsigned integer

8 2 0 до 255

Complex extended-precision

256 змінюється від 15 до 33 в залежно-сті від платформи

Те саме, що для Extended-precision floating-point для кожної (дійсної та уяв-ної) частини

Complex double-precision

128 15 Те саме, що для double-precision floating-point для кожної (дійсної та уявної) час-тини

Complex single-precision

64 6 Те саме, що для single-precision floating-point для кожної (дійсної та уявної) час-тини

Page 99: Київ - ahv.kpi.ua

99

Додаток 2. Expression Node

Expression Node використовується для обчислення виразу або рів-

няння, які містять одну змінну. Expression Node корисні, коли рівняння має

тільки одну змінну і є складним. При створенні Expression Node можна ви-

користовувати будь-який тип даних.

Синтаксис Expression Node наводиться нижче з використанням фо-

рми Бекуса-Наура (пояснення див. далі). Квадратні дужки вказують на оп-

ціональні елементи.

<expr> : = <expr> <binaryoperator> <expr>

| <unaryoperator> <expr>

| <expr> ? <expr> : <expr>

| ( <expr>)

| <identifier>

| <const>

| <function> ( <arglist> )

<binaryoperator>:= + | - | * | / | ^ | != | = = | > | < | >= | <= |

&& | || | & | | | ^ | **

<unaryoperator>: = + | - | ! | ~

= op= assignment, shortcut operate and assignop can be +, -, *, /, >>, <<,

&, ^, |, %, or **.= op= is not available in Expression Nodes.

? : conditional evaluation

|| logical or

&& logical and

| bit or

^ bit exclusive or

& bit and

Page 100: Київ - ahv.kpi.ua

100

!= and == inequality, equality

>, <, >=, and <= greater, less, greater or equal, less or equal

>> and << shift right, arithmetic shift left

+ and - addition, subtraction

* and / multiplication, division

** exponentiation

+, -, !, ~, ++, and -- unary plus, unary negation, logical not, bit

complement, preincrement, postincrement, predecrement, postdecrement++ and

-- are not available in Expression Nodes.

The assignment operator = is right associative (groups right to left), as is

the exponentiation operator **. All other binary operators are left associative.

The numeric value of TRUE is 1, and FALSE is 0 for output. The logical

value of 0 is FALSE, and any non-zero number is TRUE. The logical value of

the conditional expression

<lexpr> ? <texpr>: <fexpr>

is <texpr> if the logical value of <lexpr> is TRUE and <fexpr> otherwise.

Page 101: Київ - ahv.kpi.ua

101

Нота́ція Бе́куса—Нау́ра (англ. Backus-Naur form, BNF) — це спосіб запису пра-

вил контекстно-вільної граматики, себто формою опису формальної мови.

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

мунікації. У 50-х роках минулого сторіччя Джон Бекус створив цю нотацію розробляючи мо-

ву ALGOL. На першому Всесвітньому Комп'ютерному Конгресі, що відбувся у Парижі 1959-го він

зробив доповідь на тему «Синтаксис та семантика пропонованої першої міжнародної алгебраїч-

ної мови». Пізніше Наур Пітер спростив її та (за порадою Дональда Кнута) додав до назви своє

ім'я.

БНФ визначає скінченну кількість символів (нетерміналів). Крім того, вона визначає пра-

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

нцюжка букв можна визначити поетапно: спочатку є один символ (символи зазвичай знаходять-

ся у кутових дужках, а їх назва не несе жодної інформації). Потім цей символ замінюється на

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

(на кожному кроці один із символів замінюється на послідовність, згідно з правилом). Зрештою ,

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

ланцюжок може бути виведений з початкового символу .

Запис

Нотація БНФ є набором «продукцій», кожна з яких відповідає зразку:

<символ> ::= <вираз, що містить символи>

де “вираз, що містить символи” це послідовність символів або послідовності символів, ро-

зділених вертикальною рискою |, що повністю перелічують можливий вибір “символ” з лівої ча-

стини формули.

Далі,

< — лівий обмежувач виразу

> — правий обмежувач виразу

::= — визначене як

| — або

Ці чотири символи є символами мета-мови, вони не визначені у мові, котру описують. Решта

описаних символів належать до «абетки» описуваної мови.

Приклади

Для прикладу подивимось на можливу нотацію BNF для поштової адреси:

<поштова-адреса> ::= <поштове-відділення> <вулична-адреса> <особа>

<поштове-відділення> ::= <індекс> ", " <місце> <EOL>

<місце> ::= <село> | <місто>

Page 102: Київ - ahv.kpi.ua

102

<вулична-адреса> ::= <вулиця> "," <будинок> <EOL>

<особа> ::= <прізвище> <ім’я> <EOL> | <прізвище> <ім’я>

<по батькові> <EOL>

Другий приклад, тут наведений один зі способів означити натуральні числа за допомогою БНФ.

<нуль> ::= 0

<ненульова цифра> ::= 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

<цифра> ::= <нуль> | <ненульова цифра>

<послідовність цифр> ::= <нуль> | <ненульова цифра> | <циф-

ра><послідовність цифр>

<натуральне число> ::= <цифра> | <ненульова цифра><послідовність

цифр>

Page 103: Київ - ahv.kpi.ua

103

Formula Node and Expression Node Functions

abs(x) Absolute Value Returns the absolute value of x. acos(x) Inverse Cosine Computes the inverse cosine of x in radians. acosh(x) Inverse Hyperbolic

Cosine Computes the inverse hyperbolic cosine of x in degrees.

asin(x) Inverse Sine Computes the inverse sine of x in radians. asinh(x) Inverse Hyperbolic

Sine Computes the inverse hyperbolic sine of x in degrees.

atan(x) Inverse Tangent Computes the inverse tangent of x in radians. atanh(x) Inverse Hyperbolic

Tangent Computes the inverse hyperbolic tangent of x in degrees.

ceil(x) Round to +Infinity Rounds x to the next higher integer (smallest integer is greater than or equal to x).

cos(x) Cosine Computes the cosine of x in radians. cosh(x) Hyperbolic Cosine Computes the hyperbolic cosine of x in degrees. cot(x) Cotangent Computes the cotangent of x in radians (1/tan(x)). csc(x) Cosecant Computes the cosecant of x in radians (1/sin(x)). exp(x) Exponential Computes the value of e raised to the x power. expm1(x) Exponential (Arg - 1) Computes the value of e raised to the x power minus one (e^(x-

1)). floor(x) Round to -Infinity Truncates x to the next lower integer (largest integer is smaller

than or equal to x). getexp(x) Mantissa & Exponent Returns the exponent of x. getman(x) Mantissa & Exponent Returns the mantissa of x. int(x) Round To Nearest Rounds its argument to the nearest integer. intrz(x) Round Toward 0 Rounds x to the nearest integer between x and zero. ln(x) Natural Logarithm Computes the natural logarithm of x (to the base e). lnp1(x) Natural Logarithm (Arg

+1) Computes the natural logarithm of (x + 1).

log(x) Logarithm Base 10 Computes the logarithm of x (to the base of 10). log2(x) Logarithm Base 2 Computes the logarithm of x (to the base 2). max(x,y) Maximum Compares x and y and returns the larger value. min(x,y) Minimum Compares x and y and returns the smaller value. mod(x,y) Quotient & Remainder Computes the remainder of x/y, when the quotient is rounded

toward -Infinity. power(x,y) x^y Computes the value of x raised to the y power. rand( ) Random Number (0- 1) Produces a floating-point number between 0 and 1 exclusively. rem(x,y) Remainder Computes the remainder of x/y, when the quotient is rounded to

the nearest integer. sec(x) Secant Computes the secant of x, where x is in radians (1/cos(x)). sign(x) Sign Returns 1 if x is greater than 0, returns 0 if x is equal to 0, and

returns -1 if x is less than 0. sin(x) Sine Computes the sine of x, where x is in radians. sinc(x) Sinc Computes the sine of x divided by x radians (sin(x)/x). sinh(x) Hyperbolic Sine Computes the hyperbolic sine of x in degrees. sqrt(x) Square Root Computes the square root of x. tan(x) Tangent Computes the tangent of x in radians. tanh(x) Hyperbolic Tangent Computes the hyperbolic tangent of x in degrees.

Page 104: Київ - ahv.kpi.ua

104

Додаток 3. Специфікатори формату

Синтаксис

елемента

Опис

% Починає специфікатор формату.

- (optional) Задає вирівнювання параметру по лівому краю, а не вирів-

нювати по правому в межах своєї ширини

+ (optional) Використовується з числовими параметрами, включає в

себе знак, навіть якщо число додатне.

^ (optional) Використовується з кодами перетворення e або g, викорис-

товує інженерне позначення. повинна бути

кратна 3.

0 (optional) Заповнити надлишок місця зліва від числового параметру

нулями замість пробілів.

(optional) При використанні функції сканування, визначає точну ши-

рину поля для використання. LabVIEW сканує тільки вка-

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

ристанні функції форматування, вказує мінімальну ширину

поля символу виводу. Ця ширину не максимальна ширина.

LabVIEW використовує стільки символів, скільки необхід-

но для форматування параметр без його урізання.

LabVIEW заповнює поля ліворуч або праворуч від параме-

тра пробілами, в залежності від вирівнювання. Якщо

відсутній або дорівнює 0, на виході буде тільки сті-

льки символів, скільки необхідно, щоб міститити перетво-

рений вхідний параметр.

. Відділяє від .

(optional) Використовується з параметрами з плаваючою точкою, ви-

значає кількість цифр праворуч від десяткової точки. Якщо

не стоїть після крапки, LabVIEW вставляє дробову

частину з шести цифр. Якщо стоїть після крапки і

відсутній або дорівнює 0, LabVIEW не встав-

ляє дробову частину. Використовується з параметрами ря-

дка, визначає максимальну ширину поля. LabVIEW усікає

рядки більші за цю довжину.

(optional)

Замінює оригінальну одиницю вимірювання ВІ при вико-

ристанні функції перетворення фізичної величини (значен-

ня з відповідною одиницею вимірювання). Мають бути

сумісні одиницю вимірювання.

Page 105: Київ - ahv.kpi.ua

105

Conversion

Codes

Один символ, який визначає, як сканувати або форматувати

параметр, а саме:

decimal integer

hex integer

octal integer

binary integer

floating-point number with fractional format

floating-point number with scientific notation

floating-point number використовує формат e якщо експоне-

нта менше -4 або більше , або формат f в ін-

шому випадку

string

Символи перетворення можуть бути у верхньому або нижньому регістрі.

Localization

Codes

Наступні коди визначають роздільник цілої і дробової час-

тини для чисел:

кома

крапка

за умовчанням у системі

Ці коди не призводять до якихось змін на вхід або виході.

Вони змінюють цілої і дробової частини десяткових чисел

для всіх наступних входів / виходів доки не надійдуть нові

символи «%;».

LabVIEW використовує коди перетворення для визначення текстово-

го формату параметра. Наприклад, специфікатор формату перетворює

шестнатцяткове ціле число в рядок або навпаки.

Використовуйте коди перетворення , , , , , , і для обробки

будь-якого числового типу даних LabVIEW, у тому числі комплексних чи-

сел, булевих типів даних і типів enumerated.

Для комплексних чисел використовують специфікатор формату для

обробки реальної та уявної частини, як одного параметра.

Використовують код перетворення s для обробки рядків або шляхів,

логічних типів даних або типів enumerated.

Page 106: Київ - ahv.kpi.ua

106

Зверніть увагу, що можна використовувати або числовий або строко-

вий код перетворення з типу enumerated або логічним типом, залежно від

того, чи хочете отримати числове значення або символічне значення (ря-

док) типу enumerated.