Problem ze zwiększaniem/zmniejszaniem danej wartości

Jeśli masz coś do powiedzenia w sprawie LabVIEW napisz. Tutaj są tematy, których nie można uściślić do innych działów.
Vianom
Posty: 9
Rejestracja: 05 sty 2013 18:42
Wersja środowiska: LabVIEW 2012

Problem ze zwiększaniem/zmniejszaniem danej wartości

Post autor: Vianom »

Witam,
Na zaliczenie przedmiotu dostaliśmy do zrobienia projekt i niestety w pewnym momencie utknąłem na amen. Siedzę nad tym od południa i nic nie mogę wymyślić.
Do rzeczy: moje wypociny http://speedy.sh/eU7hT/Untitled-1.vi

Gdy moc z ogniwa i turbiny, jest większa od mocy odbiornika to ładuje się zasobnik, ale gdy zasobnik przekroczy pewną wartość(3) to jego wartość ma lekko spaść.
Lecz niestety moje rozwiązanie wydaje się być błędne, bo gdy wartość zasobnika przekroczy 3, to odejmuje się od 0, a nie od tej wartości która przekroczyła próg 3. Nie mam zielonego pojęcia, dlaczego tak się dzieje - problem ten rozwiązałbym w c++, ale tutaj niestety jestem zmuszony prosić Was o pomoc.
Pozdrawiam
Awatar użytkownika
Góras
Posty: 88
Rejestracja: 13 sie 2012 10:15
Wersja środowiska: LabVIEW 2012

Re: Problem ze zwiększaniem/zmniejszaniem danej wartości

Post autor: Góras »

Trochę posprzątałam, żeby móc objąć Twój program wzrokiem :) Feedback Node miałeś w złym miejscu. Teraz jest ok?
Załączniki
Untitled 1 Improved.vi
(33.26 KiB) Pobrany 295 razy
Vianom
Posty: 9
Rejestracja: 05 sty 2013 18:42
Wersja środowiska: LabVIEW 2012

Re: Problem ze zwiększaniem/zmniejszaniem danej wartości

Post autor: Vianom »

Wielkie dzięki!! Świetna robota:)
Jest jeszcze tylko jedna rzecz... zapomniałem dodać, żeby ta wartość spadała do 90% maksymalnej pojemności zasobnika, czyli w tym przypadku do 2,7.
Myślałem to zrobić tak, że jak wartość zasobnika jest równa lub większa 3, to zapala się lampka, a jak spadnie poniżej 90%(2,7) to gaśnie i używać lampki jako zmiennej, tylko kompletnie gubię się w tych działaniach logicznych, czy mogę prosić o jakąś podpowiedź w wykonaniu tego zadania?
Pozdrawiam


EDIT: Pojawił się kolejny problem. Jak porównać pewną wartość z zasobnika w False głównej Case structure, z jakąś stałą ponieważ wyskakuje mi błąd "połączyłem wejście większe lub równe z wyjściem numeric indentificatora", czy da jednak się porównać w pewien sposób tę wartość?
Awatar użytkownika
Góras
Posty: 88
Rejestracja: 13 sie 2012 10:15
Wersja środowiska: LabVIEW 2012

Re: Problem ze zwiększaniem/zmniejszaniem danej wartości

Post autor: Góras »

No więc zamiast podpowiedzi wrzucam program - popatrz, podumaj i jakbyś czegoś nie rozumiał to pisz :)
Załączniki
Untitled 1 Improved.vi
(34.52 KiB) Pobrany 348 razy
Vianom
Posty: 9
Rejestracja: 05 sty 2013 18:42
Wersja środowiska: LabVIEW 2012

Problem ze zwiększaniem/zmniejszaniem danej wartości

Post autor: Vianom »

