Witam.
Tworzę program sterujący 2 silnikami krokowymi w środowisku Labview 8.2.1. Sterowanie odbywa się przez port LPT. Udało mi się stworzyć prosty program sterujący. Problem pojawia się, gdy zwiększam częstotliwość wysyłanych sygnałów. Sygnały mierzone były za pomocą oscyloskopu. Do częstotliwości 1 kHz wszystko działa dobrze, w zakresie 1-2 kHz odczyt utrzymuje się na na stałej wartości 1 kHz, a powyżej 2 kHz otrzymuje na oscyloskopie 36 kHz :)
Niestety nie mam pojęcia, co jest nie tak. Czy może być to wina w miarę słabego komputera ( 1,7 GHz, 1 Gb ram), czy może systemu oszczędzania energii zakłócają wysyłanie (laptop)? OS to Windows XP Pro SP3
Moje doświadczenie z LabView jest niestety małe i zakładam, że to ja popełniłem jakiś błąd, więc jeżeli ktoś mógłby mi pomóc, będę bardzo wdzięczny.
Załączam program do wglądu.
Sterowanie silnikami przez LPT - problem z częstotliwością
Sterowanie silnikami przez LPT - problem z częstotliwością
- Załączniki
-
- Projekt 7 - Sterowanie oboma silnikami SPRAWDZONE.vi
- Sterowanie 2 silnikami krokowymi LV 8.2.1
- (42.12 KiB) Pobrany 283 razy
Ostatnio zmieniony 07 lis 2010 17:28 przez Voltir, łącznie zmieniany 1 raz.
- pazuzu
- Posty: 30
- Rejestracja: 20 lip 2006 00:00
- Wersja środowiska: LabVIEW 8.0
- Lokalizacja: Jaworzno
Re: Sterowanie silnikami przez LPT - problem z częstotliwością
Witaj
Nie mam możliwości podejrzenia Twojego kodu tak więc będę trochę na ślepo próbował Ci pomóc.
Pierwsza myśl jaka mi się nasuneła to to iż w ciągu sekundy możesz przesłać określoną liczbę bajtów - przy trybie ECP (ang. Extended Capability Port) jest to wartość 2 Mb/s - najwyższa możliwa dla LPT - co daje nam 250 bajtów w trakcie jednego cyklu. Jednakże transfery mogą spaść do wielkości rzędu 150 kb/s SPP (ang. Standard Parallel Port) czyli do 18 bajtów na transfer. Tak więc sprawdź jaki tryb transferu masz wybrany i czy nie ma za wiele danych do wysłania jednorazowo.
Poźniej na wiki wyczytałem iż LPT może jednorazowo przesłać równolegle na wejście 9 bitów lub na wyjście 12 bitów w tym samym czasie (łącznie z wykorzystaniem linii przewidzianych jako kontrolne i sterujące). Sprawdź rónież to.
Jeżeli chodzi o wydajność komputera to jeżeli jeszcze tego nie zrobiłeś sprawdz na innym kompie jak to działa.
Daj znać czy to coś pomogło.
Nie mam możliwości podejrzenia Twojego kodu tak więc będę trochę na ślepo próbował Ci pomóc.
Pierwsza myśl jaka mi się nasuneła to to iż w ciągu sekundy możesz przesłać określoną liczbę bajtów - przy trybie ECP (ang. Extended Capability Port) jest to wartość 2 Mb/s - najwyższa możliwa dla LPT - co daje nam 250 bajtów w trakcie jednego cyklu. Jednakże transfery mogą spaść do wielkości rzędu 150 kb/s SPP (ang. Standard Parallel Port) czyli do 18 bajtów na transfer. Tak więc sprawdź jaki tryb transferu masz wybrany i czy nie ma za wiele danych do wysłania jednorazowo.
Poźniej na wiki wyczytałem iż LPT może jednorazowo przesłać równolegle na wejście 9 bitów lub na wyjście 12 bitów w tym samym czasie (łącznie z wykorzystaniem linii przewidzianych jako kontrolne i sterujące). Sprawdź rónież to.
Jeżeli chodzi o wydajność komputera to jeżeli jeszcze tego nie zrobiłeś sprawdz na innym kompie jak to działa.
Daj znać czy to coś pomogło.
Natural Born Philosopher !
Re: Sterowanie silnikami przez LPT - problem z częstotliwością
Witam.
Dzięki za odpowiedź.
Port jest ustawiony w trybie ECP. Przy naciśnięciu przycisku na odpowiedni pin LPT wysyłany jest sygnał za pomocą Out Port.vi.
Modyfikuje tylko pierwszy rejestr LPT, gdyż tam znajduje się pin zegara silnika. Nie sądzę, żebym wysyłał za dużo. Raczej dziwie się, że przy wyższym ustawieniu częstotliwość jest znacznie większa niż powinna. Sygnał także wygląda dobrze. Ew. występuje lekkie prze regulowanie. Tylko jak mówiłem częstotliwość się nie zgadza.
Sprawdzenie kodu na innej maszynie będzie dopiero możliwe we wtorek.
Dorzucam program dla LV 8.0 (stworzony przez Save for Previous Version)
Dzięki za odpowiedź.
Port jest ustawiony w trybie ECP. Przy naciśnięciu przycisku na odpowiedni pin LPT wysyłany jest sygnał za pomocą Out Port.vi.
Modyfikuje tylko pierwszy rejestr LPT, gdyż tam znajduje się pin zegara silnika. Nie sądzę, żebym wysyłał za dużo. Raczej dziwie się, że przy wyższym ustawieniu częstotliwość jest znacznie większa niż powinna. Sygnał także wygląda dobrze. Ew. występuje lekkie prze regulowanie. Tylko jak mówiłem częstotliwość się nie zgadza.
Sprawdzenie kodu na innej maszynie będzie dopiero możliwe we wtorek.
Dorzucam program dla LV 8.0 (stworzony przez Save for Previous Version)
- Załączniki
-
- Projekt 7 - Sterowanie oboma silnikami SPRAWDZONE.vi
- Sterowanie 2 silnikami krokowymi LV 8.0
- (42.07 KiB) Pobrany 247 razy
Re: Sterowanie silnikami przez LPT - problem z częstotliwością
witam. a mógłby ktoś napisać w jaki sposób wysyłać sygnały przez out porta. jak w przypadku sterowania jednofozowego: A B A` B` a jak w przypadku dwufazowego: AB BA` A`B` B`A? w drugim przypadku maja byc wysyłana dwa bity jednoczesnie.a jak w przypadku sterowania połkrokowego: czyli
B` B`A` A` A`B BA A AB`??
pozdrawiam.
B` B`A` A` A`B BA A AB`??
pozdrawiam.