Rozkład temperatury w pomieszczeniu

Tematy związane z tworzeniem dużych aplikacji. Zaganiednia dotyczące architektury oraz zasad tworzenia optymalnych rozwiązań.
napoleon13
Posty: 16
Rejestracja: 10 sie 2010 13:54
Wersja środowiska: LabVIEW 8.5

Rozkład temperatury w pomieszczeniu

Post autor: napoleon13 »

Witam, próbuje stworzyć vi w LabView8.6 które będzie pobierać dane z 14 czujników.
Niestety nie mogę poradzić sobie z kilkoma szczegółami.

1. Odebrane dane zapisuję do tabeli, ale co drugi odczyt jest najczęściej zbyt szybki i tabelkę wypełnia mi zerami. Jak ustawić tworzenie tabelki aby tego typu problem się nie pojawiał? Urządzenie wysyła dane co ~3s (możliwe że wydłużę ten czas).
Tak wygląda to teraz:
problem 1.JPG
2. Jak dołączyć czas do każdego pomiaru, aby widoczny był w mojej tablicy?
czas - termometr 1, term 2, ... term 14.
czas - termometr 1, term 2, ... term 14.
: itd.

Moj program:
Temp.vi
(48.85 KiB) Pobrany 289 razy
Z góry dziękuję za odpowiedź!.
milten
Posty: 77
Rejestracja: 25 paź 2011 20:49
Wersja środowiska: LabVIEW 2012

Re: Rozkład temperatury w pomieszczeniu

Post autor: milten »

1. Użyj Bytes at Serial Port. Jeżeli zwróci Ci taką liczbę bajtów jaką oczekujesz to wtedy dopiero odczytujesz to co masz na porcie.
2. Możesz użyć klastra do którego dajesz timestamp i array. Tak zbudowany klaster służy Ci jako zmienna głównego araya.
Obrazek
Awatar użytkownika
czab
Posty: 54
Rejestracja: 26 cze 2011 14:59
Wersja środowiska: LabVIEW 2011

Rozkład temperatury w pomieszczeniu

Post autor: czab »

Jak wyglądają indykatory Temp1-Temp14? Ponieważ dokonujesz pojedynczego odczytu danych i potem je tylko formatujesz stawiałbym prędzej na przypadkowe zwiększenie precyzji przy którymś z wielu kolejnych rzutowań.
Obrazek
napoleon13
Posty: 16
Rejestracja: 10 sie 2010 13:54
Wersja środowiska: LabVIEW 8.5

Rozkład temperatury w pomieszczeniu

Post autor: napoleon13 »

Niestety nie za bardzo wiem jak użyć: Bytes at Serial Port... Chyba już wymiękam ;)
Proszę o podpowiedź jeśli można.
To samo tyczy sie: time stamp?

Co do urządzenia. Są to termometry na linii 1-wire z których atmega odbiera i wysyła dane. O to chodziło?


Ramka składa się:
start - wyniki - stop
001 - 14*temperatura 2*wentylatory - 002

W moim programie start został pominięty, ale teraz widzę ze muszę to gdzieś dołożyć. Jak zrobić aby po rozkazie 001 były sczytywane dane a po 002 następował koniec odbioru? Dodanie godziny i przejście do następnej linii - tego też nie udało mi się rozwiązać.
Ostatnio zmieniony 21 lut 2012 00:09 przez napoleon13, łącznie zmieniany 2 razy.
milten
Posty: 77
Rejestracja: 25 paź 2011 20:49
Wersja środowiska: LabVIEW 2012

Re: Rozkład temperatury w pomieszczeniu

Post autor: milten »

Zrobiłem taką najprostszą wersję z czekaniem na dane i array przechowującego czas i temperatury.

Co do sprawdzania, to jeżeli coś odbierzesz, to sprawdzasz, czy ma to początek 001 i koniec 002 przez choćby zwykłe Search 1D array. Jak je znajdziesz, to już wiesz gdzie co masz, a jeżeli ich nie będzie, to dane albo jeszcze nie doszły, albo coś jest nie tak.
Załączniki
Temp.vi
(87.14 KiB) Pobrany 303 razy
Obrazek
napoleon13
Posty: 16
Rejestracja: 10 sie 2010 13:54
Wersja środowiska: LabVIEW 8.5

Re: Rozkład temperatury w pomieszczeniu

Post autor: napoleon13 »

Problem rozwiązany. Dziękuję za pomoc :)
Załączniki
Temp.vi
(54.54 KiB) Pobrany 301 razy
ODPOWIEDZ