Synchronizacja częstotliwości

Jeśli masz coś do powiedzenia w sprawie LabVIEW napisz. Tutaj są tematy, których nie można uściślić do innych działów.
siema24
Posty: 23
Rejestracja: 14 mar 2012 10:20
Wersja środowiska: LabVIEW 2011

Synchronizacja częstotliwości

Post autor: siema24 »

Witam, mam problem z synchronizacją częstotliwości różnych elementów programu. Dokładniej mówiąc, w jaki sposób narzucić jakiemuś zrobionemu przez siebie VI działanie z określoną, niezależną od wykonywania całego programu, częstotliwością?
Np. gdybym chciał zrobić VI który z pewna częstotliwością generuje symbole 0 lub 1 a to, jak szybkie będą zmiany tych wartości określa jakaś inna częstotliwość? Program na pozór banalny ale jak uniezależnić te częstotliwości? pozdrawiam :)
Awatar użytkownika
Harnas
Posty: 152
Rejestracja: 16 mar 2011 09:56
Wersja środowiska: LabVIEW 2009

Synchronizacja częstotliwości

Post autor: Harnas »

Petla While ma mozliwosc ustawiania czestotliwosci jej przebiegu. Moze tez skorzystac ze spowalniacza w postaci metronomu. Jezeli chcesz zeby jakis element / VI wykonywal sie co ustalony czas mozesz sobie skonstruowac prosty skrypt w ktorym bedzie porownywany aktualny czas (z dokladnoscia do mikrosekund) z czasem kiedy ostatni raz dany element sie wykonal. Jezeli "aktualny czas" - "stary czas" = czestotliwosc ktora chcesz miec, to element / VI jest wykonywany a "stary czas" jest nadpisywany przez "aktualny czas" i z kazdym kolejnym przebiegiem petli znowu mamy odjecie jednego czasu od drugie, porownanie czy warunek zostal spelniony i jak jest spelniony uruchomienie elementu/ VI
Załączniki
time.PNG
Garreth
Posty: 74
Rejestracja: 28 gru 2011 14:13
Wersja środowiska: LabVIEW 2011

Synchronizacja częstotliwości

Post autor: Garreth »

Nie prościej użyć timed loop?:) Nie dość, że prawdopodobnie jest to rozwiązanie dokładniejsze, to jeszcze możemy narzucić programowi wykonywanie cykli z określonym okresem i jeżeli ten okres będzie przekroczony (bo na przykład procesor nie wyrabia), to timed loop od razu udostępnia flagi, które to pokażą.
Zyga
Posty: 86
Rejestracja: 26 sty 2012 23:36
Wersja środowiska: LabVIEW 2011

Re: Synchronizacja częstotliwości

Post autor: Zyga »

Garreth pisze:Nie prościej użyć timed loop?:) Nie dość, że prawdopodobnie jest to rozwiązanie dokładniejsze, to jeszcze możemy narzucić programowi wykonywanie cykli z określonym okresem i jeżeli ten okres będzie przekroczony (bo na przykład procesor nie wyrabia), to timed loop od razu udostępnia flagi, które to pokażą.
gdzieś mi się obiło o uszy, że timed loop nie ma sensu używac pod Windowsem? Nie wiem czy jest to słuszne.

Ja bym to zrobił w dwóch wątkach. W jednym generujemy z określoną częstotliwością liczbę, a w drugim odczytujemy..
Garreth
Posty: 74
Rejestracja: 28 gru 2011 14:13
Wersja środowiska: LabVIEW 2011

Synchronizacja częstotliwości

Post autor: Garreth »

Wiesz co, dokładność timed loop można sobie zmierzyć kilkoma narzędziami. Nie będzie to na pewno wynik, jaki jest do uzyskania na systemach RT. Wiadomo też, że czym słabszy procek, tym gorzej będzie uzyskać niskie i powtarzalne czasy wykonania pętli, ale takie problemy wyjdą przy każdej próbie wymuszania częstotliwości wykonywania programu. Przyjdzie przerwanie z jakiegoś urządzenia i już możesz mieć inne wykonanie pętli.
bogdani
Administrator
Posty: 1315
Rejestracja: 30 lip 2003 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Ruda Śląska
Kontakt:

Synchronizacja częstotliwości

Post autor: bogdani »

siema24, napisz może o jakiś częstotliwościach zmian 0 i 1 mowa, bo na razie to gdybamy.
Poza tym napisz, jakiej precyzji synchronizacji oczekujesz, bo jak będziesz chciał mieć 1 us na Windowsie, to możemy jeszcze gdybać długo i tak nic z tego nie wyjdzie.

Jak zaproponował Garreth, Timed Loop, to dobre rozwiązanie, ale wszystko zależy co i na czym chcesz uzyskać.r

bogdani
Ktoś ci pomógł na forum? Podziękuj dając pochwałę.

Obrazek Obrazek Obrazek
siema24
Posty: 23
Rejestracja: 14 mar 2012 10:20
Wersja środowiska: LabVIEW 2011

Synchronizacja częstotliwości

Post autor: siema24 »

f zmian symboli jest mała.... ~ 1Hz. za to częstotliwość generowania tych bitów jest większa ~ 1kHz
ODPOWIEDZ