Strona 1 z 1

Czas dla pętli

: 06 lip 2007 16:41
autor: Tutenhamon
Witam,

Dostałem z firmy drivery do mojego urządzenia pod Labview. Wrzuciłem je w pętle while ale mam problem z czasem dla pętli. Tzn. Chciałbym wysyłać dane do urządzenia z przedziałem czasowym 2-5ms. Normalnie prosta sprawa ale jak wrzucę drivery minimalny czas jaki mogę otrzymać jest 10-20ms. Okres dla jednej iteracji wydłuża się. Labview/komputer nie potrafi wykonać to szybciej niż ok 20ms. A jak poruszę myszką to czas jest nawet większy. Nie wiem czy idzie coś ustawić w Labview czy to wina sterowników czy może mojego kompa. Mam Duo Core 2 1.8 GHz oraz 1 Gb ramu. Drivery są w postaci Sub'Vi-ów. Nic więcej nie robie tylko wrzucam do pętli while. Może ktoś wie jak to przyspieszyć? Dzięki za jakąkolwiek odpowiedź.

Re: Czas dla pętli

: 06 lip 2007 17:04
autor: Mikrobi
...i pewnie masz Windows...? Pamietaj że to system operacyjny do ogólnego zastosowania.
Nie wyciągniesz z niego szybszej powtarzalności - obrotu pętli - niż 10 (hahahaha :D ) a raczej 20 ms.

...z calym Należnym Wszytkim Szacunkiem 8)

Przyśpieszysz jeśli pracować będziesz w systemie czasu rzeczywistego.

Re: Czas dla pętli

: 07 lip 2007 17:14
autor: Tutenhamon
No to super:/ Dzięki za odpowiedź. Muszę coś wymyśleć bo mi wszystko w tym momencie padło:/ Urządzenie zachowuję się jakby się zacinało:) A jak się ma sprawa pod Linuxem? Może ktoś próbował?

Re: Czas dla pętli

: 09 lip 2007 12:31
autor: Tutenhamon
Coś tam poczytałem i znalazłem, że możliwość istnieje taka w środowisku Windows i Linux Embedded. Ktoś może to już ruszał? Trudne jest postawienie takiego systemu i później jego zarządzanie? Jest możliwość ściągnięcia wersji próbnej ze strony Microsftu ale chciałbym wiedzieć wpierw czy jest sens.

Re: Czas dla pętli

: 09 lip 2007 12:46
autor: progor
system czasu rzeczywistego kosztuje.
w zależności jakiego typu dane wysyłasz i czy zmieniasz je w pętli sprzężenia zwrotnego, pomyśl czy nie dałoby się napisać prosty (dla niektórych) program na mikrokontroler albo procek, który wysyłałby komendy co określony czas. takie małe ustrojstwo poradziło by sobie z czasem rzędu 2ms, a Ty będziesz miał kontrole nad jego wejściami (w rezultacie wyjściami) w czasie rzędu 20ms

Re: Czas dla pętli

: 09 lip 2007 12:54
autor: Tutenhamon
Wiesz, używam coś takiego:

http://www.linmot.com/lm_typo/fileadmin ... recent.pdf

Potrzebuje pętle rzędu 2-5mS. A mam 20mS i mój silnik liniowy skacze a nie się rusza:/ Czas reakcji jest za mały i dla okresu 1s mam za mało punktów:( Dlatego staram się coś znaleźć rozsądnego.

Re: Czas dla pętli

: 09 lip 2007 13:09
autor: progor
silnik krokowy, to już coś więcej wiemy.
może da się wysłać mu sekwencje - najlepiej poczekaj teraz na wypowiedź kogoś, kto bawił się z silnikami krokowymi.
pozdro

Re: Czas dla pętli

: 10 lip 2007 08:43
autor: Tutenhamon
Można użyć też modułu real - time. tylko, że trzeba go mieć wcześniej. Na stronie Labview są tutoriale jak oni to robią. pozdro

Re: Czas dla pętli

: 11 lip 2007 09:17
autor: kapitan7
Witam!

A może warto by było zastosować jakąś kartę NI do sterowania ( można tam uzyskać dużo lepsze czasy komunikacji)

Re: Czas dla pętli

: 11 lip 2007 09:23
autor: Tutenhamon
Możliwe ale trzeba mieć taką kartę albo pieniądze na nią :( Ściągnąłem ze strony Microsoftu system Windows Xp Embedded 120 dni wolnego użytkowania. Staram się coś znaleźć jak go postawić. Jak coś mi się uda to dam znać. Podobno jest to system czasu rzeczywistego. Pozdro.

Re: Czas dla pętli

: 17 lip 2007 13:47
autor: vugie
Też używam silnika liniowego LinMot, kontroler E100 - rewelacyjna zabawka :)

Napisałem program do jego obsługi korzystając z protokołu ASCII i RS232. Normalnie cykl pytanie-odpowiedź trwał koło kilkunastu ms (łącznie z konwersją stringa na dbl) - było to ograniczenie spowodowane przez 9600 bodów - domyślne i niezmienialne. Na szczęście okazało się, że nie takie znowu niezmienialne - Szwajcarzy przysłali mi dodatek do firmwaru i uzyskuję czasy cykli 2-3 ms (chyba, że kręcę kółkiem myszy - wtedy 50...). Mam normalny Windows, komputer 1.4. Problem z tym jest tylko taki, że kontrolel działa z bardzo nietypowymi prędkościami, a każdy model i seria z innymi. Jest niby do tego tabelka, ale jak się potem okazało mój kontroler i tak działał ze swoimi prędkościami. Po pierwsze trzeba obsłuzyć COMa z nietypową prędkością (VISA odpada, ale jest alternatywna biblioteka), poza tym musiałem napisać aplikację, która skanuje po wszystkich prędkościach i znajduje te, gdzie jest odpowiedź.

Więc służę pomocą odnośnie LinMota

----------------
W praktyce najlepiej sprawdza mi się nauczenie go całego cyklu pracy za pomocą ich softu (LinMot Commander czy jakoś tak), a potem tylko uruchamianie cyklu w pracy ciągłej.
Poza tym nawet jak masz tylko kilka punktów w okresie, to silnik może ładnie, gładko działać jeżeli zmniejszysz maksymalne przyspieszenie i prędkość - są na to komendy w protokole, mozna też z panelu.