Страница 1 из 1

Запись Waveform в TDMS

Добавлено: 14 окт 2014, 11:08
Borjomy_1
Вопрос у меня тут возник, стратегический.
Исходные данные: есть датчик, который выдает несколько каналов по последовательному порту. Данные идут с дискретом 2мс на канал. Т.е их достаточно много. При чтении делается пачка в Waveform, продолжительностью 0.5..1 сек, таймстамп которой присваивается программно, при приеме пакета. т.е раз в секунду имеем массив нескольких Waveform, длиной 500 отсчетов. Все это дело сохраняется в TDMS, чтобы потом можно было прочитать через Diadem.
Запись идет на флешку ограниченного объема, с циклической перезаписью. Поэтому, чем больше разовый объем записи, тем лучше - меньше изнашивается флешка.
Но. возникает вопрос - как формировать данные? Склеивать Waveform по каналам? Тогда будет проблема с джиттингом таймстампа. На него можно было-бы не обращать внимание, но кто может гарантировать, что не будет разбега при продолжительной работе. Кроме того, датчик подключается на горячую и могут быть перерывы в потоке данных.
Ваше мнение?

Re: Запись Waveform в TDMS

Добавлено: 27 окт 2014, 00:55
PeyNikola
Может имеет смысл работать с временным файлом, а потом из него данные на флешку переносить?

Не знаю как всё организованно, но на всякий случай: Думаю, стоит использовать архитектуру программы с промежуточными циклами для понижения частоты работы с переносом данных из памяти на носитель). Аналогия по этой теме: http://www.labviewportal.org/viewtopic. ... икл#p55933

Re: Запись Waveform в TDMS

Добавлено: 28 окт 2014, 09:56
Borjomy_1
Проблема не в том, как организовать очередь и буфер. Проблема в методиках синхронизации таймстампов. Кстати, флешка - это единственный носитель, на который разрешена запись (основной накопитель также твердотельный, но по соображениям надежности, при работе 24/7, используется только как загрузочный)

Re: Запись Waveform в TDMS

Добавлено: 28 окт 2014, 11:10
IvanLis
Borjomy_1 писал(а):Исходные данные: есть датчик, который выдает несколько каналов по последовательному порту. Данные идут с дискретом 2мс на канал. Т.е их достаточно много. При чтении делается пачка в Waveform, продолжительностью 0.5..1 сек, таймстамп которой присваивается программно, при приеме пакета. т.е раз в секунду имеем массив нескольких Waveform, длиной 500 отсчетов. Все это дело сохраняется в TDMS, чтобы потом можно было прочитать через Diadem.
У Вас каждый канал пишется в отдельный Waweform у которых t0 различны или все каналы закидываются в один Waweform у которых единое значение t0?

Я бы попробовал писать каждый Wave отдельно, тем самым мы защитимся от сбоев, т.е. будет потерян небольшой фрагмент данных. А функции склейки уже возложить на программу просмотра, она же не должна работать в реальном времени....
При склейке данных брать t0 первого кусочка данных, t0 последующих Waweform не учитывать, дабы уменьшить ошибки (главное, что бы не увеличить :crazy: ), от них использовать только значения отсчетов.

Например за 1 сек у нас набирается 500 отсчетов. За минуту, будет 60 Waweform, которые нужно отобразить. При склейке мы берем t0 от первого Waweform, и формируем один массив длиной 60*500=30000.

Re: Запись Waveform в TDMS

Добавлено: 28 окт 2014, 11:34
Borjomy_1
У меня каналы пишутся параллельно, у каждого свой Channel Name. Таким образом записывается массив WaveForms, с одинаковым t0. Но t0 + Nотс*dt не равен t0 следующего WaveForms этого-же канала (по крайней мере, я не могу это гарантировать). Записаться-то оно запишется, и без потерь. Однако что будет с привязкой по времени при просмотре тем-же Diadem ом - Бооольшой вопрос. Да и если вычитывать из TDMS, то никаких зацепок нет, как он склеивает.

Re: Запись Waveform в TDMS

Добавлено: 28 окт 2014, 11:52
IvanLis
Borjomy_1 писал(а):У меня каналы пишутся параллельно, у каждого свой Channel Name. Таким образом записывается массив WaveForms, с одинаковым t0. Но t0 + Nотс*dt не равен t0 следующего WaveForms этого-же канала (по крайней мере, я не могу это гарантировать). Записаться-то оно запишется, и без потерь. Однако что будет с привязкой по времени при просмотре тем-же Diadem ом - Бооольшой вопрос. Да и если вычитывать из TDMS, то никаких зацепок нет, как он склеивает.
Значит я верно понял проблему. И мне кажется что вероятность совпадения очень мала, это как про снаряд в одну воронку :D .

Я вообще писал бы в бинарники, каждый Wave для каждого канала в свой файл, зато потом крутить с ними можно как угодно. (http://www.labviewportal.org/viewtopic. ... 240#p59238)
Если бы t0 шло от платы захвата, то тут еще что-то можно было говорить о реальном времени, но в Вашем случае оно вообще назначается ПК.

Re: Запись Waveform в TDMS

Добавлено: 28 окт 2014, 11:59
Borjomy_1
Да с бинарниками никаких проблем нет, я уже лет 20 этим занимаюсь. Единственная загвоздка - требуется писать свой собственный просмотрщик. Старый уже стал для таких дел... ))) Хочется стандартизации, тем более, что данные линейные и фиксированной структуры.
для каждого канала в свой файл
это не удобно. Поскольку просматривать это надо все вместе, совмещать как-то надо и требуется контроль целостности структуры файлов. Слишком сложно и ненадежно.

Re: Запись Waveform в TDMS

Добавлено: 11 янв 2015, 15:01
step
Помогите организовать непрерывную запись Wave сигнала в бинарный формат.
Задача стоит такая. Есть wave сигналы длительностью от 10 сек до 3 часов которые после цифровой обработки необходимо сохранить в бинарном формате, для последующего открытия их в другой программе.
Пробовал сохранить сгенерированый сигнал в бинарный формат при помощи Write to Binary File Function, сохраняет только первые отчеты.
1.jpg

Re: Запись Waveform в TDMS

Добавлено: 11 янв 2015, 16:00
Vitekkz88
step писал(а):
Помогите организовать непрерывную запись Wave сигнала в бинарный формат.

Re: Запись Waveform в TDMS

Добавлено: 07 мар 2015, 17:45
getz
step писал(а):Помогите организовать непрерывную запись Wave сигнала в бинарный формат. ///
что мешает сделать запись в тдмс? и просматриавть экселем? примеры есть в папке установки. при длительных записях создаются новые листы чтобы в экселе можно было просматривать. в 2007 читается. около 20 минут на одном листе с циклом 1 мс