synchronizacja timed loop
-
mikema72
- Posty: 72
- Rejestracja: 09 sty 2006 00:00
- Wersja środowiska: LabVIEW 2011
- Lokalizacja: Gliwice
synchronizacja timed loop
Mam pytanie jak to zsynchronizować?
A dokładniej... W górnej pętli jest zawarty pomiar kartą z większą prędkością niż w dolnej. Tzn jak zrobić żeby nie tyle były cały czas zsynchronizowane ale wystartowały idealnie razem a potem już "żyły własnym życiem" czyli górna pętla wykonuje się szybciej niż dolna. Proszę o wszelkie pomysły. Niestety pętle muszą być w osobnych wątkach...
CLAD, LabVIEW 6.0 -> LabVIEW 2013
-
bogdani
- Administrator
- Posty: 1315
- Rejestracja: 30 lip 2003 00:00
- Wersja środowiska: LabVIEW 2015
- Lokalizacja: Ruda Śląska
- Kontakt:
synchronizacja timed loop
Witaj
Jest przykład razem z LV
C:\Program Files\National Instruments\LabVIEW 2009\examples\general\timedloop.llb\Synchronizing the start of timed loops.vi
bogdani
Jest przykład razem z LV
C:\Program Files\National Instruments\LabVIEW 2009\examples\general\timedloop.llb\Synchronizing the start of timed loops.vi
bogdani
-
mikema72
- Posty: 72
- Rejestracja: 09 sty 2006 00:00
- Wersja środowiska: LabVIEW 2011
- Lokalizacja: Gliwice
Re: synchronizacja timed loop
Dzięki za odpowiedź. Widziałem ten przykład ale wydawało mi się że on synchronizuje start cały czas tzn. druga pętla czeka na pierwszą ale po przećwiczeniu na "goło" tzn tylko przykład wszystko działa OK. Mam nadzieję że po zaimplementowaniu tego sposobu do mojego przykładu też wszystko zadziała. Będę próbował. Dziękuję
CLAD, LabVIEW 6.0 -> LabVIEW 2013
-
mikema72
- Posty: 72
- Rejestracja: 09 sty 2006 00:00
- Wersja środowiska: LabVIEW 2011
- Lokalizacja: Gliwice
Re: synchronizacja timed loop
Ponawiam moją prośbę. Siedzę już parę dni i nie mam pojęcia jak to zastosować do mojego przykładu. Zawsze tutaj dostałem jakąś odpowiedź więc piszę... Chciałem zsynchronizować dwie osobne pętle (tylko ich czas startu). Ten czas powinien być zastosowany tylko raz przy pierwszym wykonaniu obu pętli a następnie synchronizacja powinna być zakończona (ze względu na różnice w działaniu urządzeń - karty AC i kamery Firewire). Dodałem przykład w którym zawarłem małą symulację pracy urządzeń. Oba urządzenia działają standardowo w trybie "podglądu" (tryb offline- bez synchronizacji ) a po naciśnięciu przycisku pomiar włącza się startowa synchronizacja i następnie po pierwszym przejściu pętli kamera wyłącza (kamera wykonuje się szybciej!). Zależy mi najbardziej na identycznym, zsynchronizowanym starcie obu pętli. Proszę o pomoc bo już nie mam pojęcia jak do tego podejść. Skończyły mi się pomysły... Pracuję na wersji 8.6 ale przykład jest w wersji niższej
CLAD, LabVIEW 6.0 -> LabVIEW 2013
-
mikema72
- Posty: 72
- Rejestracja: 09 sty 2006 00:00
- Wersja środowiska: LabVIEW 2011
- Lokalizacja: Gliwice
Re: synchronizacja timed loop
Nikt nie ma pomysłu? A może jakieś inne rozwiązanie żeby wystartować razem dwie pętle?

