Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка.Л.Р.1-6 редакція.doc
Скачиваний:
19
Добавлен:
10.11.2019
Размер:
7 Mб
Скачать

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

  1. В чому полягає основний принцип побудови програмного забезпечення в середовищі LabVIEW?

  2. Яким чином вмикається й позначається режим налагодження ПВІ в покроковому режимі?

  3. Як зображуються пробники на функціональній панелі? Як відрізнити один пробник від іншого?

  4. Яким чином установлюється й знімається зупинка програми біля обраного елемента схеми?

  5. Яким чином встановлюється й знімається пробник на блок-діаграмі ВІ?

  6. Як виконується процедура пошуку та виправлення помилок пограмного забезпечення ВІ?

  7. Як редагується зовнішний вигляд іконок ВІ та ПВІ? Які формати іконок використовуються?

  8. Що таке іконка й панель з'єднань і як вони викликаються? Яке їхнє призначення?

  9. Яка послідовність створення ПВІ?

  10. Які режими покрокового виконання програми ви знаєте?

  11. Назвіть етапи налагодження ВІ.

  12. Яким чином вводиться анотація на розроблений ВІ, яке її призначення та як вона використовується при розробці?

  13. Яким чином друкується документація на розроблений ВІ?

  14. Яким чином зберігається на диску документація на розроблений ВІ і як її можна використовувати?

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

  16. Назвіть способи, що дозволяють створювати ПВІ.

  17. Яким чином переглядається ієрархічна схема ВІ та яку інформацію можна отримати за її допомогою?

  18. Як зберігаються та викликаються ПВІ при розробці нових ВІ?

Лабораторна робота № 4 вивчення структурних елементів програмування в середовищі LabView

Мета роботи: придбання навичок програмування в середовищі графічного пакета LabVIEW із використанням основних структурних елементів організації обчислювального процесу, вивчення умовних та безумовних циклічних структур, послідовних та касетних структур, а також формульних вузлів.

Стислі теоретичні відомості

Структурні елементи застосовуються для організації ходу обчислювального процесу, керування послідовністю виконання програм, організації переходів, проведення окремих обчислювальних операцій. Структурні елементи викликаються на функціональну панель за допомогою панелі Functions » Structures. З меню вибирається відповідна структура, перетягається на функціональну панель, збільшується до розмірів, необхідних для розміщення в ній всіх потрібдних функціональних елементів. Розміщення елементів виконується шляхом їх перетягання із допоміжної панелі Functions чи самої функціональної панелі.

Так само, як у традиційних мовах текстового програмування, у LabVIEW застосовуються циклічні структури для організації багаторазово повторюваних операцій обчислювання. Це скорочує об’єм програми, зменшує займаний обсяг пам'яті й спрощує процес розробки програм.

Найпростішою циклічною структурою є безумовний цикл (For Loop), зображений на рис.13. Ця структура працює аналогічно оператору циклу із заданим числом ітерацій (кроків) N, записаному у вигляді:

For i = 0 to N-1 do…

С труктура безумовного циклу For Loop має два обов’язкових термінали: термінал кількості ітерацій N (вхідний термінал) та термінал ітерацій і (або поточного номера ітерацій, вихідний термінал). Обидва термінали містять дані цілого типу й тому забарвлені в синій колір. Перед виконанням структури циклу повинно бути визначено значення N (на рис. 13 N=100 й задано числовою константою). Після запуску, програма, що знаходиться усередині циклу виконується N разів, після чого керування передається наступному програмному модулю. Значення терміналу поточного номера ітерації і змінюється від 0 на початку виконання ітерацій безумовного циклу до N-1 у кінці. Це значення може бути прочитано із терміналу ітерацій та використано в процесі програмування. Найпростішим способом підключення зовнішніх приладів числового типу до зазначених терміналів є використання їх контекстного меню (опція Create).

