Битые tdms

Работа с файлами и базами данных
Ответить
Artem.spb

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

Битые tdms

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

Странная проблема, но решения пока нагуглить не смог.
Есть система "мониторинга", особо не контролирует, просто логирует данные.
Всё складируем в tdms с некоторым количеством технической информации.
Всё хорошо до момента "аварийной остановки". Если обрубить питание компа, последний файл с большой вероятностью будет битым, причём фатально битым, пример файла во вложении. Штатные функции говорят, что файл не совместим с форматом.
Есть пара "подозреваемых" (ниже), но неужели tdms такой хрупкий формат, что не пригоден для применения в подобных системах?

Параллельно в этой же программе есть просмотр архивов, так что файл может быть открыт дважды, но просмотр ничего не пишет.
Проверяем на WinE, пока на "нормальных" контроллерах не проверяли.
Вложения
20210622_104547-000-.7z
(478.14 КБ) 7 скачиваний
Borjomy_1

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

Re: Битые tdms

Сообщение Borjomy_1 »

Предварительно могу сказать. Сталкивался с таким. Проблема на форуме NI обсуждалась. Если последняя запись битая (т.е записана не до конца, либо наоборот - длина больше, а в теле нули, когда длина файла обновилась, а сектор записать не успели), то возникает такая проблема. Решение - обрезка файла до последней целой записи.
При открытии файла производится составление индексного файла, скорее всего именно неудачное завершение этой операции приводит к отказу.
Borjomy_1

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

Re: Битые tdms

Сообщение Borjomy_1 »

Запись производится на диск с какой файловой системой? FAT32 или NTFS?
Первая менее устойчива к сбоям.
Artem.spb

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

Re: Битые tdms

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

Borjomy_1 писал(а): 09 сен 2021, 22:20 При открытии файла производится составление индексного файла, скорее всего именно неудачное завершение этой операции приводит к отказу.
Я ради эксперимента даже индекс удалял, не помогло.

А как его обкромсать до целой записи?

upd: урезанием по 1 байту за 10 минут (645 сек) восстановил работоспособность файла.
ujin1
junior
junior
Сообщения: 60
Зарегистрирован: 06 ноя 2020, 15:37
Версия LabVIEW: 19
Благодарил (а): 1 раз
Поблагодарили: 10 раз

Re: Битые tdms

Сообщение ujin1 »

Artem.spb писал(а): 09 сен 2021, 22:49
Borjomy_1 писал(а): 09 сен 2021, 22:20 При открытии файла производится составление индексного файла, скорее всего именно неудачное завершение этой операции приводит к отказу.
Я ради эксперимента даже индекс удалял, не помогло.

А как его обкромсать до целой записи?

upd: урезанием по 1 байту за 10 минут (645 сек) восстановил работоспособность файла.
В файле есть повторяющиеся метки. Обрезание до метки. Редактор WinHex.Можно и в FAR. Раньше Dos Navigator.
tdms.png
Но вопрос не в этом. Насколько я увидел данных немного. Сдвиг времени секунда.
Спокойно справляется сервер баз данных. Я postgresql ставлю в том числе на NILinuxRT.
Еще есть вариант сброса на централизованный postgresql сервер. Один такой на Debian работает уже 3 года.
TDMS для быстрых данных. Все что более 0,1 с и менее 1200 параметров удобнее скидывать в базу.
Например извлечение из базы 2х посекундных параметров за 24 часа занимает 4 сек.
trend.png
Изображение
Borjomy_1

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

Re: Битые tdms

Сообщение Borjomy_1 »

Формат TDMS
https://www.ni.com/ru-ru/support/docume ... cture.html

Для лечения можно производить элементарный разбор и находить битые записи вместо брутфорсного обрезания файла по 1 байту
А индексный файл удалять бесполезно. Ошибка как раз возникает, когда система пытается его восстановить.
Artem.spb

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

Re: Битые tdms

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

ujin1 писал(а): 10 сен 2021, 08:05 Спокойно справляется сервер баз данных.
От БД отказались по нескольким причинам. Главная - транспортабельность файлов - любое испытание можно перенести на другую машину и удалить с рабочей, чтобы место не занимало.

Ну а руками разбирать - странно как-то. Есть готовые функции, но не работающие :)
В общем, информацию понял, спасибо за разъяснения, учту на будущее такие особенности.
Borjomy_1

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

Re: Битые tdms

Сообщение Borjomy_1 »

Просто странно требовать от стандартной записи в файл устойчивости к сбоям при перерыве питания. Имеет смысл сделать запись реже (с учетом объема данных), с тем, чтобы уменьшить принципиальную вероятность возникновения ситуации. Ну и износ накопителя будет меньше.
Artem.spb

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

Re: Битые tdms

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

Мне это не кажется странным :)
Пусть он будет битый, но при этом читаемый стандартными же функциями. Предупреждение, что хвост сломан, но не полностью же "не совместимо с форматом".
Borjomy_1

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

Re: Битые tdms

Сообщение Borjomy_1 »

Artem.spb писал(а): 10 сен 2021, 16:29 Мне это не кажется странным :)
Пусть он будет битый, но при этом читаемый стандартными же функциями. Предупреждение, что хвост сломан, но не полностью же "не совместимо с форматом".
Ну что вы хотите от индусов? :haha:
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Сохранение данных»