Adv Generate Pulse Train w karcie USB-4711A

Wszelkie sprawy związane z LabVIEW i komunikacją ze sprzętem. Problemy i ciekawe rozwiązania.
machoney
Posty: 31
Rejestracja: 15 mar 2010 08:52
Wersja środowiska: LabVIEW 8.6

Adv Generate Pulse Train w karcie USB-4711A

Post autor: machoney »

Witam,
mam problem z uruchomieniem wyjścia P_OUT na karcie USB-4711A firmy advantech. W bloczkach mam klocki "Adv Generate Pulse Train", "Adv Cont Generator Pulse Config","ADV Counter Start" i "...stop"
Ponieważ to moje pierwsze spotkanie z LV nie wiem czy zostawić to luzem, wsadzić w pętlę loop czy w sekwencję (a może wymieszać wszystko). Próbowałem już różnych kombinacji i albo wywala mi błędy że counter jest już zajęty albo uruchomi się raz i nie mam możliwości regulować częstotliwości.
W załączniku moja najnowsza próba:
- jeżeli uruchomię VI w trybie RUN continuously to zmieniając częstotliwość na wyjściu P_OUT zmieni się dopiero po naciśnięciu STOP2 wychodzącego z pętli. Jaki jest normalny tryb na pracy? "run" czy "run continuously"

jak to poskładać żeby w sposób ciągły regulować P_OUT?
Załączniki
scr1.JPG
4050ml A Rh+, a Ty?
machoney
Posty: 31
Rejestracja: 15 mar 2010 08:52
Wersja środowiska: LabVIEW 8.6

Re: Adv Generate Pulse Train w karcie USB-4711A

Post autor: machoney »

to znowu ja! mam nadzieję, że ktoś wkońcu podejmie rękawicę
mam problem z opanowaniem ww karty w LV w temacie generowania określonej liczby pulsów na wyjściu P_OUT. Po próbach udało mi się zrobić tak, że po STOP w pętli odświeża mi wartość nastawionej częstotliwości a chciałbym regulować online. Po drugie nie działa zmiana wypełnienia i ilości pulsów. Potrzebuję dokładnie 67 pulsów z regulowaną częśtotliwością do sterowania silnika krokowego. 67 kroków to przeskok o 120' natomiast regulowana częstotliwość ma sterować szybkością przeskoku między kolejnymi punktami. W załączniku screen.
Proszę o pomoc! pzd
Załączniki
scr2.JPG
4050ml A Rh+, a Ty?
Awatar użytkownika
Pitol
Moderator
Posty: 983
Rejestracja: 19 lip 2007 00:00
Wersja środowiska: LabVIEW 2019
Lokalizacja: Kraków

Adv Generate Pulse Train w karcie USB-4711A

Post autor: Pitol »

normalny tryb pracy to Run. O Run Continuously zapomnij. Jeśli chcesz na bieżąco modyfikować parametry (z tego co widzę na obrazku to freq, duty cycle i inne) to musisz umieścić ten bloczek w pętli. Wyobraź sobie to tak: przed pętlą dzieją się rzeczy inicjalizacyjne (np. otwarcie portu/urządzenia), potem pętla, w której coś się dzieje (i tu użytkownik może mieszać) no i po pętli umieszczamy np. zamknięcie portu/urządzenia. I zawsze uruchamiaj na Run !!!

Spróbuj wrzucić Pulse Config do środka pętli i sprawdź czy coś to zmieni ;)
ObrazekObrazekObrazek
Chcesz taki podpis? Zajrzyj tutaj
machoney
Posty: 31
Rejestracja: 15 mar 2010 08:52
Wersja środowiska: LabVIEW 8.6

Re: Adv Generate Pulse Train w karcie USB-4711A

Post autor: machoney »

wsadzałem to już do pętli. Zdecydowanie więcej błędów komunikuje wtedy blok config. Samo zadawanie częstotliwość to kosmetyka która może ostatecznie zostać tak jak jest czyli po klawiszu aktualizuje częstotliwość. Największy problem to 67 impulsów o zadanej częstotliwości. Mam wyjście P_OUT ale wygląda na to, że nie da się ustawić ilości pulsów i wypełnienia. Może przez DO lub AO da się wygenerować pulsy które potrzebuję do sterowania silnikiem krokowym?
WIELKIE DZIĘKI że odpisałeś!!

