Wężyk spustowy do aparatu

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.
Awatar użytkownika
Hass-pol
Posty: 11
Rejestracja: 14 lut 2010 18:44
Wersja środowiska: LabVIEW 8.6
Lokalizacja: Gdynia

Wężyk spustowy do aparatu

Post autor: Hass-pol »

Witam ponownie,

Niestety moje umiejętności w LabView nie pozwalają mi na skończenie projektu dlatego pisze na forum.
Szukałem na necie i na forum, ale nie znalazłem podobnego tematu.

Ogólnie robię panel do sterowania obserwatorium.
Obrazek

Udało mi się nawiązać komunikacje w obu kierunkach z hardwarem, oczywiście po wielu godzinach gimnastyki :)
Jednak utknąłem z układem robienia zdjęć.

Układ ten z założenia powinien działać tak:

Ustawiam ilość zdjęć w sesji, później ustawiam czas otwarcia przesłony aparatu, przerwa miedzy zdjęciami 5sek, przyciska start i stop/reset. (na zdjęciu jest jeszcze postęp, czyli pokazanie które zdjęcie obecnie jest robione) Jako sygnał wyjściowy powinien być F dla przesłony zamkniętej i T dla otwartej.

Dorzucam załącznik z ostatnim testem... będę bardzo wdzięczny za jakąkolwiek pomoc.
aparat.vi
(6.37 KiB) Pobrany 197 razy
Awatar użytkownika
Pitol
Moderator
Posty: 987
Rejestracja: 19 lip 2007 00:00
Wersja środowiska: LabVIEW 2019
Lokalizacja: Kraków

Re: Wężyk spustowy do aparatu

Post autor: Pitol »

Jeśli dobrze Cie zrozumiałem to masz problem z zaimplementowaniem tego, co napisałeś. Można to na szybko zrealizować tak:
Camera.png
Nie wiem jak wygląda całość Twojego programu, ale myślę, że da się to w jakiś sposób dostosować do Twojej architektury. W załączniku prosty przykład realizacji Twojego problemu.
Załączniki
aparat_8.6.vi
LV 8.6
(6.7 KiB) Pobrany 194 razy
ObrazekObrazekObrazek
Chcesz taki podpis? Zajrzyj tutaj
Awatar użytkownika
Hass-pol
Posty: 11
Rejestracja: 14 lut 2010 18:44
Wersja środowiska: LabVIEW 8.6
Lokalizacja: Gdynia

Re: Wężyk spustowy do aparatu

Post autor: Hass-pol »

Super ! wielkie dzięki.
Pozwoliłem sobie trochę ulepszyć Twój program i dołożyłem przerwę pomiędzy zdjęciami i włącznik całej sesji.
Jeszcze raz dziękuję.
aparat 2.vi
(9.27 KiB) Pobrany 207 razy
Awatar użytkownika
Hass-pol
Posty: 11
Rejestracja: 14 lut 2010 18:44
Wersja środowiska: LabVIEW 8.6
Lokalizacja: Gdynia

Re: Wężyk spustowy do aparatu

Post autor: Hass-pol »

Jednak jest problem :)
Nie rozumiem co powoduje że po włączeniu Boolena, (czyli włączenie układu zdjęć seryjnych) nie mogę sterować kontrolką Boolen 2.
Dopiero po wykonaniu całej pętli mogę sterować Boolen 2.
Mam też problem z awaryjnym wyłączeniem całego programu.

Czy to normalne ? i czy LV jest tak "wolny" że nie może wykonywać kilku różnych pętli jednocześnie ?

Obrazek
aparat 3.vi
(10.72 KiB) Pobrany 194 razy
Awatar użytkownika
Hass-pol
Posty: 11
Rejestracja: 14 lut 2010 18:44
Wersja środowiska: LabVIEW 8.6
Lokalizacja: Gdynia

Re: Wężyk spustowy do aparatu

Post autor: Hass-pol »

Po kilku testach:

Obrazek

Pierwszym Boolem mogę sterować normalnie, ale jak nacisnę Boolen 2 to przez 4 sek. nie mogę sterować Boolem 1.

Czy można robić nie zależne układy z opóźnieniami ? Albo jest jakaś funkcja ogólną typu Interrupts ?
test1.vi
(5.88 KiB) Pobrany 210 razy
Awatar użytkownika
Pitol
Moderator
Posty: 987
Rejestracja: 19 lip 2007 00:00
Wersja środowiska: LabVIEW 2019
Lokalizacja: Kraków

Re: Wężyk spustowy do aparatu

Post autor: Pitol »

Hass-pol pisze:
Pierwszym Boolem mogę sterować normalnie, ale jak nacisnę Boolen 2 to przez 4 sek. nie mogę sterować Boolem 1.

Czy można robić nie zależne układy z opóźnieniami ? Albo jest jakaś funkcja ogólną typu Interrupts ?
Z załączonego VI wynika, że uruchamiasz program za pomocą Run Continously, co jest złym nawykiem. Program jeśli ma się wykonywać w pętli, to należy go przygotować w pętli (np. while). Dlaczego? Używając pętli while i zwykłego wywołania programu masz większą kontrolę nad tym, co się dzieje.
Aby zrozumieć Twój problem zbuduj sobie pętlę tak jak na rys.
Camera.png
A następnie skorzystaj ze zwykłego wywołania programu (pierwsze kółko) i włącz też Highlight Execution (drugie kółko). Program będzie po kolei (w zwolnionym tempie) wykonywał zawartość pętli. Problem Twój polega na tym, że pętla przejdzie do kolejnej iteracji dopiero wtedy, kiedy wszystkie elementy pętli się wykonają. Skoro naciskasz przycisk, po którym jest bloczek Wait, to pętla przejdzie do następnej iteracji dopiero po tym, jak wywoła się bloczek Wait. W międzyczasie nie będziesz mógł sterować kontrolkami, ponieważ ich stan odświeży się dopiero w następnej iteracji. Aby temu zapobiec, trzebaby zastostosować dwie równoległe pętle.
Hass-pol pisze: Mam też problem z awaryjnym wyłączeniem całego programu.
Problem Twój polega na tym, że korzystasz z pętli For bez tzw. Conditional Terminal. Kliknij prawym na krawędź pętli For i wybierz Conditional Terminal. Pojawi się taki sam terminal jak w pętli While. Dzięki temu terminalowi, możesz w dowolnej chwili zatrzymać działanie pętli For. W przykładzie, który załączyłeś nawet po naciśnięciu przycisku awaryjnego pętla for zakręci się do końca i dopiero wtedy nastąpi koniec.
Hass-pol pisze: Czy to normalne ? i czy LV jest tak "wolny" że nie może wykonywać kilku różnych pętli jednocześnie ?
Z Twojego przykładu wynika, że Twój program to tylko jedna pętla więc nie ma mowy o tym, że LabVIEW z czymś nie nadąża.

A na koniec kwestie "służbowe". Nie pisz trzech postów pod rząd. Jest opcja Edytuj Post.
ObrazekObrazekObrazek
Chcesz taki podpis? Zajrzyj tutaj
ODPOWIEDZ