Входы и выходы пользовательского интерфейса
Тип | Имя | Свойства |
Числовой элемент управления | Верхний предел | Двойная точность |
Числовой элемент управления | Нижний предел | Двойная точность |
Waveform Chart | Ход температуры | |
Строковый индикатор | Предупреждение | Четыре возможных значения: "Жарко", "Холодно", "Нет", "Верхний предел < Нижний предел" |
Кнопка Stop | Stop |
Внешние входы и выходы
· Входы: текущая температура с датчика на канале AI0 платы сбора данных.
Формула преобразования: напряжение × 100 = градусы Цельсия.
· Выходы: ASCII-файл, разделенный табуляцией, в котором для каждого выданного предупреждения сохраняются текущая температура, пределы температуры и строка предупреждения.
Рис. 11-12. Диаграмма переходов для курсового проекта.
Реализация
На следующих шагах вы построите конечный автомат в ВП Интерфейс метеостанции.
Рис. 11-13. Создание конечного автомата.
1. Откройте проект метеостанции.
q Выберите пункт меню File>>Open Project. Перейдите в каталог C:\Exercises\LabVIEW Basics I\Курсовой проект.
q Выберите Метеостанция.lvproj.
2. Откройте пользовательский интерфейс метеостанции.
q В окне Project Explorer дважды щелкните на Интерфейс метеостанции.vi.
3. Перейдите на блок-диаграмму.
4. Создайте на блок-диаграмме конечный автомат, используя существующий элемент управления перечислимого типа.
q Поместите на блок-диаграмму цикл While из палитры Structures, как показано на рис. 11-13.
q Поместите внутри цикла структуру Case.
q Вынесите перечислимую константу Состояния метеостанции за пределы цикла.
q Соедините константу с терминалом селектора вариантов.
q Щелкните правой кнопкой на структуре и выберите в контекстном меню пункт Add Case for Every Value (Добавить вариант для каждого значения).
q Измените туннель перечислимой константы на сдвиговый регистр.
5. Поместите в цикл функцию ожидания, чтобы процессор мог при необходимости выполнять другие задачи.
q Поместите внутрь цикла While (но вне структуры Case) функцию Wait (ms).
q Щелкните правой кнопкой на терминале milliseconds to wait и выберите в контекстном меню Create>>Constant.
q Введите в константу значение 5.
6. Передайте кластер температур в конечный автомат так, чтобы он был доступен из любого состояния.
q Соедините выход функции Bundle с циклом While, чтобы создать туннель.
q Замените туннель на сдвиговый регистр.
q Соедините сдвиговый регистр со структурой Case.
7. Сравните свою блок-диаграмму с показанной на рис. 11-13.
8. Сохраните ВП.
В следующих разделах вы будете создавать код для каждого из состояний конечного автомата.
Состояние сбора данных
Рис. 11-14. Состояние сбора данных.
1. Переключитесь на состояние "Сбор данных".
2. Выполните однократный ввод данных температуры.
Аппаратура
q Поместите DAQ Assistant в структуру Case.
q Выберите тип задачи Analog Input>>Voltage.
q Выберите канал ai0 для вашего устройства сбора данных.
q Нажмите кнопку Finish.
q Выберите Temperature в раскрывающемся меню Custom Scaling.
q Установите диапазон входного сигнала 0 to 50 degrees Celsius.
q Установите режим синхронизации 1 Sample (On Demand).
q Нажмите кнопку OK.
q Переходите к шагу 3.
Без аппаратуры
q Выберите в окне Project Explorer ВП Имитатор термометра и перетащите его в вариант "Сбор данных". Далее вы будете использовать терминалы этого ВП вместо терминалов DAQ Assistant.
3. Выведите полученные температурные данные на индикатор Ход температуры.
q Переместите терминал Ход температуры в вариант "Сбор данных".
q Соедините выход data DAQ Assistant с терминалом Ход температуры. Обратите внимание, что тип данных графического индикатора автоматически подстроился под тип входных данных.
4. Обновите текущую, максимальную и минимальную температуры в кластере температур.
q Поместите функцию Bundle By Name в вариант "Сбор данных".
q Соедините с функцией кластер температур.
q Расширьте функцию так, чтобы были видны три элемента.
q При необходимости переназначьте терминалы, чтобы порядок элементов был таким: Температура, Т ВерхПредел, Т НижПредел.
q Переместите терминалы Верхний предел и Нижний предел в вариант "Сбор данных".
q Соедините выход data DAQ Assistant с элементом Температура функции Bundle By Name.
q Соедините терминал Верхний предел с элементом Т ВерхПредел функции Bundle By Name.
q Соедините терминал Нижний предел с элементом Т НижПредел функции Bundle By Name.
5. Выполните переход в состояние "Анализ".
q Поместите копию перечислимой константы Состояния метеостанции в вариант "Сбор данных".
q Выберите в константе элемент Анализ.
q Соедините константу со сдвиговым регистром выходного состояния.
6. Сохраните ВП.
Состояние анализа
В предыдущих упражнениях вы написали подВП Предупреждения, который выполняет требуемый анализ. Он уже добавлен в проект; теперь его нужно вставить в главный ВП.
Рис. 11-15. Состояние анализа.
1. Переключитесь на состояние "Анализ".
2. Поместите ВП Предупреждения в вариант "Анализ".
q Перейдите в окно Project Explorer.
q Перетащите ВП Предупреждения на блок-диаграмму, в вариант "Анализ".
3. Передайте температурные значения в ВП Предупреждения.
q Поместите в вариант "Анализ" функцию Unbundle By Name.
q Соедините с функцией кластер температур.
q Расширьте функцию так, чтобы были видны три элемента.
q При необходимости переназначьте терминалы, чтобы порядок элементов был таким: Температура, Т ВерхПредел, Т НижПредел.
q Соедините каждый выход функции с соответствующим входом ВП Предупреждения.
4. Выведите на экран строку предупреждения.
q Переместите терминал Предупреждение в вариант "Анализ".
q Соедините терминал Текст ВП Предупреждения с терминалом Предупреждение.
5. Обновите текст предупреждения в кластере температур.
q Поместите в вариант "Анализ" функцию Bundle By Name.
q Соедините кластер температур с кластерным входом функции.
q Выберите на входе функции элемент Предупреждение.
q Соедините терминал Текст ВП Предупреждения с входом функции.
q Соедините выход функции со сдвиговым регистром выходного кластера.
6. Если выдано предупреждение, сохраните данные; в противном случае проверьте, не наступило ли время следующего измерения.
q Поместите в вариант "Анализ" структуру Case.
q Соедините терминал Предупреждение? ВП Предупреждения с селектором варианта новой структуры.
q Переключитесь на вариант True.
q Поместите в этот вариант копию перечислимой константы Состояния метеостанции.
q Выберите в константе элемент Сохранение.
q Соедините константу со сдвиговым регистром выходного состояния.
q Переключитесь на вариант False.
q Поместите в этот вариант копию перечислимой константы Состояния метеостанции.
q Выберите в константе элемент Проверка времени.
q Соедините константу со сдвиговым регистром выходного состояния.
7. Сохраните ВП.
Состояние сохранения
В этом состоянии данные сохраняются в виде ASCII-файла, разделенного табуляцией. Файл необходимо открыть до начала работы конечного автомата. После завершения его работы файл должен быть закрыт.
Рис. 11-16. Состояние сохранения.
1. Переключитесь на состояние "Сохранение".
2. Поместите функцию Open/Create/Replace File слева от конечного автомата.
3. Задайте для функции режим открытия или создания файла.
q Щелкните правой кнопкой на терминале operation функции и выберите в контекстном меню Create>>Constant.
q Выберите в константе элемент open or create.
4. Передайте кластер ошибки и ссылку на файл в конечный автомат, чтобы они могли использоваться во всех состояниях.
q Соедините терминал error out функции Open/Create/Replace File с циклом While.
q Замените туннель на сдвиговый регистр.
q Соедините с циклом терминал refnum out.
q Замените туннель на сдвиговый регистр.
5. Подготовьте данные для записи, объединив их в одной строке.
q Поместите функцию Unbundle By Name в вариант "Сохранение".
q Соедините кластер температур с входом функции.
q Расширьте функцию так, чтобы были видны четыре элемента.
q Выберите элементы так, чтобы они шли в следующем порядке: Температура, Т ВерхПредел, Т НижПредел, Предупреждение.
q Поместите справа от функции Unbundle By Name функцию Format Into String.
q Расширьте функцию до восьми входов.
q Поместите в вариант "Сохранение" константу с символом табуляции.
q Поместите здесь же константу с символом конца строки (End of Line).
q Подайте на входы данные в следующем порядке: Температура, <Tab>, Т ВерхПредел, <Tab>, Т НижПредел, <Tab>, Предупреждение, <End of Line>.
6. Запишите сформированную строку в файл.
q Поместите функцию Write To Text File в вариант "Сохранение".
q Соедините выход функции Format Into String с входом text функции записи.
q Введите в функцию и выведите из нее кластер ошибки.
q Введите в функцию и выведите из нее ссылку на файл.
7. Закройте файл.
q Поместите функцию Close File справа от конечного автомата.
q Соедините с функцией кластер error и ссылку file refnum.
q Поместите справа от функции обработчик ошибок Simple Error Handler.
q Соедините терминал error out функции Close File с обработчиком ошибок.
8. Поместите копию перечислимой константы Состояния метеостанции в вариант "Сохранение".
9. Выберите в константе элемент Проверка времени.
10. Сохраните ВП.