NGCGUI - dwa imaki, procedura w dwóch układach odniesienia

Dyskusje dotyczące działania obsługi programu LinuxCNC
Awatar użytkownika

Autor tematu
MlKl
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 5
Posty: 3706
Rejestracja: 15 sie 2010, 13:44
Lokalizacja: Błonie
Kontakt:

NGCGUI - dwa imaki, procedura w dwóch układach odniesienia

#1

Post napisał: MlKl » 18 kwie 2012, 13:58

Kod: Zaznacz cały

( ------------------------------ ) 
( Śruba regulacji energii zbijaka Crosman 22xx ) 
( ------------------------------ ) 
( Z. Maciej Miki Bajkowski) 
(---na podstawie kodu Kamara-----) 
( Time-stamp: <2012-04-16 01:39> ) 

(info: Regulacja Crosman śruba) 

o<regulacja_crosman_sruba> sub

( ------------------------------ ) 
( Zmienne do tabelki ) 
( ------------------------------ ) 

(wszystkie wartosci w milimetrach) 

#<srednica_surowego_walka> = #1 (=22 Średnica surowego wałka) 
#<dlugosc_detalu> = #2 (=27  Długość gotowego detalu) 
#<srednica_walka> = #3 (=21.6 Średnica gotowego detalu) 
#<srednica_czopu_1> = #4 (=4.9 Średnica pierwszego czopu) 
#<dlugosc_czopu_1> = #5 (=8 Długość pierwszego czopu) 
#<srednica_czopu_2> = #6 (=10 Średnica drugiego czopu) 
#<dlugosc_czopu_2> = #7 (=14 Długość drugiego czopu) 
#<glebokosc_fazki_czopu_1> = #8 (=1 Głębokość fazki  pierwszego czopu) 
#<szerokosc_fazki_czopu_1> = #9 (=1 Szerokość fazki pierwszego czopu, zero wyłącza) 
#<glebokosc_fazki_czopu_2> = #10 (=1 Głębokość fazki  drugiego czopu) 
#<szerokosc_fazki_czopu_2> = #11 (=1 Szerokość fazki drugiego czopu, zero wyłącza) 
#<glebokosc_fazki_walka_1> = #12 (=1 Głebokość prawej fazki kołnierza) 
#<szerokosc_fazki_walka_1> = #13 (=1 Szerokość prawej fazki kołnierza, zero wyłącza) 
#<glebokosc_fazki_walka_2> = #14 (=1 Głebokość lewej fazki kołnierza) 
#<szerokosc_fazki_walka_2> = #15 (=1 Szerokość lewej fazki kołnierza, zero wyłącza) 
#<planowanie_czola> =#16 (=0.1 O ile mm splanować czoło, zero wyłącza) 
#<glebokosc_podciecia> =#17 (=0 Głębokość podciecia za gwintem) 
#<szerokoszc_podciecia>=#18 (=0 Szerokośc podcięcia za gwintem) 
#<szerokość_noza> =#19 (=2 Szerokość noża) 
#<poczatek_z>=#20 (=0 Początek na osi Z) 
#<szybkosc_posuwu> = #21 (=16 Posuw) 
#<szybkosc_posuwu_odcinania> = #22 (=10 Posuw odcinania)      
#<obroty_wrzeciona> = #23 (=1000 Obroty) 
#<przybranie_materialu> = #24 (=0.8  Przybranie) 
(koniec zmiennych) 


#<baza_x> = [#<srednica_walka> + 2]   (tu zjedzie w osi x noz po pracy, ustawić tyle, by można swobodnie zmierzyć, czy wyjąć materiał) 
#<srednica_walka_do_fazki> = #<srednica_walka> (zmienna #<srednica_walka> zmniejsza się w trakcie wykonywania programu, zapamietuję ją więec w zmiennej do późniejszego fazowania) 
#<srednica_walka_do_2_czopa> = #<srednica_walka> 

M3 s#<obroty_wrzeciona> (wlaczamy wrzeciono) 
(Planowanie powierzchni) 
g54
G0 z1

