; Author: Z. Maciej "Miki" Bajkowski ; ; logiczny operator "lub" (OR) ; alternatywa wykluczająca (XOR) prawdziwe, gdy nieparzysta liczba argumentów jest prawdziwa ; logiczny operator "i" (AND) ; równe (EQ) ; nierówne (NE) ; większe od (GT) ; większe lub równe (GE) ; mniejsze (LT) ; mniejsze lub równe (LE) ; ; ATAN[Y]/[X] Four quadrant inverse tangent ; ABS[arg] wartość absolutna ; ACOS[arg] Inverse cosine ; ASIN[arg] Inverse sine ; COS[arg] cosinus ; EXP[arg] e raised to the given power ; FIX[arg] zaokrąglenie w dół ; FUP[arg] zaokrąglenie w górę ; ROUND[arg] zaokrąglenie ; LN[arg] logarytm ; SIN[arg] sinus ; SQRT[arg] Square Root ; TAN[arg] Tangens ; EXISTS[arg] szuka zmiennej (info: Toczenie wałka od zewnątrz od prawej do lewej, planowanie czoła, fazowanie krawędzi, półkule, stożki, roztaczanie otworów) o sub # = #1 (=0 Średnica materiału) # = #2 (=0 Długość gotowego detalu) # =#3 (=0 planowanie czoła w mm) # =#4 (=0 <> stożek) # = #5(=0 korekta podstawy stożka w mm) # =#6 (=0 kąt stożka w stopniach) # = #7 (=0 Średnica początkowa walca/stożka) # = #8 (=0 Średnica końcowa walca/stożka) # = #9 (=0 Punkt początkowy na osi Z) # = #10 (=0 Punkt końcowy na osi Z) # = #11 (=2 Przybranie) # = #12 (=0 Ostatnia warstwa) # =#13 (=0 Podcięcie A 1, B 2, C 3, D 4, 0 wyłącza) # = #14 (=0 Szerokość fazki śr.p, 0 wyłącza) # =#15 (=0 Głębokość fazki na śr.pocz.) # =#16 (=0 Promień fazki śr.p, 0 wyłącza) # =#17 (=0 zagłębienie fazki śr.p, 0 wyłącza) # =#18 (=0 <> wklęsłość fazki na średnicy początkowej) # = #19 (=0 Szerokość fazki śr.k, 0 wyłącza) # =#20 (=0 Głębokość fazki na śr.końc.) # =#21 (=0 Promień fazki śr.k, 0 wyłącza) # =#22 (=0 zagłębienie fazki śr.k, 0 wyłącza) # =#23 (=0 <> wklęsłość fazki na średnicy końcowej) # =#24 (=0 korekta skosu na początku w osi Z) # =#25 (=0 korekta skosu na końcu w osi Z) # =#26 (=99 pozycja końcowa w osi Z, 99 wyłącza) # =#27 (=99 pozycja końcowa w osi X, 99 wyłącza) # =#28 (=0 <> przełącz korektę na pomijanie) # =#29 (=0 korekta średnicy walca/stożka) # =#30 (=0 korekta średnicy materiału) # =#31 (=0 korekta szer. fazki śr.końc.) # =#32 (=0 korekta szer. fazki śr.pocz.) # =#33 (=0 <> pomijanie planowania czoła) # =#34 (=0.25 odjazd od materiału w osi Z) # =#35 (=0.5 odjazd od materiału w osi X) #=#36 (=0 Nóż wstępny) #=#37 (=0 Nóż do czoła) #=#38(=0 Nóż kończący) #=#39 (=0 Nóż fazki na śr. końcowej) #=#40 (=0 Nóż fazki na śr. pocz.) # = #41 (=400 Posuw czoła) # = #42(=1000 Posuw roboczy) # = #43 (=800 Posuw kończący) # = #44(=1 <> Chłodziwo) # = #45(=54 Układ odniesienia G5x) # = #46(=0 <> lewe obroty) # = #47(=0 <> imak za osią) # = #48 (=720 obroty) # = #49 (=1500 obroty maksymalne) ; stałe wpisane na sztywno #=9 ; G7: praca w średnicach ; G96: stała prędkość skrawania ; Włączamy procedurę G# G43 G7 G96 S# D# g64 p0.05 (tolerancja łuku 0.05mm) ;g64 (wyłączona kontrola tolerancji, zakręty ścinanne) ;g61 (dokładna jazda od punktu do punktu) o20000 if [# ne 0 or # ne 0 or # ne 0 or # ne 0 or # ne 0] (msg, Uwaga, włączona któraś z korekt!) # = #5400 T9 M6 T# M6 o20000 endif o1 if[# eq 0] (wybór kierunku obrotów wrzeciona) m3 o1 else m4 o1 endif o2 if[# eq 1] (wybór włączenia/wyłączenia chłodziwa) m8 o2 else m9 o2 endif o4 if[# eq 0] (jeżeli nie podamy długości gotowego detalu, a wpiszemy średnicę materiału, program stoczy naddatek do końca fazki na średnicy początkowej) # = -[#-#] o4 endif o1000 if[# ge #] (toczenie od zewnątrz walca lub stożka) #=[#*2+#] #=[#-#] #=[#-#] #=0 #=[abs[#]+abs[#]] #=0 o60 if[# ne 0] (ustalenie wartości przesunięcia osadzenia fazki na średnicy końcowej, gdy procedurą główną jest stożek) # = [#*#/#] o60 else #=0 o60 endif o10 if[# le #] (Zmiana kierunku odjazdu w osi Z gdy toczymy od lewej do prawej i poprawka wklęsłości fazki) # = -[#] o12 if[#eq 1] #=0 o12 else #=1 o12 endif o10 endif o15 if[# le 0] (Jeżeli wartość posuwu końcowego wynosi zero, wykończenie odbywa się posuwem roboczym) #=# o15 endif o17 if[# ge #] o17 else #=-[#+#] o17 endif o20 if[# gt 0 and # gt 0] (Staczamy naddatek, czyli różnicę pomiędzy podaną średnicą materiału, a średnicą początkową) g0 X[#+#] o21 while [# gt [#+#]] o22 if [#-# gt [#+#]] #=[#-#] #=# o23 if[[# ne 0]] o call [#] o23 endif o22 else #=[#+#] #=# o24 if[[# gt 0]and[# lt # ]] o call [#] o24 endif o22 endif o27 if[# ge #] g0 Z[#+abs[#]+#] o27 else g0 Z[#-abs[#]] o27 endif X[#] G1 Z-# F# G1 X[[#]+#] F# g0 Z[#+#+#] X[#+#] o21 endwhile o20 endif (koniec staczania naddatku) (Planowanie czoła, od dowolnej wartości w plusie na Z do zera. Wykonywane opcjonalnie, zero wyłącza) o40 if[#gt 0] (Dojazd na pozycję roboczą) o41 if[# gt 0 and # gt 0] g0 z[#+#-abs[#]] o41 else g0 z[#+#+abs[#]] o41 endif g0 x[# +#+#] #=[#+#-#] o43 if[[# gt 0]and[# lt # ]] o call [#] g0 Z[#+#] X[#+#] o43 endif o45 if[# eq 0] #=# o45 endif o50 while [# gt 0] # = [# - [#/2]] (wyrównanie przybrania z przybraniem na stronę) o52 if [# lt 0] # = 0 #=1 o52 else #=0 o52 endif g0 z# g1 x0 f[#] g0 z[# + abs[#]] o55 if[#eq 0] g0 x[#+#] o55 else g0 x[#+#-#+#] o55 endif o50 endwhile o40 endif (Koniec planowania czoła, zaczynamy procedurę główną - walec, walec z korektą stożka, lub stożek) o8000 if[# eq 0] o100 if[[# ne 0 and # ge 0] or # gt #] #=0 o105 while [# gt #] o101 if [#-# gt #] #=[#-#] # = [#+#] #=[#-[#]] #=# o25 if[[# ne 0]] o call [#] o25 endif o101 else o109 if[# eq 1 or [[# eq 3 or # eq 4] and #gt 10]] #=1 o109 endif #=# #=# # = [#+#] #=[#-[#]] o103 if[[# gt 0]and[# lt # ]] o call [#] o103 endif o101 endif o107 if[# gt #] g0 Z# X[#] o107 endif g0 X[#] G1 Z# F# G1 Z[#+#/2] x[#+#] F# g1 Z[#] x[#+#+#] G1 X[[#+#]+#] Z[#-#] F# g0 X[#+#+#] Z[#+#+#] o105 endwhile o100 endif (koniec procedury głównej toczenie walca) o8000 else (wykonuje się po zaznaczeniu stożka) #=[#+#] o8010 if[# le #] o call [#][#][#][#][#][#][#][#][#][#] o8010 else o call [#][#][#][#][#][#][#][#][#][#] o8010 endif #=[#+#] o8000 endif (toczenie fazki na średnicy końcowej od zewnątrz) o133 if[# le #] (Ustawienie połączenia fazki ze stożkiem) #=[#+#*3] o133 else #=[#+#] o133 endif o110 if [# gt 0] # = # # = [#*#/#] o111 while [# lt #] #=[#+#] #=[#+[#*#/#]] o112 if [# gt #] # = # o112 endif o113 if [# gt #] # = # o113 endif o1300 if[# ge #] (toczenie fazki od prawej do lewej) G0 x[[#]-#*2] g0 Z[#+#] G1 z[#] F# o114 if [# lt 0.00001] g1 x[#] z[#-[#]] F# o114 endif o115 if [# gt 0] o116 if [# gt 0] g2 x[#] z[#-[#]] r[#] F# o116 endif o117 if [# lt 0.000001] g3 x[#] z[#-[#]] r[#] F# o117 endif o115 endif g0 x[[#]+#] g0 Z[#+#] o1300 else (toczenie fazki od lewej do prawej) G0 x[[#]-#*2] g0 Z[#+#] G1 z[#] F# o124 if [# lt 0.00001] g1 x[#] z[#+[#]] F# o124 endif o125 if [# gt 0] o126 if [# gt 0] g2 x[#] z[#+[#]] r[#] F# o126 endif o127 if [# lt 0.000001] g3 x[#] z[#+[#]] r[#] F# o127 endif o125 endif g0 x[[#]+#] Z[#+#] o1300 endif o111 endwhile o110 endif ( koniec fazki na średnicy końcowej ) o1500 if[# gt 0 and # lt 5] (wykonywanie podcięcia na końcu czopu) o1510 if[# eq 1] (wybieramy podcięcie typu A) o1520 if[# gt 0 and # le 3] # = 1 # = 0.1 # = 0.1 # = 0.8 # = 0.5 # = 0.25 o1520 elseif[# gt 3 and # le 10] #=2 # = 0.2 # = 0.1 # = 1.5 # = 1 # = 0.4 o1520 elseif[# gt 10 and # le 18] # = 2 # = 0.2 # = 0.1 # = 1.5 # = 1 # = 0.4 o1520 elseif[# gt 18 and # le 30] # = 2 # = 0.2 # = 0.1 # = 1.5 # = 1 # = 0.4 o1520 elseif[# gt 30 and # le 80] # = 4 # = 0.3 # = 0.1 # = 3.3 # = 1.5 # = 0.6 o1520 else # = 6 # = 0.4 # = 0.1 # = 5 # = 2.3 # = 1 o1520 endif g0 z[#+#] g1 x# F# g2 z[#+[#-[#-#]]] x[#-#*2] r[#*2] F# g1 z[#+#] F# g2 z[#] x[#+#*2] r[#*2] F# g1 x# F# o1510 elseif[# eq 2] (wybieramy podcięcie typu B) o1530 if[# gt 0 and # le 3] # = 1 # = 0.1 # = 0.1 # = 0.8 # = 0.5 # = 0.25 o1530 elseif[# gt 3 and # le 10] #=2 # = 0.2 # = 0.1 # = 1.5 # = 1 # = 0.4 o1530 elseif[# gt 10 and # le 18] # = 2 # = 0.2 # = 0.1 # = 1.5 # = 1 # = 0.4 o1530 elseif[# gt 18 and # le 30] # = 2 # = 0.2 # = 0.1 # = 1.5 # = 1 # = 0.4 o1530 elseif[# gt 30 and # le 80] # = 4 # = 0.3 # = 0.1 # = 3.3 # = 1.5 # = 0.6 o1530 else # = 6 # = 0.4 # = 0.1 # = 5 # = 2.3 # = 1 o1530 endif g0 z[#+#] g1 x# F# g2 z[#+[#-[#-#]]] x[#-#*2] r[#] F# g1 z[#+[#/2]] F# g2 z[#-#/2] x[#+#*2] r[#] F# g2 z[#] x[#+#*2+#] r[#] F# g1 x# F# o1510 elseif[# eq 3] (wybieramy podcięcie typu C) o1540 if[# gt 0 and # le 10] (msg, Uwaga, podcięcia typu C nie wykonuje się poniżej 10 mm średnicy!) o1540 elseif[# gt 10 and # le 18] # = 1 # = 0.2 # = 0.1 # = 1.6 # = 1.4 o1540 elseif[# gt 18 and # le 30] # = 1.6 # = 0.3 # = 0.1 # = 2.5 # = 2.2 o1540 elseif[# gt 30 and # le 80] # = 2.5 # = 0.3 # = 0.1 # = 3.7 # = 3.4 o1540 else # = 2.5 # = 0.3 # = 0.1 # = 3.7 # = 3.4 o1540 endif o1570 if[# gt 10] g0 z[#+#] g1 x# F# g2 z[#] x[#+#*2] r[#] F# g1 x# F# o1570 endif o1510 elseif [# eq 4] (wybieramy podcięcie typu D) o1550 if[# gt 0 and # le 10] (msg, Uwaga, podcięcia typu D nie wykonuje się poniżej 10 mm średnicy!) o1550 elseif[# gt 10 and # le 18] # = 1 # = 0.2 # = 0.1 # = 1.6 # = 1.4 o1550 elseif[# gt 18 and # le 30] # = 1.6 # = 0.3 # = 0.1 # = 2.5 # = 2.2 o1550 elseif[# gt 30 and # le 80] # = 2.5 # = 0.3 # = 0.1 # = 3.7 # = 3.4 o1550 else # = 2.5 # = 0.3 # = 0.1 # = 3.7 # = 3.4 o1550 endif o1580 if[# gt 10] g0 z[#+#] g1 x# F# g2 z[#-#] x[#+#*2] r[#] F# g2 z[#] x[#+#*2] r[#] F# g1 x# F# o1580 endif o1510 endif o1500 endif (koniec procedury podcięcia) (toczenie fazki na średnicy początkowej od zewnątrz) o5320 if[#eq 0] #=[#+#+#] o5320 else #=[#+#] o5320 endif o5110 if [# gt 0] # = # # = [#*#/#] o5111 while [# lt #] #=[#+#] #=[#+[#*#/#]] o5112 if [# gt #] # = # o5112 endif o5113 if [# gt #] # = # o5113 endif o5300 if[# ge #] (toczenie fazki na średnicy początkowej od prawej do lewej) G0 x[[#]-#*2] g0 Z[#+#] G1 z[#] F# o5114 if [# lt 0.00001] g1 x[#] z[#-[#]] F# o5114 endif o5115 if [# gt 0] o5116 if [# gt 0] g2 x[#] z[#-[#]] r[#] F# o5116 endif o5117 if [# lt 0.000001] g3 x[#] z[#-[#]] r[#] F# o5117 endif o5115 endif g0 x[[#]+#] g0 Z[#+#] o5300 else (toczenie fazki na średnicy początkowej od lewej do prawej) G0 x[[#]-#*2] g0 Z[#+#] G1 z[#] F# o5124 if [# lt 0.00001] g1 x[#] z[#+[#]] F# o5124 endif o5125 if [# gt 0] o5126 if [# gt 0] g3 x[#] z[#+[#]] r[#] F# o5126 endif o5127 if [# lt 0.000001] g2 x[#] z[#+[#]] r[#] F# o5127 endif o5125 endif g0 x[[#]+#] Z[#+#] o5300 endif o5111 endwhile o5110 endif ( koniec fazki na średnicy początkowej ) (opcjonalny odjazd od materiału w obu osiach) o120 if[# ne 99] g0 x# o120 endif o130 if[# ne 99] Z# o130 endif o1000 else (Procedura główna - roztaczanie walca lub stożek od wewnątrz) # = [#+#] (pomijania używamy,gdy poprawiamy detal i cześć procedury już jest wykonana) o1500 if[[# ne 0]] o call [#] o1500 endif G0 X# Z[#+#] # = # o500 while [# lt #] o501 if [[# + #]lt #] # = [# + #] #=# # = [#+#] o501 else # = # o1030 if[[# gt 0]and[# lt # ]] o call [#] o1030 endif #=# # = [#+#] o501 endif X# G1 Z[#] X[#+#] F# G0 X[#+#-#] Z[#+#] X[#-#] o500 endwhile G0 X[#-#] Z[#+#] (toczenie fazki na średnicy końcowej roztaczanie) #=[#*2+#] #=[#-#] # = [#+#] (pomijania używamy,gdy poprawiamy detal i cześć procedury już jest wykonana) #=# #=0 #=[abs[#]+abs[#]] # = [#*#/[#]] o170 if[#eq 1] #=0 o170 else #=1 o170 endif o189 if[# le #] #=[#+#*3] o189 else #=[#+#] o189 endif o188 if[# lt #] o188 endif o180 if [# gt 0] # = # # = [#*#/#] o181 while [# lt #] #=[#+#] #=[#+[#*#/#]] o182 if [# gt #] # = # o182 endif o183 if [# gt #] # = # o183 endif o1380 if[# ge #] G0 x[[#]+#*2] ( wjazd do fazki na fi # +- zmienia) g0 Z[#+#] G1 z[#] F# o184 if [# lt 0.00001] g1 x[#] z[#-[#]] F# ( toczenie fazki na fi #) o184 endif o185 if [# gt 0] o186 if [# gt 0] g2 x[#] z[#-[#]] r[#] F# o186 endif o187 if [# lt 0.000001] g3 x[#] z[#-[#]] r[#] F# o187 endif o185 endif g0 x[[#]-#] g0 Z[#+#] o1380 else G0 x[[#]-#*2] g0 Z[#+#] G1 z[#] F# o194 if [# eq 0] g1 x[#] z[#+[#]] F# o194 endif o195 if [# gt 0] o196 if [# gt 0] g2 x[#] z[#+[#]] r[#] F# o196 endif o197 if [# eq 0] g3 x[#] z[#+[#]] r[#] F# o197 endif o195 endif g0 x[[#]-#] Z[#+#] o1380 endif o181 endwhile ( koniec pętli ) o180 endif ( koniec fazki na średnicy końcowej ) ;g0 z[#+#] (opcjonalny odjazd od materiału w obu osiach) o1350 if[# ne 99] Z# o1350 endif o1200 if[# ne 99] g0 x# o1200 endif o1000 endif (koniec procedury głównej bez inwersji) g54 o endsub