
- •Урок 3 Создание вп
- •A. Проектирование лицевой панели
- •Проектирование элементов управления и индикации
- •Метки и подписи
- •Настройка элементов управления и индикации
- •Использование цвета
- •Размещение и выравнивание
- •Текст и шрифты
- •Инструменты и подсказки в пользовательском интерфейсе
- •Системные элементы управления
- •Многостраничный элемент управления
- •Декоративные элементы
- •Автоматическое масштабирование объектов лицевой панели
- •Внешние входные и выходные данные
- •Диаграмма переходов
- •Реализация
- •B. Терминалы блок-диаграммы
- •Элементы управления, индикаторы и константы
- •Типы данных LabView
- •Числовой тип данных
- •Числа с плавающей точкой
- •Целые числа
- •Комплексные числа
- •Логический тип данных
- •Строковый тип данных
- •Перечислимый тип данных
- •Динамический тип данных
- •C. Документирование кода
- •Всплывающие подсказки
- •Свойства вп
- •Именование элементов управления и индикаторов
- •Графическое программирование
- •Блок-схема
- •Реализация
- •Тестирование
- •D. Цикл While
- •Туннели
- •Блок-схема
- •Реализация
- •Тестирование
- •E. Цикл For
- •Преобразование числовых типов данных
- •Функции ожидания
- •Истекшее время
- •G. Передача данных между итерациями
- •Инициализация сдвиговых регистров
- •Стек сдвиговых регистров
- •Реализация
- •При наличии аппаратуры
- •Без аппаратуры
- •Тестирование
- •H. Графическое представление данных
- •Соединения на диаграммах
- •Waveform Graph с одной кривой
- •Waveform Graph со многими кривыми
- •Xy Graph с одной кривой
- •Xy Graph со многими кривыми
- •Реализация
- •Тестирование
- •I. Структура выбора Case
- •Выбор варианта
- •Входные и выходные туннели
- •Примеры
- •Логическая структура Case
- •Целочисленная структура Case
- •Строковая структура Case
- •Перечислимая структура Case
- •Упражнение 3-7 Проект: вп для вывода предупреждений Цель
- •Сценарий
- •Проектирование
- •Реализация
- •Тестирование
- •J. Узел формул
- •Блок-схема
- •Реализация
- •Тестирование
- •Блок-схема
- •Реализация
- •Упражнение 3-10 вп для вывода расширенных предупреждений (дополнительно) Цель
- •Сценарий
- •Проектирование Входные и выходные данные
- •Блок-схема
- •Архитектура вп
- •Реализация
- •Тестирование
- •Вопросы для самопроверки
Тестирование
1. Откройте лицевую панель.
2. Введите в элемент управления Заданное число число, лежащее в диапазоне значений (от 0 до 1000 с шагом 1).
3. Запустите ВП.
4. Измените Заданное число и еще раз запустите ВП. Индикатор Текущее число обновляется в каждой итерации, поскольку он находится внутри цикла. Индикатор Кол-во итераций обновляется после завершения, поскольку он находится вне цикла.
5. Чтобы увидеть, как ВП обновляет индикаторы, включите подсветку выполнения.
Щелкните
кнопку Highlight Execution
на инструментальной панели. В этом
режиме будет показано движение данных
по блок-диаграмме от узла к узлу, и вы
увидите каждое число, которое генерирует
ВП.
6. Запустите ВП и понаблюдайте за потоком данных.
7. Попытайтесь найти совпадение для числа, лежащего вне диапазона допустимых значений.
Измените Заданное число на значение, выходящее за границы диапазона.
Запустите ВП. LabVIEW приведет значение к ближайшему допустимому.
8. Закройте ВП.
Конец упражнения 3-3
E. Цикл For
Цикл For выполняет диаграмму заданное количество раз. На рис. 3-21 показано, как выглядит цикл For на блок-диаграмме LabVIEW. Показаны также его эквивалентная блок-схема и псевдокод, реализующий те же функции.
Рис. 3-21. Цикл For.
Цикл For находится на палитре Functions>>All Functions>>Structures. Можно также превратить существующий цикл While в цикл For. Для этого щелкните правой кнопкой на рамке цикла While и выберите в контекстном меню пункт Replace with For Loop (Заменить циклом For). Терминал количества итераций (входной терминал) показывает, сколько раз нужно повторять диаграмму цикла.
Терминал счетчика итераций (выходной терминал), показанный слева, содержит число завершенных итераций.
Счет итераций всегда начинается с нуля. Во время первой итерации терминал возвращает 0.
В отличие от цикла While, цикл For выполняется строго определенное количество раз. Цикл While, напротив, завершается только при подаче логического значения на терминал условия.
Показанный на рис. 3-22 цикл For каждую секунду генерирует 100 случайных чисел и выводит их на числовой индикатор.
Рис. 3-22. Пример цикла For.
Преобразование числовых типов данных
Числовое значение может быть представлено в LabVIEW как знаковое или беззнаковое целое, вещественное с плавающей точкой или комплексное. Числовые типы данных рассматривались в разделе Типы данных LabVIEW этого урока. Как правило, при подаче на вход функции разных типов результат возвращается в наиболее широком формате (с наибольшим диапазоном значений). LabVIEW выбирает представление с наибольшей разрядностью. Если число битов одинаковое, приоритет имеет беззнаковое представление. Например, если подать DBL и I32 на вход функции умножения, то результатом будет DBL (рис. 3-23). 32-битовое знаковое целое приводится к DBL, поскольку в нем меньше битов, чем у числа с плавающей точкой двойной точности. На нижнем входе функции умножения присутствует серая точка, называемая точкой приведения типов (coercion dot), которая указывает на приведение к другому типу.
Рис. 3-23. Пример преобразования числовых типов.
Терминал количества итераций в цикле For работает наоборот. Если подать на него число с плавающей точкой двойной точности, LabVIEW преобразует его в 32-битовое знаковое целое. Хотя такое преобразование противоречит обычным правилам, оно необходимо, поскольку цикл может выполняться только целое число раз.
Рис. 3-24. Приведение типов в цикле For.
Упражнение 3-4 Цикл While в сравнении с циклом For
Цель
Понять, когда нужно использовать цикл While, а когда — цикл For.
Описание
Решите, какой из циклов нужно использовать в приведенных ниже сценариях.
Сценарий 1
Считывать давление раз в секунду на протяжении одной минуты.
1. Если использовать цикл While, по какому условию он должен завершиться?
2. Если использовать цикл For, сколько итераций нужно выполнить?
3. Какой цикл легче реализовать — For или While?
Сценарий 2
Считывать давление, пока оно не станет равным 95 атм.
1. Если использовать цикл While, по какому условию он должен завершиться?
2. Если использовать цикл For, сколько итераций нужно выполнить?
3. Какой цикл легче реализовать — For или While?
Сценарий 3
Считывать давление и температуру, пока обе величины не будут стабильны на протяжении двух минут.
1. Если использовать цикл While, по какому условию он должен завершиться?
2. Если использовать цикл For, сколько итераций нужно выполнить?
3. Какой цикл легче реализовать — For или While?
Сценарий 4
Генерировать ступенчато изменяющееся напряжение: начальное значение = 0 В, каждую секунду увеличение на 0.5 В до тех пор, пока на выходе не будет 5 В.
1. Если использовать цикл While, по какому условию он должен завершиться?
2. Если использовать цикл For, сколько итераций нужно выполнить?
3. Какой цикл легче реализовать — For или While?
Ответы
Сценарий 1
Считывать давление раз в секунду на протяжении одной минуты.
1. Цикл While: время = 1 минута.
2. Цикл For: 60 итераций.
3. Возможны оба.
Сценарий 2
Считывать давление, пока оно не станет равным 95 атм.
1. Цикл While: давление = 95 атм.
2. Цикл For: неизвестно.
3. Цикл While. Без дополнительной информации цикл For невозможен.
Сценарий 3
Считывать давление и температуру, пока обе величины не будут стабильны на протяжении двух минут.
1. Цикл While: [(последняя температура = предыдущая температура) в течение 2 минут или дольше] И [(последнее давление = предыдущее давление) в течение 2 минут или дольше].
2. Цикл For: неизвестно.
3. Цикл While. Без дополнительной информации цикл For невозможен.
Сценарий 4
Генерировать ступенчато изменяющееся напряжение: начальное значение = 0 В, каждую секунду увеличение на 0.5 В до тех пор, пока на выходе не будет 5 В.
1. Цикл While: напряжение = 5 В.
2. Цикл For: 11 итераций.
3. Любой будет хорошим выбором.
Конец упражнения 3-4
F. Синхронизация ВП
После завершения текущей итерации цикла сразу же начинается выполнение следующей итерации, пока не будет выполнено условие завершения. Однако на практике часто требуется контролировать частоту итераций. Например, если считывание данных должно выполняться каждые 10 секунд, то необходим какой-то способ синхронизации цикла с часами реального времени.
Даже если вам не нужно привязывать выполнение к какой-то частоте, желательно предоставлять процессору время для завершения других задач, например, обслуживания пользовательского интерфейса. В этом разделе описываются некоторые методы управления временем выполнения циклов.