Формирование и запись кадра

В блок-диаграмму помещаем три виртуальных прибора - измерительных канала, смоделированных ранее. На их вход подаем случайную величину от -100 до 100, реализуем ее с помощью функции Random Number. Данная функция генерирует случайное число в диапазоне от 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)) иконки Экспресс ВП. Значение, подаваемое на данный вход, имеет больший приоритет по сравнению с тем, что устанавливается в диалоговом окне.

Этот Экспресс_ВП использует функциональность функций Ожидание (мс) (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 – обратное нормирующему.

Получаем напряжение и преобразуем в температуру.

 





Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: