zmienne jak w c w labview??
zmienne jak w c w labview??
Witam
Mój problem jest następujący, przesyłam po rs232 z mikrokontrolera temperaturę, wszystko dobywa się w pętli nieskończonej(do while). Problem polega na tym że chcę za czas pomiaru mieć wartość max i min, bez żadnych tablic(co i tak chyba by się nie udało w nieskończonej pętli?) Przy użyciu shift register mam tylko poprzedni i bieżący pomiar, nie wiem jak idzie zapisać tą wartość do jakiejś zmiennej, jak to się robi np. w C.
Pozdrawiam i dziękuję za jakieś propozycje, dodam że widziałem tam jakieś zmienne lokalne i globalne, ale nie wiem jak do jednej idzie zapisywać i odczytywać
Mój problem jest następujący, przesyłam po rs232 z mikrokontrolera temperaturę, wszystko dobywa się w pętli nieskończonej(do while). Problem polega na tym że chcę za czas pomiaru mieć wartość max i min, bez żadnych tablic(co i tak chyba by się nie udało w nieskończonej pętli?) Przy użyciu shift register mam tylko poprzedni i bieżący pomiar, nie wiem jak idzie zapisać tą wartość do jakiejś zmiennej, jak to się robi np. w C.
Pozdrawiam i dziękuję za jakieś propozycje, dodam że widziałem tam jakieś zmienne lokalne i globalne, ale nie wiem jak do jednej idzie zapisywać i odczytywać
- Nowszy
- Posty: 504
- Rejestracja: 30 maja 2008 08:33
- Wersja środowiska: LabVIEW 2011
- Lokalizacja: Katowice
- Kontakt:
zmienne jak w c w labview??
Może po prostu korzystaj z dodatkowych shift registers i zapisuj w nich wartość max/min? Ewentualnie są Local Variables, Global Variables, Shared Variables, Functional Global Variables...
Pozdrawiam, Maciek Antonik
Edu4Industry
Edu4Industry
- Silver0000
- Posty: 52
- Rejestracja: 13 sty 2007 00:00
- Wersja środowiska: LabVIEW 8.0
- Lokalizacja: Polska
zmienne jak w c w labview??
Witam... A moim zdaniem dałoby się to zrobić właśnie za pomocą tablic. Wtedy masz cały czas dostęp do wszystkich danych i możesz brać pod uwagę dowolny przedział czasu. Wtedy za pomocą jednej instrukcji możesz uzyskać max i min. Pozdrawiam...
- Nowszy
- Posty: 504
- Rejestracja: 30 maja 2008 08:33
- Wersja środowiska: LabVIEW 2011
- Lokalizacja: Katowice
- Kontakt:
zmienne jak w c w labview??
Szyss-owi chodzi chyba o to, że taka tablica nie może rosnąc w nieskończoność. Trzeba się więc zastanowić, co by było, gdyby jego program odbierał np. kilka B danych co sekundę przez kilka dni..
Pozdrawiam, Maciek Antonik
Edu4Industry
Edu4Industry
Re: zmienne jak w c w labview??
Musze się przyznać że tablice w C to norma, ale jakoś tu się nie umie połapać w nich. jeśli tablica to z każdą iteracją pętli musiał bym w nowe miejsce pisywać nową wartość, a np za 100 pomiarem wyzerować tablicę i od nowa. Jaki bloczek do tego by się nadał(tworzenie tablicy). I taka sprawa tablica 1D, czyli jedno wymiarowa to myślę że jest to coś takiego np: {0.0.0.0.0.0.}. Dobrze to rozumie??
Pozdrawiam i dzięki za pomoc
Pozdrawiam i dzięki za pomoc
- Nowszy
- Posty: 504
- Rejestracja: 30 maja 2008 08:33
- Wersja środowiska: LabVIEW 2011
- Lokalizacja: Katowice
- Kontakt:
zmienne jak w c w labview??
To wszystko zależy, w jaki sposób napiszesz swój program. Kilka możliwości:
- akwizycja danych skonfigurowana na pobieranie zawsze 100 próbek - wtedy na wyjściu bloczka akwizycji dostajesz od razu tablicę próbek
- akwizycja danych pobiera tylko 1 próbkę - wtedy wsadzasz to w pętlę FOR i na wyjściu używasz opcji 'autoindexing' - znowu na wyjściu masz tablicę
- jeżeli liczba próbek do przechowywania byłaby dużo mniejsza (np 4-5), to mógłbyś wykorzystać shift register zapamiętujący kilka iteracji w tył (jeden tunel po prawej stronie pętli, kilka tuneli po lewej)
- jeżeli chcesz cały czas pracować na 1 tablicy, to najlepiej wykorzystać Initialize Array i podpiąć ją całą pod jeden shift reg. Daje zawsze wpisujesz do tej samej tabeli, nie zmieniając jej wymiarów - dzięki temu LV nie będzie musiało się pocić z realokacją pamięci
- akwizycja danych skonfigurowana na pobieranie zawsze 100 próbek - wtedy na wyjściu bloczka akwizycji dostajesz od razu tablicę próbek
- akwizycja danych pobiera tylko 1 próbkę - wtedy wsadzasz to w pętlę FOR i na wyjściu używasz opcji 'autoindexing' - znowu na wyjściu masz tablicę
- jeżeli liczba próbek do przechowywania byłaby dużo mniejsza (np 4-5), to mógłbyś wykorzystać shift register zapamiętujący kilka iteracji w tył (jeden tunel po prawej stronie pętli, kilka tuneli po lewej)
- jeżeli chcesz cały czas pracować na 1 tablicy, to najlepiej wykorzystać Initialize Array i podpiąć ją całą pod jeden shift reg. Daje zawsze wpisujesz do tej samej tabeli, nie zmieniając jej wymiarów - dzięki temu LV nie będzie musiało się pocić z realokacją pamięci
Pozdrawiam, Maciek Antonik
Edu4Industry
Edu4Industry
- Silver0000
- Posty: 52
- Rejestracja: 13 sty 2007 00:00
- Wersja środowiska: LabVIEW 8.0
- Lokalizacja: Polska
Re: zmienne jak w c w labview??
A ja to bym zrobił na zasadzie tablicy o stałej liczbie indeksów (np.1000 próbek), w której 1001 próbka powoduje skasowanie próbki 1 ,itp. Moim zdaniem pozwoli to na dostęp, w odróżnieniu do pętli for proponowanej przez kolegę Nowszy, co każdy cykl programu do aktualnych danych. Pomiar trwa cały czas, a Ty wybierasz dane z dowolnego przedziału (oczywiście do 1000 próbek w tym przypadku) Rozumiem, że skoro przesyłasz temperaturę i chcesz wyciągać z niej jakieś dane statystyczne, to nie będzie to liczba 4-5 próbek. Pozdrawiam...
- Nowszy
- Posty: 504
- Rejestracja: 30 maja 2008 08:33
- Wersja środowiska: LabVIEW 2011
- Lokalizacja: Katowice
- Kontakt:
Re: zmienne jak w c w labview??
Silver: właśnie o takim rozwiązaniu mówiłem w ostatnim punkcie mojego posta. Przy czym trzebaby się zastanowić, czy nie lepiej przesuwać całą tablicę o jedną próbkę, zamiast dopisywać od początku (wtedy trzeba kombinować, która próbka jest 'najnowsza').
A tak generalnie, to możemy sobie gdybać - bez znajomości ostatecznych wymagań aplikacji nie da się wskazać najlepszej metody.
A tak generalnie, to możemy sobie gdybać - bez znajomości ostatecznych wymagań aplikacji nie da się wskazać najlepszej metody.
Pozdrawiam, Maciek Antonik
Edu4Industry
Edu4Industry
Re: zmienne jak w c w labview??
Witam
Aplikacja nie ma szczególnych wymagań, wartości max i min przez cały pomiar są zbierane, zrobiłem to na rejestrach przesuwnych i strukturze case, działa tak jak chciałem.
Dziękuje za pomoc i pozdrawiam.
Aplikacja nie ma szczególnych wymagań, wartości max i min przez cały pomiar są zbierane, zrobiłem to na rejestrach przesuwnych i strukturze case, działa tak jak chciałem.
Dziękuje za pomoc i pozdrawiam.