Структура безумовного циклу також має своє контекстне меню, що викликається клацанням ПКМ на її рамці. Меню має опції, аналогічні опціям цифрових приладів. Виключенням є опція Add Shift Register (Додати регістр зсуву), яка буде розглянута далі.

Введення та виведення даних у програму циклу може виконуватись в середині структури з терміналів передньої панелі, а також із зовні. При підключенні зовнішніх пристроїв, дані в структуру циклу поступають через термінали введення та виведення, які одержали назву відповідно вхідних та вихідних тунелів. Тунелі створюються будь-де на рамці структури безумовного циклу автоматично при з’єднанні зовнішніх терміналів з терміналами всередині структури і мають вигляд квадратиків (рис.13).

Через тунелі можна передавати дані різного типу: числові, булеві, рядкові, масиви та кластери. При передачі скалярних даних тунелі мають тільки затушований вигляд. При передачі масивів (групи даних) тунелі можуть працювати у двох режимах: з автоіндексуванням Enable Indexing (Увімкнене індексування) та без автоіндексування Disable Indexing (Відключене індексування). Залежно від режиму роботи тунелю він змінює свій вигляд (рис.13). В режимі Disable Indexing тунель має затушований вигляд, а в режимі Enable Indexing - має вигляд незатушованого квадратика та ще й з квадратними дужками в середині. Переключення режиму роботи тунелю виконується за допомогою контактного меню тунелю, яке містить відповідні однойменні опції.

Відповідно до режиму роботи тунелю, введення масиву може виконуватись у два способи: поелементно або всього масиву в цілому. Уведення всього масиву в цілому виконується тільки в першій ітерації виконання циклу через тунель введення, який працює в режимі Disable Indexing (Відключене індексування) і має затушований вигляд. Поелементне введення масиву (послідовно по одному елементу на кожну ітерацію) виконується, якщо термінал введення працює в режимі Enable Indexing (Увімкнене індексування) та має вигляд не затушованого квадратика з квадратними дужками у середині. Причому розмірність елементів, що вводяться, на одиницю менша розмірності вхідного масиву. Наприклад, якщо подається одновимірний масив (розмірністю 1D), то вводяться скалярні величини, якщо 2D - кожну ітерацію вводять під масиви розмірністю 1D і так далі.

При виведенні даних через тунель, що працює в режимі Disable Indexing, дані на виході терміналу представляють результат виконання останньої ітерації циклу. Режим Enable Indexing дозволяє сформувати вихідний масив з елементів, що обчислюються на кожній ітерації циклу. Причому розмірність вихідного масиву на одиницю вища розмірності елементів на виході кожної ітерації. В обох режимах виведення даних через тунель виконується тільки після завершення виконання програми циклу.

Кількість ітерацій безумовного циклу, що виконується, може бути задана не тільки числом на вході терміналу кількості ітерацій циклічної структури, а й числом елементів вхідного масиву при поелементному його введенні в режимі з індексуванням Enable Indexing. Причому кількість ітерацій безумовного циклу задається числом елементів вхідного масиву тільки при умові відсутності числа на вході терміналу кількості ітерацій циклу, або якщо це число більше числа елементів масиву (тобто кількість ітерацій задається найменшим числом).

Безумовний цикл може мати регістри зсуву (Shift Register), що позначаються квадратиками жовтого кольору із стрілками (рис.13). Будемо називати їх шифтами. Шифти використовуються для передачі результатів обчислення від поточної ітерації до наступної чи наступним, що еквівалентно наявності зворотного зв'язку в схемному представленні. Трикутник у позначенні шифтів відіграє роль стрілки, що вказує напрямок передачі результатів: від правого до лівого. Поява шифтів викликається натисканням ПКМ на правій або лівій границі структури. У випадаючому контекстному меню структури вибирають опцію Add Shift Register. Після цього з'являється пара шифтів. Кількість пар шифтів може бути значною.