CLAD, LabVIEW 6.0 -> LabVIEW 2013
-
bogdani
- Administrator
- Posty: 1315
- Rejestracja: 30 lip 2003 00:00
- Wersja środowiska: LabVIEW 2015
- Lokalizacja: Ruda Śląska
- Kontakt:
synchronizacja timed loop
Wyjaśnij czemu te pętle są w innych osobnych pętlach ?
Trzeba to dobrze zrozumieć i ogarnąć żeby coś sensownego zaproponować.
Trzeba to dobrze zrozumieć i ogarnąć żeby coś sensownego zaproponować.
-
mikema72
- Posty: 72
- Rejestracja: 09 sty 2006 00:00
- Wersja środowiska: LabVIEW 2011
- Lokalizacja: Gliwice
Re: synchronizacja timed loop
To może upraszczając. Jak zrobić wspólny start dwóch pętli timed loop działających w osobnych wątkach (zwykle niezależnie od siebie). Ten wspólny start jest tylko wtedy kiedy nacisnę przycisk POMIAR i jest on tylko na pierwsze (jednorazowe) wykonanie obu pętli. Narzucone jest to tym że karta (urządzenie 1) wykonuje tą pętlę (timed loop) tylko 1 raz, za to kamera (urządzenie 2) wykonuje pętlę kilkaset razy tzn. tyle ile jest rejestrowanych klatek). Zwykle działania obu pętli w trakcie pomiaru trwają mniej więcej tyle samo (tzn czas 1 raz karta = np. 100 razy kamera) ale w trybie podglądu już nie. W trybie tzw. "Live mode" (u mnie podgląd) kamery, pętla timed loop kamery nie wykonuje się w ogóle, za to pętla karty wykonuje się raz na 1sek. Trochę to zawiłe ale ten układ diagramu niestety już musi zostać (trochę narzucone z "góry"). Wspólny ma być jedynie start przy pomiarze! I z tym mam problem. Może to załatwić zwykłymi pętlami while i jakąś inną synchronizacją (saemaforami czy occurance) ale nie wiem jak? Pomocy...
CLAD, LabVIEW 6.0 -> LabVIEW 2013
-
mikema72
- Posty: 72
- Rejestracja: 09 sty 2006 00:00
- Wersja środowiska: LabVIEW 2011
- Lokalizacja: Gliwice
Re: synchronizacja timed loop
Widzę że chyba duży problem lub weekend lub nikomu się nie chce pomóc... Mija kolejny dzień i nie mogę sobie z tym poradzić. Może już bardzo upraszczając sprawę jak wystartować dwie pętle przedstawione na rysunku w pierwszej wiadomości ale TYLKO WYSTARTOWAĆ RAZEM a potem niech już działają każda wg swojego timingu?
CLAD, LabVIEW 6.0 -> LabVIEW 2013
- smiga
- Administrator
- Posty: 850
- Rejestracja: 04 paź 2009 12:41
- Wersja środowiska: LabVIEW 2019
- Lokalizacja: Słupsk
Re: synchronizacja timed loop
Nie wiem czemu pętla "tajmowana" jest w pętli while ... ale pewnie masz jakiś powód. Nie wiem też, która z nich ze swoją "parą" ma być wystartowana razem.
Rendezvous jest całkiem eleganckie:
A najprostszy sposób wystartowania dwóch pętli masz na dole:
Rendezvous jest całkiem eleganckie:
A najprostszy sposób wystartowania dwóch pętli masz na dole:
-
mikema72
- Posty: 72
- Rejestracja: 09 sty 2006 00:00
- Wersja środowiska: LabVIEW 2011
- Lokalizacja: Gliwice
Re: synchronizacja timed loop
Właśnie od popołudnia siedzę i nad tym myślę. Randevous to coś dla mojego rozwiązania. Pomogło. Dzięki wielkie za pomoc.
CLAD, LabVIEW 6.0 -> LabVIEW 2013
-
bogdani
- Administrator
- Posty: 1315
- Rejestracja: 30 lip 2003 00:00
- Wersja środowiska: LabVIEW 2015
- Lokalizacja: Ruda Śląska
- Kontakt:
Re: synchronizacja timed loop
Można to jeszcze zrobić jak poniżej
ale skoro już ci działa
Ps. Jeszcze taka drobna uwaga. Jak już musisz coś takiego robić w ten sposób to proponuje nie używać Property Noda do zmiany i odczytu wartości - lepiej już użyć zmiennej lokalnej - ma wyższy priorytet.
bogdani
ale skoro już ci działa
Ps. Jeszcze taka drobna uwaga. Jak już musisz coś takiego robić w ten sposób to proponuje nie używać Property Noda do zmiany i odczytu wartości - lepiej już użyć zmiennej lokalnej - ma wyższy priorytet.
bogdani