Основи_labview - Стор 13

стор

Глава 4. Реалізація VI

Якщо ви з'єднаєте кластер помилок з терміналом умови, пункти Stop if True та Continue if True контекстного меню терміналу заміняться відповідно на Stop on Error та Continue while Error .

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

Зупинка циклу While

Цикл For виконує задану кількість разів. На малюнку 4-14 наведено цикл For в LabVIEW, його еквівалентна алгоритму, а також приклад еквівалентного псевдокода.

Малюнок Цикл For

Цикл For знаходиться на панелі Structures. Ви можете також помістити нацикл While, клацнути правою кнопкою миші по його межі та замінити його за допомогою команди контекстного меню Replace with For Loop на цикл For.

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

Основи LabVIEW 1. Навчальний посібник

циклу

Глава 4. Реалізація VI

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

Рахунок ітерацій циклу For завжди починається з нуля.

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

На малюнку протягом 100 секунд цикл For генерує кожну секунду випадкове число та виводить ці випадкові числа на числовий індикатор.

Малюнок Приклад циклу For

Готування умовного терміналу в цикл For

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

Рисунок Цикл For налаштований на вихід за умовою

Основи LabVIEW 1. Навчальний посібник

основи_labview

Глава 4. Реалізація VI

Щоб додати термінал умови до циклу For, клацніть правою кнопкою миші по межі циклу та виберіть з контекстного меню команду Conditional Terminal . Потім виконайте підключення терміналу умови та терміналу завдання кількості ітерацій.

Малюнок Додавання терміналу умови в цикл For

Перетворення числових типів даних

LabVIEW дозволяє подавати дані таких типів, як цілі числа зі знаком та без знака, речові числа з плаваючою точкою або комплексні числа; це обговорювалося у розділі Типи даних у LabVIEW справжнього заняття. Зазвичай, якщо на входи функції подаються дані різних типів, на вихід функція повертає результат у «довшому» чи «ширшому» форматі. Якщо ви виконуєте дію над цілим числом зі знаком та цілим числом без знака, відбувається приведення до цілого без знака. Якщо дія виконується над цілим без знака і числом з плаваючою точкою, то проводиться приведення до плаваючої точкою. Якщо дія виконується над числом з точкою, що плаває, і комплексним числом, то проводиться приведення докомплексному числу. Якщо два числа одного і того ж типу складаються з різної кількості біт, LabVIEW виконає приведення результату до найбільшої кількості біт. Якщо кількість біт те саме, LabVIEW робить вибір на користь цілого без знака, а не зі знаком. Якщо, наприклад, на функцію Multiply подати дані типу DBL і I32, тип даних результату буде DBL (рисунок LabVIEW призводить до речового числа з плаваючою точкою ціле число зі знаком, оскільки в цілому числі використовується менше біт, ніж у числі з плаваючою точкою з подвійною точністю. Нижній вхід функції Multiply позначений червоною точкою, яка називається точкою приведення, яка вказує на те, що в LabVIEW виконано операцію приведення типу даних.

Основи LabVIEW 1. Навчальний посібник

основи_labview

Глава 4. Реалізація VI

Рисунок Приклад перетворення типу даних числа

Однак термінал кількості ітерацій працює протилежним чином. Якщо ви подасте на цей термінал число з плаваючою точкою подвійної точності, LabVIEW наводить більш «довге» числове значення до цілого числа зі знаком. Незважаючи на те, що дане перетворення типів суперечить звичайним стандартам перетворення, воно є необхідним, оскільки цикл For може виконуватись лише цілу кількість разів.

Малюнок Приведення типу числа для циклу For

Щоб забезпечити більш високу продуктивність, слід уникати приведення типів, використовуючи типи даних, що узгоджуються (малюнок зліва), або перетворюючи дані програмно у відповідний тип (малюнок справа).

Малюнок Уникайте приведення типів чисел, використовуючи узгоджені типи даних

Основи LabVIEW 1. Навчальний посібник

циклу

Глава 4. Реалізація VI

F. Тактування VI

Коли цикл завершує виконаннядеякої ітерації, він негайно приступає до виконання наступної ітерації, доки виконається умова зупинки. Найчастіше буває необхідно керувати частотою виконання ітерацій чи тактуванням. Якщо, наприклад, проводиться збір даних, які необхідно отримувати через кожні 10 секунд, то потрібен такий спосіб тактування ітерацій циклу, щоб ітерація циклу виконували один раз на 10 секунд.

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

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

Функція Wait Until Next ms Multiple контролює лічильник тактових імпульсів з періодом в одну мілісекунду, і чекає, поки лічильник не досягне значення, кратного заданому. Використовуйте цю функцію для синхронізації дій. Помістіть цю функцію в цикл, щоб керувати частотою виконання ітерацій. Щоб ця функція працювала ефективно, час виконання програмного коду має бути меншим за час, заданий для цієї функції. Час виконання першої ітерації циклу невизначений.

Функція Wait (ms) очікує до того часу, поки лічильник мілісекунд не дорахує значення, заданого на вході. Ця функція гарантує, що частота виконання ітерацій циклу буде щонайменше відповідати тому значенню, яке задано на вході.

Примітка. Time Delay Express VI ведесебе аналогічно функції Wait (ms)

і, крім того, у цей VI вбудовані кластери помилок. Додаткова інформація про кластери помилок розглядається в лекції 3, Пошук помилок та налагодження VI.

У деяких випадках корисно дізнатися скільки часу пройшло з деякого моменту роботи VI. Express VI Elapsed Time видає кількість часу, який минув після заданого початкового моменту. Цей Express VI відстежує час у процесі роботи VI і надає процесору час завершення інших завдань. Ви маєте скористатися Express VI Elapsed Time в курсовому проекті на тему Weather Station (Метеостанція)

Основи LabVIEW 1. Навчальний посібник

стор

Глава 4. Реалізація VI

G. Передача даних від ітерації до ітерації

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

Примітка: Іншим способом зберігання даних від попередніх ітерацій є застосування вузлів зворотного зв'язку Feedback Node. За більш детальною інформацією про ці вузли зверніться до розділу Feedback Node довідки

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

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

Стрілка в терміналі праворуч циклу спрямована вгору, і цей термінал зберігає дані, отримані при завершенніітерації. LabVIEW передає дані до наступної ітерації з правого боку регістру. Після закінчення виконання циклу термінал на його правій стороні повертає останнє значення, збережене у зсувному регістрі.

Створюється зсувний регістр клацанням правої кнопки миші по лівій чи правій межі циклу командою контекстного меню Add Shift Register.

Зсувний регістр пропускає через себе дані будь-якого типу; регістру автоматично надається тип даних першого об'єкта, підключеного до регістру. Дані, що подаються на термінали кожного зсувного регістру, повинні бути одного й того самого типу.

У циклі може бути будь-яка кількість зсувних регістрів. Якщо у вас кілька операцій, у яких використовуються попередні значення ітерацій циклу, застосовуйте кілька зсувних регістрів для зберігання значень даних від різних процесів у структурі (рисунок