Zrobiłem coś takiego (scr3) i niestety nie będzie działać. Przyjmuje tylko pierwszą nastawę czyli:
- po uruchomieniu f=0
- klikam na OK, i na P_OUT pojawia się nastawiona częst.
- zmieniam f, klikam OK i wywala mi błąd że counter jest już używany :(
jeśli na OK jest START/RESTART to powinien przekonfigurować counter, tak?
Jeżeli znowu Counter Stop dam do pętli to też wali błędy :(

P.S.
zmieniłem rodzaj bloczka ponieważ w pierwszym wydaniu jest Config, Start poza pętlą natomiast jak dam Config do pętli to i Start musi być w pętli i wtedy generuje błąd że couter jest już używany :(
Załączniki
scr3.JPG
4050ml A Rh+, a Ty?
Awatar użytkownika
Pitol
Moderator
Posty: 983
Rejestracja: 19 lip 2007 00:00
Wersja środowiska: LabVIEW 2019
Lokalizacja: Kraków

Adv Generate Pulse Train w karcie USB-4711A

Post autor: Pitol »

Ściągnąłem te sterowniki do Advantecha i zajrzałem do środka funkcji Adv Generate Pulse Train.vi (co i Tobie polecam). Wniosek nasuwa się taki: jeśli Start jest ustawiony na TRUE, to bloczek konfiguruje licznik tak, żeby formował zadany sygnał. Jeśli jest FALSE, to... nic się nie dzieje :) Ważne jest również wejście Stop, które powoduje zatrzymanie licznika (lub nie).

W Twoim przypadku wygląda to tak:
Na starcie masz FALSE na wejściach Start/Restart i Stop, co w zasadzie nic nie robi. Potem klikasz OK, co powoduje uruchomienie licznika z zadanymi parametrami (ale na STOP jest wciąż FALSE więc licznik pracuje cały czas). Następnie zmieniasz sobie częstotliwość i ponownie wciskasz OK. Powoduje to błąd, że licznik jest w użyciu (bo nie został zatrzymany).
Wydaje mi się, że jeśli chciałbyś zmieniać parametry licznika, to musisz obsłużyć zatrzymanie licznika w momencie zmiany parametru. W jaki sposób? hmm... możesz skorzystać ze struktury Event, możesz równie dobrze zrobić to tak:
ADV.PNG
Częstotliwość jest przeciągnięta przez Case aby wymusić kolejność bloczków (najpierw Stop, potem Config).
ObrazekObrazekObrazek
Chcesz taki podpis? Zajrzyj tutaj
machoney
Posty: 31
Rejestracja: 15 mar 2010 08:52
Wersja środowiska: LabVIEW 8.6

Re: Adv Generate Pulse Train w karcie USB-4711A

Post autor: machoney »

jak wspomniałem to mój pierwszy kontakt z tym środowiskiem i muszę nabrać doświadczenia w nim. W delphi czy C wygląda to trochę inaczej. Czy wg Ciebie da się wyciągnąć ilość pulsów z Generate Pulse Train tak, aby po 67 pulsach zatrzymać go?

Próbuję wg Twoich wskazówek ale niestety kicha. Błędy :(


ponieważ poniedziałek już jutro postanowiłem spróbować zaponować nad DO i tam robić pulsy. Niestety max to ok 500 Hz i to niestabilne. Jest za to 67 pulsów i jak dam to w sekwencję to będę mógł wywołać to dla 67, 67 i 66 kroków. Wg teorii powinienem na DO wypuścić 1kHz, czy da się moje rozwiązanie zoptymalizować żeby zbliżyć się do tego 1k?
Idealnie będzie jednak działać na P_OUT i będę walczył z tym więc proszę nie zostawiaj mnie z tym :) pzd

i jeszcze raz ja :) z kolejnym screenem.
tym razem działa z jednym wyjątkiem - przy pierwszym wykonaniu wywali błąd, jak dam continue to potem już super zmienia częstotliwość. Zapewne chodzi o ID które dodawane jest później. Jak to obejść?
Załączniki
błąd przy pierwszej zmianie
błąd przy pierwszej zmianie
pulse na DO
pulse na DO
scr4.JPG
Ostatnio zmieniony 06 cze 2010 22:06 przez machoney, łącznie zmieniany 1 raz.
4050ml A Rh+, a Ty?
Awatar użytkownika
Pitol
Moderator
Posty: 983
Rejestracja: 19 lip 2007 00:00
Wersja środowiska: LabVIEW 2019
Lokalizacja: Kraków

Re: Adv Generate Pulse Train w karcie USB-4711A

Post autor: Pitol »

Kolejny raz polecam zajrzeć głębiej... ;) Wewnątrz bloczku ADV Write to Digital Line.vi jest kawałek kodu, który konfiguruje port. Analizując obrazek nr1, który załączyłeś wynika, że nie podpinasz wejścia Iteration. Powoduje to, że konfiguracja portu przeprowadzana jest za każdym wywołaniem tego VI. Znając życie taka konfiguracja portu zabiera trochę czasu, więc jeśli lekko zmodyfikujesz swój przykład, może uzyskasz trochę więcej kHz ;)
Najlepiej zrobić to tak:
CONV3.PNG
A co do tego nieszczęsnego licznika... W pomocy jest napisane, że ten bloczek generuje impulsy w sposób ciągły, lub wyznaczoną ilość impulsów w zależności od wejścia number of pulses
number of pulses is the number of pulses you want in the pulse train. If the value is #0 (default), the VI generates a continuous pulse train. Only PCI1760 and PCI1780 support the finite pulse train
Może lepiej nie zamykać tego w nieskończonej pętli, tylko raz uruchomić. Na mój gust powinien wygenerować zadaną ilość impulsów i się zamknąć :)

