Własny program sterujący

Rozmowy dotyczące oprogramowania sterującego maszynami CNC i sterowników CNC obrabiarek numerycznych

Autor tematu
karollo82
Nowy użytkownik, używaj wyszukiwarki
Nowy użytkownik, używaj wyszukiwarki
Posty w temacie: 1
Posty: 5
Rejestracja: 26 mar 2006, 20:41
Lokalizacja: Gdynia

Własny program sterujący

#1

Post napisał: karollo82 » 07 maja 2006, 23:57

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?



Tagi:


ggg1986
Czytelnik forum poziom 2 (min. 20)
Czytelnik forum poziom 2 (min. 20)
Posty w temacie: 2
Posty: 23
Rejestracja: 22 lip 2005, 23:39
Lokalizacja: pl

#2

Post napisał: ggg1986 » 11 maja 2006, 17:06

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.


jarekk
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 4
Posty: 1701
Rejestracja: 17 mar 2006, 08:57
Lokalizacja: Gdańsk

#3

Post napisał: jarekk » 11 maja 2006, 20:35

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)

Awatar użytkownika

Szopler
Specjalista poziom 1 (min. 100)
Specjalista poziom 1 (min. 100)
Posty w temacie: 4
Posty: 254
Rejestracja: 19 lis 2005, 16:17
Lokalizacja: Siedlce
Kontakt:

#4

Post napisał: Szopler » 14 maja 2006, 11:12

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...


jarekk
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 4
Posty: 1701
Rejestracja: 17 mar 2006, 08:57
Lokalizacja: Gdańsk

#5

Post napisał: jarekk » 14 maja 2006, 17:51

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ć)

Awatar użytkownika

Szopler
Specjalista poziom 1 (min. 100)
Specjalista poziom 1 (min. 100)
Posty w temacie: 4
Posty: 254
Rejestracja: 19 lis 2005, 16:17
Lokalizacja: Siedlce
Kontakt:

#6

Post napisał: Szopler » 14 maja 2006, 17:55

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!


ERNEST KUCZEK
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 3
Posty: 1121
Rejestracja: 13 kwie 2006, 02:59
Lokalizacja: planeta ziemia

#7

Post napisał: ERNEST KUCZEK » 14 maja 2006, 18:00

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?
POZDRAWIAM

Awatar użytkownika

Szopler
Specjalista poziom 1 (min. 100)
Specjalista poziom 1 (min. 100)
Posty w temacie: 4
Posty: 254
Rejestracja: 19 lis 2005, 16:17
Lokalizacja: Siedlce
Kontakt:

#8

Post napisał: Szopler » 14 maja 2006, 18:08

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...


ERNEST KUCZEK
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 3
Posty: 1121
Rejestracja: 13 kwie 2006, 02:59
Lokalizacja: planeta ziemia

#9

Post napisał: ERNEST KUCZEK » 14 maja 2006, 18:13

wiec moze jest to dobry pomysl
POZDRAWIAM


jarekk
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 4
Posty: 1701
Rejestracja: 17 mar 2006, 08:57
Lokalizacja: Gdańsk

#10

Post napisał: jarekk » 14 maja 2006, 19:50

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' ;-)

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „Ogólne Dyskusje na Temat Systemów Sterowania CNC”