Znaleziono 2 wyniki

autor: MlKl
23 lut 2015, 17:02
Forum: LinuxCNC (dawniej EMC2)
Temat: Suby ngcgui
Odpowiedzi: 326
Odsłony: 34170

senio pisze:Miki nie o to mi chodziło. Chodziło o takie ruchy w pętli jak w tym kodzie niżej. Po to żeby zmieniać ewentualnie szybko parametry. Wrzuć to w symulator i zobaczysz o co chodzi

Kod: Zaznacz cały

g61 g7

Tu wstawiasz deklaracje zmiennych do tabelki

G00 x20.3 z0 - to jest dojazd na pozycję startową - przed pętlą

tu wstawiasz procedurę pętli analogicznie jak w mojej procedurze

tu wstawiasz inkrementację licznika pętli

G01 x19.9 F2
G01 z1.5 F5
G00 z0 F5

tu kończysz pętlę

G00 x21     odjazd od materiału po x
G00 z10      j.w. tylko po z z odjazdem o 10 mm od czoła


m30
autor: MlKl
23 lut 2015, 12:02
Forum: LinuxCNC (dawniej EMC2)
Temat: Suby ngcgui
Odpowiedzi: 326
Odsłony: 34170

senio pisze: Pomóżcie mi to ubrać w pętlę. Nie mogę sobie z tym poradzić.

G0 x20.1 z-10
G1 x20 f20
G1 z-8 f20
G1 z-10 f20
G1 x19,9 f20
G1 z-8 f20
G1 z-10 f20

etc. do średnicy 18mm co 0.1mm . Jeden przykład i załapie o co chodzi.

Kod: Zaznacz cały

( ------------------------------ )
( czop )
( ------------------------------ )
( Z. Maciej Miki Bajkowski)

( Time-stamp: <2012-04-14 00:39> )

(info: Czop )

o<czop> sub

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

(wszystkie wartosci w milimetrach)
#<srednica_surowego_walka> = #1 (=23 Średnica surowego wałka)
#<dlugosc_detalu> = #2 (=15  Długość gotowego detalu)
#<srednica_walka> = #3 (=22 Średnica gotowego detalu)
#<srednica_czopu> = #4 (=19 Średnica czopu)
#<dlugosc_czopu> = #5 (=10 Długość czopu)
#<glebokosc_fazki_czopu> = #6 (=1 Głębokość fazki czopu)
#<szerokosc_fazki_czopu> = #7 (=1 Szerokość fazki czopu, zero wyłącza)
#<promien_fazki_czopu> = #8 (=0 Promień fazki czopu, zero wyłącza)
#<glebokosc_fazki_walka> = #9 (=0 Głebokość fazki wałka)
#<szerokosc_fazki_walka> = #10 (=0 Szerokość fazki wałka, zero wyłącza)
#<promien_fazki_walka> = #11 (=0 Promień fazki wałka, zero wyłącza)
#<planowanie_czola> =#12 (=0 O ile mm splanować czoło, zero wyłącza)
#<poczatek_z>=#13 (=0 Początek na osi Z)
#<szybkosc_posuwu> = #14 (=120 Posuw) 
#<obroty_wrzeciona> = #15 (=1000 Obroty)
#<przybranie_materialu> = #16 (=0.3  Przybranie)
#<odjazd_z> =#17 (=2 odjazd od materiału w osi Z)
(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)

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

