Цель:Смоделировать виртуальный прибор для измерения температуры, которая изменяетсясо временем. Полученные значения от разных каналов записать в один кадр вместесо служебной информацией, для дальнейшей передачи, хранения и обработки даннойинформации. Кадры необходимо записать в текстовый файл 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 integerstring) с шириной, равной или большей значения, установленного на входе ширина(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/timestring) представляет отформатированную строку даты/времени. Данная функцияформирует строку даты/времени путем копирования строки формата времени и заменыкаждого из кодов формата времени (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 (usedialog)) может содержать ссылку или абсолютный путь к файлу. Если на вход файлподается путь, то функция открывает файл, заданный этим путем.
Добавляемвиртуальный экспресс-прибор Time Delay (Временная задержка), для того чтобыснимать показания каждые две секунды.
ЭкспрессВП Временная задержка (Time Delay) вносит временную задержку в выполнение ВП.Величина задержки может задаваться с помощью элемента управления временнаязадержка (Time delay (seconds)) при конфигурировании ВП или с помощью элементауправления, подключаемого ко входу время задержки (с) (Delay Time (s)) иконкиЭкспресс ВП. Значение, подаваемое на данный вход, имеет больший приоритет посравнению с тем, что устанавливается в диалоговом окне.
ЭтотЭкспресс_ВП использует функциональность функций Ожидание (мс) (Wait (ms)) и Задержкадо следующего кратного интервала мс (Wait Until Next ms Multiple). Всюблок-диаграмму помещаем в цикл Цикл по условию (While Loop) эквивалентнаследующему псевдо коду: do {программа} while {условие}. Внутриструктуры размещаются терминал счетчика итераций (iteration terminal) iи терминал условия выхода из цикла (conditional terminal). Кодпрограммы, размещенный в структуре, выполняется до подачи на терминал условиялогической переменной ИСТИНА (TRUE) или ЛОЖЬ (FALSE). Цикл останавливаетсякнопкой с лицевой панели виртуального прибора.
Лицеваяпанель:
/>
Temp.txt:
/>
Данныеиз файла Temp.txtможносчитать и перевести обратно в числовые значения и осуществить обратноепреобразование, то есть преобразовать напряжение в температуру. Преобразованиеосуществляется с помощью полинома:
/>
/>
Блок– диаграмма виртуального прибора для обратного преобразования сигнала от АЦП втемпературу:
/>
Сначалаосуществляем преобразование обратное аналого-цифровому, затем обратноенормирующему:
Uнорм=( x/255)*10 – обратное аналого цифровому;
U= Uнорм/0,196 – 8,09538 – обратноенормирующему.
Получаемнапряжение и преобразуем в температуру.
Считываниеинформации
Блок– диаграмма виртуального прибора, который считывает информацию из файла ипреобразует в удобный для визуального восприятия вид.
/>
Первыйэлемент блок – диаграммы виртуальный прибор — ReadCharacters FromFile, который считывает текстовуюинформацию из файла.
Функциясчитывает определенное число символов или строк из файла, представляющего потокбайтов. По умолчанию эта функция считывает все символы из текстового файла.Считывание заданного количества символов, начиная с первого, производится спомощью входа подсчет (count). При установке отметки в строке Считать строки(Read Lines) контекстного меню функции вход подсчет определяет количествосчитываемых строк. Установка значения –1 на этом входе определяет считываниевсех символов в строке или всех строк текстового файла. Выход текст (text)содержит текст, считанный из файла. По умолчанию это строка, содержащая символыпервой строки файла. Если подключить вход подсчет, то на этот
выходбудет выводиться массив строк, считанных из файла. При удалении отметки.Считать строки на этот выход будут выводиться все символы, считываемые изфайла. Функция преобразует все зависящие от платформы символы конца строки ваналогичные символы LabVIEW независимо от состояния строки Convert EOLконтекстного меню функции.
Затемстрока подается на String Subset (Выделение подстроки), для того, чтобы изполученных данных выделять отдельные кадры. С каждым циклом смещениеувеличивается, с помощью счетчика итераций в структуре цикла, и виртуальныйприбор считывает новый кадр, все кадры имеют одинаковое количество символов — 90.
ФункцияString Subset возвращает часть входной строки (string), начинающуюся сосмещения (offset) и содержащую число символов, заданное на входе длина(length). Начальный адрес первого символа в строке равен 0. Выход подстрока(substring) является пустым, если смещение больше длины строки или если длинаменьше или равна 0. Если длина больше или равна длине строки минус смещение, тона выходе подстрока выводится остаток строки, начинающийся со смещения.
Далеевыделяем из кадра слова, с помощью тех же функций из кадра выделяем слова,которые имеют длину 18 символов:
/>
Так,как нам известно количество слов в кадре, которое равно 3 и постоянно, мыиспользуем цикл с заданным количеством итераций.
СтруктураЦикл с фиксированным числом итераций (For Loop) эквивалентна текстовомуоператору for i = 0 to N_1 do….
Припомещении структуры на панель блок-диаграммы ее контур в виде прямоугольникадолжен быть растянут так, чтобы охватить существующий код программы, которыйдолжен выполняться циклически заданное число раз, или так, чтобы позволить разместитьв нем новый код программы. Если помещаемая в структуру или перемещаемая внутриструктуры функция пересекается с ее границей, то граница автоматическирасширяется. Эта опция может быть отключена для данной структуры путем снятияотметки строки Auto Grow в контекстном меню структуры или для всего приложенияпутем снятия флажка Установить структуры с автоматическим расширением(Place structures with Auto Grow enabled) в окне категории Блок_диаграмма(Block Diagram) диалогового окна Опции (Options), вызываемого в менюИнструменты (Tools).
Количествоциклов может задаваться с помощью константы или элемента управления,подключенных к терминалу числа итераций (count terminal) (прямоугольникв левом верхнем углу структуры с буквой N). Текущее число завершенных итерацийцикла содержится в терминале счетчика итераций (iteration terminal).
/>
Далееиз слова выделяем информацию, используя функцию String Subset с разнымзначением сдвига и количеством считываемых символов. Номер канала и времяизмерения в виде строк выводим на лицевую панель, спомощью индикаторов. Асигнал от АЦП преобразуем обратно в числовое значение с помощью функции DecimalString To Number (Строку десятичных цифр в число).
Функцияпреобразует цифровые символы строки (string), начиная от смещения (offset), вцелое десятичное число и передает его на выход число (number). Если указанныйначальный элемент строки не цифра, то функция передает на выход число (number)значение по умолчанию (default). Если вход значение по умолчанию не подключен,то его состояние определяется как 0. Выход смещение после числа (offset pastnumber) определяет индекс первого элемента строки, следующего за числом.
Таблицапоказывает, как числовые параметры на входах строка, смещение и по умолчаниювлияют на выходное число.
/>
Получившеесячисло падаем на вход виртуального прибора, смоделированного ранее, которыйделает обратное преобразование кода от АЦП в напряжение, а затем в температуру.
Лицеваяпанель прибора, считывания:
/>
Вывод
Входе выполнения работы я смоделировал виртуальный прибор для измерениятемпературы, которая изменяется со временем. Для этого смоделировал виртуальныйприбор — измерительный канал. Полученные значения от разных каналов записал водин кадр вместе со служебной информацией, для дальнейшей передачи, хранения иобработки данной информации. Кадры записал в текстовый файл Temp.txt.Затем создал виртуальный прибор, который считывает кадры из файла, выделяеткадры и слова, преобразует их в вид удобный для визуального восприятия иотображает на лицевой панели.
Спомощью этого виртуального прибора я на практике осуществил процессформирование кадра, его запись и хранение. В результате исследованиявыяснилось, что если процесс будет менее динамичным, то мы будим записыватьмного излишней информации. Поэтому далее во время выполнения своей научноисследовательской работе я буду оптимизировать систему, улучшать пропускнуюспособность, уменьшать энергетические затраты на передачу сообщений, улучшатьпомехоустойчивость, увеличиваться быстродействие с помощью применение/> субкоммутатора.