Неверное отображение данных

Простейшие вопросы в области инженерной разработки
Ответить
Meteor
user
user
Сообщения: 74
Зарегистрирован: 25 окт 2013, 17:37
Версия LabVIEW: 2012

Неверное отображение данных

Сообщение Meteor »

Здравствуйте, форумчане!
Имеется прибор NI-USB6366, при помощи которого (через signalexpress) снимается одновременно несколько сигналов, записываемых в TDMS файл.
Есть необходимость выделить из всего файла поканальные данные и сохранить их преобразовав в бинарный формат с учетом масштаба.
В целом с задачей справился,
LV_code.jpg
но есть непонятная ситуация.
Если смотреть на общую картинку открытого в LV файла и его вывод на графику, то вижу что сигнал соответствует исходному (тут одновременно имеются четыре сигнала)
TDMS_Fileread_LV.jpg
Но, если открыть полученные бинарные файлы в матлабе, то наблюдаю такую картину
Matlab_general.jpg
В начале и конце появились странные выбросы...
Так выглядит начало
Matlab_first.jpg
А так финал
Matlab_last.jpg
Хочется понять, что порождает такие всплески и как это победить?
Самый простой вариант - обрезать в матлабе, но это некрасиво...
Artem.spb

Activity Автор
professor
professor
Сообщения: 3404
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 174 раза
Контактная информация:

Re: Неверное отображение данных

Сообщение Artem.spb »

Meteor писал(а): 18 апр 2021, 01:47 но есть непонятная ситуация.
для меня более непонятная ситуация, как вы записывая i16 потом умудряетесь видеть значения 0,15?
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2211
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 27 раз

Re: Неверное отображение данных

Сообщение Borjomy_1 »

Все банально. На этих участках сигнал выходит за пределы диапазона +-32767. Когда происходит деление на VoltageRange, а потом умножение на 32767. Но потом правильность преобразования вы отдаете на откуп функции to Int16. А вы уверены, что она корректно работает с величинами за пределами диапазона??? А вот и нет.
Тут варианта два: первый делать преобразование с запасом, т.е применять коэффициент например 32000 с преобразованием в I16, либо увеличивать VoltageRange до реального диапазона АЦП. Но и тут могут быть нюансы.
Второй, принципиально надежный: обрезать значения функцией In Range с указанием +32767 и -32768 в максимуме и минимуме, а уж потом делать To Int16
Похожая проблема может быть уже в матлабе, но с тем же эффектом
Meteor
user
user
Сообщения: 74
Зарегистрирован: 25 окт 2013, 17:37
Версия LabVIEW: 2012

Re: Неверное отображение данных

Сообщение Meteor »

Artem.spb писал(а): 18 апр 2021, 02:53 для меня более непонятная ситуация, как вы записывая i16 потом умудряетесь видеть значения 0,15?
Если приглядеться, то можно заметить, что перед тем как преобразовать в int16, поток сперва нормируется (делится) на величину указанную в окне VoltageRange (там установлено значение 5, это абсолютное значение шкалы при которой производилась запись), затем нормированный поток умножается на константу 2^15-1=32767, т.е., на мой взгляд, если число меньше или равное +-5 разделить на 5 и умножить на 32767, то получить значение превышающее (в абсолюте) +-32767 очень затруднительно...
А матлабовские графики отрисованы в целочисленных знаковых единицах и исходные 0,18 примерно соответствуют 1200, как-то так.
Borjomy_1 писал(а): 18 апр 2021, 09:25 обрезать значения функцией In Range
Попробую, вдруг получится.
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Для чайников»