Якщо натиснути ПКМ на наявний шифт (один з пари) та у контекстному меню шифта обрати опцію Add Element, то до існуючої пари можна додати шифти, але тільки на лівому боці структури. Кількість додаткових шифтів на лівому боці практично не обмежене і всі вони зв’язані з початковою парою. З шифтів на лівому боці в поточній ітерації і можна отримати дані, які були обчислені на попередніх ітераціях і-1, і-2... та були раніше передані через правий шифт. Видалення шифтів виконується ПКМ на обраному шифті опцією видалення одного елемента Remove Element чи всієї групи Remove All. Прикладом застосування шифтів може бути виконання у кожній ітерації поточного (ковзного) усереднення по M останнім результатам обчислень. Тоді число шифтів на лівій стороні структури повинно дорівнювати M. На рис. 13 наведений приклад поточного усереднення по трьох значеннях, що були отримані в останніх трьох ітераціях із генератора випадкових чисел Random Number (0-1).

До шифтів зліва можна підключити за межами структури числові пристрої уведення , які ініціалізують шифти на початку виконання циклу у першій ітерації. Якщо не зробити таку ініціалізацію, то при повторному запуску структури на виконання в шифтах будуть значення, що залишилися від попередньої роботи циклу. До шифтів справа можна підключити пристрої виведення (теж за межами структури). Після завершення роботи циклу пристрої виведення отримають дані, які обчислені на останній ітерації виконання циклу.

У мовний цикл (While Loop) за своєю дією аналогічний умовному оператору циклу. Він виконується доти, поки задана булева змінна не прийме значення FALSE чи TRUE (рис.14). Структура викликається з панелі Functions » Structures » While Loop. Усередині петлі циклічної структури розташовується термінал ітерації i та пристрій, що перевіряє стан змінної булевого типу для виходу з циклу - термінал виходу (знаходиться в правому нижньому куті структури). Термінал виходу має два стани. За замовчуванням при виклику структури стан терміналу Continue IF True (Продовжувати, якщо True, рис.14). Це означає наступне: якщо на вході терміналу значення булевої змінної True, то цикл продовжує свою роботу, а для його зупину на вхід потрібно подати значення Fulse. За допомогою ПКМ або через контекстне меню термінала можна перевести його стан у Stop IF True (Зупинити, якщо True), що означає зупинення виконання циклу при подачі на вхід терміналу значення True. Таким чином, усередині структури розташовується підпрограма і виконується доти, поки не виконається умова виходу з циклу. Присутність булевої змінної на вході терміналу виходу обов’язкова. Так само як і у попередній структурі тут можуть застосовуватися шифти та тунелі введення/виведення даних.

Послідовна структура (Sequence) дозволяє організувати логічну послідовність виконання окремих частин програми (підпрограм). Підпрограма записується на окрему сторінку чи сукупність сторінок (кадрів) структури. Вигляд структури зображений на рис. 15 і нагадує кадр фотоплівки. Виклик структури здійснюється з панелі Functions » Structures » Sequence. Меню структури викликається як і в попередніх структурах ПКМ на рамці структури. За допомогою цього меню можна додати кадр програми до (Add Frame Before) чи після (Add Frame After) вже існуючого к адру. Команди додавання кадрів поворотної дії. Після додавання кадрів зверху поточного кадру вказується його номер і діапазон номерів усіх кадрів структури. Переглянути кадри можна за допомогою лівої чи правої стрілки біля індикатора, або за допомогою ЛКМ, відредагувавши номер кадру. Можна вибрати потрібний кадр за допомогою контекстного меню й опції Show Frame.

У кожному кадрі створюється своя схема (підпрограма), не зв'язана (чи зв'язана) зі схемами на інших кадрах. Зв'язок із зовнішніми об'єктами здійснюється через «тунелі» на рамці структури. Тунель має вигляд чорного прямокутника, якщо з'єднання зроблено правильно. Білі тунелі сигналізують про неправильне з'єднання. Тунель утворюється на рамці природним чином при з'єднанні зовнішнього й внутрішнього елементів котушкою.

