Strona 1 z 1
wykonywanie operacji w ustalonych odstępach czasu
: 12 mar 2010 10:27
autor: lotnik
Jak w temacie, jak zrobić by program rozpoczynał pomiar w odgórnie ustalonych odstępach czasu.
Np. co 0,5s ma zrobić pomiar czyli co 0,5s generowany jest sygnał na multimetr, odczytywana jest wartość i zapisywana jest do pliku (gwarantuje to że czas pomiędzy pomiarami jest mniej więcej identyczny)
Re: wykonywanie operacji w ustalonych odstępach czasu
: 12 mar 2010 11:04
autor: __behemot_
Stwórz dwa wątki, z czego jeden będzie robił akwizycję danych i przekazanie do kolejki, drugi odczytywanie danych z kolejki i przetwarzanie (tutaj zapis do pliku, najlepiej binarnego). Rozumie, że pomiar to skończona liczba próbek o znanej Tobie częstotliwości, zatem pomiar przykładowo co 0,5sec możesz wykonać załączając akwizycje co każde 0,5s wyznaczone z bloczku "Elapsed Time".
Prawdopodobnie dobrym rozwiązaniem byłaby również pętla "Timed Loop", a to musiałbyś sobie przetestować sam.
Pozdrawiam
wykonywanie operacji w ustalonych odstępach czasu
: 12 mar 2010 11:35
autor: lotnik
Wystarczy jeden wątek tu nie ma z tym problemu akurat, bardziej mnie martwi stworzenie czegoś w rodzaju wyzwalacza czasowego, działającego w odgórnie ustalonych odstępach czasu.
Re: wykonywanie operacji w ustalonych odstępach czasu
: 12 mar 2010 13:01
autor: __behemot_
Nie rozumie pytania, przecież napisałam co możesz zastosować: Elapsed Time, jak poniżej
Re: wykonywanie operacji w ustalonych odstępach czasu
: 12 mar 2010 19:41
autor: jogurt_owocowy
__behemot_ pisze:Nie rozumie pytania, przecież napisałam co możesz zastosować: Elapsed Time, jak poniżej
Łatwiej będzie użyć funkcji
Wait Until Next ms Multiple...
co 0,5s generowany jest sygnał na multimetr, odczytywana jest wartość i zapisywana jest do pliku
... z wartością 500 podpiętą na wejście.
wykonywanie operacji w ustalonych odstępach czasu
: 16 mar 2010 09:33
autor: lotnik
Skłaniam się w stronę propozycji __behemot_ tylko że jak zrobić by pętla była odpalana co 0,5s wykonywała się i kończyła bądź też w przypadku kiedy się nie kończy to by była zerwana a operacja w pętli ponowiona od początku co 0,5s.
Re: wykonywanie operacji w ustalonych odstępach czasu
: 16 mar 2010 10:00
autor: garymarlin
Ja stosuję pętlę Timed Loop, która ma wyjście Finished Late? Z moich obserwacji wynika, że ta pętla zapewnia precyzyjne sterowanie czasem wykonywania kolejnych iteracji.
Re: wykonywanie operacji w ustalonych odstępach czasu
: 16 mar 2010 11:11
autor: lotnik
garymarlin: Bawię się już ładną chwilkę tą pętlą i nie chce mi za bardzo wyjść;/
Idea jest taka by ramka startowała co 0,5s nie zależnie od tego czy kończy wykonywać operacje czy też nie z Elapsed Time próbowałem ale pozwala kończyć ramce wszystko zamiast przerwać i rozpocząć od nowa wykonywanie operacji.
Re: wykonywanie operacji w ustalonych odstępach czasu
: 17 mar 2010 15:42
autor: kapitan7
Witam,
Nie za bardzo wiem jak zrozumieć problem.
Może pokaż diagram i co jest w ramce.
Czy chodzi Ci o przerwanie ramki czy pętli (tak nie za bardzo rozumiem co ma się zakończyć co 0,5s)?
Co się wykonuje podczas tych 0,5 s w ramce.
Na pierwszy rzut oka wydaje mi sie że pomysł Jogurta jest jak najbardziej ok ale nie za bardzo wiem o co chodzi z przerwaniem ramki...
Re: wykonywanie operacji w ustalonych odstępach czasu
: 17 mar 2010 17:30
autor: coolfon
lotnik pisze: jak zrobić by pętla była odpalana co 0,5s wykonywała się i kończyła bądź też w przypadku kiedy się nie kończy to by była zerwana a operacja w pętli ponowiona od początku co 0,5s.
Pętla może zakończyć swoje działanie jedynie w sytuacji gdy wykona się cała jej "zawartość" oraz gdy spełniony zostanie warunek zatrzymania pętli. Nie możesz zatrzymać pętli 'podczas' wykonywania jednej iteracji.