G0 X[#<srednica_surowego_walka>+2] Z[#<poczatek_z>+#<odjazd_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>
       Z#<poczatek_z>
       G1 Z-[#<dlugosc_detalu>] F#<szybkosc_posuwu>
       G0 X[#<Current_Dia>+2]
       Z[#<poczatek_z>+#<odjazd_z>]
o60 endwhile


(Koniec planowania powierzchni)

(Planowanie czoła)


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

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

  g0 z#<akt_pozycja>

  g1 x0 f[#<szybkosc_posuwu>/3]
  g0 z[#<akt_pozycja> + #<odjazd_z>]
  g0 x[#<srednica_walka> + 2]

o50 endwhile


(Koniec planowania czoła)


(Toczenie czopa)

G0 z[#<odjazd_z>-[#<planowanie_czola>+#<poczatek_z>]] 

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

 o102 if [#<srednica_walka> lt #<srednica_czopu>]
    #<srednica_walka> = #<srednica_czopu>
  o102 endif

G0 x[#<srednica_walka>+2] (ustawienie noza na pozycji )
x[#<srednica_walka>]
z-[#<planowanie_czola>]
g1 z[[-#<dlugosc_czopu>]-[#<planowanie_czola>+#<poczatek_z>]] f#<szybkosc_posuwu> ( toczenie )
G0 x[#<srednica_walka>+2] ( odjazd od materialu)
z[#<odjazd_z>-[#<planowanie_czola>+#<poczatek_z>]] ( powrot na poczatek i wykonywanie ponowne )
o100 endwhile ( koniec toczenia czopa)

o110 if [#<szerokosc_fazki_czopu> gt 0] (procedura wykonania fazki na wytoczonym czopie, wykonywana tylko, gdy zadeklarowana szerokość fazki jest większa od zera)  
#<szerokosc_fazki_czopu_1> = 0
#<glebokosc_fazki_czopu_1> = 0
z[[#<poczatek_z>]-[#<planowanie_czola>]+#<odjazd_z>]  
o111 while [#<szerokosc_fazki_czopu_1> lt #<szerokosc_fazki_czopu>] ( wykonuj dopoki #<szerokosc_fazki_czopu_1> wiekszy od zera)
#<szerokosc_fazki_czopu_1>=[#<szerokosc_fazki_czopu_1>+#<przybranie_materialu>] ( deklarowane zmniejszenie)
#<glebokosc_fazki_czopu_1>=[#<glebokosc_fazki_czopu_1>+[#<glebokosc_fazki_czopu>*#<przybranie_materialu>/#<szerokosc_fazki_czopu>]]
 o112 if [#<szerokosc_fazki_czopu_1> gt #<szerokosc_fazki_czopu>]
    #<szerokosc_fazki_czopu_1> = #<szerokosc_fazki_czopu>
  o112 endif     
  o113 if [#<glebokosc_fazki_czopu_1> gt #<glebokosc_fazki_czopu>]
    #<glebokosc_fazki_czopu_1> = #<glebokosc_fazki_czopu>
  o113 endif   
x[#<srednica_czopu>-#<glebokosc_fazki_czopu_1>*2]             ( wjazd do fazki na fi #<srednica_czopu>)
z[[#<poczatek_z>]-[#<planowanie_czola>]] 

o114 if [#<promien_fazki_czopu> lt 1]
g1 x[#<srednica_czopu>] z-[[#<szerokosc_fazki_czopu_1>]+[#<planowanie_czola>]] f[#<szybkosc_posuwu>]   ( toczenie fazki na fi #<srednica_czopu>)
o114 endif
o115 if [#<promien_fazki_walka> gt 0]
g3 x[#<srednica_czopu>] z-[[#<szerokosc_fazki_czopu_1>]+[#<planowanie_czola>]] r[#<promien_fazki_czopu>]  f[#<szybkosc_posuwu>]
o115 endif
g0 x[[#<srednica_czopu>]+2]
z[[#<poczatek_z>]-[#<planowanie_czola>]+#<odjazd_z>]  
o111 endwhile ( koniec pętli czopa)
o110 endif (koniec procedury fazowania krawędzi czopa)


o120 if [#<szerokosc_fazki_walka> gt 0]  (procedura wykonania fazki na pozostałej krawędzi wałka, wykonywana tylko, gdy zadeklarowana szerokość fazki jest większa od zera)   
    
#<szerokosc_fazki_walka_1> = 0
#<glebokosc_fazki_walka_1> = 0
g0 z-[[#<dlugosc_czopu>]+[#<planowanie_czola>]] x[#<srednica_walka_do_fazki> - #<glebokosc_fazki_walka>*2] ( dojazd do fazki na fi #<srednica_walka_do_fazki>)  
o121 while [#<szerokosc_fazki_walka_1> lt #<szerokosc_fazki_walka>] ( wykonuj dopoki #<szerokosc_fazki_walka_1> wiekszy od zera)
#<szerokosc_fazki_walka_1>=[#<szerokosc_fazki_walka_1>+#<przybranie_materialu>] ( deklarowane zmniejszenie)
#<glebokosc_fazki_walka_1>=[#<glebokosc_fazki_walka_1>+[#<glebokosc_fazki_walka>*#<przybranie_materialu>/#<szerokosc_fazki_walka>]]
 o122 if [#<szerokosc_fazki_walka_1> gt #<szerokosc_fazki_walka>]
    #<szerokosc_fazki_walka_1> = #<szerokosc_fazki_walka>
  o122 endif     
  o123 if [#<glebokosc_fazki_walka_1> gt #<glebokosc_fazki_walka>]
    #<glebokosc_fazki_walka_1> = #<glebokosc_fazki_walka>
  o123 endif   
x[#<srednica_walka_do_fazki>-#<glebokosc_fazki_walka_1>*2]             ( wjazd do fazki na fi #<srednica_czopu>)
z-[[#<dlugosc_czopu>]+[#<planowanie_czola>]] x[#<srednica_walka_do_fazki> - #<glebokosc_fazki_walka_1>*2] 
o124 if [#<promien_fazki_walka> lt 1]
g1 x[#<srednica_walka_do_fazki>] z-[[#<szerokosc_fazki_walka_1>]+[#<planowanie_czola>]+#<dlugosc_czopu>] f[#<szybkosc_posuwu>]   ( toczenie fazki na fi #<srednica_czopu>)
o124 endif
o125 if [#<promien_fazki_walka> gt 0]
g3 x[#<srednica_walka_do_fazki>] z-[[#<szerokosc_fazki_walka_1>]+[#<planowanie_czola>]+#<dlugosc_czopu>] r[#<promien_fazki_walka>]  f[#<szybkosc_posuwu>]
o125 endif
g0 x[[#<srednica_walka_do_fazki>]+2]
z-[[#<dlugosc_czopu>]+[#<planowanie_czola>]] 
o121 endwhile ( koniec pętli czopa)






o120 endif (koniec procedury fazowania pozostałej krawędzi wałka)
g0 x[[#<srednica_walka_do_fazki>]+2]

G0 z0
M30

o<czop> endsub

Przykład pętli w tym subie:

Kod: Zaznacz cały

o60 while [#<Current_Dia> gt #<srednica_walka>]         (dopóki wartość zmiennej #<Current_Dia> czyli aktualna średnica - przybranie jest większa od podanej w tabelce #<srednica_walka> wykonuj poniższe linie)

o61   if [#<Current_Dia>-#<przybranie_materialu> gt #<srednica_walka>]   (jeżeli warunek jest prawdziwy wykonaj)
         #<Current_Dia>=[#<Current_Dia>-#<przybranie_materialu>] 
o61   else                                                                                   (lub)
         #<Current_Dia>=#<srednica_walka>    (wykonaj to)
o61   endif                                                                             ( koniec procedury inkrementacji licznika)

       X#<Current_Dia> 
       Z#<poczatek_z> 
       G1 Z-[#<dlugosc_detalu>] F#<szybkosc_posuwu> 
       G0 X[#<Current_Dia>+2] 
       Z[#<poczatek_z>+#<odjazd_z>] 
o60 endwhile  
o61 - nr procedury - musi być unikalny, kolejność nie ma znaczenia

while - zaczynamy pętlę, będzie się wykonywała, dopóki wielkość licznika nie przekroczy zakresu podanego w funkcji logicznej.

if - warunek, który musi być spełniony, żeby pętla wykonała w danym obiegu polecenie za nim stojące.

[/code]

Wróć do „Suby ngcgui”