Strona 1 z 2

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

: 18 kwie 2012, 13:58
autor: MlKl

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

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

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

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

: 18 kwie 2012, 19:56
autor: markcomp77
a o co po ludzku chodzi w tej procedurze?... albo jakiś filmik

: 18 kwie 2012, 20:24
autor: kamar
markcomp77 pisze:a o co po ludzku chodzi w tej procedurze?... albo jakiś filmik
Symulator sie kłania :)

: 18 kwie 2012, 20:47
autor: MlKl
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.

: 18 kwie 2012, 22:40
autor: kamar
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 :)

: 18 kwie 2012, 23:23
autor: MlKl
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

: 24 kwie 2012, 14:28
autor: kamar
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.

: 24 kwie 2012, 14:39
autor: MlKl
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.

: 24 kwie 2012, 14:45
autor: kamar
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 ? :)