Wykresy XY.

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.
rockfor2
Posty: 8
Rejestracja: 02 lis 2011 13:01
Wersja środowiska: LabVIEW 2012

Wykresy XY.

Post autor: rockfor2 »

Witam

Zanim na mnie nakrzyczycie, że "szukaj na google", czy "to już było", informuje, że przekopałem to forum (przynajmniej wyszukiwarką) i nigdzie nie znalazłem satysfakcjonującej mnie odpowiedzi, więc proszę o pomoc w nowym temacie.

Do wykonania pewnego projektu sięgnąłem po LabView po raz pierwszy(w firmie mają, to czemu by nie).

Chce wyrysować 2 wykresy funkcji o postaci Y=a*X1*X2. Niby proste, ale...

Użytkownik podaje na wejściu X1minimum, X1maximum, X2minimum, X2maximum.
Rysując wykres 1, X2 to wartość stała(biorę ją z innego miejsca) więc wykres jest uzależniony tylko od X1 i ma wyrysować Y tylko w przedziale X1minimum do X2 maximum (dokładnie ten przedział ma się pojawić na osi X wykresu)
Dla wykresu 2 sprawa jest odwrotna, ale jak poradzę sobie z pierwszym przypadkiem to nie będzie problemu...

Próbowałem stosować dwa moduły matematyczne(wolałem to w C pisać i wysłać na Graph XY), ale pętle nie działają jak mają (sprawdzałem probem).

Proszę o sugestie jak w prosty sposób taki problem rozwiązać: narysowania wykresu funkcji w konkretnym(zadeklarowanym przez użytkownika) przedziale lub ewentualnie o jakieś namiary na prosty i zrozumiały kurs podstaw rysowania wykresów w LabView(dla żółtodzioba).

Od razu mówię, że przejrzałem przykładowe programy w helpie i są tam fajne rzeczy, ale ogrom skomplikowania mnie przeraża.

Pozdrowienia
Awatar użytkownika
smiga
Administrator
Posty: 817
Rejestracja: 04 paź 2009 12:41
Wersja środowiska: LabVIEW 2019
Lokalizacja: Słupsk

Re: Wykresy XY.

Post autor: smiga »

Skorzystaj z właściwości wykresu - klikasz nań prawym myszy i ... Create/Property Node/X Scale/ Range/ Maximum ... lub Minimum.
Tam podłączasz wartości jakie Cię interesują.
__ Arkadiusz Śmigielski, tel. 662 01 01 74___
ObrazekObrazekObrazek
Pomogłem ... postaw kawę: https://buycoffee.to/smiga
rockfor2
Posty: 8
Rejestracja: 02 lis 2011 13:01
Wersja środowiska: LabVIEW 2012

Re: Wykresy XY.

Post autor: rockfor2 »

Dzięki serdeczne za tak szybką odpowiedź, nie spodziewałem się jej jeszcze wczoraj.

Faktycznie, zadziałało, dzięki za podpowiedź, skala ustala się prawidłowo i jest nadzieja, że będzie ok, ale kłopotów ciąg dalszy...
Próbowałem umieścić ten system w finalnym programie, ale nie wychodzi, więc piszę testowy fragment kodu, proszę o poprawę, czy sugestie do problemu:

