NGCGUI - toczenie, mocno rozbudowana procedura

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: 143
Posty: 3705
Rejestracja: 15 sie 2010, 13:44
Lokalizacja: Błonie
Kontakt:

#171

Post napisał: MlKl » 29 lis 2012, 12:40

Po krótkiej walce mam działający LinuxCNC z NGCGUI w którym mogę zrobić procedurę zawierającą do 60 zmiennych.

Dla sprawdzenia wypełniłem tabelkę losowo ilością znaków, jakiej nigdy w życiu do niej nie wpiszę w trakcie pracy - program toto przyjął, i nawet coś wykonywał.

Obrazek

Obrazek



Tagi:


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

#172

Post napisał: kamar » 29 lis 2012, 16:18

To juz nie kobyła , to koszmar senny :)

Awatar użytkownika

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

#173

Post napisał: MlKl » 29 lis 2012, 16:44

Okastrowanie tej kobyły z dowolnej ilości pól formularza jest śmiesznie proste.

Dajesz średnik przed każdą opcją, którą chcesz wywalić, bo nie używasz. W nowej linii deklarujesz zmienną z opcji jako stałą z ustawioną wartością defaultową. Jak już wszysto, co niepotrzebne wywalisz, renumerujesz opcje, żeby się NGCGUI nie pluło.

I se możesz jeździć na wałachu z pięcioma polami do wypełnienia :)

Kod: Zaznacz cały

#<pomijaj_faza> =#29 (=0 ile milimetrów szer. fazki śr.k pominąć) 
#<pomijaj_faza> =#30 (=0 ile milimetrów szer. fazki śr.p pominąć) 
#<odjazd_z> =#31 (=1 odjazd od materiału w osi Z) 
#<odjazd_x> =#32 (=1 odjazd od materiału w osi X) 
#<noz_wstepny>=#33 (=0 Nóż wstępny) 
#<noz_czolo>=#34 (=0 Nóż do czoła) 
#<noz_koncowy>=#35(=0 Nóż kończący) 
#<noz_fazki>=#36 (=0 Nóż fazki na śr. końcowej) 
#<noz_fazki_2>=#37 (=0 Nóż fazki na śr. pocz.) 
#<woda> = #38(=8 Chłodziwo 8, 9 wyłączone) 
#<g5x> = #39(=54 Układ odniesienia G5x) 
#<m> = #40(=3 kierunek obrotów, 4 w lewo) 
#<rpm> = #41 (=720 obroty) 
#<max_rpm> = #42 (=1500 obroty maksymalne) 
Wyżej jest końcówka deklaracji z 42 zmiennymi, niżej widać jak ją okastrowałem do 37 bez zmiany choćby jednej linijki kodu wykonywalnego i utraty funkcjonalności. Można to posunąć do absurdu, i zrobić pojedyncze operacje twojego typu z pięcioma, czy siedmioma polami do wypełnienia. Będą działać od lewej do prawej i na odwrót, toczyć i roztaczać bez wiązania z innymi operacjami.

Kod: Zaznacz cały

#<pomijaj_faza> =#29 (=0 ile milimetrów szer. fazki śr.k pominąć) 
#<pomijaj_faza> =#30 (=0 ile milimetrów szer. fazki śr.p pominąć) 
;#<odjazd_z> =#31 (=1 odjazd od materiału w osi Z) 
;#<odjazd_x> =#32 (=1 odjazd od materiału w osi X) 
;#<noz_wstepny>=#33 (=0 Nóż wstępny) 
;#<noz_czolo>=#34 (=0 Nóż do czoła) 
;#<noz_koncowy>=#35(=0 Nóż kończący) 
;#<noz_fazki>=#36 (=0 Nóż fazki na śr. końcowej) 
;#<noz_fazki_2>=#37 (=0 Nóż fazki na śr. pocz.) 
#<woda> = #31(=8 Chłodziwo 8, 9 wyłączone) 
#<g5x> = #32(=54 Układ odniesienia G5x) 
;#<m> = #40(=3 kierunek obrotów, 4 w lewo) 
#<rpm> = #33 (=720 obroty) 
#<max_rpm> = #34 (=1500 obroty maksymalne) 
#<m> = 3
#<noz_fazki_2>=0
#<noz_fazki>=0
#<noz_koncowy>=0
#<noz_wstepny>=0
#<odjazd_z> =1
#<odjazd_x> =1

Awatar użytkownika

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

#174

Post napisał: MlKl » 01 gru 2012, 02:25

Wmontowałem wykonywanie fazki na średnicy początkowej przy toczeniu od lewej do prawej i na odwrót.

Na dziś wypełniając 13 pól w jednej tabelce w rzeczywistości wykonuję cztery powiązane ze sobą podprocedury.

Obrazek

Jak widać procedura wzbogaciła się o obrazek, wyjaśniający, o co w niej chodzi. Niestety, nie da się na obrazku umieścić pełnej instrukcji obsługi kobyły...

Obrazek

Jak widać robię w tej jednej zakładce: czoło, walec, pólkulistą fazę na średnicy początkowej walca i półkulistą fazę na średnicy końcowej walca.

Nadal do zrobienia stożek, doszła do zrobienia inwersja, czyli praca nożem osadzonym w imaku za osią wrzeciona, na lewych obrotach. Do zrobienia są jeszcze znormalizowane podcięcia na połączeniu czopa i wału.

Muszę napisać wersję uruchamialną na zwykłym NGCGUI, czyli okastrować toto do 30 zmiennych, zanim wrzucę kod tutaj. Wątpię, by ktokolwiek przekompilował swojego LinuxCNC, żeby pobawić się pełnymi możliwościami kobyły. Ale jak się odezwie choć jeden chętny, to i pełny kod zapodam :)

Awatar użytkownika

tuxcnc
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 27
Posty: 9352
Rejestracja: 26 lut 2011, 23:24
Lokalizacja: mazowieckie

#175

Post napisał: tuxcnc » 01 gru 2012, 05:27

Zapodaj, zobaczymy co to warte.

.

Awatar użytkownika

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

#176

Post napisał: MlKl » 01 gru 2012, 06:07

Kobyła okastrowana

Kod: Zaznacz cały

; 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<toczenie-mini> sub