Załączam VI, który to powinien robić :) (przy okazji jest tam sposób obejścia Twojego problemu z task ID)
Załączniki
CONV4.vi
(9.33 KiB) Pobrany 318 razy
ObrazekObrazekObrazek
Chcesz taki podpis? Zajrzyj tutaj
machoney
Posty: 31
Rejestracja: 15 mar 2010 08:52
Wersja środowiska: LabVIEW 8.6

Re: Adv Generate Pulse Train w karcie USB-4711A

Post autor: machoney »

powyżej dorzuciłem jeszcze jednego screena w nawiązaniu do płynnej regulacji. Już prawie działa z wyjątkiem pierwszej zmiany gdzie blok STOP nie ma taskID. Na każdego posta czekam z niecierpliwością, mój GURU. Może pomógłbyś mi zrobić tego VI nad którym się męczę? zaraz sprawdzę ile Hz wykręci ta pętla z ostatniego postu :)
4050ml A Rh+, a Ty?
Awatar użytkownika
Pitol
Moderator
Posty: 983
Rejestracja: 19 lip 2007 00:00
Wersja środowiska: LabVIEW 2019
Lokalizacja: Kraków

Adv Generate Pulse Train w karcie USB-4711A

Post autor: Pitol »

taka rada na przyszłość: jak edytujesz posta to zaznacz to np. waląc EDIT: albo coś podobnego przed nowo dodanym tekstem. Pozwoli to szybciej zorientować się, czy coś zmieniałeś. Bo ja zazwyczaj nie czytam postów poprzednich...

EDIT: :D
Ten VI jest załączony w poprzednim moim poście.
Ostatnio zmieniony 06 cze 2010 22:26 przez Pitol, łącznie zmieniany 1 raz.
ObrazekObrazekObrazek
Chcesz taki podpis? Zajrzyj tutaj
machoney
Posty: 31
Rejestracja: 15 mar 2010 08:52
Wersja środowiska: LabVIEW 8.6

Re: Adv Generate Pulse Train w karcie USB-4711A

Post autor: machoney »

