Problem z poprawnym działaniem aplikacji po jej zakończeniu.
Problem z poprawnym działaniem aplikacji po jej zakończeniu.
Witam,
Chciałbym poradzić się w pewnej sprawie. Mianowicie przygotowuję aplikację, w której po raz pierwszy stosuję strukturę producent - konsument. Stworzyłem "szkielet", który mam zamiar wykorzystać w projekcie, jednak nie do końca działa jak należy. Ogólnie aplikacja będzie przeznaczona do weryfikacji na podstawie różnych pomiarów, czy produkt nadaje się do użytku, czy nie (tzn. czy proces produkcji przeszedł poprawnie).
Do rzeczy... Problem polega na tym, że po zamknięciu aplikacji za pomocą kontrolki "Close" nie można wykonać pomiaru po ponownym włączeniu. Problem ten nie występuje, gdy zakończę działanie aplikacji przyciskiem Abort Execution. Nie mam pojęcia jak temu zaradzić. Może ktoś z Was ma jakiś pomysł? Mile widziane będą również porady odnośnie samej struktury, ponieważ uczyłem się jej z youtube'a i nie jestem pewny, czy robię wszystko zgodnie ze sztuką. W załączniku przesyłam to, co udało mi się zrobić.
Pozdrawiam
Chciałbym poradzić się w pewnej sprawie. Mianowicie przygotowuję aplikację, w której po raz pierwszy stosuję strukturę producent - konsument. Stworzyłem "szkielet", który mam zamiar wykorzystać w projekcie, jednak nie do końca działa jak należy. Ogólnie aplikacja będzie przeznaczona do weryfikacji na podstawie różnych pomiarów, czy produkt nadaje się do użytku, czy nie (tzn. czy proces produkcji przeszedł poprawnie).
Do rzeczy... Problem polega na tym, że po zamknięciu aplikacji za pomocą kontrolki "Close" nie można wykonać pomiaru po ponownym włączeniu. Problem ten nie występuje, gdy zakończę działanie aplikacji przyciskiem Abort Execution. Nie mam pojęcia jak temu zaradzić. Może ktoś z Was ma jakiś pomysł? Mile widziane będą również porady odnośnie samej struktury, ponieważ uczyłem się jej z youtube'a i nie jestem pewny, czy robię wszystko zgodnie ze sztuką. W załączniku przesyłam to, co udało mi się zrobić.
Pozdrawiam
- Załączniki
-
- ST700_main.vi
- (145.43 KiB) Pobrany 442 razy
Problem z poprawnym działaniem aplikacji po jej zakończeniu.
Witam
Ślicznie utkana aplikacja aż miło popatrzeć.
Aby móc ci pomóc - mógłbyś trochę jaśniej opisać co oznacza:
"...nie można wykonać pomiaru po ponownym włączeniu..." ?
Ślicznie utkana aplikacja aż miło popatrzeć.
Aby móc ci pomóc - mógłbyś trochę jaśniej opisać co oznacza:
"...nie można wykonać pomiaru po ponownym włączeniu..." ?
Re: Problem z poprawnym działaniem aplikacji po jej zakończeniu.
Witam,
Nie wiem, czy potrafię opisać jaśniej, ale spróbuję. W momencie, gdy kończę działanie aplikacji za pomocą przycisku Close, uruchamiam ją ponownie i wciskam Start, aby rozpocząć pomiar, sam przycisk przechodzi w True (świeci na żółto), ale pomiar nie rusza (na wykresie nic się nie dzieje). Poprzednim razem zapomniałem dołączyć SubVI, dlatego nie można było uruchomić aplikacji. Tym razem lekko ją zmodyfikowałem, więc możesz osobiście sprawdzić o co mi chodzi.
Według mnie wygląda to tak, jakby nie był generowany event w pętli Communication with PLC (na samym dole), ale zupełnie nie wiem dlaczego. Wszystko działa tak jak należy w momencie kiedy zmienię warunki wystąpienia eventu na zwykłe przyciśnięcie przycisku Start. Jednak nie mogę tego tak zostawić, ponieważ pomiar będzie włączany poprzez sygnał z PLC.
PS. Bardzo mi miło, że ktoś docenia moją pracę ;)
Pozdrawiam
Nie wiem, czy potrafię opisać jaśniej, ale spróbuję. W momencie, gdy kończę działanie aplikacji za pomocą przycisku Close, uruchamiam ją ponownie i wciskam Start, aby rozpocząć pomiar, sam przycisk przechodzi w True (świeci na żółto), ale pomiar nie rusza (na wykresie nic się nie dzieje). Poprzednim razem zapomniałem dołączyć SubVI, dlatego nie można było uruchomić aplikacji. Tym razem lekko ją zmodyfikowałem, więc możesz osobiście sprawdzić o co mi chodzi.
Według mnie wygląda to tak, jakby nie był generowany event w pętli Communication with PLC (na samym dole), ale zupełnie nie wiem dlaczego. Wszystko działa tak jak należy w momencie kiedy zmienię warunki wystąpienia eventu na zwykłe przyciśnięcie przycisku Start. Jednak nie mogę tego tak zostawić, ponieważ pomiar będzie włączany poprzez sygnał z PLC.
PS. Bardzo mi miło, że ktoś docenia moją pracę ;)
Pozdrawiam
- Załączniki
-
- ST700_main_v2.vi
- (147.56 KiB) Pobrany 427 razy
-
- Posty: 641
- Rejestracja: 31 gru 2010 01:36
- Wersja środowiska: LabVIEW 2017
- Lokalizacja: Katowice
Re: Problem z poprawnym działaniem aplikacji po jej zakończeniu.
Kontrolka Exit, której local variable zatrzymuje pętlę "Communication with PLC", nie jest nigdy ustawiana na False. Po pierwszym zatrzymaniu programu jest ustawiona na True i taka pozostaje, więc przy drugim uruchomieniu pętla PLC wykonuje się raz i od razu zatrzymuje.
Wniosek: nie używać local variable do komunikacji między pętlami, w szczególności do zatrzymywania ich.
Wniosek: nie używać local variable do komunikacji między pętlami, w szczególności do zatrzymywania ich.
Re: Problem z poprawnym działaniem aplikacji po jej zakończeniu.
Kontrolka Exit jest zawsze ustawiana na False w pętli inicjalizacji, więc raczej nie to powoduje problem, ale skoro uważasz, że to nie jest dobre rozwiązanie, to może masz jakąś inną propozycję jak zatrzymywać tą pętlę?
-
- Posty: 641
- Rejestracja: 31 gru 2010 01:36
- Wersja środowiska: LabVIEW 2017
- Lokalizacja: Katowice
Re: Problem z poprawnym działaniem aplikacji po jej zakończeniu.
A faktycznie, nie przyjrzałem się. Ale zanim ta kontrolka będzie ustawiona w jednej pętli, to już w drugiej będzie odczytana stara wartość False. Co więcej - to zachowanie może się zmieniać wraz z rozwojem programu, zmianą komputera, zmianą fazy księżyca, itp. Może się zdarzyć, że ta inicjalizacja nastąpi czasem jednak wcześniej i program będzie "działać", a innym razem nastąpi później i efekt będzie taki, jak widzimy.
Co do lepszych propozycji, to więcej uwag do tego kodu mogę wrzucić jak będę miał chwilę, żeby przysiąść nad nim, ale na szybko - przecież sam wiesz, jak to zrobić lepiej, bo widzę dwie pętle z ładnymi kolejkami przesyłającymi do nich polecenia, m.in. polecenie Exit ;)
Co do lepszych propozycji, to więcej uwag do tego kodu mogę wrzucić jak będę miał chwilę, żeby przysiąść nad nim, ale na szybko - przecież sam wiesz, jak to zrobić lepiej, bo widzę dwie pętle z ładnymi kolejkami przesyłającymi do nich polecenia, m.in. polecenie Exit ;)
Re: Problem z poprawnym działaniem aplikacji po jej zakończeniu.
Nie zastosowałem w tej pętli kolejek ze względu na to, że komunikacja z PLC musi działać niezależnie, na przykład PLC Status musi być "czytany" w czasie rzeczywistym, ale nie pomyślałem, żeby dodać pętlę z kolejkami tylko do kończenia While'a, a całą resztę zostawić tak jak jest (bezpośrednio w While'u). Takie rozwiązanie likwiduje mój problem
Dziękuję za pomoc. Za jakiekolwiek dodatkowe sugestie będę bardzo wdzięczny. Jako początkujący programista jestem otwarty na wszelkie porady.
Dziękuję za pomoc. Za jakiekolwiek dodatkowe sugestie będę bardzo wdzięczny. Jako początkujący programista jestem otwarty na wszelkie porady.
Problem z poprawnym działaniem aplikacji po jej zakończeniu.
Do kończenia wielu pętli LV proponuje zastosowanie tzw. functional_global_variable. Ładny przykład jest dostarczany jako template projektu myRio.