Strona 1 z 1

Wlasny program do sterowania silnikiem

: 30 mar 2009, 15:57
autor: pjb
Witam

Pisze swoj program do sterowania silnikiem krokowym, ale powyzej predkosci 100 krokow/sek silnik sie zacina, gubi kroki itd. Podejrzewam gdzie tkwi problem tylko nie umiem go obejsc. Jak policzylem przy predkosci 100krokow/sek trzeba generowac impuls na LPT co 10 milisekund, tymczasem windows przelacza sterowanie miedzy aplikacjami z ta wlasnie czestotliwoscia, co oznacza, ze wiekszej dokladnosci sterowania impulsami w prosty sposob nie osiagne, silnik otrzymuje nieregularne impulsy przez co rozjezdza sie faza w jakiej sie sam znajduje z przychodzacymi impulsami.
Nie wie ktos jak to obejsc? Zwiekszyc w windows czestotliwosc przelaczania procesora miedzy aplikacjami? Wrzucac dane na port nie poprzez pojedyncze instrukcje zapisu do portu, tylko jakims buforem, ustawic predkosc transmisji i niech hardware pilnuje odstepow czasowych? Podejrzewam, ze sposob drugi bedzie dobry, moze ma ktos kawalek kodu ktory to robi? Wszedzie znalazlem tylko setki przykladow z zapisywaniem na port pojedynczych bajtow.

PB

: 30 mar 2009, 16:30
autor: jarekk
Niewielu potrafi.
Rozwiązaniem dobrym jest własny driver do Windows ( będzie buforował dane i sam je wysyłał). Tak działa Mach.

Ale to już bardzo wysoka pólka jeżeli chodzi o stopień skomplikowania.

Nieco pomaga ustawienie dla aplikacji wysokiego priorytetu ( typu real-time) i odmierzanie impulsów licznikami z procka.

Najprociej mały zewnętrzny procesorek po USB....

: 30 mar 2009, 19:51
autor: Leoo
Przechodziłem podobny etap.
Borland C++, port LPT i szukanie po sieci komponentów do szybkiej obsługi.
Na szczęście projekt szybko porzuciłem.
Kolega ściągnie sobie TurboCNC albo kupi STEP2CNC i sprawa załatwiona. Zaoszczędzony czas można poświęcić budowie czegoś bardziej materialnego.
Znacznie szybciej Kolega zbuduje sterowanie na własnej platformie. Istnieją wysokowydajne i tanie procesory np. ARM.

: 30 mar 2009, 21:25
autor: jarekk
Pojedynczy ARM pociągnie 50..100kHz dla 4 osi. Sprawdziłem osobiście.

: 30 mar 2009, 22:07
autor: lisow1
spróbuj pod dosem!

: 30 mar 2009, 23:04
autor: markcomp77
jest jeszcze realny RealTime pod linuksem... i gotowe rozwiązanie do zastosowania -> EMC2, hal...
wszystko udokumentowane... otwarte...

[ Dodano: 2009-03-30, 23:09 ]
pjb pisze:trzeba generowac impuls na LPT co 10 milisekund
w EMC2 te 10us będzie zależeć od zdolności sprzętu...
na poziomie 10us jest niepewność czasowa dobrze dobranego PCeta - zmierzone w rtai...
często jednak - to poziom 60us... a czasem i więcej