Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб_ОФЕОМ_2_2008.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
571.9 Кб
Скачать

Лабораторна робота № 3

Тема: Використання циклів і регістрів зсуву

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

Короткі теоретичні відомості

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

У LabVIEW існує розділ «Структури», що дозволяє реґламентувати цей процес. Виклик структур здійснюється з функціонального набору Functions меню Structures (рисунок 3.1).

Рисунок 3.1 – Виклик структур з функціональної панелі

Цикл із фіксованим числом ітерацій For Loop (рисунок 3.2) виконує код розміщений в його межах деяке число ітерацій (count). Це число дорівнює величині, уведеній до терміналу числа ітерацій (count terminal).

Рисунок 3.2 – Цикл із фіксованим числом ітерацій For Loop

Цикл за умовою While Loop (рисунок 3.3) виконує код, розміщений в його межах, доти, доки логічне значення (Boolean value), підключене до терміналу умови виходу із циклу (conditional terminal), не перейде в стан False. LabVIEW перевіряє термінал умови виходу по закінченні кожної ітерації. Якщо значення відповідає True, то виконується наступна ітерація. За замовчуванням термінал умови виходу перебуває в стані False. Якщо залишити його не підключеним, цикл виконуватися не буде.

Термінал лічильника ітерацій (iteration terminal) циклу за умовою поводиться так само, як і у випадку із циклом з фіксованим числом ітерацій.

Рисунок 3.3 – Цикл за умовою While Loop

Дані надходять до циклу і виходять із нього через маленьке вікно на межі циклу, що називається точкою входу/виходу до структури – тунель (tunnel). Оскільки LabVIEW працює відповідно до принципу потоку даних, то перш ніж цикл почне виконуватися, вхідні точки повинні передати до нього свої дані. Вихідні точки циклу виводять дані лише після завершення всіх ітерацій.

Режими роботи тунелів структур

Вхідні й вихідні тунелі циклів можуть працювати в звичайному режимі та в режимі індексування (рисунок 3.4), що включається у меню властивостей тунелю (Enable Indexing). Режим індексування широко використовується при роботі з масивами. У загальному випадку діє правило: вхідний тунель у режимі індексування зменшує на одиницю розмірність даних, тобто якщо ззовні циклу багатовимірний масив, то в тілі циклу тунель на кожній ітерації буде вибирати окремий рядок. Якщо ззовні циклу одновимірний масив, то в тілі циклу тунель на кожній ітерації буде послідовно перебирати окремі елементи. Вихідний тунель, що працює в режимі індексування, збільшує на одиницю розмірність даних. Автоматичне індексування – це читання даних з масиву або запис до масиву кожного елемента в структурі циклу.

Рисунок 3.4 – Режими роботи тунелів структур

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

Приклад: Створення масиву з індексацією (рисунок 3.5). Порядок роботи:

  1. Створити цикл із фіксованим числом ітерацій.

  2. Клацнути правою кнопкою по терміналу числа ітерацій і вибрати Create → Constant, щоб задати кількість ітерацій. Увести число 10. Значення лічильника циклу починається з 0 і закінчується 9.

  3. Помістити в цикл функцію Random Number (0-1) (Випадкове число) і з'єднати вихідний термінал цієї функції із межею циклу, щоб створити точку входу/виходу до структури. На межі з'явиться прямокутник із символом масиву [] усередині. Для циклу з фіксованим числом ітерацій автоматичне індексування здійснюється за замовчуванням, а в циклі за умовою – вимкнене.

  4. Створити індикатор для цієї точки (клацнути правою кнопкою й вибрати Create → Indikator). На блок-діаграмі за межами структури циклу з'явиться іконка індикатора масиву. Також на лицьовій панелі відображається індикатор типу даних “масив”, розмір якого можна змінювати за бажанням.

  5. Створити другу точку входу/виходу, приєднавши вихід функції Random Number до межі структури циклу, потім клацнути правою кнопкою по точці входу/виходу й вибрати Disable Indexing (Відключити індексування). Після цього в точці входу/виходу буде відображатися скалярна величина.

  6. Створити індикатор для другої точки входу/виходу (див. п. 4).

  7. Для організації затримки виконання програми розмістити в циклі експрес-ВП Time Delay (Functions > Programming > Timming > Time Delay). У вікні конфіґурації ввести 0,1 – після кожної ітерації буде затримка в 0,1 секунди.

Рисунок 3.5 – Створення масиву з індексацією

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

Регістри зсуву (shift registers) використовуються в циклах за умовою та з фіксованим числом ітерацій і є особливим типом змінної для передачі величин з однієї ітерації в наступну. Регістр зсуву створюється натисканням правої кнопки миші на лівій або правій межі циклу й вибором опції «Додати регістр зсуву» (Add Shift Registers) у контекстному меню.

Регістр зсуву (рисунок 3.6) складається з пари терміналів, розташованих один напроти одного на вертикальних межах циклу. У правому терміналі зберігаються дані, отримані при завершенні ітерації циклу. Ці дані «пересуваються» наприкінці ітерації й з’являються в лівому терміналі на початку наступної ітерації. Регістр зсуву може містити будь-який тип даних і автоматично налаштовується на тип даних першого об’єкта, до якого він буде приєднаний.

Щоб забезпечити доступ до даних від попередніх ітерацій, можна створити додаткові термінали, клацнувши правою кнопкою миші на терміналі регістра й вибравши опцію «Додати елемент» (Add Element).

Рисунок 3.6 – Регістри зсуву

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]