Sprawdziłem tą pętlę - 500 Hz. Wygląda na to, że szybciej się nie da w ten sposób :(
Muszę uzyskać min 2kHz z dokładną ilością pulsów (67,67,66) ponieważ muszę zatrzymać się zawsze w tej samiej pozycji na obwodzie. Dodatkowo muszę ten przeskok wykonać bardzo dynamicznie a nie wiem jak się dobrać do tego Pulse Generatora :(
Próbowałem na DO to zrobić ale jak dodałem pomiar z AI i obsługę kilku DO to już max częstotliwość spadła do ok 250Hz :(

P.S. wszystkiego pilnie się uczę

EDIT:
proszę o CONV4 w wersji 8.6 bo niestety nie dam rady otworzyć
Ostatnio zmieniony 06 cze 2010 22:47 przez machoney, łącznie zmieniany 1 raz.
4050ml A Rh+, a Ty?
Awatar użytkownika
Pitol
Moderator
Posty: 983
Rejestracja: 19 lip 2007 00:00
Wersja środowiska: LabVIEW 2019
Lokalizacja: Kraków

Re: Adv Generate Pulse Train w karcie USB-4711A

Post autor: Pitol »

Proszę bardzo:
Załączniki
CONV4_8.6.vi
LabVIEW 8.6
(9.24 KiB) Pobrany 311 razy
ObrazekObrazekObrazek
Chcesz taki podpis? Zajrzyj tutaj
machoney
Posty: 31
Rejestracja: 15 mar 2010 08:52
Wersja środowiska: LabVIEW 8.6

Re: Adv Generate Pulse Train w karcie USB-4711A

Post autor: machoney »

Super rozwiązanie jednak te bloki advantecha są bardzo uparte ;) uruchomiłem CONV4 (jaka radość jak VI odpala się bez błędów, nawet jak się coś zmienia) i dałem podgląd na schemacie.
Mimo, że duty zostało zmienione i podana ilość pulsów na pomiarze zmiennych wszędzie pokazuje 0. Jak to rozumieć? czy to normalne w LV?
Załączniki
scr7.JPG
4050ml A Rh+, a Ty?
Awatar użytkownika
Pitol
Moderator
Posty: 983
Rejestracja: 19 lip 2007 00:00
Wersja środowiska: LabVIEW 2019
Lokalizacja: Kraków

Adv Generate Pulse Train w karcie USB-4711A

Post autor: Pitol »

Dzieje się tak, ponieważ zastosowałem strukturę Event (możesz sobie w wolnym czasie poczytać o tym, bo to przydatna rzecz). Generalnie działa to tak, że struktura Event oczekuje na zdarzenie. W tym przypadku zdarzeniem jest naciśnięcie przycisku START. Jeśli przycisk nie zostanie wciśnięty to się nic nie dzieje, pętla się nie kręci. Przykład ten miał sprawdzić, czy zostanie wygenerowany pojedynczy zestaw impulsów (tyle, ile zadeklarujesz).
ObrazekObrazekObrazek
Chcesz taki podpis? Zajrzyj tutaj
machoney
Posty: 31
Rejestracja: 15 mar 2010 08:52
Wersja środowiska: LabVIEW 8.6

Re: Adv Generate Pulse Train w karcie USB-4711A

Post autor: machoney »

Niestety nawet zrobienie VI tylko z bloczkiem Adv GPT bez pętli, tylko konfiguracja i pojedyncze uruchomienie RUN niestety nie zatrzymuje się po określonej ilości pulsów. Zrobiłem jak na dołączonym obrazku czyli GPT, Start i Stop. VI się zatrzymuje zaraz po uruchomieniu (wykonyje się raz) a karta na wyjściu P_OUT niestety daje ciągłe pulsy :(
Event podoba mi się, rozumiem że jest to odpowiednik przerwania w C?
Tracę nadzieję, że to ruszy. Opcja ratunkowa to zrobić 67 impulsów na atmedze a do atmegi dać tylko impuls "przeskok". Atmega wygeneruje odpowiednią ilośc impulsów. (jednak to chciałbym jako ostateczność)
Załączniki
scr8.JPG
4050ml A Rh+, a Ty?
Awatar użytkownika
Pitol
Moderator
Posty: 983
Rejestracja: 19 lip 2007 00:00
Wersja środowiska: LabVIEW 2019
Lokalizacja: Kraków

Adv Generate Pulse Train w karcie USB-4711A

Post autor: Pitol »

a spróbuj do mojego przykładu dodać tylko stałą TRUE do wejścia Stop bloczka Adv GPT. Powinno to zatrzymać licznik od razu po wykonaniu zadania.
Nie musisz używać bloczków Start i Stop bo one są wewnątrz bloczka Adv GPT (wg mnie wystarczy tylko ten bloczek).
ObrazekObrazekObrazek
Chcesz taki podpis? Zajrzyj tutaj
ODPOWIEDZ