#<czolo> =#1 (=0 planowanie czoła, 0 wyłącza) 
#<posuw_czolo> =  #2 (=40 Posuw czoła) 
;#<stozek> =#3 (=0 1 stożek, 0 walec) 
#<korekta> = #3(=0 korekta stożka w mm...) 
;#<kat_stozka> =#5 (=0 ... lub kąt w stopniach) 
#<sr_pocz> =  #4 (=0 Średnica początkowa) 
#<sr_koncowa> =  #5 (=0 Średnica końcowa) 
#<z_pocz> =  #6 (=0 Punkt początkowy na osi Z) 
#<z_koncowe> =  #7 (=0 Punkt końcowy na osi Z) 
#<przybranie_materialu> =  #8 (=2 Przybranie) 
#<posuw> =  #9 (=80 Posuw roboczy) 
#<ostatnia_warstwa> =  #10 (=0 Ostatnia warstwa) 
#<posuw_koncowy> =  #11 (=30 Posuw kończący) 
#<szerokosc_fazki_s_k> = #12 (=0 Szerokość fazki śr.k, 0 wyłącza) 
#<glebokosc_fazki_s_k> =#13 (=0 Głębokość fazki śr.k) 
#<promien_fazki_s_k> =#14 (=0 Promień fazki śr.k, 0 wyłącza) 
#<wkleslosc_fazki_s_k> =#15 (=0 1 wklęsłość fazki śr.k, 0 wyłącza) 
;#<zaglebienie_fazki_s_k> =#18 (=0 zagłębienie fazki śr.k, 0 wyłącza) 
;#<podciecie> =#19 (=0 Podcięcie A 1, B 2, C 3, D 4, 0 wyłącza) 
#<szerokosc_fazki_s_p> = #16 (=0 Szerokość fazki śr.p, 0 wyłącza) 
#<glebokosc_fazki_s_p> =#17 (=0 Głębokość fazki śr.p) 
#<promien_fazki_s_p> =#18 (=0 Promień fazki śr.p, 0 wyłącza) 
#<wkleslosc_fazki_s_p> =#19 (=0 1 wklęsłość fazki śr.p, 0 wyłącza) 
;#<zaglebienie_fazki_s_p> =#24 (=0 zagłębienie fazki śr.p, 0 wyłącza) 
#<skos_z_p> =#20 (=0 korekta skosu na początku w osi Z) 
#<skos_z_k> =#21 (=0 korekta skosu na końcu w osi Z) 
#<odjazd_z_k> =#22 (=99 pozycja końcowa w osi Z, 99 wyłącza) 
#<odjazd_x_k> =#23 (=99 pozycja końcowa w osi X, 99 wyłącza) 
#<pomijaj_srednica> =#24 (=0 ile milimetrów średnicy pominąć) 
#<pomijaj_czolo> =#25 (=0 ile milimetrów czoła pominąć) 
#<pomijaj_faza_s_k> =#26 (=0 ile milimetrów szer. fazki śr.k pominąć) 
#<pomijaj_faza_s_p> =#27 (=0 ile milimetrów szer. fazki śr.p pominąć) 
#<odjazd_z> =#28 (=0.25 odjazd od materiału w osi Z) 
#<odjazd_x> =#29 (=0.5 odjazd od materiału w osi X) 
;#<noz_wstepny>=#35 (=0 Nóż wstępny) 
;#<noz_czolo>=#36 (=0 Nóż do czoła) 
;#<noz_koncowy>=#37(=0 Nóż kończący) 
;#<noz_fazki_s_k>=#38 (=0 Nóż fazki na śr. końcowej) 
;#<noz_fazki_s_p>=#39 (=0 Nóż fazki na śr. pocz.) 
#<woda> = #30(=8 Chłodziwo 8, 9 wyłączone) 
;#<g5x> = #41(=54 Układ odniesienia G5x) 
;#<m> = #42(=3 kierunek obrotów, 4 w lewo) 
;#<inwersja> = #43(=0 1 inwersja, zero wyłącza) 
;#<rpm> = #44 (=720 obroty) 
;#<max_rpm> = #45 (=1500 obroty maksymalne) 

; stałe wpisane na sztywno
#<stozek> =0
#<max_rpm> =1500
#<rpm> =720
#<inwersja> =0
#<m> =3
#<g5x>=54
#<noz_fazki_s_p>=0
#<noz_fazki_s_k>=0
#<noz_koncowy>=0
#<noz_czolo>=0
#<noz_wstepny>=0
#<zaglebienie_fazki_s_p> =0
#<zaglebienie_fazki_s_k> =0
#<kat_stozka> =0
#<podciecie> =0
#<ilosc_nozy_w_tabeli>=9



; G7:  diameter mode
; G96: constant surface speed
; Włączamy procedurę 



G#<g5x> G43 G7 G96  S#<rpm> D#<max_rpm> 

M#<m> M#<woda> ; start wrzeciona i uruchomienie chłodziwa

