Problem ze zwiększaniem/zmniejszaniem danej wartości
Problem ze zwiększaniem/zmniejszaniem danej wartości
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
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
Re: Problem ze zwiększaniem/zmniejszaniem danej wartości
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
Re: Problem ze zwiększaniem/zmniejszaniem danej wartości
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ść?
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ść?
Re: Problem ze zwiększaniem/zmniejszaniem danej wartości
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
Problem ze zwiększaniem/zmniejszaniem danej wartości
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??
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??
Re: Problem ze zwiększaniem/zmniejszaniem danej wartości
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...)
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
Re: Problem ze zwiększaniem/zmniejszaniem danej wartości
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ś 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
Hmm już chyba moje ostatnie pytanie..;) jak zrobić, żeby oś 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
Problem ze zwiększaniem/zmniejszaniem danej wartości
Klikasz prawym klawiszem myszy na wykres -> Y Scale i odznaczasz Autoscale Y
Nie dziękuj, odrobisz w polu
Nie dziękuj, odrobisz w polu
Problem ze zwiększaniem/zmniejszaniem danej wartości
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?
Re: Problem ze zwiększaniem/zmniejszaniem danej wartości
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
Problem ze zwiększaniem/zmniejszaniem danej wartości
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!
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!
Re: Problem ze zwiększaniem/zmniejszaniem danej wartości
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 ).
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
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!
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
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!
Problem ze zwiększaniem/zmniejszaniem danej wartości
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.
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.
Problem ze zwiększaniem/zmniejszaniem danej wartości
Dziękuje za obszerne wyjaśnienia i poświęcony na nie czas!!