X[#<srednica_surowego_walka>+1] 
Z#<poczatek_z> 
X#<srednica_surowego_walka> 
#<Current_Dia>=#<srednica_surowego_walka> 

o60 while [#<Current_Dia> gt #<srednica_walka>] 

o61   if [#<Current_Dia>-#<przybranie_materialu> gt #<srednica_walka>] 
         #<Current_Dia>=[#<Current_Dia>-#<przybranie_materialu>] 
o61   else
         #<Current_Dia>=#<srednica_walka> 
o61   endif

       X#<Current_Dia> 
       G1 Z-[#<dlugosc_detalu>+#<szerokość_noza>] F#<szybkosc_posuwu> 
       G0 X[#<Current_Dia>+0.5] 
       Z#<poczatek_z> 
o60 endwhile


(Koniec planowania powierzchni) 

(Planowanie czoła) 

g0 z[#<poczatek_z> + 0.5] 
g0 x[#<srednica_walka> + 0.5] 
#<akt_pozycja> = #<poczatek_z> 

o50 while [#<akt_pozycja> gt -[#<planowanie_czola>]] 
  #<akt_pozycja> = [#<akt_pozycja> - #<przybranie_materialu>/5] 
  o52 if [#<akt_pozycja> lt -[#<planowanie_czola>]] 
    #<akt_pozycja> = -[#<planowanie_czola>] 
  o52 endif

  g0 z#<akt_pozycja> 

  g1 x0 f#<szybkosc_posuwu> 
  g0 z[#<akt_pozycja> + 0.5] 
  g0 x[#<srednica_walka> + 0.5] 

o50 endwhile


(Koniec planowania czoła) 


(Toczenie pierwszego czopa) 

G0 z[0.5-[#<planowanie_czola>]] 

o80 while [#<srednica_walka> gt #<srednica_czopu_1>] ( wykonuj dopoki #<srednica_walka> wiekszy od #<srednica_czopu_1> ) 
  #<srednica_walka>=[#<srednica_walka>-#<przybranie_materialu>] ( deklarowane zmniejszenie) 

    o82 if [#<srednica_walka> lt #<srednica_czopu_1>] 
    #<srednica_walka> = #<srednica_czopu_1> 
    o82 endif

  G0 x#<srednica_walka> (ustawienie noza na pozycji ) 
  z-[#<planowanie_czola>] 
  g1 z[[-#<dlugosc_czopu_1>]-[#<planowanie_czola>]] f#<szybkosc_posuwu> ( toczenie ) 
  G0 x[#<srednica_walka>+0.5] ( odjazd od materialu) 
  z[0.5-[#<planowanie_czola>]] ( powrot na poczatek i wykonywanie ponowne ) 

o80 endwhile ( koniec toczenia czopa) 

(Toczenie drugiego czopa) 

G0 z[0.5-[#<planowanie_czola>]-#<dlugosc_czopu_1>] 

o100 while [#<srednica_walka_do_2_czopa> gt #<srednica_czopu_2>] ( wykonuj dopoki #<srednica_walka> wiekszy od #<srednica_czopu_2> ) 
  #<srednica_walka_do_2_czopa>=[#<srednica_walka_do_2_czopa>-#<przybranie_materialu>] ( deklarowane zmniejszenie) 

    o102 if [#<srednica_walka_do_2_czopa> lt #<srednica_czopu_2>] 
    #<srednica_walka_do_2_czopa> = #<srednica_czopu_2> 
    o102 endif

  G0 x#<srednica_walka_do_2_czopa> (ustawienie noza na pozycji ) 
  z-[[#<planowanie_czola>]+[#<dlugosc_czopu_1>]] 
  g1 z[[-#<dlugosc_czopu_2>]-[#<dlugosc_czopu_1>]-[#<planowanie_czola>]] f#<szybkosc_posuwu> ( toczenie ) 
  G0 x[#<srednica_walka_do_2_czopa>+0.5] ( odjazd od materialu) 
  z[0.5-[#<planowanie_czola>]-[#<dlugosc_czopu_1>]] ( powrot na poczatek i wykonywanie ponowne ) 

o100 endwhile ( koniec toczenia czopa) 


o110 if [#<szerokosc_fazki_czopu_1> gt 0] (procedura wykonania fazki na wytoczonym czopie, wykonywana tylko, gdy zadeklarowana szerokość fazki jest większa od zera)       
  
  z[[#<poczatek_z>]-[#<planowanie_czola>]] 

x[#<srednica_czopu_1>-#<glebokosc_fazki_czopu_1>*2]             ( wjazd do fazki na fi #<srednica_czopu>) 
  g1 x[#<srednica_czopu_1>] z-[[#<szerokosc_fazki_czopu_1>]+[#<planowanie_czola>]] f#<szybkosc_posuwu_odcinania>   ( toczenie fazki na fi #<srednica_czopu>) 
  g0 x[[#<srednica_czopu_1>]+0.5] 
o110 endif (koniec procedury fazowania krawędzi czopa) 


o120 if [#<szerokosc_fazki_czopu_2> gt 0]  (procedura wykonania fazki na pozostałej krawędzi wałka, wykonywana tylko, gdy zadeklarowana szerokość fazki jest większa od zera)   
  g0 z-[[#<dlugosc_czopu_1>]+[#<planowanie_czola>]] x[#<srednica_czopu_2> - #<glebokosc_fazki_czopu_2>*2] ( dojazd do fazki na fi #<srednica_walka_do_fazki>) 
  g1 x[#<srednica_czopu_2>] z-[[#<dlugosc_czopu_1>+#<szerokosc_fazki_czopu_2>]+[#<planowanie_czola>]] f#<szybkosc_posuwu_odcinania> 
  g0 x[[#<srednica_czopu_2>]+0.5] 
o120 endif (koniec procedury fazowania czopa 2) 

o122 if [#<szerokosc_fazki_walka_1> gt 0]    
  g0 z-[[#<dlugosc_czopu_1>]+[#<dlugosc_czopu_2>]+[#<planowanie_czola>]] x[#<srednica_walka_do_fazki> - #<glebokosc_fazki_walka_1>*2] 
  g1 x#<srednica_walka_do_fazki> z-[[#<dlugosc_czopu_1>+[#<dlugosc_czopu_2>]+#<szerokosc_fazki_walka_1>]+[#<planowanie_czola>]] f#<szybkosc_posuwu_odcinania> 
  g0 x[[#<srednica_walka_do_fazki>]+0.5] 
o122 endif (koniec procedury fazowania kołnierza z prawej strony) 


  g0  x[#<srednica_walka_do_fazki>+1] ( dojazd do fazki na fi #<srednica_walka_do_fazki>) 
m5
m4
g55

(Podcięcie za gwintem) 
o125 if [#<glebokosc_podciecia> gt 0] 
g0 z-[[#<dlugosc_czopu_2>]+[#<planowanie_czola>]+[#<dlugosc_czopu_1>]] 
x-[#<srednica_czopu_2>] 
g1 x-[#<srednica_czopu_2>-#<glebokosc_podciecia>*2] f#<szybkosc_posuwu_odcinania> 
g0 x-[#<srednica_czopu_2>-#<glebokosc_fazki_czopu_2>*2] 
g1 z-[[#<dlugosc_czopu_2>+[#<dlugosc_czopu_1>]]+[#<planowanie_czola>-#<szerokosc_fazki_czopu_2>]] x-[#<srednica_czopu_2>] 
g0  x-[#<srednica_walka_do_fazki>+1] ( dojazd na fi #<srednica_walka_do_fazki>) 
o125 endif


(Odcięcie detalu) 

g0 Z-[#<dlugosc_detalu>+#<szerokość_noza>] 
x-#<srednica_walka_do_fazki> 
o130 if [#<szerokosc_fazki_walka_2> gt 0] (procedura wykonania fazki po lewej stronie kołnierza, wykonywana tylko, gdy zadeklarowana szerokość fazki jest większa od zera) 
g1 x-[#<srednica_walka_do_fazki>-#<glebokosc_fazki_walka_2>*2] f#<szybkosc_posuwu_odcinania> 
g1 x-#<srednica_walka_do_fazki> z-[#<dlugosc_detalu>+#<szerokość_noza>-#<szerokosc_fazki_walka_2>] f#<szybkosc_posuwu_odcinania> 
g0 Z-[#<dlugosc_detalu>+#<szerokość_noza>] 
o130 endif (koniec procedury fazowania lewej strony kołnierza) 
g1 x0 f#<szybkosc_posuwu_odcinania> 
G0 x-#<srednica_walka_do_fazki> 
g54
z1
x-10 
z0

M30

o<regulacja_crosman_sruba> endsub
Obrazek



Tagi:


kamar
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 5
Posty: 16220
Rejestracja: 18 wrz 2010, 06:17
Lokalizacja: Kozienice
Kontakt:

Re: NGCGUI - dwa imaki, procedura w dwóch układach odniesien

#2

Post napisał: kamar » 18 kwie 2012, 16:56

MlKl pisze: ( Z. Maciej Miki Bajkowski)
(---na podstawie kodu Kamara-----)
( Time-stamp: <2012-04-16 01:39> )

[/code]
A co ja Ci zawiniłem :)

Awatar użytkownika

markcomp77
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 1
Posty: 3975
Rejestracja: 18 wrz 2004, 12:51
Lokalizacja: k/w-wy
Kontakt:

#3

Post napisał: markcomp77 » 18 kwie 2012, 19:56

a o co po ludzku chodzi w tej procedurze?... albo jakiś filmik
SpotkanieCNC: STOM-TOOL Marzec 2014
http://www.cnc.info.pl/topics79/spotkan ... t55028.htm


kamar
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 5
Posty: 16220
Rejestracja: 18 wrz 2010, 06:17
Lokalizacja: Kozienice
Kontakt:

#4

Post napisał: kamar » 18 kwie 2012, 20:24

markcomp77 pisze:a o co po ludzku chodzi w tej procedurze?... albo jakiś filmik
Symulator sie kłania :)

Awatar użytkownika

Autor tematu
MlKl
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 5
Posty: 3706
Rejestracja: 15 sie 2010, 13:44
Lokalizacja: Błonie
Kontakt:

#5

Post napisał: MlKl » 18 kwie 2012, 20:47

kamar - zamieściłeś tutaj kiedyś kawałek kodu na czop z fazowaniem - i od tamtej pory jesteś obligatoryjnie winien :P

markcomp77 - to uniwersalna procedura na wykonanie trzystopniowego wału/czopa z fazowaniem krawędzi, wykonywaniem podcięcia za ewentualnym gwintem i odcinaniem gotowego detalu. O tyle ciekawa, że wykonywana dwoma nożami, z których każdy jest mocowany w osobnym imaku na suporcie. Toczenie odbywa się na prawych obrotach nożem offsetowanym w układzie odniesienia G54, na podcinanie i odcinanie tokarka zmienia kierunek obrotów wrzeciona i układ odniesienia - czyli choć noże mogą być dowolnie - byle w zasięgu pola roboczego - umocowane, ale maszyna każdy z nich potrafi poprowadzić w stosunku do realnego położenia materiału.

Kamar dobrze radzi - zarzuć kod na symulator. Ino operacje w każdym układzie odniesienia są na ekranie odwzorowywane odnośnie fizycznego położenia noży, a nie w stosunku do materiału - o którym maszyna nic nie wie przecież.

Obrazek

Taki detal mi spada z maszyny po kwadransie od naciśnięcia klawisza "R". Robiłby się szybciej, ale zależy mi na ciszy, a zadanie agresywniejszej obróbki powoduje spory hałas. Siedzę sobie na forum, albo wyskakuję na miasto, a robota się sama robi :)

Musiałem pogrzebać w kodzie NGCGUI, bo twórcy przewidzieli max 10 zmiennych w kolumnie tabelki do wprowadzania, na ekranie mieszczą się dwie kolumny, na trzecią trzeba przewijać ekran. Teraz mam 30 zmiennych do wprowadzenia w jednej kolumnie - i to chyba wszystkie, których dla jednej procedury mogę użyć. Na szczęście mogę większą procedurę rozbić na dwa, albo i więcej plików .ngc, i każdy z nich nakarmić 30 zmiennymi w tabelce.

Pliki .ngc warto nazywać opisowo - jak ich przybędzie, będzie łatwiej dobierać kolejne klocki, na belce zakładek warto umieszczać tylko najczęściej stosowane. Na szczęście nie ogranicza to dostępu do innych.


kamar
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 5
Posty: 16220
Rejestracja: 18 wrz 2010, 06:17
Lokalizacja: Kozienice
Kontakt:

#6

Post napisał: kamar » 18 kwie 2012, 22:40

MlKl pisze: Teraz mam 30 zmiennych do wprowadzenia w jednej kolumnie - .
Wiecej zmiennych to więcej mozliwości babola ale to juz takie skrzywienie programistów :)

Awatar użytkownika

Autor tematu
MlKl
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 5
Posty: 3706
Rejestracja: 15 sie 2010, 13:44
Lokalizacja: Błonie
Kontakt:

#7

Post napisał: MlKl » 18 kwie 2012, 23:23

Nie potrzebowałbym ich, gdyby NGCGUI dawało możliwość swobodnej edycji dowolnego etapu całej operacji, złożonej z kolejno wywoływanych plików .ngc. Niestety - tak jak jest w tej chwili, lepiej zrobić jedną rozbudowaną, wielooperacyjną procedurę, niż za każdym razem składać ją z małych cegiełek.

W mojej procedurze wypełniam długą tabelkę, ale efekt wypełnienia mam widoczny w podglądzie, i wszystkie błędy mogę wychwycić i poprawić od ręki. Włącznie z błędami w kodzie samej procedury, które mogę poprawić i wczytać ją ponownie z wprowadzonymi uprzednio wartościami zmiennych.

Oczywiście nie zrobi tego tokarz, nauczony kilku podstawowych procedur przy maszynie, ale i takiemu łatwiej zrobić wszystko w jednym oknie.

Obrazek

Obrazek


kamar
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 5
Posty: 16220
Rejestracja: 18 wrz 2010, 06:17
Lokalizacja: Kozienice
Kontakt:

#8

Post napisał: kamar » 24 kwie 2012, 14:28

MlKl pisze:Nie potrzebowałbym ich, gdyby NGCGUI dawało możliwość swobodnej edycji dowolnego etapu całej operacji, złożonej z kolejno wywoływanych plików .ngc. Niestety - tak jak jest
I na tym trza by się skupić :)
Złozone procedurki do paru sztuk to i owszem ale na pojedyńcze to tak sobie.
I drobna uwaga - po ostatnim przejściu czopa wyjeżdzaj g1 po czole bo schodków narobisz.

[ Dodano: 2012-04-24, 14:26 ]
I zamiast robić 30 zmiennych na kilka czopów, klikasz na "nowy" , masz czopów do woli z kolejnymi numerami i dostępne w kazdej chwili.

Awatar użytkownika

Autor tematu
MlKl
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 5
Posty: 3706
Rejestracja: 15 sie 2010, 13:44
Lokalizacja: Błonie
Kontakt:

#9

Post napisał: MlKl » 24 kwie 2012, 14:39

Widzisz - u mnie 90 % dorabianych elementów to właśnie takie - jeden albo dwa stopnie czopa, z gwintem albo bez. Ja ogólnie na każdy taki detal piszę sobie osobną procedurę - z wprowadzeniem konkretnych wymiarów w tabelce jako predefiniowanych. Potem tylko muszę taki plik z poziomu NGCGUI wywołać.

A tę procedurę tutaj opublikowałem jako przykład na bardziej skomplikowaną, z wykorzystaniem układów odniesienia, różnymi kierunkami obrotów wrzeciona etc.


kamar
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 5
Posty: 16220
Rejestracja: 18 wrz 2010, 06:17
Lokalizacja: Kozienice
Kontakt:

#10

Post napisał: kamar » 24 kwie 2012, 14:45

A ja mam 100% takich detali i te procedurki które mam na pasku wystarczają. Czasami tylko piszę ostatnie przejście wykończeniowe.

[ Dodano: 2012-04-24, 14:53 ]
MlKl pisze:Ja ogólnie na każdy taki detal piszę sobie osobną procedurę - .
To na cholere Ci NGCGUI ? :)

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „LinuxCNC (dawniej EMC2)”