o1000 if[#<sr_pocz> ge #<sr_koncowa>] (toczenie od zewnątrz walca lub stożka) 

#<odjazd_x>=[#<odjazd_x>*2+#<przybranie_materialu>] 
#<roznica_srednic>=[#<sr_pocz>-#<sr_koncowa>] 
;#<sr_pocz> = [#<sr_pocz>-#<pomijaj_srednica>] (pomijania używamy,gdy poprawiamy detal i cześć procedury już jest wykonana) 
#<akt_start_x>=[#<sr_pocz>-#<pomijaj_srednica>] 
#<z_k_stozka>=0
#<dl_stozka>=[abs[#<z_koncowe>]+abs[#<z_pocz>]] 
#<akt_pozycja>=0

o5 if[#<dl_stozka> ne 0] 
	#<korekta_polozenia_fazki> = [#<szerokosc_fazki_s_k>*#<korekta>/#<dl_stozka>] 
o5 else
	#<korekta_polozenia_fazki>=0
o5 endif



o10 if[#<z_pocz> le #<z_koncowe>] (Zmiana kierunku odjazdu w osi Z gdy toczymy od lewej do prawej i poprawka wklęsłości fazki) 
		#<odjazd_z> = -[#<odjazd_z>] 
	o12 if[#<wkleslosc_fazki_s_k>eq 1] 
		#<wkleslosc_fazki_s_k>=0
	o12 else
		#<wkleslosc_fazki_s_k>=1
	o12 endif
o10 endif


o15 if[#<posuw_koncowy> le 0] 
	#<posuw_koncowy>=#<posuw> 
o15 endif


(Dojazd na pozycję roboczą) 

g0 z[#<z_pocz>+#<odjazd_z>] 
g0 x[#<sr_pocz> +#<odjazd_x>] 


(Planowanie czoła, od dowolnej wartości w plusie na Z do zera. Wykonywane opcjonalnie, zero wyłącza) 
o40 if[#<czolo>gt 0] 
#<akt_pozycja>=[#<z_pocz>+#<czolo>-#<pomijaj_czolo>] 

o43 if[[#<noz_czolo> gt 0]and[#<noz_czolo> lt #<ilosc_nozy_w_tabeli> ]] 
         o<loadtool> call [#<noz_czolo>] 
         g0  Z[#<z_pocz>+#<odjazd_z>] X[#<sr_pocz>+#<odjazd_x>] 
o43 endif

o45 if[#<posuw_czolo> eq 0] 
         #<posuw_czolo>=#<posuw> 
o45 endif

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

  g0 z#<akt_pozycja> 

  g1 x0 f[#<posuw_czolo>] 
  g0 z[#<akt_pozycja> + #<odjazd_z>] 
  g0 x[#<sr_pocz> +#<odjazd_x>] 

o50 endwhile
o40 endif
(Koniec planowania czoła, zaczynamy procedurę główną - walec, walec z korektą stożka, lub stożek) 


o100 while [#<akt_start_x> gt #<sr_koncowa>] 

o101 if [#<akt_start_x>-#<przybranie_materialu> gt #<sr_koncowa>] 
         #<akt_start_x>=[#<akt_start_x>-#<przybranie_materialu>] 
         #<z_koncowe> = [#<z_koncowe>+#<skos_z_k>] 
         #<z_pocz>=[#<z_pocz>-[#<skos_z_p>]] 
         #<posuw1>=#<posuw> 
   o25 if[[#<noz_wstepny> ne 0]] 
         o<loadtool> call [#<noz_wstepny>] 
         g0  Z[#<z_pocz>+#<skos_z_p>+#<odjazd_z>] X[#<akt_start_x>+#<odjazd_x>] 
  o25 endif
o101 else
         #<akt_start_x>=#<sr_koncowa> 
         #<posuw1>=#<posuw_koncowy> 
         #<z_koncowe> = [#<z_koncowe>+#<skos_z_k>] 
         #<z_pocz>=[#<z_pocz>-[#<skos_z_p>]] 

o103 if[[#<noz_koncowy> gt 0]and[#<noz_koncowy> lt #<ilosc_nozy_w_tabeli> ]] 
         o<loadtool> call [#<noz_koncowy>] 
         g0  Z[#<z_pocz>+#<skos_z_p>+#<odjazd_z>] X[#<akt_start_x>+#<odjazd_x>] 
o103 endif

o101 endif

o107 if[#<stozek> eq 1] 

;tu wsadzić stożek


(msg, Stożek jeszcze nie działa) 
M30
o20 endif 

o107 else

       g0 X[#<akt_start_x>] 
       G1 Z#<z_pocz>  F#<posuw1> 
       G1 Z#<z_koncowe> x[#<akt_start_x>+#<korekta>]   F#<posuw1> 
       G1 X[[#<akt_start_x>+#<korekta>]+#<odjazd_x>] Z[#<z_koncowe>-#<skos_z_k>] F#<posuw1> 
       g0 X[#<akt_start_x>+#<korekta>+#<odjazd_x>] 
          Z[#<z_pocz>+#<skos_z_p>+#<odjazd_z>] X[#<akt_start_x>+#<odjazd_x>] 
o107 endif


o100 endwhile (koniec procedury głównej) 

(toczenie fazki na średnicy końcowej od zewnątrz) 
o133 if[#<z_pocz> le #<z_koncowe>] (Ustawienie połączenia fazki ze stożkiem) 

#<sr_koncowa>=[#<sr_koncowa>+#<korekta_polozenia_fazki>*3] 
o133 else
#<sr_koncowa>=[#<sr_koncowa>+#<korekta_polozenia_fazki>] 
o133 endif

o110 if [#<szerokosc_fazki_s_k> gt 0] 
#<szerokosc_fazki_1> = #<pomijaj_faza_s_k> 
#<glebokosc_fazki_1> = [#<glebokosc_fazki_s_k>*#<pomijaj_faza_s_k>/#<szerokosc_fazki_s_k>] 
 

o111 while [#<szerokosc_fazki_1> lt #<szerokosc_fazki_s_k>] 
#<szerokosc_fazki_1>=[#<szerokosc_fazki_1>+#<przybranie_materialu>] 
#<glebokosc_fazki_1>=[#<glebokosc_fazki_1>+[#<glebokosc_fazki_s_k>*#<przybranie_materialu>/#<szerokosc_fazki_s_k>]] 
 o112 if [#<szerokosc_fazki_1> gt #<szerokosc_fazki_s_k>] 
    #<szerokosc_fazki_1> = #<szerokosc_fazki_s_k> 
  o112 endif     
  o113 if [#<glebokosc_fazki_1> gt #<glebokosc_fazki_s_k>] 
    #<glebokosc_fazki_1> = #<glebokosc_fazki_s_k> 
  o113 endif   


o1300 if[#<z_pocz> ge #<z_koncowe>] (toczenie fazki od prawej do lewej) 

G0 x[[#<sr_koncowa>]-#<glebokosc_fazki_1>*2]            

g0 Z[#<z_pocz>+#<odjazd_z>] 

G1 z[#<z_pocz>] F#<posuw> 

o114 if [#<promien_fazki_s_k> lt 0.00001] 
g1 x[#<sr_koncowa>] z[#<z_pocz>-[#<szerokosc_fazki_1>]]  F#<posuw>   
o114 endif
o115 if [#<promien_fazki_s_k> gt 0] 
o116 if [#<wkleslosc_fazki_s_k> gt 0] 
g2 x[#<sr_koncowa>] z[#<z_pocz>-[#<szerokosc_fazki_1>]] r[#<promien_fazki_s_k>]   F#<posuw> 
o116 endif
o117 if [#<wkleslosc_fazki_s_k> lt 0.000001] 
g3 x[#<sr_koncowa>] z[#<z_pocz>-[#<szerokosc_fazki_1>]] r[#<promien_fazki_s_k>]   F#<posuw> 
o117 endif
o115 endif
g0 x[[#<sr_koncowa>]+#<odjazd_x>] 
g0 Z[#<z_pocz>+#<odjazd_z>] 

o1300 else (toczenie fazki od lewej do prawej) 


G0 x[[#<sr_koncowa>]-#<glebokosc_fazki_1>*2]             

g0 Z[#<z_pocz>+#<odjazd_z>] 

G1 z[#<z_pocz>] F#<posuw> 

o124 if [#<promien_fazki_s_k> lt 0.00001] 
g1 x[#<sr_koncowa>] z[#<z_pocz>+[#<szerokosc_fazki_1>]]  F#<posuw>   
o124 endif
o125 if [#<promien_fazki_s_k> gt 0] 
o126 if [#<wkleslosc_fazki_s_k> gt 0] 
g2 x[#<sr_koncowa>] z[#<z_pocz>+[#<szerokosc_fazki_1>]] r[#<promien_fazki_s_k>]   F#<posuw> 
o126 endif
o127 if [#<wkleslosc_fazki_s_k> lt 0.000001] 
g3 x[#<sr_koncowa>] z[#<z_pocz>+[#<szerokosc_fazki_1>]] r[#<promien_fazki_s_k>]   F#<posuw> 
o127 endif
o125 endif
g0 x[[#<sr_koncowa>]+#<odjazd_x>] 
Z[#<z_pocz>+#<odjazd_z>] 
o1300 endif

o111 endwhile 
o110 endif  ( koniec fazki na średnicy końcowej ) 


(toczenie fazki na średnicy początkowej od zewnątrz) 
#<sr_pocz>=[#<sr_pocz>+#<korekta>] 

o5110 if [#<szerokosc_fazki_s_p> gt 0] 
#<szerokosc_fazki_2> = #<pomijaj_faza_s_p> 
#<glebokosc_fazki_2> = [#<glebokosc_fazki_s_p>*#<pomijaj_faza_s_p>/#<szerokosc_fazki_s_p>] 
 

o5111 while [#<szerokosc_fazki_2> lt #<szerokosc_fazki_s_p>] 
#<szerokosc_fazki_2>=[#<szerokosc_fazki_2>+#<przybranie_materialu>] 
#<glebokosc_fazki_2>=[#<glebokosc_fazki_2>+[#<glebokosc_fazki_s_p>*#<przybranie_materialu>/#<szerokosc_fazki_s_p>]] 
 o5112 if [#<szerokosc_fazki_2> gt #<szerokosc_fazki_s_p>] 
    #<szerokosc_fazki_2> = #<szerokosc_fazki_s_p> 
  o5112 endif     
  o5113 if [#<glebokosc_fazki_2> gt #<glebokosc_fazki_s_p>] 
    #<glebokosc_fazki_2> = #<glebokosc_fazki_s_p> 
  o5113 endif   


o5300 if[#<z_pocz> ge #<z_koncowe>] (toczenie fazki na średnicy początkowej od prawej do lewej) 

G0 x[[#<sr_pocz>]-#<glebokosc_fazki_2>*2]            

g0 Z[#<z_koncowe>+#<odjazd_z>] 

G1 z[#<z_koncowe>] F#<posuw> 

o5114 if [#<promien_fazki_s_p> lt 0.00001] 
g1 x[#<sr_pocz>] z[#<z_koncowe>-[#<szerokosc_fazki_2>]]  F#<posuw>   
o5114 endif
o5115 if [#<promien_fazki_s_p> gt 0] 
o5116 if [#<wkleslosc_fazki_s_p> gt 0] 
g2 x[#<sr_pocz>] z[#<z_koncowe>-[#<szerokosc_fazki_2>]] r[#<promien_fazki_s_p>]   F#<posuw> 
o5116 endif
o5117 if [#<wkleslosc_fazki_s_p> lt 0.000001] 
g3 x[#<sr_pocz>] z[#<z_koncowe>-[#<szerokosc_fazki_2>]] r[#<promien_fazki_s_p>]   F#<posuw> 
o5117 endif
o5115 endif
g0 x[[#<sr_pocz>]+#<odjazd_x>] 
g0 Z[#<z_koncowe>+#<odjazd_z>] 

o5300 else (toczenie fazki na średnicy początkowej od lewej do prawej) 


G0 x[[#<sr_pocz>]-#<glebokosc_fazki_2>*2]             

g0 Z[#<z_koncowe>+#<odjazd_z>] 

G1 z[#<z_koncowe>] F#<posuw> 

o5124 if [#<promien_fazki_s_p> lt 0.00001] 
g1 x[#<sr_pocz>] z[#<z_koncowe>+[#<szerokosc_fazki_2>]]  F#<posuw>   
o5124 endif
o5125 if [#<promien_fazki_s_p> gt 0] 
o5126 if [#<wkleslosc_fazki_s_p> gt 0] 
g3 x[#<sr_pocz>] z[#<z_koncowe>+[#<szerokosc_fazki_2>]] r[#<promien_fazki_s_p>]   F#<posuw> 
o5126 endif
o5127 if [#<wkleslosc_fazki_s_p> lt 0.000001] 
g2 x[#<sr_pocz>] z[#<z_koncowe>+[#<szerokosc_fazki_2>]] r[#<promien_fazki_s_p>]   F#<posuw> 
o5127 endif
o5125 endif
g0 x[[#<sr_pocz>]+#<odjazd_x>] 
Z[#<z_koncowe>+#<odjazd_z>] 
o5300 endif

o5111 endwhile 
o5110 endif  ( koniec fazki na średnicy początkowej ) 


(opcjonalny odjazd od materiału w obu osiach) 

o120 if[#<odjazd_x_k> ne 99] 
g0 x#<odjazd_x_k> 
o120 endif

o130 if[#<odjazd_z_k> ne 99] 
 Z#<odjazd_z_k> 
o130 endif

o1000 else (Procedura główna - roztaczanie walca lub stożek od wewnątrz) 

#<sr_pocz> = [#<sr_pocz>+#<pomijaj_srednica>] (pomijania używamy,gdy poprawiamy detal i cześć procedury już jest wykonana) 
 o1500 if[[#<noz_wstepny> ne 0]] 
         o<loadtool> call [#<noz_wstepny>] 
         
  o1500 endif
G0 X#<sr_pocz> 
Z[#<z_pocz>+#<odjazd_z>] 
#<Current-Diameter> = #<sr_pocz> 

o500 while [#<Current-Diameter> lt #<sr_koncowa>] 

o501 if [[#<Current-Diameter> + #<przybranie_materialu>]lt #<sr_koncowa>] 
         #<Current-Diameter> = [#<Current-Diameter> + #<przybranie_materialu>] 
#<posuw1>=#<posuw> 
#<z_koncowe> = [#<z_koncowe>+#<skos_z_k>] 
o501 else
         #<Current-Diameter> = #<sr_koncowa> 
o1030 if[[#<noz_koncowy> gt 0]and[#<noz_koncowy> lt #<ilosc_nozy_w_tabeli> ]] 
         o<loadtool> call [#<noz_koncowy>] 
o1030 endif
#<posuw1>=#<posuw_koncowy> 
#<z_koncowe> = [#<z_koncowe>+#<skos_z_k>] 
o501 endif

       X#<Current-Diameter> 
       G1 Z[#<z_koncowe>]  X[#<Current-Diameter>+#<korekta>] F#<posuw1> 
       G0 X[#<Current-Diameter>+#<korekta>-#<odjazd_x>] 
      Z[#<z_pocz>+#<odjazd_z>]  X[#<Current-Diameter>-#<odjazd_x>] 
o500 endwhile


G0 X[#<Current-Diameter>-#<odjazd_x>] 
Z[#<z_pocz>+#<odjazd_z>] 

(toczenie fazki na średnicy końcowej roztaczanie) 

#<odjazd_x>=[#<odjazd_x>*2+#<przybranie_materialu>] 
#<roznica_srednic>=[#<sr_pocz>-#<sr_koncowa>] 
#<sr_pocz> = [#<sr_pocz>+#<pomijaj_srednica>] (pomijania używamy,gdy poprawiamy detal i cześć procedury już jest wykonana) 
#<akt_start_x>=#<sr_pocz> 
#<z_k_stozka>=0
#<dl_stozka>=[abs[#<z_koncowe>]+abs[#<z_pocz>]] 
#<korekta_polozenia_fazki> = [#<szerokosc_fazki_s_k>*#<korekta>/[#<dl_stozka>]] 

o170 if[#<wkleslosc_fazki_s_k>eq 1] 
		#<wkleslosc_fazki_s_k>=0
	o170 else
		#<wkleslosc_fazki_s_k>=1
	o170 endif


o189 if[#<z_pocz> le #<z_koncowe>] 

#<sr_koncowa>=[#<sr_koncowa>+#<korekta_polozenia_fazki>*3] 
o189 else
#<sr_koncowa>=[#<sr_koncowa>+#<korekta_polozenia_fazki>] 
o189 endif
o188 if[#<sr_koncowa> lt #<sr_pocz>] 
o188 endif
o180 if [#<szerokosc_fazki_s_k> gt 0] 
#<szerokosc_fazki_1> = #<pomijaj_faza> 
#<glebokosc_fazki_1> = [#<glebokosc_fazki_s_k>*#<pomijaj_faza>/#<szerokosc_fazki_s_k>] 
 




o181 while [#<szerokosc_fazki_1> lt #<szerokosc_fazki_s_k>] 
#<szerokosc_fazki_1>=[#<szerokosc_fazki_1>+#<przybranie_materialu>] 
#<glebokosc_fazki_1>=[#<glebokosc_fazki_1>+[#<glebokosc_fazki_s_k>*#<przybranie_materialu>/#<szerokosc_fazki_s_k>]] 
 o182 if [#<szerokosc_fazki_1> gt #<szerokosc_fazki_s_k>] 
    #<szerokosc_fazki_1> = #<szerokosc_fazki_s_k> 
  o182 endif     
  o183 if [#<glebokosc_fazki_1> gt #<glebokosc_fazki_s_k>] 
    #<glebokosc_fazki_1> = #<glebokosc_fazki_s_k> 
  o183 endif   


o1380 if[#<z_pocz> ge #<z_koncowe>] 

G0 x[[#<sr_koncowa>]+#<glebokosc_fazki_1>*2]             ( wjazd do fazki na fi #<sr_koncowa> +- zmienia) 

g0 Z[#<z_pocz>+#<odjazd_z>] 

G1 z[#<z_pocz>] F#<posuw> 

o184 if [#<promien_fazki_s_k> lt 0.00001] 
g1 x[#<sr_koncowa>] z[#<z_pocz>-[#<szerokosc_fazki_1>]]  F#<posuw>   ( toczenie fazki na fi #<sr_pocz>) 
o184 endif
o185 if [#<promien_fazki_s_k> gt 0] 
o186 if [#<wkleslosc_fazki_s_k> gt 0] 
g2 x[#<sr_koncowa>] z[#<z_pocz>-[#<szerokosc_fazki_1>]] r[#<promien_fazki_s_k>]   F#<posuw> 
o186 endif
o187 if [#<wkleslosc_fazki_s_k> lt 0.000001] 
g3 x[#<sr_koncowa>] z[#<z_pocz>-[#<szerokosc_fazki_1>]] r[#<promien_fazki_s_k>]   F#<posuw> 
o187 endif
o185 endif
g0 x[[#<sr_koncowa>]-#<odjazd_x>] 
g0 Z[#<z_pocz>+#<odjazd_z>] 

o1380 else


G0 x[[#<sr_koncowa>]-#<glebokosc_fazki_1>*2]            

g0 Z[#<z_pocz>+#<odjazd_z>] 

G1 z[#<z_pocz>] F#<posuw> 

o194 if [#<promien_fazki_s_k> eq 0] 
g1 x[#<sr_koncowa>] z[#<z_pocz>+[#<szerokosc_fazki_1>]]  F#<posuw>  
o194 endif
o195 if [#<promien_fazki_s_k> gt 0] 
o196 if [#<wkleslosc_fazki_s_k> gt 0] 
g2 x[#<sr_koncowa>] z[#<z_pocz>+[#<szerokosc_fazki_1>]] r[#<promien_fazki_s_k>]   F#<posuw> 
o196 endif
o197 if [#<wkleslosc_fazki_s_k> eq 0] 
g3 x[#<sr_koncowa>] z[#<z_pocz>+[#<szerokosc_fazki_1>]] r[#<promien_fazki_s_k>]   F#<posuw> 
o197 endif
o195 endif
g0 x[[#<sr_koncowa>]-#<odjazd_x>] 
Z[#<z_pocz>+#<odjazd_z>] 
o1380 endif

o181 endwhile ( koniec pętli ) 
o180 endif  ( koniec fazki na średnicy końcowej ) 

(opcjonalny odjazd od materiału w obu osiach) 

o1300 if[#<odjazd_z_k> ne 99] 
 Z#<odjazd_z_k> 
o1300 endif
o1200 if[#<odjazd_x_k> ne 99] 
g0 x#<odjazd_x_k> 
o1200 endif
o1000 endif (koniec procedury głównej bez inwersji) 


g54

M5 M9               ; stop wrzeciona, chłodziwo stop

o<toczenie-mini> endsub


[ Dodano: 2012-12-01, 06:11 ]
I kobyła pełnej krwi :)

Kod: Zaznacz cały

; 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<toczenie> sub

#<czolo> =#1 (=0 planowanie czoła, 0 wyłącza) 
#<posuw_czolo> =  #2 (=40 Posuw czoła) 
#<stozek> =#3 (=0 1 stożek, 0 walec) 
#<korekta> = #4(=0 korekta stożka w mm...) 
#<kat_stozka> =#5 (=0 ... lub kąt w stopniach) 
#<sr_pocz> =  #6 (=0 Średnica początkowa) 
#<sr_koncowa> =  #7 (=0 Średnica końcowa) 
#<z_pocz> =  #8 (=0 Punkt początkowy na osi Z) 
#<z_koncowe> =  #9 (=0 Punkt końcowy na osi Z) 
#<przybranie_materialu> =  #10 (=2 Przybranie) 
#<posuw> =  #11 (=80 Posuw roboczy) 
#<ostatnia_warstwa> =  #12 (=0 Ostatnia warstwa) 
#<posuw_koncowy> =  #13 (=30 Posuw kończący) 
#<szerokosc_fazki_s_k> = #14 (=0 Szerokość fazki śr.k, 0 wyłącza) 
#<glebokosc_fazki_s_k> =#15 (=0 Głębokość fazki śr.k) 
#<promien_fazki_s_k> =#16 (=0 Promień fazki śr.k, 0 wyłącza) 
#<wkleslosc_fazki_s_k> =#17 (=0 1 wklęsłość fazki śr.k, 0 wyłącza) 
#<zaglebienie_fazki_s_k> =#18 (=0 zagłębienie fazki śr.k, 0 wyłącza) 
#<podciecie> =#19 (=0 Podcięcie A 1, B 2, C 3, D 4, 0 wyłącza) 
#<szerokosc_fazki_s_p> = #20 (=0 Szerokość fazki śr.p, 0 wyłącza) 
#<glebokosc_fazki_s_p> =#21 (=0 Głębokość fazki śr.p) 
#<promien_fazki_s_p> =#22 (=0 Promień fazki śr.p, 0 wyłącza) 
#<wkleslosc_fazki_s_p> =#23 (=0 1 wklęsłość fazki śr.p, 0 wyłącza) 
#<zaglebienie_fazki_s_p> =#24 (=0 zagłębienie fazki śr.p, 0 wyłącza) 
#<skos_z_p> =#25 (=0 korekta skosu na początku w osi Z) 
#<skos_z_k> =#26 (=0 korekta skosu na końcu w osi Z) 
#<odjazd_z_k> =#27 (=99 pozycja końcowa w osi Z, 99 wyłącza) 
#<odjazd_x_k> =#28 (=99 pozycja końcowa w osi X, 99 wyłącza) 
#<pomijaj_srednica> =#29 (=0 ile milimetrów średnicy pominąć) 
#<pomijaj_czolo> =#30 (=0 ile milimetrów czoła pominąć) 
#<pomijaj_faza_s_k> =#31 (=0 ile milimetrów szer. fazki śr.k pominąć) 
#<pomijaj_faza_s_p> =#32 (=0 ile milimetrów szer. fazki śr.p pominąć) 
#<odjazd_z> =#33 (=0.25 odjazd od materiału w osi Z) 
#<odjazd_x> =#34 (=0.5 odjazd od materiału w osi X) 
#<noz_wstepny>=#35 (=0 Nóż wstępny) 
#<noz_czolo>=#36 (=0 Nóż do czoła) 
#<noz_koncowy>=#37(=0 Nóż kończący) 
#<noz_fazki_s_k>=#38 (=0 Nóż fazki na śr. końcowej) 
#<noz_fazki_s_p>=#39 (=0 Nóż fazki na śr. pocz.) 
#<woda> = #40(=8 Chłodziwo 8, 9 wyłączone) 
#<g5x> = #41(=54 Układ odniesienia G5x) 
#<m> = #42(=3 kierunek obrotów, 4 w lewo) 
#<inwersja> = #43(=0 1 inwersja, zero wyłącza) 
#<rpm> = #44 (=720 obroty) 
#<max_rpm> = #45 (=1500 obroty maksymalne) 

; stałe wpisane na sztywno
#<ilosc_nozy_w_tabeli>=9



; G7:  diameter mode
; G96: constant surface speed
; Włączamy procedurę 



G#<g5x> G43 G7 G96  S#<rpm> D#<max_rpm> 

M#<m> M#<woda> ; start wrzeciona i uruchomienie chłodziwa

o1000 if[#<sr_pocz> ge #<sr_koncowa>] (toczenie od zewnątrz walca lub stożka) 

#<odjazd_x>=[#<odjazd_x>*2+#<przybranie_materialu>] 
#<roznica_srednic>=[#<sr_pocz>-#<sr_koncowa>] 
;#<sr_pocz> = [#<sr_pocz>-#<pomijaj_srednica>] (pomijania używamy,gdy poprawiamy detal i cześć procedury już jest wykonana) 
#<akt_start_x>=[#<sr_pocz>-#<pomijaj_srednica>] 
#<z_k_stozka>=0
#<dl_stozka>=[abs[#<z_koncowe>]+abs[#<z_pocz>]] 
#<akt_pozycja>=0

o5 if[#<dl_stozka> ne 0] 
	#<korekta_polozenia_fazki> = [#<szerokosc_fazki_s_k>*#<korekta>/#<dl_stozka>] 
o5 else
	#<korekta_polozenia_fazki>=0
o5 endif



o10 if[#<z_pocz> le #<z_koncowe>] (Zmiana kierunku odjazdu w osi Z gdy toczymy od lewej do prawej i poprawka wklęsłości fazki) 
		#<odjazd_z> = -[#<odjazd_z>] 
	o12 if[#<wkleslosc_fazki_s_k>eq 1] 
		#<wkleslosc_fazki_s_k>=0
	o12 else
		#<wkleslosc_fazki_s_k>=1
	o12 endif
o10 endif


o15 if[#<posuw_koncowy> le 0] 
	#<posuw_koncowy>=#<posuw> 
o15 endif


(Dojazd na pozycję roboczą) 

g0 z[#<z_pocz>+#<odjazd_z>] 
g0 x[#<sr_pocz> +#<odjazd_x>] 


(Planowanie czoła, od dowolnej wartości w plusie na Z do zera. Wykonywane opcjonalnie, zero wyłącza) 
o40 if[#<czolo>gt 0] 
#<akt_pozycja>=[#<z_pocz>+#<czolo>-#<pomijaj_czolo>] 

o43 if[[#<noz_czolo> gt 0]and[#<noz_czolo> lt #<ilosc_nozy_w_tabeli> ]] 
         o<loadtool> call [#<noz_czolo>] 
         g0  Z[#<z_pocz>+#<odjazd_z>] X[#<sr_pocz>+#<odjazd_x>] 
o43 endif

o45 if[#<posuw_czolo> eq 0] 
         #<posuw_czolo>=#<posuw> 
o45 endif

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

  g0 z#<akt_pozycja> 

  g1 x0 f[#<posuw_czolo>] 
  g0 z[#<akt_pozycja> + #<odjazd_z>] 
  g0 x[#<sr_pocz> +#<odjazd_x>] 

o50 endwhile
o40 endif
(Koniec planowania czoła, zaczynamy procedurę główną - walec, walec z korektą stożka, lub stożek) 


o100 while [#<akt_start_x> gt #<sr_koncowa>] 

o101 if [#<akt_start_x>-#<przybranie_materialu> gt #<sr_koncowa>] 
         #<akt_start_x>=[#<akt_start_x>-#<przybranie_materialu>] 
         #<z_koncowe> = [#<z_koncowe>+#<skos_z_k>] 
         #<z_pocz>=[#<z_pocz>-[#<skos_z_p>]] 
         #<posuw1>=#<posuw> 
   o25 if[[#<noz_wstepny> ne 0]] 
         o<loadtool> call [#<noz_wstepny>] 
         g0  Z[#<z_pocz>+#<skos_z_p>+#<odjazd_z>] X[#<akt_start_x>+#<odjazd_x>] 
  o25 endif
o101 else
         #<akt_start_x>=#<sr_koncowa> 
         #<posuw1>=#<posuw_koncowy> 
         #<z_koncowe> = [#<z_koncowe>+#<skos_z_k>] 
         #<z_pocz>=[#<z_pocz>-[#<skos_z_p>]] 

o103 if[[#<noz_koncowy> gt 0]and[#<noz_koncowy> lt #<ilosc_nozy_w_tabeli> ]] 
         o<loadtool> call [#<noz_koncowy>] 
         g0  Z[#<z_pocz>+#<skos_z_p>+#<odjazd_z>] X[#<akt_start_x>+#<odjazd_x>] 
o103 endif

o101 endif

o107 if[#<stozek> eq 1] 

;tu wsadzić stożek


(msg, Stożek jeszcze nie działa) 
M30
o20 endif 

o107 else

       g0 X[#<akt_start_x>] 
       G1 Z#<z_pocz>  F#<posuw1> 
       G1 Z#<z_koncowe> x[#<akt_start_x>+#<korekta>]   F#<posuw1> 
       G1 X[[#<akt_start_x>+#<korekta>]+#<odjazd_x>] Z[#<z_koncowe>-#<skos_z_k>] F#<posuw1> 
       g0 X[#<akt_start_x>+#<korekta>+#<odjazd_x>] 
          Z[#<z_pocz>+#<skos_z_p>+#<odjazd_z>] X[#<akt_start_x>+#<odjazd_x>] 
o107 endif


o100 endwhile (koniec procedury głównej) 

(toczenie fazki na średnicy końcowej od zewnątrz) 
o133 if[#<z_pocz> le #<z_koncowe>] (Ustawienie połączenia fazki ze stożkiem) 

#<sr_koncowa>=[#<sr_koncowa>+#<korekta_polozenia_fazki>*3] 
o133 else
#<sr_koncowa>=[#<sr_koncowa>+#<korekta_polozenia_fazki>] 
o133 endif

o110 if [#<szerokosc_fazki_s_k> gt 0] 
#<szerokosc_fazki_1> = #<pomijaj_faza_s_k> 
#<glebokosc_fazki_1> = [#<glebokosc_fazki_s_k>*#<pomijaj_faza_s_k>/#<szerokosc_fazki_s_k>] 
 

o111 while [#<szerokosc_fazki_1> lt #<szerokosc_fazki_s_k>] 
#<szerokosc_fazki_1>=[#<szerokosc_fazki_1>+#<przybranie_materialu>] 
#<glebokosc_fazki_1>=[#<glebokosc_fazki_1>+[#<glebokosc_fazki_s_k>*#<przybranie_materialu>/#<szerokosc_fazki_s_k>]] 
 o112 if [#<szerokosc_fazki_1> gt #<szerokosc_fazki_s_k>] 
    #<szerokosc_fazki_1> = #<szerokosc_fazki_s_k> 
  o112 endif     
  o113 if [#<glebokosc_fazki_1> gt #<glebokosc_fazki_s_k>] 
    #<glebokosc_fazki_1> = #<glebokosc_fazki_s_k> 
  o113 endif   


o1300 if[#<z_pocz> ge #<z_koncowe>] (toczenie fazki od prawej do lewej) 

G0 x[[#<sr_koncowa>]-#<glebokosc_fazki_1>*2]            

g0 Z[#<z_pocz>+#<odjazd_z>] 

G1 z[#<z_pocz>] F#<posuw> 

o114 if [#<promien_fazki_s_k> lt 0.00001] 
g1 x[#<sr_koncowa>] z[#<z_pocz>-[#<szerokosc_fazki_1>]]  F#<posuw>   
o114 endif
o115 if [#<promien_fazki_s_k> gt 0] 
o116 if [#<wkleslosc_fazki_s_k> gt 0] 
g2 x[#<sr_koncowa>] z[#<z_pocz>-[#<szerokosc_fazki_1>]] r[#<promien_fazki_s_k>]   F#<posuw> 
o116 endif
o117 if [#<wkleslosc_fazki_s_k> lt 0.000001] 
g3 x[#<sr_koncowa>] z[#<z_pocz>-[#<szerokosc_fazki_1>]] r[#<promien_fazki_s_k>]   F#<posuw> 
o117 endif
o115 endif
g0 x[[#<sr_koncowa>]+#<odjazd_x>] 
g0 Z[#<z_pocz>+#<odjazd_z>] 

o1300 else (toczenie fazki od lewej do prawej) 


G0 x[[#<sr_koncowa>]-#<glebokosc_fazki_1>*2]             

g0 Z[#<z_pocz>+#<odjazd_z>] 

G1 z[#<z_pocz>] F#<posuw> 

o124 if [#<promien_fazki_s_k> lt 0.00001] 
g1 x[#<sr_koncowa>] z[#<z_pocz>+[#<szerokosc_fazki_1>]]  F#<posuw>   
o124 endif
o125 if [#<promien_fazki_s_k> gt 0] 
o126 if [#<wkleslosc_fazki_s_k> gt 0] 
g2 x[#<sr_koncowa>] z[#<z_pocz>+[#<szerokosc_fazki_1>]] r[#<promien_fazki_s_k>]   F#<posuw> 
o126 endif
o127 if [#<wkleslosc_fazki_s_k> lt 0.000001] 
g3 x[#<sr_koncowa>] z[#<z_pocz>+[#<szerokosc_fazki_1>]] r[#<promien_fazki_s_k>]   F#<posuw> 
o127 endif
o125 endif
g0 x[[#<sr_koncowa>]+#<odjazd_x>] 
Z[#<z_pocz>+#<odjazd_z>] 
o1300 endif

o111 endwhile 
o110 endif  ( koniec fazki na średnicy końcowej ) 


(toczenie fazki na średnicy początkowej od zewnątrz) 
#<sr_pocz>=[#<sr_pocz>+#<korekta>] 

o5110 if [#<szerokosc_fazki_s_p> gt 0] 
#<szerokosc_fazki_2> = #<pomijaj_faza_s_p> 
#<glebokosc_fazki_2> = [#<glebokosc_fazki_s_p>*#<pomijaj_faza_s_p>/#<szerokosc_fazki_s_p>] 
 

o5111 while [#<szerokosc_fazki_2> lt #<szerokosc_fazki_s_p>] 
#<szerokosc_fazki_2>=[#<szerokosc_fazki_2>+#<przybranie_materialu>] 
#<glebokosc_fazki_2>=[#<glebokosc_fazki_2>+[#<glebokosc_fazki_s_p>*#<przybranie_materialu>/#<szerokosc_fazki_s_p>]] 
 o5112 if [#<szerokosc_fazki_2> gt #<szerokosc_fazki_s_p>] 
    #<szerokosc_fazki_2> = #<szerokosc_fazki_s_p> 
  o5112 endif     
  o5113 if [#<glebokosc_fazki_2> gt #<glebokosc_fazki_s_p>] 
    #<glebokosc_fazki_2> = #<glebokosc_fazki_s_p> 
  o5113 endif   


o5300 if[#<z_pocz> ge #<z_koncowe>] (toczenie fazki na średnicy początkowej od prawej do lewej) 

G0 x[[#<sr_pocz>]-#<glebokosc_fazki_2>*2]            

g0 Z[#<z_koncowe>+#<odjazd_z>] 

G1 z[#<z_koncowe>] F#<posuw> 

o5114 if [#<promien_fazki_s_p> lt 0.00001] 
g1 x[#<sr_pocz>] z[#<z_koncowe>-[#<szerokosc_fazki_2>]]  F#<posuw>   
o5114 endif
o5115 if [#<promien_fazki_s_p> gt 0] 
o5116 if [#<wkleslosc_fazki_s_p> gt 0] 
g2 x[#<sr_pocz>] z[#<z_koncowe>-[#<szerokosc_fazki_2>]] r[#<promien_fazki_s_p>]   F#<posuw> 
o5116 endif
o5117 if [#<wkleslosc_fazki_s_p> lt 0.000001] 
g3 x[#<sr_pocz>] z[#<z_koncowe>-[#<szerokosc_fazki_2>]] r[#<promien_fazki_s_p>]   F#<posuw> 
o5117 endif
o5115 endif
g0 x[[#<sr_pocz>]+#<odjazd_x>] 
g0 Z[#<z_koncowe>+#<odjazd_z>] 

o5300 else (toczenie fazki na średnicy początkowej od lewej do prawej) 


G0 x[[#<sr_pocz>]-#<glebokosc_fazki_2>*2]             

g0 Z[#<z_koncowe>+#<odjazd_z>] 

G1 z[#<z_koncowe>] F#<posuw> 

o5124 if [#<promien_fazki_s_p> lt 0.00001] 
g1 x[#<sr_pocz>] z[#<z_koncowe>+[#<szerokosc_fazki_2>]]  F#<posuw>   
o5124 endif
o5125 if [#<promien_fazki_s_p> gt 0] 
o5126 if [#<wkleslosc_fazki_s_p> gt 0] 
g3 x[#<sr_pocz>] z[#<z_koncowe>+[#<szerokosc_fazki_2>]] r[#<promien_fazki_s_p>]   F#<posuw> 
o5126 endif
o5127 if [#<wkleslosc_fazki_s_p> lt 0.000001] 
g2 x[#<sr_pocz>] z[#<z_koncowe>+[#<szerokosc_fazki_2>]] r[#<promien_fazki_s_p>]   F#<posuw> 
o5127 endif
o5125 endif
g0 x[[#<sr_pocz>]+#<odjazd_x>] 
Z[#<z_koncowe>+#<odjazd_z>] 
o5300 endif

o5111 endwhile 
o5110 endif  ( koniec fazki na średnicy początkowej ) 


(opcjonalny odjazd od materiału w obu osiach) 

o120 if[#<odjazd_x_k> ne 99] 
g0 x#<odjazd_x_k> 
o120 endif

o130 if[#<odjazd_z_k> ne 99] 
 Z#<odjazd_z_k> 
o130 endif

o1000 else (Procedura główna - roztaczanie walca lub stożek od wewnątrz) 

#<sr_pocz> = [#<sr_pocz>+#<pomijaj_srednica>] (pomijania używamy,gdy poprawiamy detal i cześć procedury już jest wykonana) 
 o1500 if[[#<noz_wstepny> ne 0]] 
         o<loadtool> call [#<noz_wstepny>] 
         
  o1500 endif
G0 X#<sr_pocz> 
Z[#<z_pocz>+#<odjazd_z>] 
#<Current-Diameter> = #<sr_pocz> 

o500 while [#<Current-Diameter> lt #<sr_koncowa>] 

o501 if [[#<Current-Diameter> + #<przybranie_materialu>]lt #<sr_koncowa>] 
         #<Current-Diameter> = [#<Current-Diameter> + #<przybranie_materialu>] 
#<posuw1>=#<posuw> 
#<z_koncowe> = [#<z_koncowe>+#<skos_z_k>] 
o501 else
         #<Current-Diameter> = #<sr_koncowa> 
o1030 if[[#<noz_koncowy> gt 0]and[#<noz_koncowy> lt #<ilosc_nozy_w_tabeli> ]] 
         o<loadtool> call [#<noz_koncowy>] 
o1030 endif
#<posuw1>=#<posuw_koncowy> 
#<z_koncowe> = [#<z_koncowe>+#<skos_z_k>] 
o501 endif

       X#<Current-Diameter> 
       G1 Z[#<z_koncowe>]  X[#<Current-Diameter>+#<korekta>] F#<posuw1> 
       G0 X[#<Current-Diameter>+#<korekta>-#<odjazd_x>] 
      Z[#<z_pocz>+#<odjazd_z>]  X[#<Current-Diameter>-#<odjazd_x>] 
o500 endwhile


G0 X[#<Current-Diameter>-#<odjazd_x>] 
Z[#<z_pocz>+#<odjazd_z>] 

(toczenie fazki na średnicy końcowej roztaczanie) 

#<odjazd_x>=[#<odjazd_x>*2+#<przybranie_materialu>] 
#<roznica_srednic>=[#<sr_pocz>-#<sr_koncowa>] 
#<sr_pocz> = [#<sr_pocz>+#<pomijaj_srednica>] (pomijania używamy,gdy poprawiamy detal i cześć procedury już jest wykonana) 
#<akt_start_x>=#<sr_pocz> 
#<z_k_stozka>=0
#<dl_stozka>=[abs[#<z_koncowe>]+abs[#<z_pocz>]] 
#<korekta_polozenia_fazki> = [#<szerokosc_fazki_s_k>*#<korekta>/[#<dl_stozka>]] 

o170 if[#<wkleslosc_fazki_s_k>eq 1] 
		#<wkleslosc_fazki_s_k>=0
	o170 else
		#<wkleslosc_fazki_s_k>=1
	o170 endif


o189 if[#<z_pocz> le #<z_koncowe>] 

#<sr_koncowa>=[#<sr_koncowa>+#<korekta_polozenia_fazki>*3] 
o189 else
#<sr_koncowa>=[#<sr_koncowa>+#<korekta_polozenia_fazki>] 
o189 endif
o188 if[#<sr_koncowa> lt #<sr_pocz>] 
o188 endif
o180 if [#<szerokosc_fazki_s_k> gt 0] 
#<szerokosc_fazki_1> = #<pomijaj_faza> 
#<glebokosc_fazki_1> = [#<glebokosc_fazki_s_k>*#<pomijaj_faza>/#<szerokosc_fazki_s_k>] 
 




o181 while [#<szerokosc_fazki_1> lt #<szerokosc_fazki_s_k>] 
#<szerokosc_fazki_1>=[#<szerokosc_fazki_1>+#<przybranie_materialu>] 
#<glebokosc_fazki_1>=[#<glebokosc_fazki_1>+[#<glebokosc_fazki_s_k>*#<przybranie_materialu>/#<szerokosc_fazki_s_k>]] 
 o182 if [#<szerokosc_fazki_1> gt #<szerokosc_fazki_s_k>] 
    #<szerokosc_fazki_1> = #<szerokosc_fazki_s_k> 
  o182 endif     
  o183 if [#<glebokosc_fazki_1> gt #<glebokosc_fazki_s_k>] 
    #<glebokosc_fazki_1> = #<glebokosc_fazki_s_k> 
  o183 endif   


o1380 if[#<z_pocz> ge #<z_koncowe>] 

G0 x[[#<sr_koncowa>]+#<glebokosc_fazki_1>*2]             ( wjazd do fazki na fi #<sr_koncowa> +- zmienia) 

g0 Z[#<z_pocz>+#<odjazd_z>] 

G1 z[#<z_pocz>] F#<posuw> 

o184 if [#<promien_fazki_s_k> lt 0.00001] 
g1 x[#<sr_koncowa>] z[#<z_pocz>-[#<szerokosc_fazki_1>]]  F#<posuw>   ( toczenie fazki na fi #<sr_pocz>) 
o184 endif
o185 if [#<promien_fazki_s_k> gt 0] 
o186 if [#<wkleslosc_fazki_s_k> gt 0] 
g2 x[#<sr_koncowa>] z[#<z_pocz>-[#<szerokosc_fazki_1>]] r[#<promien_fazki_s_k>]   F#<posuw> 
o186 endif
o187 if [#<wkleslosc_fazki_s_k> lt 0.000001] 
g3 x[#<sr_koncowa>] z[#<z_pocz>-[#<szerokosc_fazki_1>]] r[#<promien_fazki_s_k>]   F#<posuw> 
o187 endif
o185 endif
g0 x[[#<sr_koncowa>]-#<odjazd_x>] 
g0 Z[#<z_pocz>+#<odjazd_z>] 

o1380 else


G0 x[[#<sr_koncowa>]-#<glebokosc_fazki_1>*2]            

g0 Z[#<z_pocz>+#<odjazd_z>] 

G1 z[#<z_pocz>] F#<posuw> 

o194 if [#<promien_fazki_s_k> eq 0] 
g1 x[#<sr_koncowa>] z[#<z_pocz>+[#<szerokosc_fazki_1>]]  F#<posuw>  
o194 endif
o195 if [#<promien_fazki_s_k> gt 0] 
o196 if [#<wkleslosc_fazki_s_k> gt 0] 
g2 x[#<sr_koncowa>] z[#<z_pocz>+[#<szerokosc_fazki_1>]] r[#<promien_fazki_s_k>]   F#<posuw> 
o196 endif
o197 if [#<wkleslosc_fazki_s_k> eq 0] 
g3 x[#<sr_koncowa>] z[#<z_pocz>+[#<szerokosc_fazki_1>]] r[#<promien_fazki_s_k>]   F#<posuw> 
o197 endif
o195 endif
g0 x[[#<sr_koncowa>]-#<odjazd_x>] 
Z[#<z_pocz>+#<odjazd_z>] 
o1380 endif

o181 endwhile ( koniec pętli ) 
o180 endif  ( koniec fazki na średnicy końcowej ) 

(opcjonalny odjazd od materiału w obu osiach) 

o1300 if[#<odjazd_z_k> ne 99] 
 Z#<odjazd_z_k> 
o1300 endif
o1200 if[#<odjazd_x_k> ne 99] 
g0 x#<odjazd_x_k> 
o1200 endif
o1000 endif (koniec procedury głównej bez inwersji) 


g54

M5 M9               ; stop wrzeciona, chłodziwo stop

o<toczenie> endsub
Załączniki
toczenie.png
Obrazek wgrać do katalogu z subami razem z procedurą. Ma się nazywać tak samo - więc albo procedurę, albo obrazek trzeba przechcić, jeżeli chcecie używać okastrowanej.
toczenie.png (26.23 KiB) Przejrzano 697 razy


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

#177

Post napisał: kamar » 01 gru 2012, 10:17

MlKl pisze: I kobyła pełnej krwi :)
Mylisz pojęcia :) Pełnej krwi to jest klacz, piękna, smukła i szybka
Kobyła to kobyła, ciężka, zwalista, ciężar pociągnie ale gdzie jej do Wielkiej Pardubickiej :)

Awatar użytkownika

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

#178

Post napisał: MlKl » 01 gru 2012, 14:39

To ty mylisz pojęcia :) Wielkość konia nijak się ma do głębokości orki. Kobyła w jednym skoku pokonuje odległość, dla której ty musisz ze stajni wyprowadzić, osiodłać i ustawić na torze cztery swoje angliki.

Na razie po cichu przeszczepiasz swoim anglikom protezy, pobrane z kobyły :P Ja pewnie w nią wmontuję twój stożek, ino go muszę tochę na swoje kopyto przerobić, bo na razie niekompatybilny z resztą.


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

#179

Post napisał: kamar » 01 gru 2012, 15:50

MlKl pisze: protezy, pobrane z kobyły :.
Why ???
Nie chce Cię martwić ale po próbach opuściła mój dysk :)

P.S. Ze stożkiem uważaj - przy kątowym i rosnącej średnicy , przy niektórych wartościach zawiesza program. Miał dziś poprawić ale pojechał na dołki.

Awatar użytkownika

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

#180

Post napisał: MlKl » 01 gru 2012, 16:11

Pomysł na półkulę czy stożek ze zbieraniem naddatku w jednej procedurze zmałpowałeś, jak pokazałem toto zaprogramowane w kobyle :)

Ale nadal jak przyjdzie zaprogramować dziesięć skomplikowanych detali, to moja przewaga na mecie będzie liczona w godzinach. Wszelkie przejścia ze stożka na półkulę, abo inny stożek będziesz musiał liczyć na kalkulatorze, żeby wyszło dokładnie to, co trzeba.

Kobyła to osadza automatycznie we wszelkich możliwych kombinacjach i kierunkach obróbki. Pozwala zmieniać noże, posuwy, odjazdy, zdecydować, gdzie ma pojechać nóż po każdym etapie - o czym ty se możesz co najwyżej pomarzyć.

Kolejnym etapem będzie pisanie procedur, wykorzystujących kobyłę zdalnie. Np na wielostopniowe koło pasowe na paski klinowe. Dziś w kobyle to zaprogramuję, ale na każdy nacięty rowek pod pasek zużyję zakładkę.

Jak se napiszę procedurę na koło, to ona już się nie będzie zajmowała tworzeniem kodu. Ona będzie po prostu wywoływała kobyłę tyle razy, ile trzeba, z odpowiednimi parametrami.

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „LinuxCNC (dawniej EMC2)”