Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ASVT Материалы / основы_labview_1_упражнения_

.pdf
Скачиваний:
130
Добавлен:
29.03.2016
Размер:
3.28 Mб
Скачать

8. Общепринятая методика проектирования и шаблоны

Idle

0

 

 

Process 1

1

 

 

Process 2

2

 

 

Stop

3

 

 

Закройте диалоговое окно Enum Properties щелчком по кнопке OK.

Измените метку перечислительного элемента управления на State Enum.

Щелкните правой кнопкой мыши по State Enum и выберите

Advanced»Customize.

Выберите Type Def. из выпадающего меню Control Type.

Щелкните правой кнопкой мыши по Enum и выберите

Representation»U32.

Сохраните элемент управления под именем State Enum.ctl в

папке <Exercises>\LabVIEW Core 1\State Machine.

Закройте окно Control Editor.

Щелкните Yes в ответ на вопрос, хотите ли вы заменить элемент управления.

Переключитесь на блок-диаграмму.

Щелкните правой кнопкой мыши по State Enum и выберите Change to Constant. Перечислительный элемент управления больше не виден на лицевой панели.

Далее создайте блок-диаграмму, представленную на рисунке 8-2. Эта блок-диаграмма содержит 4 состояния – Idle (Ожидание), Process 1, Process 2 и Stop.

Основы LabVIEW 1. Упражнения

141

ni.com

8. Общепринятая методика проектирования и шаблоны

Рисунок 8-2.Состояние Idle

4.Создайте блок-диаграмму, показанную на рисунке 8-2.

Подключите enum к структуре Case, используя сдвиговый регистр в цикле While.

После подключения перечислительной константы к терминалу селектора выбора структуры Case, щелкните правой кнопкой мыши по структуре Case и выберите Add Case for Every Value для автоматического добавления фрейма для каждого элемента enum.

Скопируйте enum для использования внутри структуры Case. Копия также связана с type-defined enum.

Подключите константу False к терминалу условия; конечный автомат не должен останавливаться при выходе из состояния Idle.

В состоянии Idle вы должны преобразовать кластер в массив, чтобы можно было выполнять поиск активированной кнопки. Функция Search 1D Array возвращает индекс нажатой кнопки. Поскольку нет кнопки, связанной с состоянием Idle, индекс нужно увеличить на единицу. Используйте функцию Type Cast для выбора подходящего элемента из константы enum. Очень важно, чтобы порядок элементов кластере совпадал с порядком элементов в перечислительной константе.

5.Создайте код для состояния Process 1, как показано на рисунке 8-3.

© National Instruments Corporation

142

Основы LabVIEW 1. Упражнения

8. Общепринятая методика проектирования и шаблоны

Рисунок 8-3. Состояние Process 1 State

Используйте функцию One Button Dialog для симуляции кода процесса 1.

Подключите константу False к терминалу условия; конечный автомат не должен останавливаться при выходе из состояния Process 1.

6.Создайте код для состояния Process 2, как показано на рисунке 8-4.

Рисунок 8-4. Состояние Process 2

Используйте функцию One Button Dialog для симуляции кода процесса 2.

Подключите константу False к терминалу условия; конечный автомат не должен останавливаться при выходе из состояния Process 2.

7.Создайте код для состояния Stop, показанное на рисунке 8-5.

Основы LabVIEW 1. Упражнения

143

ni.com

8. Общепринятая методика проектирования и шаблоны

Рисунок 8-5. Состояние Stop

Подключите константу True к терминалу условия; конечный автомат должен останавливаться только из этого состояния.

8.По окончании проектирования сохраните VI.

Тестирование

1.Переключитесь на лицевую панель.

2.Запустите VI. Поэкспериментируйте с VI, чтобы убедиться, что он работает правильно. Если это не так, сравните вашу блок-диаграмму с представленными на рисунках с 8-2 по 8-5.

3.Завершив тестирование, сохраните и закройте VI.

Конец упражнения 8-1

© National Instruments Corporation

144

Основы LabVIEW 1. Упражнения

8. Общепринятая методика проектирования и шаблоны

Заметки

Основы LabVIEW 1. Упражнения

145

ni.com

9

Использование переменных

Упражнение 9-1. Local Variable VI

Цель упражнения

Использование локальной переменной для чтения и записи из элемента управления.

Задание

У вас есть проект LabVIEW, реализующий функции метеостанции. Метеостанция измеряет температуру каждые полсекунды, анализирует каждый результат измерения температуры для определения, не выходит ли она за верхнюю или нижнюю границу и предупреждает пользователя об опасности теплового удара или обморожения. Если результат измерения температуры выходит из заданного диапазона, VI сохраняет данные в файл.

Два элемента лицевой панели задают уставки – нижний и верхний пределы температуры. Однако ничто не может помешать пользователю установить нижний предел больше, чем верхний.

Используйте локальную переменную для установки нижнего предела равным верхнему, если пользователь задает нижний предел больше верхнего.

План решения

Все VI в проекте уже спроектированы. Ваша задача – модифицировать VI, чтобы при необходимости нижний предел устанавливался равным верхнему.

© National Instruments Corporation

146

Основы LabVIEW 1. Упражнения

9. Использование переменных

Определение состояний

В приведенной таблице описываются состояния конечного автомата.

Состояние

Действие

Следующее состояние

 

 

 

Acquisition

Установка времени равным

Analysis

(Сбор данных)

нулю, измерение

 

 

температуры с помощью

 

 

датчика, чтение состояния

 

 