Тунель також утворюється в будь-якому місці рамки, якщо з'єднати зовнішній чи внутрішній елемент схеми з місцем рамки –місцем майбутнього розташування тунелю. Тунелі послідовної структури діють на всіх кадрах. Проте до вхідного тунелю можна підключатися на всіх кадрах, а до вихідного – тільки на одному. Інформація з вихідних тунелів виводиться тільки після закінчення виконання останнього кадру структури.

Зв'язок внутрішніх об'єктів, розташованих на різних кадрах, здійснюється за допомогою локального переходу Sequence Local, що викликається ПКМ за допомогою опції контекстного меню структури Add Sequence Local (додати локальний перехід). Локальний перехід у вигляді жовтого квадратика з'являється з внутрішнього боку рамки біля того місця рамки, на яке спрямований покажчик миші ( рис.15, знизу). З'єднання «локальний перехід» пронизує всі кадри структури, але на попередні кадри не поширюється. Тому до конкретного локального переходу можна підключатися тільки на кадрі, з якого він викликаний, і на наступних кадрах. Локальний перехід має односпрямований характер передачі даних у напрямку збільшення номерів кадрів. Рекомендується спочатку підключити до локального переходу джерело сигналу. Після цього на ньому з'являється стрілка, що вказує напрямок передачі даних на всіх кадрах, де діє перехід (рис.15).

К асетна структура (Case Structure) є багатошаровою керованою структурою, окремі фрагменти якої вибираються й виконуються за умовою. Шлях до структури Functions » Structures » Case. Вигляд її зображено на рис. 16. Структура має декілька сторінок (касет), але виконується тільки одна. Вибір сторінки робиться через селектор (мітка «?»), що міститься на рамці структури. Селектор можна переміщувати як термінал у будь-яке зручне місце лівого боку рамки. На вхід селектора можна підключати булеву (True-False), числову чи строкову змінну. У випадку булевої змінної структура містить дві сторінки, що позначаються зверху значеннями булевої величини (рис. 16). Керуюча змінна формується елементом булевого типу. При пуску програми виконується підпрограма тієї сторінки структури, позначення якої відповідає поточному значенню булевої змінної.

Якщо потрібно збільшити кількість керованих сторінок (підпрограм), то для їх вибору переходять до числових змінних. У цьому випадку до мітки селектора «?» на рамці структури підключають елемент числового типу. Після підключення числової змінної, позначення аркушів касетної структури змінюється з булевого на цифрове.

За допомогою опцій контекстного меню структури можна додати сторінку після (Add Case After) або перед (Add Case Before) відкритою сторінкою. Таким чином, можна додати необхідну кількість сторінок структури. Відкрита сторінка «вирізається» опцією видалення (Remove Case). Слід зазначити, що при додаванні чи видаленні сторінки відбувається перенумерація інших сторінок із збереженням усіх чисел натурального ряду, для їх позначення. Під час пуску програми виконується підпрограма тієї сторінки, номер якої вказується числом на вході селектора.

Для підключення зовнішніх елементів до елементів касетної структури також використовуються вхідні та вихідні тунелі. Тунелі пронизують всі сторінки структури. До вхідного тунелю можна підключатись на будь-якій сторінці. Підключення до вихідного тунелю з кожної сторінки обов’язкове. Робиться це, для того, щоб уникнути можливої невизначеності виходу тунеля для зовнішніх елементів (наприклад, при виборі сторінки, де відсутнє таке підключення). Якщо на сторінці підключення до вихідного тунелю не передбачено блок-схемою, то його виконують, наприклад, встановивши константу того ж типу, що й дані, підключені на інших сторінках.

Формульний вузол (Formula Node) — структура, що дозволяє організовувати обчислення за формулами, що записані у середині її контуру. Шлях до структури: Functions » Structures » Formula Node. Вигляд структури після виклику на функціональну панель зображений на рис. 17.

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

