Создание новых файлов каждые сутки

Простейшие вопросы в области инженерной разработки

Создание новых файлов каждые сутки

Postby bagiatti on 29 Mar 2017, 16:41

Уважаемые специалисты labview!

У меня следующая задача: в системе с нескольких датчиков по CAN-шине считываются показания.
Считывание данных организовано с помощью цикла while.
Я хочу записывать данные в текстовый файл таким образом, чтобы раз в сутки или по достижения определенного размера файла
открывался новый файл с новым именем (которое будет задаваться по какому-то заданному алгоритму).
Я нашел самую подходящую ветку для моей задачи эту: viewtopic.php?f=21&t=831
Но это не совсем то, так как в указанном топике не стоит проблема с закрытием файла и открытием нового файла на определенной итерации цикла.
Собственно мой вопрос: как организовать закрытие файла и открывание нового файла на определенной итерации цикла или как это можно организовать по_другому?

Заранее спасибо.
bagiatti
interested
interested
 
Posts: 2
Joined: 29 Mar 2017, 13:02
LabVIEW Version: .
Karma: 0

Re: Создание новых файлов каждые сутки

Postby Blackman on 29 Mar 2017, 16:52

Установите библиотеку Asynchronous Multi File TDMS Data Logger https://forums.ni.com/t5/Example-Progra ... -p/3531663
при помощи VIPM или можно скачать по ссылке https://forums.ni.com/ni/attachments/ni ... .0.0.7.vip и установить.
И будет Вам "щастье" :bye:
Blackman
leader
leader
 
Posts: 658
Joined: 17 Jan 2016, 15:02
Medals: 1
Activity (1)
LabVIEW Version: 6.1,8.5,20
Karma: 165

Re: Создание новых файлов каждые сутки

Postby bagiatti on 29 Mar 2017, 17:27

Спасибо, попробую. :super:
Но пока как временный вариант, когда опубликовал свой вопрос до меня дошло, что можно банально воспользоваться case structure,
которая будет проверять каждую итерацию while выполнение условия по размеру файла или по дате.
Главное, чтобы не было так, что "нет ничего постоянного, чем временное". :wink:
bagiatti
interested
interested
 
Posts: 2
Joined: 29 Mar 2017, 13:02
LabVIEW Version: .
Karma: 0

Re: Создание новых файлов каждые сутки

Postby Borjomy_1 on 29 Mar 2017, 17:34

По-хорошему, нет смысла постоянно держать открытый файл TDMS. С чисто рабочих соображений - пока архив не будет закрыт, его нельзя посмотреть. Рекомендую буфферизировать запись и сохранять данные раз в минуту или около того, с открытием файла и последующим закрытием. В таком случае при достижении определенного порога достаточно изменить имя файла.
Borjomy_1
expert
expert
 
Posts: 1756
Joined: 28 Jun 2012, 09:32
Location: город семи холмов
Medals: 3
Activity (1) Professionalism (1) Silver (1)
LabVIEW Version: 4-8.6,9-14
Karma: 309
VIP

Re: Создание новых файлов каждые сутки

Postby Blackman on 29 Mar 2017, 18:01

Borjomy_1 wrote:...Рекомендую буфферизировать запись и сохранять данные раз в минуту или около того, с открытием файла и последующим закрытием...

И как минимум получить в один прекрасный момент при очередной записи ошибку, что нет доступа к файлу, потому что кто-то решил его в это время посмотреть (например в Excel) и он оказался занят :shok:
Blackman
leader
leader
 
Posts: 658
Joined: 17 Jan 2016, 15:02
Medals: 1
Activity (1)
LabVIEW Version: 6.1,8.5,20
Karma: 165

Re: Создание новых файлов каждые сутки

Postby Borjomy_1 on 29 Mar 2017, 19:30

И как минимум получить в один прекрасный момент при очередной записи ошибку, что нет доступа к файлу, потому что кто-то решил его в это время посмотреть (например в Excel) и он оказался занят :shok:

Нормальная ситуация! Если ошибка доступа к файлу, то буфер не сбрасывается, а данные продолжают в него копиться. При освобождении - накопленные данные скидываются. Для этого желательно иметь собственный просмотрщик, который будет открывать файл только для загрузки. Если совсем невмоготу, то досрочно создается другой файл. Другой вариант - открывать копию в экселе. Но даже для копии необходимо время на копирование и будут конфликты доступа. Так что эти вещи надо предусматривать.
Глупо считать, что будет всегда просматриваться архив не позднее прошлых суток. Надо представлять себе, что требование просмотреть данные за последние несколько минут, возникнет в первый-же день эксплуатации оборудования.
Borjomy_1
expert
expert
 
Posts: 1756
Joined: 28 Jun 2012, 09:32
Location: город семи холмов
Medals: 3
Activity (1) Professionalism (1) Silver (1)
LabVIEW Version: 4-8.6,9-14
Karma: 309
VIP

Re: Создание новых файлов каждые сутки

Postby Blackman on 29 Mar 2017, 20:18

Вар.1 Не выдерживает ни какой критики. Сколько времени будет занят файл? Какой буфер выделять? Как управлять записями?
Вар.2 Изобретение детского велосипеда
Вар.3 Ответ дан автором предыдущего сообщения. Тоже проблемы. А если еще лог под максимальный размер файла? :suicide:

Горит посмотреть: закрой текущий файл и открой новый. Все есть в указанном выше логгере.
Blackman
leader
leader
 
Posts: 658
Joined: 17 Jan 2016, 15:02
Medals: 1
Activity (1)
LabVIEW Version: 6.1,8.5,20
Karma: 165