Dziękuję bardzo za pomoc!!!
Projekt doprowadziłem praktycznie do końca, zostało mi tylko wyświetlanie mocy ogniwa, turbiny, zasobnika i odbiornika, w dziedzinie czasu(na jednym wykresie) - no i za Chiny nie mogę tego zrobić, jest tylko jedno wejście, a wartości które powinny być przedstawione na wykresie 5. Zamieszczam plik i proszę o podpowiedź jak tego dokonać.
Jestem bardzo wdzięczny za dotychczasową pomoc!
Dziękuję i pozdrawiam:)


http://speedy.sh/mQATk/Untitled-1-Improved.vi


EDIT: czy .vi stworzony w labview 2012 otworzy wersja 2011??
Awatar użytkownika
Góras
Posty: 88
Rejestracja: 13 sie 2012 10:15
Wersja środowiska: LabVIEW 2012

Re: Problem ze zwiększaniem/zmniejszaniem danej wartości

Post autor: Góras »

Proszę bardzo :)

Nie rozumiem tylko warunku Stopu - pętla ma się zatrzymać po jakimś czasie?

I nie, nie otworzy, ale możesz zapisać do wersji 2011 (File -> Save for Previous Version...)
Załączniki
Untitled 1 Improved.vi
(41.53 KiB) Pobrany 326 razy
Vianom
Posty: 9
Rejestracja: 05 sty 2013 18:42
Wersja środowiska: LabVIEW 2012

Re: Problem ze zwiększaniem/zmniejszaniem danej wartości

Post autor: Vianom »

Tak, to ma być symulacja 24 godzinna(w 12 minut w rzeczywistości), ale masz racje - dodałem już OR żeby przyciskiem też dało się zatrzymać.
Hmm już chyba moje ostatnie pytanie..;) jak zrobić, żeby oś x(czas) miała stałe wartości od 0 do 24 - może da się to jakoś uzależnić od tego licznika czasu który jest stworzony? Ustalam minimum i maksimum, a skala cały czas się zmienia.
Jeszcze raz dziękuję!!!


Wersja po małych poprawkach: http://speedy.sh/ghT7E/projekt.vi
Awatar użytkownika
Góras
Posty: 88
Rejestracja: 13 sie 2012 10:15
Wersja środowiska: LabVIEW 2012

Problem ze zwiększaniem/zmniejszaniem danej wartości

Post autor: Góras »

Klikasz prawym klawiszem myszy na wykres -> Y Scale i odznaczasz Autoscale Y

Nie dziękuj, odrobisz w polu :)
Vianom
Posty: 9
Rejestracja: 05 sty 2013 18:42
Wersja środowiska: LabVIEW 2012

Problem ze zwiększaniem/zmniejszaniem danej wartości

Post autor: Vianom »

Heh niejasno się wyraziłem, jak zrobić aby skala była od 0 do 24(to już jest) tylko, że właśnie przez te 12 minut ( w programie 24godziny) idealnie zamalowuje cały graph?
Awatar użytkownika
Góras
Posty: 88
Rejestracja: 13 sie 2012 10:15
Wersja środowiska: LabVIEW 2012

Re: Problem ze zwiększaniem/zmniejszaniem danej wartości

Post autor: Góras »

Nie mam niestety dość cierpliwości, żeby czekać 12 minut :) Po 12 minutach program powinien się zatrzymać zapełniając cały Graph. Jeśli nie, to znaczy, że gdzieś się walnęłam w obliczeniach :)
Załączniki
projekt.vi
(46.15 KiB) Pobrany 347 razy
Vianom
Posty: 9
Rejestracja: 05 sty 2013 18:42
Wersja środowiska: LabVIEW 2012

Problem ze zwiększaniem/zmniejszaniem danej wartości

Post autor: Vianom »

Działa oczywiście idealnie... dziękuję :)
Staram się zrozumieć jak to działa, szczególnie prosiłbym o wytłumaczenie:
- do czego służy ta tablica poza pętlą while i te "trójkąty" przez które wchodzi i wychodzi z tejże pętli - mam takie przypuszczenie, że to działa jak feedback node tylko dla tablic?
- tworzysz z mocy jedną tablicę, a następnie kompletnie nie mam pojęcia do czego służą kolejne przekształcenia prowadzące do wykresu.

