Strona 1 z 2
Własny program sterujący
: 07 maja 2006, 23:57
autor: karollo82
Witam szanownych forumowiczów!
Chciałbym sam napisać swój własny program do sterowania frezarką CNC. Chciałbym znać opinie ludzi, którzy coś takiego mają już za sobą. Na jakiego typu problemy mogę napotkać podczas pisania takiego programu?
: 11 maja 2006, 17:06
autor: ggg1986
Największy problem mam z wysyłaniem danych na port lpt. Nierówno wysyła impulsy. Sterowałem silnikiem krokowym i np. wysyłałem impulsy co 1 ms to nie zawsze impuls był wysłany co 1 ms i było czuć szarpnięcia na silniku. Jak sprawdzałem dla 100000 impulsów to prawie wszystkie były wysłane dobrze tylko 100 z nich przekroczyło czas 1 ms, w większości przypadków było to coś ok 1,3 ms ale kilka zdarzyło się nawet od 3 do 10 ms i w tych właśnie momentach następowały szarpnięcia silnika, bo nagle zmieniała się jego prędkość. W takich momentach może nastąpić zgubienie kroku przez silnik. Jest to spowodowane tym że w windowsie jest uruchomionych wiele programów system przełącza czas procesora między nimi, dlatego impuls czasami przychodzi mi później. Pomiar czasu realizuję przez pobranie częstotliwości procesora i zliczanie ile wykonał taktów procesor, korzystanie z funkcji winapi tu nie wystarcza. Można by nawet wyeliminować te spóźnienia robiąc oddzielny wątek i ustawiając mu priorytet wysoki albo real time, ale to też nie zbyt eleganckie rozwiązanie. Teraz mam książkę o pisaniu sterowników do windowsa, może pisząc sterownik można wyeliminować ten efekt, może będzie wysyłał impulsy ze stałą częstotliwością. Innym rozwiązaniem tego problemu może być zastosowanie mikroprocesora, po prostu wysyłasz kilka G-kodów do przodu i mikroprocesor powinien bez problemu idealnie sterować silnikiem.
Z tego co patrzyłem to Mach jakoś radzi sobie z tym problemem, wiedziałem że z machem się instaluje sterownik, może w taki sposób należy wykonać taki pogram. Nie wiem czy to sterownik wszystko załatwi, bo nigdy nie pisałem sterowników ale jak przeczytam tą książkę to może się dowiem.
: 11 maja 2006, 20:35
autor: jarekk
Sterownik to może załatwić. Trzeba tylko jak najniżej podpiąć się pod przerwania zegarowe, na najniższy ring. Wtedy będziesz miał rozwiązanie podobne do Macha. Jest to łatwe w Linuxie (aczkolwiek nieco zawodne gdyż niektóre drivery wyłączają przerwania na długo

), w Windowsach trzeba się napracować (drajwer jest bardziej skomplikowany), ale dobrze zrobiony ma większą szansę na równą pracę (w Windowsach nieco trudniej jest zblokować na sztywno przerwania na tak niskim poziomie, raczej używa się spin-lock'ów)
: 14 maja 2006, 11:12
autor: Szopler
A nie pomyślał nikt o sterowaniu przez port com na zasadzie:
- wysyłam dane do mikrokontrolera, który ładuje je do pamięci
- po zakończeni ładowania wysyłam polecenie startu i uP steruje sobie maszyną odczytując program z pamięci...
: 14 maja 2006, 17:51
autor: jarekk
Tak też można, ale jest to dodatkowy sprzęt ( port równoległy ma każdy

)
Należałoby wtedy mieć coś co G-kody przekształca na kroki. Dodatkowo mikrokontroler potrzebowałby duża pamięci (na cały program jeżeli chciałbyś go załadować i dopiero potem wystartować)
: 14 maja 2006, 17:55
autor: Szopler
No niektórzy to już nawet LPT nie mają

tylko USb i FireWire

.
A g-cody i tak trzeba przekształcać na kroki...
Odnosnie pamieci to jak długie G-cody się wykonuje przy amatroskich CNC ?
Czy np. 512kB pamięci nie wystarczy ? A wrazie czego pzostaje jeszcze jedno wyjscie:
Plik z kodem do obróbki dzieli mi program na PC na kawałki na jakie mi pozwala pamięć przy procku. Ładuje kawałek, wykonuje, pow ykonaniu mikrokontroler wysyła że chce następny... itd. Jedyna niedogodnosć to przerwy w obróbce na czas załadowania do pamięci kolejnej porcji danych... Pzdr!
: 14 maja 2006, 18:00
autor: ERNEST KUCZEK
czy jesli maszyna bedzie pobierac program z wlasnej pamieci to czy mozna meic kontrole manualna nad tym co sie dzieje? mam na mysli np. nowy program ktory moze byc popaprany i trzeba np. zmniejszyc posow lub chece wystartowac od danej linii programu.
czy takie rozwiazanie w dalszym rozbudowywaniu (dodawanie dodatkowych opcji) nie prowadzi do tego ze na maszynie w koncu znajdzie sie kompletny uklad sterujacy a w rezultacie wrocimy do punktu gdzie jestesmy teraz?
: 14 maja 2006, 18:08
autor: Szopler
Zmniejszenie posuwu to nie problem.
Przeciez w trakcie obrobki tez mozna sie komunikowac z uP. Kawalek kodu, który zwiększa przerwę między krokami to chyba nie problem? Tak samo nikt mi nie karze czytać pamięci od początku - więc wykonanie programu od którejś tam linii jest możliwe...
: 14 maja 2006, 18:13
autor: ERNEST KUCZEK
wiec moze jest to dobry pomysl
: 14 maja 2006, 19:50
autor: jarekk
Jeżeli ktoś chce iść w tym kierunku to może lepiej jednak wrócić do DOS'a ? Jest to dość często stosowana metoda, a tani stary PC może robić za 'mikrokontroler'