Re: Создание новых файлов каждые сутки

Postby Borjomy_1 on 29 Mar 2017, 21:09

Blackman У меня подобный функционал под LV2009. потому все ручками (включая контроль размера папки и, кстати, свободного пространства еще и на диске). И все работает, причем не в лаборатории, а на производстве.
Однако остается вопрос работы в условиях совместного доступа.
Borjomy_1
expert
expert
 
Posts: 1756
Joined: 28 Jun 2012, 09:32
Location: город семи холмов
Medals: 3
Activity (1) Professionalism (1) Silver (1)
LabVIEW Version: 4-8.6,9-14
Karma: 309
VIP

Re: Создание новых файлов каждые сутки

Postby Kosist on 29 Mar 2017, 23:07

Blackman wrote:Вар.1 Не выдерживает ни какой критики. Сколько времени будет занят файл? Какой буфер выделять? Как управлять записями?
Вар.2 Изобретение детского велосипеда
Вар.3 Ответ дан автором предыдущего сообщения. Тоже проблемы. А если еще лог под максимальный размер файла? :suicide:

Горит посмотреть: закрой текущий файл и открой новый. Все есть в указанном выше логгере.

Вар.1 - как раз один из наиболее правильных и оптимальных. Плюс NI техподдержка такой подход тоже рекоммендует. Обращаться каждую секунду к файлу на диске - далеко не лучшая практика. А вот грамотная буфферизация - другое дело.
Да, для TDMS есть эта либа (Asynchronous Multi File TDMS Data Logger). А если будет другой формат файла?
Мы делили апельсин - много наших полегло...
User avatar
Kosist
leader
leader
 
Posts: 759
Joined: 21 Feb 2011, 23:44
Location: СумГУ
Medals: 2
Activity (1) Gold (1)
LabVIEW Version: 2013-2017
Karma: 224
CLAD I/O VIP students

Re: Создание новых файлов каждые сутки

Postby Blackman on 30 Mar 2017, 08:02

Уважаемый Kosist) Вы немного не в тему. :think: Диспут был не о том как часто писать в файл и предварительной буферизации данных, которая как правило есть всегда в том или ином виде (в той же, как Вы говорите, либе), а о методах или способах доступа к текущему лог файлу.
Blackman
leader
leader
 
Posts: 658
Joined: 17 Jan 2016, 15:02
Medals: 1
Activity (1)
LabVIEW Version: 6.1,8.5,20
Karma: 165

Re: Создание новых файлов каждые сутки

Postby Borjomy_1 on 30 Mar 2017, 09:53

а о методах или способах доступа к текущему лог файлу.

Ну и? ТС, кстати, этот вопрос не поднимался.
У меня есть два решения - работа с архивом в собственном просмотрщике, который открывает файл только на время чтения его в ОЗУ. И копирование архива для работы с ним, например, на другой машине. И то и другое требует обработки ситуации временной недоступности файла архива. Потому вопрос к Blackman - решает ли предложенная им библиотека эту задачу?
Borjomy_1
expert
expert
 
Posts: 1756
Joined: 28 Jun 2012, 09:32
Location: город семи холмов
Medals: 3
Activity (1) Professionalism (1) Silver (1)
LabVIEW Version: 4-8.6,9-14
Karma: 309
VIP

Re: Создание новых файлов каждые сутки

Postby Blackman on 30 Mar 2017, 10:31

Asynchronous TDMS Logger v1.5.1.15 by National Instruments
Released On: Thu, 19 May 2016 16:32:10 -0500
Author: Piotr Kruczkowski
Copyright: Copyright (c) 2014, National Instruments
Compatible LabVIEW Versions: >= 2014.
Compatible OS Versions: ALL.
Repository Name: NI LabVIEW Tools Network

Description:
This is a library of functions of the asynchronous TDMS logger. It allows you to dynamically run an asynchronous thread for data logging with additional functionality of seperating the data into multiple files based on size or date and time. It also implements functions to delete old files that would normally overflow your hard drive.

These functions can be used in the same loop as you measurement task because they are asynchronous. This means that the logger is created in the background and works as a parallel thread. You can monitor the status of that thread by getting its info.

Please note that this functionality may not work correctly when the destination folder is updated by NI Data Finder or Google Drive etc.

The supported data types are: Single, Double, Double Waveform, Signed Integer 8 bit, Signed Integer 16 bit, Unsigned Integer 8 bit, 16 bit and String Events.

Release Notes:
- finalized support for I8, I16, U8, U16, Single, Double, Waveform and String data types,
- rewritten the code in the background not to use classes for data types. This minimizes the footprint and optimizes the API to work faster,
- modified the internal architecture to make it easier to understand,
- updated description of the package.
Blackman
leader
leader
 
Posts: 658
Joined: 17 Jan 2016, 15:02
Medals: 1
Activity (1)
LabVIEW Version: 6.1,8.5,20
Karma: 165

Re: Создание новых файлов каждые сутки

Postby Borjomy_1 on 30 Mar 2017, 13:23

Хм.. ну и толку тогда от нее?... Если я, делая ручками, могу эту проблему корректно обработать, то в этой библиотеке этого никак не сделать.
Borjomy_1
expert
expert
 
Posts: 1756
Joined: 28 Jun 2012, 09:32
Location: город семи холмов
Medals: 3
Activity (1) Professionalism (1) Silver (1)
LabVIEW Version: 4-8.6,9-14
Karma: 309
VIP


Return to Для чайников

Who is online

Users browsing this forum: Google and 13 guests

cron