Для введення тексту формул використовується режим текстового редагування. Текст вводиться відповідно до синтаксису і загальноприйнятого правила запису арифметичних виразів. Позначення функцій і знаків арифметичних виразів наводяться у вікні контекстної довідки. Формули повинні закінчуватися крапкою з комою, тобто знаком «;».

Арифметичні вирази можуть мати кілька вхідних та вихідних величин. Місце введення вхідної й вихідної величини розташовується на сторонах рамки структури. Вікна введення і виведення даних відрізняються позначенням. Наприклад, на рис. 17 вхідна величина х поміщена в прямокутник, зображений однією (тонкою) лінією, вихідна величина у - в прямокутник, зображений подвійною (товстою) лінією.

Для виклику вікна вхідної величини вказуємо стрілкою миші місце на рамці, де повинне розташовуватися вікно. Натискаємо ПКМ і з контекстного меню вибираємо опцію додавання входу Add Input. У прямокутник, що з'явився, відразу вводимо ім'я вхідної змінної. Для виклику вікна вихідної величини робимо те ж саме, але вибираємо опцію додавання виходу Add Output. Видалення встановленого вікна виконується опцією Remove його контекстного меню.

За допомогою опції зміни Change to Output (Змінити на вихід) контекстного меню вхідного вікна можна змінити вхід на вихід і відповідно вхідну величину на вихідну. І, навпаки, за допомогою опції зміни Change to Input (Змінити на вхід) меню вихідного вікна можна змінити вихід на вхід і відповідно вихідну величину на вхідну.

З огляду наведенних структур для управління роботою умовного циклу та касетної структури використовуються елементи булевого типу. До них відносяться й різного роду перемикачі та кнопки, що встановлюються на передній панелі. Перемикачі використовуються для увімкнення або відключення програмних модулів, що виконуються у ВІ. Враховуючи їх важливу роль щодо управління роботою ВІ, отже й процесів що ним керуються, в LabVIEW передбачено шість режимів роботи перемикачів, які відрізняються механічною дією та алгоритмом формування сигналів керування.

Можливість зміни механізму дії органів керування булевого типу передбачена для спрощення роботи з кнопками й перемикачами, автоматизації процесу їх повернення у вихідний стан, для зміни алгоритму роботи кнопок, встановлення активної фази їх дії. Зміну механізму дії елемента керування можна здійснити за допомогою опції меню Mechanical Action, вибравши одну з зображених нижче піктограм.

Перемикання при натисканні. Вихідна величина змінюється при кожному натисканні-відпусканні ЛКМ. Положення кнопки фіксується й залишається незмінним до нового натискання-відпускання. Дія кнопки починається з моменту натискання ЛКМ.

Перемикання при відпусканні. Вихідна величина змінюється за кожним натисканням-відпусканням на кнопку. Положення кнопки фіксується й залишається незмінним до нового натискання-відпускання. Дія кнопки починається з моменту відпускання ЛКМ.

Перемикання поки натискання. Вихідна величина змінюється при натисканні на кнопку і залишається незмінним до відпускання. Дія кнопки при натисканні ЛКМ аналогічно кнопці дверного дзвінка.

Автоповернення при натисканні. Вихідна величина змінюється при натисканні ЛКМ на кнопку. Після зчитування стану кнопки програмою відбувається автоматичне повернення у вихідний стан, навіть якщо кнопка утримується мишею. Для повторної активації кнопки необхідно її повторне натискання.

Автоповернення при відпусканні. Вихідна величина змінюється при відпусканні ЛКМ. Після зчитування стану кнопки програмою відбувається автоматичне повернення у вихідний стан. Для повторної активації кнопки необхідно її повторне натискання.

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

При необхідності, початковий стан перемикача або кнопки на передній панелі може бути встановлений за допомогою опції контекстного меню пристрою Data Operations » Make Current Velue Default. Це має особливе значення для останніх трьох механізмів дії, які мають початкове значення, до якого вони повертаються.