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
Znaleziono 2 wyniki
- 23 lut 2015, 17:02
- Forum: LinuxCNC (dawniej EMC2)
- Temat: Suby ngcgui
- Odpowiedzi: 326
- Odsłony: 34170
- 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
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]