Kod testowy jest jak na załączonym obrazku. Program czyta wartość max, min, pętla wykonuje się tyle razy, żeby dla każdej wartości stało-liczbowej funkcja była określona (np 60(max)-(25(min) = 35 (przeskoków) 1(dla wartości 60).
Testuje i za każdym razem na wyjściu (Y) wychodzi ta sama wartość a graf nic nie rysuje, przynajmniej żadnej prostej, może punkt. Próbowałem w module matematycznym dopisać funkcję for(x=0;x<=Wmax;x ), żeby ilość iteracji for była równa przejściom od Wmin do W max, a przynajmniej sprawdzić, czy to cokolwiek zmieni, ale nie zmienia.
Czy mam zebrać wyniki z pętli i wrzucić je w jakąś macierz zanim wyśle na graf? Czy on nie może rysować punkt po punkcie? A może jest jakaś inna metoda podania takiego problemu?

edit 1:
Ok, wiem, że wartość Wmin nie zmienia się, tz nie działa inkrementacja Wmin 1. Wyprowadziłem ją na wskaźnik i widze, że się nie zmienia, należy więc równanie uzależnić od i a nie pobieranych za każdym razem tych samych Wmin i Wmax.
Załączniki
1.JPG
Ostatnio zmieniony 03 lis 2011 09:39 przez rockfor2, łącznie zmieniany 1 raz.
Awatar użytkownika
Ender
Posty: 137
Rejestracja: 02 cze 2005 00:00
Wersja środowiska: LabVIEW 2009
Lokalizacja: Cieszyn

Re: Wykresy XY.

Post autor: Ender »

Jak znam życie poniższe rozwiązanie nie jest optymalne, ale powinno rzucić nieco światła na 'co i jak'. Proponuję prześledzić działanie obu pętli, a potem poszukać informacji o indeksowaniu i zastosowaniu shift register. Na drugim wykresie wyłączone jest autoskalowanie osi X.
Załączniki
wykres test.vi
(20.64 KiB) Pobrany 480 razy
-Czy orał pan już kiedyś morskie fale?
Colon rzucił mu chytre spojrzenie.
-Nie złapie mnie pan na taki numer, sir - rzekł - Wszyscy wiedzą, że konie by potonęły.
Leonard umilkł na chwilę i przestroił swój mózg na Radio Colon ....
rockfor2
Posty: 8
Rejestracja: 02 lis 2011 13:01
Wersja środowiska: LabVIEW 2012

Wykresy XY.

Post autor: rockfor2 »

Nie musi być optymalny, ważne by działało :) Podziękowania bardzo serdeczne, zabieram się za analizę.

Edit: Bardzo proszę przychylną duszę o konwersję na wersje 8.6.1 bo niestety vi w wersji 2009 nie mogę przemielić :( z góry dzięki!
Ostatnio zmieniony 07 lis 2011 08:33 przez rockfor2, łącznie zmieniany 1 raz.
Awatar użytkownika
rivui
Posty: 27
Rejestracja: 01 lut 2010 16:50
Wersja środowiska: LabVIEW 8.5
Lokalizacja: Kopenhaga

Re: Wykresy XY.

Post autor: rivui »

Hej!

Ponizej zamieszczam moje rozwiazanie. Pewnie tez nie optymalne ;)

Problem z Twoim kodem byl taki ze nie "gromadziles" wyliczonych wartosci Y z petli tylko po wykonaniu x iteracji podawales do wykresu ostatnia wyliczona wartosc Y.

Zastanawia mnie takze Twoja chec uzycia XY graph. Czy bedziesz posiadal nierownomiernie rozlozone wartosci X? W moim programie uzylem XY graph oraz Waveform chart aby pokazac ze mozna uzyc obu a waveform chart przynajmniej nie zmusza Cie do wyliczania wartosci X tylko podaje je automatycznie.

Michal
Załączniki
Solution1.vi
(20.09 KiB) Pobrany 463 razy
rockfor2
Posty: 8
Rejestracja: 02 lis 2011 13:01
Wersja środowiska: LabVIEW 2012

Re: Wykresy XY.

Post autor: rockfor2 »

Dzięki za skrypt, przeanalizowałem go. Bardzo dzięki za zaangażowanie.
Muszę powiedzieć, że od czasu zamieszczenia poprzedniego koma siedziałem nad tym problemem i modyfikowałem swój kod w dziesiątki sposobów. Nie/indeksowanie wyników bloku matematycznego, wyciąganie graph'ów przed pętle/w pętli, zamieniłem blok matematyczny na zwykłe bloczki i doszedłem do czegoś...

Nie upieram się na GraphXY, tylko wyczytałem gdzieś, że można na niego podać 2 funkcje co uznałem za przydatne tu :) ale jak na razie nie udało mi się go zmusić do rysowania czegokolwiek:D a Waveform Chart już coś robi.

