Цель: Смоделировать виртуальный прибор для измерения температуры, которая изменяется со временем. Полученные значения от разных каналов записать в один кадр вместе со служебной информацией, для дальнейшей передачи, хранения и обработки данной информации. Кадры необходимо записать в текстовый файл Temp.txt. Затем считать кадры из файла и преобразовать в вид удобный для визуального восприятия.
Кадр системы
виртуальный прибор температура кадр
Кадр системы - это совокупность посылок (слов) во временной области об одном изменении всех входных сигналов телеизмерительной системы ТИС, вместе со служебной информацией, позволяющей потребителю информации независимо выделить информацию о любом сигнале системы.
Кадровый маркер
Рис.1.1Структура простейшего кадра.
Обычно для обозначения начала кадра передается специальное слово (кадровый маркер), а для обозначения каждого слова, в начале слова, передается символ. Все слова кадра имеют одинаковое количество символов m , включая синхропризнак кадра – кадровый маркер.
Количество слов в таком кадре равно числу входных сигналов. В нашем случаи количество сигналов – три, а, следовательно, и слов в каждом кадре будет по три.
Наша система представляет собой три измерительных канала, информация в канал поступает от термопары (случайные числа от -100 до 100).
Структура измерительного канала
Измерительный канал представляет собой последовательность преобразования физических и числовых величин, в результате которых получаем числовой эквивалент измеряемой физической величины с заданной погрешностью (в единицах этой величины).
Последовательность преобразований при измерении температуры:
T→ R→ e→ U→ N→ NT→ TN,
где Т – измеряемая величина; R – изменение значения сопротивления резистора; е – изменение значения напряжения на резисторе; U – изменение значения напряжения на входе АЦП; N – значение кода, соответствующее значению напряжения; NT – значение кода в единицах измеряемой величины; TN – числовой эквивалент измеряемой величины с заданной погрешностью.
Измерительный канал, при измерении температуры, представляет собой последовательность преобразователей: первичный преобразователь, нормирующее преобразование и аналого-цифровое преобразование. Обратное преобразование будем осуществлять после считывания информации из файла, так как хранить и передавать информацию в аналого-цифровом виде легче.
Первичный измерительный преобразователь – это термопара типа J, которая имеет функцию преобразования:
Температурная зависимость напряжения на выходе термопары является сильно нелинейной. Поэтому для нахождения температуры по измеренному значению напряжения необходимо использовать таблицу или нелинейную функцию, аппроксимирующую табличные данные.
Мы выбрали термопару данного типа, потому что она имеет широкий диапазон измеряемой температуры, в том числе отрицательной: от -210° до 760°.
Измерительный канал создадим как отдельный виртуальный прибор, так как далее нам их понадобится несколько. Блок – диаграмма виртуального прибора:
На входе виртуального прибора температура, случайное число. Преобразуем температуру в напряжения с помощью функциональной зависимости рассмотренной выше, с помощью узла ФОРМУЛА (FormulaNode).
Далее осуществляем нормирующее и аналого-цифровое преобразование.
Нормирующее преобразование, от 0 до 10:
Uнор = k(U-Umin)
Tmin = -210° → Umin = -8,09538 В.
k = 0,196.
Аналого-цифровое преобразование: выходная вылечена изменяется от 0 до 255, целочисленные значения.
Формирование и запись кадра
В блок-диаграмму помещаем три виртуальных прибора - измерительных канала, смоделированных ранее. На их вход подаем случайную величину от -100 до 100, реализуем ее с помощью функции RandomNumber. Данная функция генерирует случайное число в диапазоне от 0 до 1 с равномерным амплитудным распределением.
Кадр буду формировать в строки, так проще соединяться слова в кадры и отслеживать, чтобы все строки были одной длинны. Данные для удобства восприятия буду записывать в десятичной системе счисления, в случаи необходимости можно воспользоваться другой.
Сначала данные из измерительного канала преобразуем в строки заданного размера, с помощью функции Number To Decimal String (Число в строку десятичных цифр). Функция преобразует число (number) в строку десятичных цифр (decimal integer string) с шириной, равной или большей значения, установленного на входе ширина (width). Если число дробное, то оно округляется до ближайшего целого. Число может быть скаляром, массивом или кластером чисел, массивом кластеров чисел и т. д. В таблице показано влияние числовых параметров на входах число и ширина на выходную строку строка десятичных цифр. Здесь и далее символ _ обозначает пробел.
Далее формируем слово, в качестве служебной информации номер канала и время, когда информация была зафиксирована. То есть у нас получается три отдельные строки. Номер канала задаем строковой константой, а время с помощью виртуального прибора Format Date/Time String (Форматировать строку даты/времени).
Функция отображает значение времени или числовое значение как время в заданном пользователем формате. Коды формата времени включают следующие параметры: %H (часы, 24_часовой интервал), %I (часы, 12_часовой интервал), %M (минуты), %S (секунды), %p (флаг до полудня/после полудня), %d (дни месяца), %m (номер месяца в году),
%y (номер года в веке), %Y (номер года, включая век), %a (сокращенное название дня недели), % x (дата в локальной спецификации), %X (время в локальной спецификации),%c (дата/время в локальной спецификации) и <цифра> (дробная часть секунды с точностью, заданной значением <цифра>).
Вход строка формата времени (time format string) определяет формат выходной строки. Коды формата времени (начинающиеся с %) не воспринимаются функцией как код, точно возвращающий символ. По умолчанию установлен код %c, который соответствует представлению даты/времени в месте локализации компьютера. Если строка формата времени является пустой строкой, то функция использует значение по умолчанию. Вход отметка времени (time stamp) может быть значением времени или числом. В числовом представлении этот параметр представляет не зависящее от временного пояса число полных секунд, прошедших с 0:00 1 января 1904 года по Гринвичу. По умолчанию берется текущая дата и время. Выход строка даты/времени (date/time string) представляет отформатированную строку даты/времени. Данная функция формирует строку даты/времени путем копирования строки формата времени и замены каждого из кодов формата времени (time format codes) соответствующим значением.
Коды формата времени дополняются нулями, которые обеспечивают постоянную ширину поля.
Дополнительный модификатор # перед буквой кода формата удаляет начальные нули из следующих кодов формата:
%#d, %#H, %#I, %#j, %#m, %#M, %#s, %#S, %#U, %#w, %#W, %#X, %#y, %#Y
Модификатор # не изменяет поведение других кодов формата.
Строки с различной информацией (номером канала, «температурой» и временем) объединяем с помощью функции Concatenate Strings (Объединить строки), вначале добавляем маркер - 0. Функция объединяет входные строки и одномерные массивы строк в единственную выходную строку. Для массива строк в объединенную строку входит каждый элемент массива. Добавление/удаление входов функции производится с помощью строки Добавить вход/Удалить вход (Add Input/Remove Input) контекстного меню функции или путем изменения размера функции по вертикали с помощью инструмента Перемещение.
Далее объединяем получившиеся слова в кадр, в начале и в конце строки добавляем кадровый маркер, 18 нулей, для того, чтобы он был такой же длины, как и слова, слова у нас получились одинаковой длины по восемнадцать знаков. Получившийся кадр отображается на лицевой панели виртуального прибора.
Кадры, получающиеся в результате выполнения каждого цикла программы, записываем в файл с помощью Write to Text File (Записать в текстовый файл).
Функция записывает строку символов (string of characters) или массив строк в файл. Ко входу файл (file) подключен путь (path), то перед записью функция открывает файл и заменяет его предыдущее содержимое. В нашем случаи к этому входу подключена ссылка и запись начинается с текущей позиции файла. Для того чтобы произвести дозапись к существующему файлу, необходимо установить позицию файла в его конец с помощью функции Установить позицию файла (Set File Position). Эту же функцию можно использовать для организации произвольного доступа. Вход подсказка (выбрать или ввести путь к файлу) (prompt (Choose or enter file path)) представляет сообщение, которое появляется в заголовке файлового диалогового окна. По умолчанию это пустая строка. Вход файл (использовать диалог) (file (use dialog)) может содержать ссылку или абсолютный путь к файлу. Если на вход файл подается путь, то функция открывает файл, заданный этим путем.
Добавляем виртуальный экспресс-прибор Time Delay (Временная задержка), для того чтобы снимать показания каждые две секунды.
Экспресс ВП Временная задержка (Time Delay) вносит временную задержку в выполнение ВП. Величина задержки может задаваться с помощью элемента управления временная задержка (Time delay (seconds)) при конфигурировании ВП или с помощью элемента управления, подключаемого ко входу время задержки (с) (Delay Time (s)) иконки Экспресс ВП. Значение, подаваемое на данный вход, имеет больший приоритет по сравнению с тем, что устанавливается в диалоговом окне.