Dzięki za poświęcony czas!
Awatar użytkownika
Arronax8
Posty: 69
Rejestracja: 06 kwie 2012 21:25
Wersja środowiska: LabVIEW 2012

Re: Problem ze zwiększaniem/zmniejszaniem danej wartości

Post autor: Arronax8 »

Z tego co zauważyłem te moce, odbiorniki, zasobniki są budowane w jedną tablicę, następnie wydzielane tak aby na wykresie mogły mieć osobne przebiegi (w skrócie :p ).
Te "trójkąty" jak mniemam to są rejestry przesuwne (ang. Shift Registers), do poczytania:
http://zone.ni.com/reference/en-XX/help ... _concepts/
Służą one do przekazywania danych pomiędzy kolejnymi iteracjami pętli. Czyli to co wychodzi z prawej w jednej iteracji, to pojawia się z lewej w następnej iteracji, zostaje przerobione
zgodnie z kodem programu i znów wędruje do strony prawej, gdzie zostaje rzucone na lewo i tak w kółko :D
Ta tablica z lewej strony poza pętlą while inicjuje rejestr przesuwny wartością 0. Inaczej mówiąc zeruje ten rejestr.
Dla przykładu jakbyś nie miał rejestru zainicjowanego, to masz sobie jakiś tam program i go uruchamiasz, dane sobie skaczą z lewej do prawej itd.,
zebrało się ich x, wyłączasz program stopem. Potem znów go włączasz i zamiast skakania od nowa (czyli od 0), z lewej strony wchodzi do rejestru to x, które jest przekazywane dalej.
Jak rejestr jest zainicjowany np. 0, to po każdym uruchomieniu programu zaczyna liczenie od nowa (w tym wypadku od 0).
Myślę, że obrazowo wyjaśniłem.
Od dziś chyba zacznę nazywać rejestry przesuwne trójkącikami :) hehe!
Awatar użytkownika
Góras
Posty: 88
Rejestracja: 13 sie 2012 10:15
Wersja środowiska: LabVIEW 2012

Problem ze zwiększaniem/zmniejszaniem danej wartości

Post autor: Góras »

Kwesta trójkątów została rozwiązana powyżej :)
Shift Register można używać do wszyskiego i jeśli chcesz śmiało możesz go zastąpić Feedback Node (trzeba go tylko zainicjalizować tablicą dwuwymiarową).

Co do wyświetlania wykresu to może rozwinę - najpierw składasz tablicę, której elementami jest pojedyncza wartość Mocy ogniwa, Mocy turbiny, Odbiornika, Zasobnika i czas. Ten jeden wiersz "doklejany" jest do końca tablicy dwuwymiarowej (wejście z Shift Register'a lub Feedback Node). Następnie z dwuwymiarowej tablicy wyciąga się kolejne kolumny (w pierwszej kolumnie są wszystkie wartości Mocy ogniwa, w drugiej Mocy tubiny ... a w ostatniej czas) i składasz z nich wykres. Jako, że XY graph wymaga na wejściu klastra tablic używasz funkcji Bundle - na górze są podpięte dane, na dole czas. Żeby wyświetlić kilka wykresów na jednym graph'ie trzeba je wrzucić do tablicy, więc wrzucasz klastry do tablicy i podpinasz tą tablicę klastrów do graph'a.
Vianom
Posty: 9
Rejestracja: 05 sty 2013 18:42
Wersja środowiska: LabVIEW 2012

Problem ze zwiększaniem/zmniejszaniem danej wartości

Post autor: Vianom »

Dziękuje za obszerne wyjaśnienia i poświęcony na nie czas!!
ODPOWIEDZ