элементов управления

 

 

лицевой панели

 

 

 

 

Analysis

Определение уровня

Data Log, если

(анализ)

предупреждения

формируется

 

 

предупреждение, Time

 

 

Check, если

 

 

предупреждений нет

 

 

 

Data Log

Запись данных в файл ASCII

Time Check

(Запись

с табуляцией в качестве

 

данных)

разделителя

 

 

 

 

Time Check

Проверка времени – не

Acquisition, если время

(Проверка

превысило ли оно 0.5 секунд

вышло, Time Check, если

времени)

 

время не вышло

 

 

 

Изменение значения в элемент, задающем нижний порог температуры должно происходить после того, как пользователь ввел значение, но прежде, чем значение определит уровень предупреждения. Поэтому изменения в VI необходимо проводить в состояниях Acquisition или Analysis, либо поместить новое состояние между ними.

1.Прежде чем выбрать используемый вариант, взгляните внимательно на содержимое состояний Acquisition и Analysis:

Откройте проект Weather Station, расположенный в папке

<Exercises>\LabVIEW Core 1\Variable.

Откройте Weather Station UI.vi.

Изучите содержимое состояний Acquisition и Analysis, соответствующих фреймам Acquisition и Analysis структуры Case.

Основы LabVIEW 1. Упражнения

147

ni.com

9. Использование переменных

Варианты решения

У вас есть три различных варианта дизайна для модификации этого проекта.

Вариант

Описание

Достоинства/Недостатки

 

 

 

1

Добавить структуру Case в

Плохой вариант: в состояние

 

состояние Acquisition для

сбора добавляется новая

 

установки элементов

задача, вместо того, чтобы

 

управления, прежде чем

фокусироваться только на

 

локальная переменная

сборе данных.

 

запишет значения в кластер.

 

 

 

 

2

Добавить новое состояние в

Способность управлять

 

конечный автомат, который

появлением состояния.

 

проверяет состояние

 

 

элементов управления и, при

 

 

необходимости,

 

 

переустанавливает их.

 

 

 

 

3

Модифицировать Determine

Простая реализация,

 

Warnings subVI для

поскольку функциональность

 

переустановки элементов

уже частично разработана.

 

управления.

Однако, при использовании

 

 

текущей функциональности,

 

 

один набор данных всегда

 

 

будет теряться при

 

 

пеустановки элемента

 

 

управления нижним

 

 

пределом.

 

 

 

В этом упражнении реализуется вариант 2.

 

© National Instruments Corporation

148

Основы LabVIEW 1. Упражнения

9. Использование переменных

Определение нового состояния для варианта 2

В следующей таблице описаны определения нового состояния.

Состояние

Действие

Следующее состояние

 

 

 

Acquisition (Сбор

Сбор данных с

Range Check

данных)

температурного датчика в

 

 

канале AI0 и чтение

 

 

состояния элементов

 

 

управления лицевой

 

 

панели

 

 

 

 

Range Check

Чтение состояния

Analysis

(проверка

элементов управления

 

диапазона)

лицевой панели и

 

 

установка нижнего

 

 

предела равным верхнему,

 

 

если нижний предел

 

 

больше верхнего

 

 

 

 

Analysis (анализ)

Определение уровня

Data Log, если

 

предупреждения

появилось

 

 

предупреждение, Time

 

 

Check, если

 

 

предупреждений нет

 

 

 

Data Log (Запись

Запись данных в файл

Time Check

данных)

ASCII с табуляцией в

 

 

качестве разделителя

 

 

 

 

Time Check

Проверка времени – не

Acquisition, если время

(Проверка времени)

превысило ли оно 0.5

вышло, Time Check,

 

секунд

если время не вышло

 

 

 

Реализация

1.Если проект Weather Station.lvproj еще не открыт, откройте его из папки <Exercises>\LabVIEW Core 1\Variables.

Примечание: Если у вас нет устройства сбора данных, но есть вспомогательный сигнальный блок DAQ Signal Accessory, используйте файлы, расположенные в папке <Exercises>\LabVIEW Core 1\No Hardware Required\Variable.

2.Добавьте состояние Range Check в конечный автомат.

Из окна Project Explorer откройте Weather Station States.ctl двойным щелчком по списку. Это элемент управления type-defined enumerated, определяющий состояния конечного автомата.

Основы LabVIEW 1. Упражнения

149

ni.com

9. Использование переменных

Щелкните правой кнопкой мыши по элементу управления и выберите из контекстного меню Edit Items.

Вставьте элемент и модифицируйте его в соответствии с таблицей 9- 1. Будьте осторожны, не добавьте пустой список.

Таблица 9-1. Состояния элемента управления перечислительного типа

Элемент

Цифровой дисплей

 

 

Acquisition

0

 

 

Range Check

1

 

 

Analysis

2

 

 

Data Log

3

 

 

Time Check

4

 

 

Сохраните и закройте элемент управления.

Если Weather Station UI.vi еще не открыт, откройте его двойным щелчком по строке в окне Project Explorer.

Откройте блок-диаграмму.

Щелкните правой кнопкой мыши по структуре Case конечного автомата и выберите из контекстного меню Add Case for Every Value. Поскольку в enumerated control добавилось значение, в структуре Case появится новый фрейм.

3.Считайте нижний и верхний пределы температуры в состоянии Range Check, а не в состоянии Acquisition, как показано на рисунке 9-1.

© National Instruments Corporation

150

Основы LabVIEW 1. Упражнения