Adv Generate Pulse Train w karcie USB-4711A
Adv Generate Pulse Train w karcie USB-4711A
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?
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?
4050ml A Rh+, a Ty?
Re: Adv Generate Pulse Train w karcie USB-4711A
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
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
4050ml A Rh+, a Ty?
- Pitol
- Moderator
- Posty: 987
- Rejestracja: 19 lip 2007 00:00
- Wersja środowiska: LabVIEW 2019
- Lokalizacja: Kraków
Adv Generate Pulse Train w karcie USB-4711A
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 ;)
Spróbuj wrzucić Pulse Config do środka pętli i sprawdź czy coś to zmieni ;)
Re: Adv Generate Pulse Train w karcie USB-4711A
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
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

4050ml A Rh+, a Ty?
- Pitol
- Moderator
- Posty: 987
- Rejestracja: 19 lip 2007 00:00
- Wersja środowiska: LabVIEW 2019
- Lokalizacja: Kraków
Adv Generate Pulse Train w karcie USB-4711A
Ś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: Częstotliwość jest przeciągnięta przez Case aby wymusić kolejność bloczków (najpierw Stop, potem Config).

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: Częstotliwość jest przeciągnięta przez Case aby wymusić kolejność bloczków (najpierw Stop, potem Config).
Re: Adv Generate Pulse Train w karcie USB-4711A
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ść?
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

i jeszcze raz ja

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ść?
Ostatnio zmieniony 06 cze 2010 22:06 przez machoney, łącznie zmieniany 1 raz.
4050ml A Rh+, a Ty?
- Pitol
- Moderator
- Posty: 987
- Rejestracja: 19 lip 2007 00:00
- Wersja środowiska: LabVIEW 2019
- Lokalizacja: Kraków
Re: Adv Generate Pulse Train w karcie USB-4711A
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: 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)
Najlepiej zrobić to tak: 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ć

- Załączniki
-
- CONV4.vi
- (9.33 KiB) Pobrany 382 razy
Re: Adv Generate Pulse Train w karcie USB-4711A
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?
- Pitol
- Moderator
- Posty: 987
- Rejestracja: 19 lip 2007 00:00
- Wersja środowiska: LabVIEW 2019
- Lokalizacja: Kraków
Adv Generate Pulse Train w karcie USB-4711A
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:
Ten VI jest załączony w poprzednim moim poście.
EDIT:

Ten VI jest załączony w poprzednim moim poście.
Ostatnio zmieniony 06 cze 2010 22:26 przez Pitol, łącznie zmieniany 1 raz.
Re: Adv Generate Pulse Train w karcie USB-4711A
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ć

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?
- Pitol
- Moderator
- Posty: 987
- Rejestracja: 19 lip 2007 00:00
- Wersja środowiska: LabVIEW 2019
- Lokalizacja: Kraków
Re: Adv Generate Pulse Train w karcie USB-4711A
Proszę bardzo:
- Załączniki
-
- CONV4_8.6.vi
- LabVIEW 8.6
- (9.24 KiB) Pobrany 363 razy
Re: Adv Generate Pulse Train w karcie USB-4711A
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?
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?
4050ml A Rh+, a Ty?
- Pitol
- Moderator
- Posty: 987
- Rejestracja: 19 lip 2007 00:00
- Wersja środowiska: LabVIEW 2019
- Lokalizacja: Kraków
Adv Generate Pulse Train w karcie USB-4711A
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).
Re: Adv Generate Pulse Train w karcie USB-4711A
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ść)

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ść)
4050ml A Rh+, a Ty?
- Pitol
- Moderator
- Posty: 987
- Rejestracja: 19 lip 2007 00:00
- Wersja środowiska: LabVIEW 2019
- Lokalizacja: Kraków
Adv Generate Pulse Train w karcie USB-4711A
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).
Nie musisz używać bloczków Start i Stop bo one są wewnątrz bloczka Adv GPT (wg mnie wystarczy tylko ten bloczek).