Strona 1 z 1

Dlaczego LV się wyłącza, co robię źle ?

: 20 wrz 2012 12:29
autor: czyzak
Witam. Chcę wyświetlić na wykresie pewne dane. Jeśli chce wyświetlić trochę danych to jest ok, ale jak danych jest więcej to całe LV się wyłącza. Nie wiem czy to problem z moją wersją, czy coś nie tak z programem. Na obrazku który załączyłem ten układ powyżej działa, a ten poniżej nie.

Proszę o pomoc

Re: Dlaczego LV się wyłącza, co robię źle ?

: 20 wrz 2012 12:40
autor: czab
Nie znam wszystkich szczegolow (w tym rozmiaru tablic ktore laczysz), ale przypuszczam ze dochodzisz do poziomu, w ktorym LabVIEW zaczyna brakowac RAM-u. Przenosisz sporo danych w sposob wymuszajacy ich kopiowanie w pamieci z miejsca na miejsce, wiec (w optymistycznym przypadku) ogrom danych ktorym operujesz jest naraz w dwoch miejscach w pamieci (czyli zajmuje 2x tyle miejsca co powinien jak sie latwo domyslic).

Sposoby rozwiazania:

- Popatrz ile rzeczy moglbys "zwinac" do postaci prostszych instrukcji, zamiast wszedzie prowadzic przeogromne gaszcze drutow,
- SubVI ze srodka sprobuj wolac po kolei, a nie rownolegle (jakas petla for?),
- Wszedzie tam, gdzie operujesz na duzych tablicach korzystaj raczej z In Place Element,
- Mozna rozwazyc przenoszenie tych danych po programie przez Data Value Reference.

Podsumowujac: Nie ma sie co oszukiwac, programik nie jest dobrze napisany. Patrzac na kod (nie podales kodu bledu, nie zamiesciles okna z crashem) domyslam sie, ze problemem jest ogrom danych ktorego komputer nie jest w stanie przemielic. Czeka Cie prawdopodobnie przepisanie tego wszystkiego od nowa do bardziej "strawnej" wersji. Koniecznie musisz tak zonglowac tymi tablicami, klastrami i indeksami?

Na marginesie: Naprawde koniecznie musisz na wykresie wyswietlac WSZYSTKIE probki? Wiekszosc wyswietlaczy duzej ilosci danych ma sprytne algorytmy decymacji, ktore w oddaleniu wyswietlaja niewiele probek, i "doczytuja" krytyczne probki w miejscu przyblizenia, dzieki czemu w pamieci jest aktualnie zaladowanych stosunkowo niewiele probek.

Dlaczego LV się wyłącza, co robię źle ?

: 20 wrz 2012 13:01
autor: czyzak
To nie wina przeciążenia, pousuwałem prawie wszystko, zostawiłem tylko te 3 moduły podłączone i dalej wywala. To fakt, nie jestem wirtuozem LV. Jest może inny sposób na wyświetlenie tego? Bez tej pętli for wydłubującej dane do wykreslenia wszystko działa :(

Dlaczego LV się wyłącza, co robię źle ?

: 20 wrz 2012 13:03
autor: czab
To trzeba temat przeleciec od poczatku. Przydalaby sie aktualna wersja tego, co Ci nie dziala, a takze zalaczenie wszystkich subVI.

Re: Dlaczego LV się wyłącza, co robię źle ?

: 20 wrz 2012 13:12
autor: czyzak
Jeśli byś mógł zerknąc, to byłbym wdzięczny.

Dlaczego LV się wyłącza, co robię źle ?

: 20 wrz 2012 13:53
autor: czab
Na szybko moge powiedziec tyle - Twoj kod u mnie dziala, ale zzera mi 40-50% zasobow procesora, a w kompie siedzi i5 z tych mocniejszych. To nie pamiec jest problemem, tylko sposob w jaki manipulujesz danymi. W petli "while' ogolnej mielisz wszystkie obliczenia przy kazdej iteracji, co powoduje ogromne marnotrawstwo mocy obliczeniowej. Poza tym, takie subVI jak np. nowa_probkowanie.vi sa niedopuszczalne. Zamiast zajmowac ogromne polacie diagramu przy pakowaniu i rozpakowaniu z klastrow, mozesz skorzystac z petli i innych udogodnien w LabVIEW. Mozesz odejmowac od siebie cale tablice i klastry, poszukaj prawidlowosci i wykorzystaj narzedzia ktore masz. Ten kodzik jest do przepisania caly....

Jesli nie bardzo masz na to czas, mozesz ratowac sie wsadzeniem calosci kodu do event structure i odpalac obliczenia przyciskiem.

EDIT: Zeby zobrazowac skale problemu, to, co jest na pierwszym obrazku da sie zastapic przy pewnej ilosci kombinowania tym, co jest na drugim obrazku.