Mam pytanie odnośnie wyboru struktury aplikacji służącej do kalibracji kanałów analogowych.
Chodzi o to aby program wczytał informacje o sprzęcie zainstalowanym na danej platformie, umożliwiał wybór karty pomiarowej na której będzie dokonywana kalibracja i następnie uruchamiał pomiar. Dane mają być wyświetlane na ekranie (np co 1 sekundę, najłatwiej chyba w tabeli), razem z współczynnikami wzmocnienia i zerowania dla każdego z kanałów. Przycisk zapisu ma umożliwiać zapisanie współczynników do pliku. Przycisk "zeruj" ustawia współczynniki zerowania kiedy czujniki mierzą wartość 0. przycisk "ustaw wzmocnienie" oblicza wzmocnienie dla kanałów kiedy czujniki mierzą określoną znaną wartość. Zastanawiałem się nad maszyną stanów z eventami lub producent/konsument z eventami. Niestety nie bardzo wiem jak do tego podejść żeby wszystko działało. W maszynie stanów przechodzę w stan "pomiar" i program nie reaguje na GUI (przez osobny stan w którym program czeka na reakcję użytkownika). W producent/konsument górna pętla odpowiada za GUI, dolna odpowiada za pomiar i zapis współczynników do pliku ale uruchamia się tylko raz jak dostanie coś do kolejki w pętli górnej.
Struktura aplikacji do kalibracji kanałów analogowych
-
- Posty: 18
- Rejestracja: 26 paź 2008 10:21
- Wersja środowiska: LabVIEW 2012
- Kontakt:
Re: Struktura aplikacji do kalibracji kanałów analogowych
Zrobiłem na szybko taki wzorzec. Nie jest działający, ale będziesz wiedział o co chodzi.
W masterze obsługujesz GUI, no a pomiar w slave. Dane master-->slave przesyłasz za pomocą kolejek albo notifaierów, natomiast slave-->master za pomocą eventów. W slave robisz maszyne stanów. Tam oczekujesz na start pomiaru czy tam odbiór jakiś danych z mastera. Do tego jeszcze dodajesz klastry danych dla każdej pętli.
W masterze obsługujesz GUI, no a pomiar w slave. Dane master-->slave przesyłasz za pomocą kolejek albo notifaierów, natomiast slave-->master za pomocą eventów. W slave robisz maszyne stanów. Tam oczekujesz na start pomiaru czy tam odbiór jakiś danych z mastera. Do tego jeszcze dodajesz klastry danych dla każdej pętli.
Struktura aplikacji do kalibracji kanałów analogowych
Faktycznie... tak czułem, że rozwiązanie tego problemu będzie banalne... Próbowałem wcześniej z Shift Register, ale nie zwróciłem uwagi na to, że można podawać sygnał do bramki wejściowej z poza pętli... Dzięki za wskazówkę! ;)
-
- Posty: 18
- Rejestracja: 26 paź 2008 10:21
- Wersja środowiska: LabVIEW 2012
- Kontakt:
Re: Struktura aplikacji do kalibracji kanałów analogowych
Próbowałem rozgryźć tą strukturę ale nie bardzo widzę w jaki sposób mogę ją efektywnie wykorzystać:/ W międzyczasie próbowałem zrobić program w maszynie stanów z eventami, z którą też mam problem. W załączniku jest mój VI. Wiem że posypią się gromy, to jest dobry przykład jak nie pisać programów w LV ;-) ale chodzi o jedną rzecz, mianowicie po wybraniu karty pomiarowej i wciśnięciu przycisku pomiar następuje pobieranie danych z karty pomiarowej. Aplikacja przechodzi w stan calibrate (pobieranie danych) -> check (sprawdzenie stanu przycisków na UI) -> calibrate -> check -> calibrate itd. W momencie wciśnięcia dowolnego przycisku wykonuje się wybrany przyciskiem stan i program wraca do cyklu calibrate -> check. Problem w tym że po pierwszym wciśnięciu przycisku UI przestaje kompletnie reagować na kliknięcia myszką, trzeba zatrzymywać program przyciskiem abort. Dzieje się tak za każdym razem. Nie mogę dojść z jakiego powodu tak się dzieje. Wszędzie wsadzone jest opóznienie 200ms żeby było widać w jakie stany przechodzi kolejno program.
- Załączniki
-
- kalibracja_AI_inny zapis tabeli.vi
- (118.56 KiB) Pobrany 382 razy