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
Dlaczego LV się wyłącza, co robię źle ?
Dlaczego LV się wyłącza, co robię źle ?
- Załączniki
-
- nowa_obliczenia_alfa.vi
- Plik
- (103.9 KiB) Pobrany 313 razy
Re: Dlaczego LV się wyłącza, co robię źle ?
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.
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 ?
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 ?
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 ?
Jeśli byś mógł zerknąc, to byłbym wdzięczny.
- Załączniki
-
- nowa.rar
- Program
- (773.98 KiB) Pobrany 335 razy
Dlaczego LV się wyłącza, co robię źle ?
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.
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.
Ostatnio zmieniony 20 wrz 2012 13:54 przez czab, łącznie zmieniany 1 raz.