Zmienna globalna - wykrywanie zdarzenia (event structure)
Zmienna globalna - wykrywanie zdarzenia (event structure)
Witam!
Czy jest jakiś sposób żeby wykryć zmianę wartość zmiennej globalnej typu Boolean? Próbowałem to robić tak że zmienną globalną podłączyłem do indycatora a następnie stworzyłem z tego indycatora local variable no i w event structure wybrałem jako event sources tą local variable. Pomijając już zmienną globalną ale to w ogóle nie chce działać przy zmianie wartośći local variable.
Czy jest jakiś sposób żeby wykryć zmianę wartość zmiennej globalnej typu Boolean? Próbowałem to robić tak że zmienną globalną podłączyłem do indycatora a następnie stworzyłem z tego indycatora local variable no i w event structure wybrałem jako event sources tą local variable. Pomijając już zmienną globalną ale to w ogóle nie chce działać przy zmianie wartośći local variable.
Re: Zmienna globalna - wykrywanie zdarzenia (event structure
Jeżeli do wykrywania zmiany wartości zmiennej globalnej chcesz użyć tylko event structure, to nie wiem , ale zmianę można wykryć na wiele innych sposobów, np wyjście podpiąć do case structure i dla wartości "1" wykonywać inne zadanie a dla wartości "0" inne...
Re: Zmienna globalna - wykrywanie zdarzenia (event structure)
Trochę to zakręcone - pokaż proszę diagram i napisz więcej o programie.dynamo pisze:Witam! Czy jest jakiś sposób żeby wykryć zmianę wartość zmiennej globalnej typu Boolean? Próbowałem to robić tak że zmienną globalną podłączyłem do indycatora a następnie stworzyłem z tego indycatora local variable no i w event structure wybrałem jako event sources tą local variable. Pomijając już zmienną globalną ale to w ogóle nie chce działać przy zmianie wartośći local variable.
p.s. indykator jeśli spolszczasz nazwę.
- wino
- Posty: 549
- Rejestracja: 23 gru 2005 00:00
- Wersja środowiska: Nie mam LabVIEW
- Lokalizacja: Kraków
Re: Zmienna globalna - wykrywanie zdarzenia (event structure
musisz użyć własności Value(Signaling), aby twój event zareagował na zmianę wartości
przykład poniżej
przykład poniżej
Re: Zmienna globalna - wykrywanie zdarzenia (event structure)
W ramach uzupełnienia: struktura event przeznaczona jest do interakcji z użytkownikiem, czyli - zasadniczo - obsługi zdarzeń interfejsu.
Nie obsługuje zmian zmiennej lokalnej i wskaźników (indykatorów ). Obsługuje za to tak jak wspomniał wino: Value(Signaling), bo ten węzeł własności wysyła informację o zdarzeniu do wątku interfejsu, z którego event pobiera informację o zdarzeniach
Nie obsługuje zmian zmiennej lokalnej i wskaźników (indykatorów ). Obsługuje za to tak jak wspomniał wino: Value(Signaling), bo ten węzeł własności wysyła informację o zdarzeniu do wątku interfejsu, z którego event pobiera informację o zdarzeniach
Re: Zmienna globalna - wykrywanie zdarzenia (event structure
Witam! Dziękuje za odpowiedzi. Zrobiłem tak jak radził wino jednak dalej coś nie działa. Może przedstawię kawałek diagramu i wyjaśnię jak to ma działać. Chodzi mi o to że po zmianie zm_glob_rejestracja z warośći "1" na "0" powinno się wykonać to co jest w strukturze event. A może to trzeba zrobić całkiem inaczej? Próbowałem różnych innych sposobów bez struktury event ale występował jakiś hazard.
Re: Zmienna globalna - wykrywanie zdarzenia (event structure
Pytanie zasadnicze: co Twoim zdaniem dzieje się na diagramie?
Pyt.1: dlaczego stosujesz taki sposób prezentacji danych na wykresie?
Pyt.2: to nie jest caly VI? jakie jeszcze zdarzenia obsługuje event?
Pyt.1: dlaczego stosujesz taki sposób prezentacji danych na wykresie?
Pyt.2: to nie jest caly VI? jakie jeszcze zdarzenia obsługuje event?
Re: Zmienna globalna - wykrywanie zdarzenia (event structure
Napiszę może coś więcej o całym programie. Jest jeden główny VI który obsługuje 12 kanałów A/C karty NI DAQ M series podłączonej do sejsmometrów. Drugi VI pracuje równolegle i obsługuje kartę CAN-BUS firmy Softing. Do karty CAN podłączony jest jeden kanał (3 składowych sejsmicznych) cyfrowego systemu rejestracji tąpań. W głównym programie zrealizowana jest detekcja zjawisk sejsmicznych i „4 sekundowa linia opóźniająca”. Gdy zostanie wykryte zjawisko rozpoczyna się rejestracja sygnałów z wejść analogowych oraz rejestracja przebiegów przesyłanych magistralą CAN (synchronizacja tego miała odbywać się właśnie za pomocą zmiennej globalnej „zm_blob_rejestracja”. Po ustaniu wstrząsu zmienna globalna przyjmuje wartość „0” i dane zarejestrowane cyfrowo z magistrali CAN są przekazywane za pomocą zmiennej globalnej ”Rejestrator DTSS 3 składowych” do programu głównego który dokłada do 12 przebiegów 3 przebiegi z magistali CAN a następnie zapisuje to do pliku i wysyła na drukarkę wielkoformatową. (Event przedstawiony na diagramie obsługuje jeszcze dodatkowo zdarzenie Timeout)
- jogurt_owocowy
- Posty: 1317
- Rejestracja: 30 lis 2004 00:00
- Wersja środowiska: LabVIEW 2015
- Lokalizacja: Kraków
Re: Zmienna globalna - wykrywanie zdarzenia (event structure
Po pierwsze diagram jest be, ale...
Przykład od wina chyba nie jest najlepszy. Chcąc wykorzystać event do obsługi zmiany indykatora, zamiast wpisywać wartość zmiennej zm_glob... (po co ten prefiks? przecież widać, że to "zm_glob") do samego indykatora utwórz dla niego property node z właśnością Val(Sgnl) i przepisz wartość ze zmiennej do tego węzła - wtedy event będzie reagował.
Przykład od wina chyba nie jest najlepszy. Chcąc wykorzystać event do obsługi zmiany indykatora, zamiast wpisywać wartość zmiennej zm_glob... (po co ten prefiks? przecież widać, że to "zm_glob") do samego indykatora utwórz dla niego property node z właśnością Val(Sgnl) i przepisz wartość ze zmiennej do tego węzła - wtedy event będzie reagował.
Re: Zmienna globalna - wykrywanie zdarzenia (event structure
Ponadto jedna uwaga: diagram aktualnie obsłuży zdarzenie "rejestracja" Value Change wielokrotnie.
Podczas obsługi zdarzenia "rejestracja" Value Change: - wpisujesz do węzła "rejestracja"Val(Sgnl) co powoduje
- drugie wywołanie zdarzenia, podczas którego wpisujesz do węzła "rejestracja"Val(Sgnl) co powoduje:
- trzecie wywołanie zdarzenia, podczas którego wpisujesz do węzła "rejestracja"Val(Sgnl) co powoduje:
- czwarte....
krótko: błąd.
Podczas obsługi zdarzenia "rejestracja" Value Change: - wpisujesz do węzła "rejestracja"Val(Sgnl) co powoduje
- drugie wywołanie zdarzenia, podczas którego wpisujesz do węzła "rejestracja"Val(Sgnl) co powoduje:
- trzecie wywołanie zdarzenia, podczas którego wpisujesz do węzła "rejestracja"Val(Sgnl) co powoduje:
- czwarte....
krótko: błąd.
Re: Zmienna globalna - wykrywanie zdarzenia (event structure
Próbowałem już wielu sposobów i albo zdarzenie jest obsługiwane wielokrotnie albo nie jest obsługiwane w ogóle. Cały czas nad tym siedzę i nic mi nie przychodzi do głowy jak to zrobić....[marq=down][/marq]
Pozdrawiam!
Pozdrawiam!
Re: Zmienna globalna - wykrywanie zdarzenia (event structure)
Odpowiedz jest brutalna ale niestety tak to jest.
Trzeba rozpocząć od sprzątania diagramu. Zrezygnować z przenoszenia informacji o kolejce za pomocą zmiennej lokalnej - to na prawdę nie jest dobry pomysł. Każda z tych funkcji ma wejście i wyjście wątku kolejki - trzeba z tego korzystać.
Pomoże to na pewno zauważyć i wyeliminować część błędów. Dane przenoszone w drutach od strony lewej do prawej - nie od góry do dołu.
Wyprostować przewody... Wyeliminować zmienne lokalne - zastąpić przewodami.
Trzeba rozpocząć od sprzątania diagramu. Zrezygnować z przenoszenia informacji o kolejce za pomocą zmiennej lokalnej - to na prawdę nie jest dobry pomysł. Każda z tych funkcji ma wejście i wyjście wątku kolejki - trzeba z tego korzystać.
Pomoże to na pewno zauważyć i wyeliminować część błędów. Dane przenoszone w drutach od strony lewej do prawej - nie od góry do dołu.
Wyprostować przewody... Wyeliminować zmienne lokalne - zastąpić przewodami.
- jogurt_owocowy
- Posty: 1317
- Rejestracja: 30 lis 2004 00:00
- Wersja środowiska: LabVIEW 2015
- Lokalizacja: Kraków
Re: Zmienna globalna - wykrywanie zdarzenia (event structure
Dlatego napisałem, że przykład wina jest zły, bo nie bardzo wiem czemu miałoby służyć wpisywanie do property node wewnątrz eventu , albo o czymś nie wiem. Zdarzenie oczywiście można wywołać jednokrotnie (nawet na takim brzydkim diagramie - z pewnymi zastrzeżeniami) robiąc dwie rzeczy: 1. To o czym pisałem poprzednio - zaznaczone wykrzyknikiem.Ponadto jedna uwaga: diagram aktualnie obsłuży zdarzenie "rejestracja" Value Change wielokrotnie.
2. Kasując wpisywanie do property node wewnątrz eventu.
A najlepiej zacząć od kroku zerowego czyli od porządków na diagramie.
Re: Zmienna globalna - wykrywanie zdarzenia (event structure
Aby nie komplikować już sprawy narysowałem prosty przykład i zrobiłem tak jak radzi mi jogurt_owocowy, ale zdarzenie nr 1 w strukturze event wykonuje się bez przerwy (wielokrotnie) od razu po uruchomieniu programu. Co robię źle że to nie działa?
Re: Zmienna globalna - wykrywanie zdarzenia (event structure
Petla while zakręci się tylko w sytuacji, gdy pojawi się zdarzenie, które jest zdefiniowane w strukrurze event. Zatem: funkcja Wait until (ms) jest absolutnie niepotrzebna. Niepotrzebne jest definiowanie zdarzenia Timeout Przycisk stop powinien być obsłużony przez strukturę event
Skąd pojawia się informacja Boolean która jest w zmiennej globalnej?
Skąd pojawia się informacja Boolean która jest w zmiennej globalnej?