Strona 1 z 1
ERROR 2500 przy otwieraniu pliku *.tdms
: 08 paź 2013 08:14
autor: Harnas
Witam,
Mam problem z czytaniem duzych plikow TDMS. Przy otwieraniu pliku powyzej 1GB pojawia sie blad 2500. Doczytalem sie gdzies na stronach NI, ze ma to zwiazek z duzym plikiem INDEX. Podobno juz przy zapisywaniu pliku w formacie TDMS powinienem byl ograniczyc wielkosc "buforu" czy cos w tym stylu.
Nie zmienia to faktu, ze te duze TDMSy musze przekonwerterowac to plikow TXT...a na razie nawet nie wiem je otworzyc bez generowania bledu.
Czy ktos moglby mnie wspomoc jakas rada, przykladowym VIem albo linkiem do pomocy?
Pozdrawiam
Harnas
ERROR 2500 przy otwieraniu pliku *.tdms
: 08 paź 2013 10:34
autor: Pitol
Jest plugin do Excela, który czyta pliki TDMS. Byćmoże będzie w stanie sobie z tym poradzić.
http://zone.ni.com/devzone/cda/epd/p/id/2944
ERROR 2500 przy otwieraniu pliku *.tdms
: 08 paź 2013 10:55
autor: Harnas
Kiedys go instalowalem. Plugin przydatny przy mniejszych plikach. Problem w tym, ze Excel moze odtworzyc maksymalnie troche ponad 1 milion wierszy. Zapisujac z czestotliwoscia 5 kHz milion wierszy to ok 200sekund zapisu. 200 sekund to ponad 3 minuty. Moj plik TDMS zawiera kolo 10 minut
Znalazlem taki temat:
https://decibel.ni.com/content/docs/DOC-8985
Problem w tym, ze przy ladowaniu pliku TDMS o wielkosci 1,3 GB u mnie dalej pokazuje sie blad.
ERROR 2500 przy otwieraniu pliku *.tdms
: 08 paź 2013 11:06
autor: Pitol
A próbowałeś tego rozwiązania podanego w komentarzu?
https://decibel.ni.com/content/docs/DOC-20054
ERROR 2500 przy otwieraniu pliku *.tdms
: 08 paź 2013 13:50
autor: Harnas
Czytalem co tam pisali.
Problemem jest samo otwarcie pliku TDMS o wielkosci 1,2GB. Zrobilem prosty VI - otwieranie TDMS -> zamykanie TDMS. Przy otwieraniu pakuje wszystko do RAMu...a jak juz wiecej zapakowac nie moze to albo wyskakuje blad 2500 - pamiec pelna, ew. LabVIEW sie wiesza.
Pracuje w VirtualBoxie z zainstalowanym Win XP i 4GB ramu.
Re: ERROR 2500 przy otwieraniu pliku *.tdms
: 08 paź 2013 18:23
autor: jogurt_owocowy
W ramach luźnych pomysłów... Spróbuj użyć
TDMS Defragment.
ERROR 2500 przy otwieraniu pliku *.tdms
: 09 paź 2013 23:08
autor: bezimienny
W ramach luźnych pomysłów... to może warto zmienić format zapisu danych!
Wiem że może to zabrzmiało banalnie ale aby podjęć decyzję trzeba wiedzieć czy opisane 1,3GB
to maksymalna wartość w projekcie?
Jeśli nie to może warto zastanowić się nad własną obsługą plików
Ja również miałem problemy z plikami wynikające z przydzielania pamięci w systemie systemu XP
Zgodnie z Helpem dopisałem do Boot.ini wartość "/3G i to pomogło doraźnie
Choć przy zapisie tak dużych plików to dostępne w LV tablice o maksymalnym rozmiarze I32
są w stanie zaadresować 2GB danych (1 Bajt na sampel).
Nie korzystam z plików TDMS choć wygodnych ale pamięciożernych.
Dla dużych plików np. rejestracji sygnału GPS stosuje się "dopisywanie danych do otwartego pliku"
A odczyt jedynie fragmentów (<1GB) z pliku np.:o rozmiarze 20 GB
Pozdrawiam
Re: ERROR 2500 przy otwieraniu pliku *.tdms
: 12 paź 2013 19:20
autor: may
Jestem przekonany, że coś robicie źle. Od pewnego czasu pracuję z plikiem TDMS mającym 4,67 GB. Na komputerze z 4GB pamięci RAM i 32 bitowym LabVIEW (czyli potrafi zaadresować 3,2 GB pamięci). Czyli w skrócie: nie ma fizycznej możliwości wczytania tego pliku w całości do pamięci. Mimo tego wszystko działa poprawnie. Otwarcie pliku TDMS (TDMS open) nie powoduje żadnego zauważalnego zwiększenia zużycia pamięci. Nawet otwarcie pliku TDMS File Viewerem nie robi niczego strasznego (ok. +10 MB zużycia). Plik posiada dane pogrupowane w kilka grup pomiarów zawierających po 4 kanały, każda grupa ok. 600 MB danych. Gdy przeglądając plik File Viewerem włączę opcję "Load All Values" i otworzę jedną z grup, to rzeczywiście LabVIEW zajmuje dodatkowe 600 MB pamieci. Polecenie wczytania wszystkich danych (czyli kliknięcie w korzeń drzewka struktury pliku TDMS) powoduje wyrzucenie okienka "Not enough memory to complete this operation" i wysypanie się File Viewera z błędem "Memory Full". Innymi operacjami które powodują takie zachowanie jest przykładowo odczytanie w pętli wszystkich kanałów za pomocą TDMS Read. Jednak jest to całkowicie zrozumiałe, bo świadomie każę upchnąć 4,7 GB danych w dostępne 3 GB pamieci. Natomiast jeżeli operuje sobie na jednej grupie danych na raz, wszystko działa poprawnie. Podejrzewam, że problemy mogą występować jeżeli plik TDMS ma jakiś patologicznie duży indeks (np. jeżeli był tworzony metodą Otwórz TDMS - dopisz jedną wartość - Zamknij TDMS), albo ma jakąś dziwną strukturę (jedna grupa pomiarowa? jeden ogromny kanał danych?). Jak będę miał chwilę czasu to może spróbuję zasymulować sobie jakieś takie patologiczne pliki.
Pisanie własnego systemu plików raczej odradzam - tam dopiero może być ciężko poprawnie alokować i zwalniać dane z pamięci.
Re: ERROR 2500 przy otwieraniu pliku *.tdms
: 13 paź 2013 21:29
autor: bezimienny
Pisanie własnego systemu plików raczej odradzam - tam dopiero może być ciężko poprawnie alokować i zwalniać dane z pamięci.
Mi się ten pomysł też nie podobał ale *tdms nie odsługuje danych typu "complex". Po za tym nie znalazłem gotowej metody przeglądania (w ruchomym oknie) 20 GB danych ciągłych danych
Oczywiście nie uważam, że pisanie własnej obsługi jest jedynym najlepszym rozwiązaniem - poprostu nie znalazłem gotowego ubrania więc szyję na miarę.
Co do głównego wątku to na co zwrócił uwagę użytkownik "may" może problem w tym że tak duże dane są w jedne grupie.
ERROR 2500 przy otwieraniu pliku *.tdms
: 13 paź 2014 12:49
autor: Jamal79
A probowales Skasowac indeksa i otworzyc plik??
Czasami pomaga, wszystkie dane sa zawarte w tdms. Index, zawiera indeksacje pomiarow, grup, jednostek i innych properytow. Po skasowaniu utworzy go na nowo, moze z lepszym skutkiem.
ERROR 2500 przy otwieraniu pliku *.tdms
: 13 paź 2014 14:11
autor: may
Jamal79, ten post to tak jakoś z okazji rocznicy tego wątku?
ERROR 2500 przy otwieraniu pliku *.tdms
: 14 paź 2014 08:29
autor: Jamal79
hehehehe, nie musial byc jakis bot. Bo wyskoczylo mi jako nie przeczytane...
A tak przy okazji udalo sie??
ERROR 2500 przy otwieraniu pliku *.tdms
: 16 paź 2014 14:22
autor: kicaj
ja też miałem ten temat jako nieprzeczytany... przed "wystąpnieniem" Jamal79...
no to jak jest z tymi plikami z TDMS można otworzyć/zapisć większy niż dostępna pamięć RAM? a może to kwestia pamięci podręcznej Windowsa?
Re: ERROR 2500 przy otwieraniu pliku *.tdms
: 16 paź 2014 23:45
autor: PiDi
kicaj pisze:
no to jak jest z tymi plikami z TDMS można otworzyć/zapisć większy niż dostępna pamięć RAM? a może to kwestia pamięci podręcznej Windowsa?
Jeśli pytasz o to, czy da się wczytać całość danych z 4GB pliku TDMS do 2GB pamięci, to odpowiedź brzmi: wlej 4 litry wody do 2-litrowego słoika. Pytanie podstawowe, jakie należy sobie zadać, to po co mi takie ilości danych naraz w programie? Jaką wartość niesie to, że wczytam kilkaset milionów punktów pomiarowych naraz? Zakładam przy tym, że nie pracujemy o CERN czy NASA ;)
To, co się w związku z tym da zrobić, to wczytywać plik po kawałku. Da się prawdopodobnie napisać program nawet tak, żeby wczytywanie danych nie zajęło nigdy więcej niż dokładny rozmiar danych. Czyli - wczytuję 200 MB, zużycie pamięci skacze o dokładnie 200 MB. Wczytuję kolejne 200 MB, zużycie pamięci już nie skacze (bo wykorzystuję poprzednio stworzony bufor).
Re: ERROR 2500 przy otwieraniu pliku *.tdms
: 18 paź 2014 19:12
autor: kicaj
PiDi pisze:
Jeśli pytasz o to, czy da się wczytać całość danych z 4GB pliku TDMS do 2GB pamięci, to odpowiedź brzmi: wlej 4 litry wody do 2-litrowego słoika.
no chyba że masz jeszcze zapas w postaci wiaderka... czytaj pamięć wirtualna windowsa, która rozszerza pojemność RAMu...
PiDi pisze:
Pytanie podstawowe, jakie należy sobie zadać, to po co mi takie ilości danych naraz w programie? Jaką wartość niesie to, że wczytam kilkaset milionów punktów pomiarowych naraz? Zakładam przy tym, że nie pracujemy o CERN czy NASA ;)
nie wnikam w to - pytam teoretycznie. Praktycznie robie tak jak podano w przepisie wcześniej - tylko część danych, te które mnie interesują, są wczytywane. Reszta nie ruszana...
a propos CERN i NASA: oba to pikuś przy XFELu... ;)
PiDi pisze:
To, co się w związku z tym da zrobić, to wczytywać plik po kawałku. Da się prawdopodobnie napisać program nawet tak, żeby wczytywanie danych nie zajęło nigdy więcej niż dokładny rozmiar danych. Czyli - wczytuję 200 MB, zużycie pamięci skacze o dokładnie 200 MB. Wczytuję kolejne 200 MB, zużycie pamięci już nie skacze (bo wykorzystuję poprzednio stworzony bufor).
pewnie się da tylko po co? zazwyczaj operuje się na stałych wielkościach, zazwyczaj osi X... czyli liczba punktów albo np. czas
ale to już temat na inny wątek ;)