Procedura wysyła poprawne wyniki, nawet ustala się poprawny zakres, otrzymuje wykres i wartości takie jak bym chciał (sukces), ale pętla wykonuje się nieskończenie wiele razy... co niszczy wynik :/

Objaw jest następujący: jeśli pętla ma się wykonać np. 10 razy, to faktycznie na spokojnie obserwując, widzę 10 razy wykonanie pętli (każde wykonanie to około 2-3 sekund) po czym całość zatrzymuje się na jakieś 4 sekundy i licznik zaczyna liczyć od zera i kolejne 10 razy.... i tak w koło.
Myślałem, że to mój błąd, wstawiałem dodatkowe pętle, modyfikowałem warunki, wstawiłem warunek do pętli while, no wiele wiele... ale w Twoim skrypcie też wszystko wykonuje mi się nieskończenie wiele razy, więc może to jednak błąd ogólniejszy LabView? Robiłem większość możliwych kombinacji, ale aż nie chce mi się wierzyć, że zatrzymanie pętli to jakiś skomplikowany trick, musi być coś prostego a u mnie nie chce się zatrzymywać (nawet stop'em)

Zamieszczam vi i proszę o recenzję, albo naprowadzenie, co zmienić(może w jakiś ogólnych opcjach?)
Załączniki
test 2.vi
(27.68 KiB) Pobrany 384 razy
Awatar użytkownika
Pitol
Moderator
Posty: 984
Rejestracja: 19 lip 2007 00:00
Wersja środowiska: LabVIEW 2019
Lokalizacja: Kraków

Re: Wykresy XY.

Post autor: Pitol »

rockfor2 pisze: Procedura wysyła poprawne wyniki, nawet ustala się poprawny zakres, otrzymuje wykres i wartości takie jak bym chciał (sukces), ale pętla wykonuje się nieskończenie wiele razy... co niszczy wynik :/

Objaw jest następujący: jeśli pętla ma się wykonać np. 10 razy, to faktycznie na spokojnie obserwując, widzę 10 razy wykonanie pętli (każde wykonanie to około 2-3 sekund) po czym całość zatrzymuje się na jakieś 4 sekundy i licznik zaczyna liczyć od zera i kolejne 10 razy.... i tak w koło.
Myślałem, że to mój błąd, wstawiałem dodatkowe pętle, modyfikowałem warunki, wstawiłem warunek do pętli while, no wiele wiele... ale w Twoim skrypcie też wszystko wykonuje mi się nieskończenie wiele razy, więc może to jednak błąd ogólniejszy LabView? Robiłem większość możliwych kombinacji, ale aż nie chce mi się wierzyć, że zatrzymanie pętli to jakiś skomplikowany trick, musi być coś prostego a u mnie nie chce się zatrzymywać (nawet stop'em)
)
To co piszesz skłania mnie do jednej tylko możliwej odpowiedzi: używasz do uruchamiania programu przycisku Run Continously zamiast zwykłego Run.
LV.PNG
LV.PNG (1.29 KiB) Przejrzano 11800 razy
ObrazekObrazekObrazek
Chcesz taki podpis? Zajrzyj tutaj
rockfor2
Posty: 8
Rejestracja: 02 lis 2011 13:01
Wersja środowiska: LabVIEW 2012

Wykresy XY.

Post autor: rockfor2 »

Słusznie :)
Dziękuje wszystkim za zaangażowanie, wszystko działa. Szczególne podziękowania Ender, skrypt świetnie wyjaśnia o co chodzi i jak to działa! Dzięki serdeczne!
ODPOWIEDZ