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:

#191

Post napisał: MlKl » 01 gru 2012, 19:26

Obrazek

Nie chce mi się dochodzić w tej chwili dlaczego, ale kod na stożek kamara po wstawieniu w kobyłę i nakarmieniu odpowiednio ustawionymi zmiennymi, pracuje prawie dobrze. Ale prawie robi różnicę - kod po pierwsze głupieje, i próbuje robić najpierw prawidłowo, czyli stoczenie na płasko od średnicy materiału do średnicy początkowej (mojej), potem stożek od średnicy końcowej (mojej) do średnicy początkowej (mojej), ale potem robi drugi stożek od średnicy końcowej (mojej) do średnicy materiału, i jeszcze się zapętla - wraca do toczenia płaszczyzny i będzie tak chodził w kółko, nigdy nie docierając do wykonania fazek, które są zaplanowane i nawet wiszą we właściwych miejscach.



Tagi:


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

#192

Post napisał: kamar » 01 gru 2012, 19:36

MlKl pisze: ale kod na stożek kamara po wstawieniu w kobyłę .
Bo to mezalians :) albo oba samce.
Raczej Ci się nie uda sparzyć , za duzo zaleznosci.


hecza
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 19
Posty: 403
Rejestracja: 06 mar 2012, 13:25
Lokalizacja: Częstochowa

#193

Post napisał: hecza » 01 gru 2012, 19:38

Obrazek

Jeszcze jedno pytanie - dlaczego nie wypełnia tabelki do końca - znowu jakas blokada ?

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:

#194

Post napisał: MlKl » 01 gru 2012, 19:46

kamar pisze:
MlKl pisze: ale kod na stożek kamara po wstawieniu w kobyłę .
Bo to mezalians :) albo oba samce.
Raczej Ci się nie uda sparzyć , za duzo zaleznosci.
Już się udało, tylko gdzieś jeszcze się trochę zacina. Używamy takich samych nazw zmiennych, ale odnosimy je do czego innego. U mnie twoja średnica początkowa jest twoją końcową, i na odwrót. Średnica materiału wychodzi z sumy średnicy początkowej (mojej) i korekty stożka. A to, do czego ty używałeś zmiennej korekta, na razie całkiem wyłączyłem.

[ Dodano: 2012-12-01, 19:50 ]
hecza - u ciebie pewnie trzeba w czterech miejscach podmienić tem plik ngcgui.tcl, żeby zadziałało. Wcześniej podawaliśmy, gdzie go szukać. Będzie dwa razy w /usr i dwa razy w katalogu z gita. Mimo, że siedzi w katalogu z gita, ciągnie się z /usr zawsze.

Awatar użytkownika

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

#195

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

Albo ściągnięty został nie ten plik.
Ja dałem załącznik do 40 pozycji.
Żeby było pięćdziesiąt, odpowiedni fragment musi wyglądać tak :

Kod: Zaznacz cały

# find special association lines that match: 
    # for positional parameters, special line is
    #      #<parmname>=#n    where 0 <= n <= 50
    #  or  #<parmname>=#n (=defaultvalue comment_text) 
    if {   [string match *#<*>=#\[1-9\]*         $line] \
        || [string match *#<*>=#\[1-4\]\[0-9\]*  $line] \
        || [string match *#<*>=#50*              $line] } { 

      if { [string match *#<*>=#\[5-9\]\[1-9\]*  $line] } { 
        # exclude #51-#99
      } elseif {[string match *#<*>=#\[1-9\]\[0-9\]\[0-9\]*  $line] } { 
        # exclude #nnn... (3 or more digit numbers)
.


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

#196

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

MlKl pisze:[. Średnica materiału wychodzi z sumy średnicy początkowej (mojej) i korekty stożka. wsze.
Nie rozumiem co do mnie rozmawiasz ale kombinuj. :)
Œrednica materiału nie wynika tyko jest założona w uchwyt a korekta to najważniejsza funkcja w tej zabawie.

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:

#197

Post napisał: MlKl » 01 gru 2012, 20:13

Kod: Zaznacz cały

# find numbered parameters #1--#60 inclusive
    # in order to identify the biggest one since all
    # in this range are considered to be positional parameters
    # even if some in the range are not explicitly used
    set l $line
    while 1 { 
      set i1 [string first # $l] 
      if {$i1 < 0} {break} 
      set i2 [expr 1 + $i1] 
      set i3 [expr 2 + $i1] 
      set i4 [expr 3 + $i1] 
      set i5 [expr 4 + $i1] 
      set i6 [expr 5 + $i1] 
      set char2 [string range $l $i2 $i2] 
      set char3 [string range $l $i3 $i3] 
      set char4 [string range $l $i4 $i4] 
      set char5 [string range $l $i5 $i5] 
      set v $char2$char3[string range $l $i4 $i4] 
      if {   [is_int $v] \
          && ($v > 60) } { 
        break ;# ignore #nnn...
      } 
      if {[is_int $char2] && ![is_int $char3]} { 
        set num_var $char2
        if {$num_var < $min_num} {set min_num $num_var} 
        if {$num_var > $max_num} {set max_num $num_var} 
        set l [string range $l $i3 end] 
        continue
      } 
      if {[is_int $char2] && [is_int $char3]} { 
        set num_var $char2$char3
        if { 0 < $num_var & $num_var <= 60} { 
          if {$num_var < $min_num} {set min_num $num_var} 
          if {$num_var > $max_num} {set max_num $num_var} 
          set l [string range $l [expr 1+$i5] end] 
          continue
        } 
      } 
      set l [string range $l $i2 end] 
    } 

    # find special association lines that match: 
    # for positional parameters, special line is
    #      #<parmname>=#n    where 0 <= n <= 60
    #  or  #<parmname>=#n (=defaultvalue comment_text) 
    if {   [string match *#<*>=#\[1-9\]*         $line] \
        || [string match *#<*>=#\[1-3\]\[0-9\]*  $line] \
        || [string match *#<*>=#60*              $line] } { 

      if { [string match *#<*>=#\[6-9\]\[1-9\]*  $line] } { 
        # exclude #31-#99
      } elseif {[string match *#<*>=#\[1-9\]\[0-9\]\[0-9\]*  $line] } { 
        # exclude #nnn... (3 or more digit numbers) 
      } else { 
        set i1 [string first >=# $line] 
        set parmname [string range $line 2 [expr -1+$i1]] 
        set num [string range $line [expr 3+ $i1] end] 
U mnie tak jest na 60

Plik z załącznika pobrałem teraz z /usr/lib/tcltk/linuxcnc

- ten powinien zadziałać prawidłowo.
Załączniki
ngcgui.txt
(144.78 KiB) Pobrany 278 razy

Awatar użytkownika

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

#198

Post napisał: tuxcnc » 01 gru 2012, 20:19

Właściwie to tam jest pewien mało istotny błąd, ale zawsze błąd.
Powinno być tak :

Kod: Zaznacz cały

    # find special association lines that match: 
    # for positional parameters, special line is
    #      #<parmname>=#n    where 0 <= n <= 50
    #  or  #<parmname>=#n (=defaultvalue comment_text) 
    if {   [string match *#<*>=#\[1-9\]*         $line] \
        || [string match *#<*>=#\[1-4\]\[0-9\]*  $line] \
        || [string match *#<*>=#50*              $line] } { 

      if { [string match *#<*>=#\[5\]\[1-9\]*  $line] \
        || [string match *#<*>=#\[6-9\]\[0-9\]*  $line]       } { 
        # exclude #51-#99
      } elseif {[string match *#<*>=#\[1-9\]\[0-9\]\[0-9\]*  $line] } { 
        # exclude #nnn... (3 or more digit numbers)
.

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:

#199

Post napisał: MlKl » 01 gru 2012, 20:21

kamar pisze:
MlKl pisze:[. Średnica materiału wychodzi z sumy średnicy początkowej (mojej) i korekty stożka. wsze.
Nie rozumiem co do mnie rozmawiasz ale kombinuj. :)
Œrednica materiału nie wynika tyko jest założona w uchwyt a korekta to najważniejsza funkcja w tej zabawie.
Obrazek

Już działa - zapętlenie było moją winą, wsadziłem toto w środek własnej pętli, zamiast wywalić za nią. Z korektą sobie zawalczę potem - tu znowu się gryzą zmienne, u mnie #<korekta> to przesunięcie stożka, a średnicy zewnętrznej materiału nie wpisuję, wychodzi sama ze zsumowania średnicy początkowej i korekty.


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>+#<korekta>] 


(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>+#<korekta>+#<odjazd_x>] 

o50 endwhile
o40 endif
(Koniec planowania czoła, zaczynamy procedurę główną - walec, walec z korektą stożka, lub stożek) 
o8000 if[#<stozek> eq 0] 

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

       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>] 

o100 endwhile (koniec procedury głównej toczenie walca) 

o8000 else (wykonuje się po zaznaczeniu stożka) 

o20 if [#<kat_stozka> gt 0 and #<dl_stozka> gt 0] 
(msg, Podajemy albo kąt albo długość stożka) 
M30
o20 endif
#<korekta_konca_stozka>=#<korekta> 
#<sr_materialu>=[#<sr_pocz>+#<korekta>] 
#<sr_koncowa_1>=#<sr_pocz> 
#<sr_pocz>=#<sr_koncowa> 
#<sr_koncowa>=#<sr_koncowa_1> 
#<korekta>=0
( jeżeli podany kąt) 
o10000 if [#<kat_stozka> gt 0] 

  (---------- rosnacy z kątem ----------) 
  o11000 if [#<sr_pocz> lt #<sr_koncowa>] 
    #<krok> = 0
        #<dl_stozka> = [[[#<sr_koncowa> - #<sr_pocz>] / 2] / tan[#<kat_stozka>]] 

        o11100 if [#<korekta> eq 0] 
        ( jezeli srednica koncowa mniejsza niz material to zbieram naddatek)       
        o10100 if [#<sr_koncowa> lt #<sr_materialu>] 
          #<x_akt_start> = #<sr_materialu> 
            #<x_akt_koniec> = #<sr_koncowa> 
      o10200 while [#<x_akt_start> gt #<x_akt_koniec>] 
              #<x_akt_start> = [#<x_akt_start> - #<przybranie_materialu>] 
                o10300 if [#<x_akt_start> lt #<x_akt_koniec>] 
                  #<x_akt_start> = #<x_akt_koniec> 
                o10300 endif
        g0 z[#<z_pocz> + 1] 
        g0 x#<x_akt_start> 
                g1 z[#<z_pocz>] F#<posuw> 
                g1 z[#<z_pocz> - #<dl_stozka>] F#<posuw> 
                g1 x[#<x_akt_start> + #<przybranie_materialu>] 
                g0 z[#<z_pocz> + 1] 
            o10200 endwhile
        o10100 endif

        #<akt_start> = #<sr_koncowa> 
       
        g0 z[#<z_pocz> + 1]   
    o12000 while [#<akt_start> gt #<sr_pocz>] 
      #<akt_start> = [#<akt_start> - #<przybranie_materialu>] 
      #<krok> = [#<krok> + 1] 
      o13000 if [#<akt_start> lt #<sr_pocz>] 
        #<akt_start> = #<sr_koncowa> 
      o13000 endif
      g0 x#<akt_start> 
           
            o14000 if [#<sr_koncowa> gt #<sr_materialu>] 
              #<sr_koncowa> = #<sr_materialu> 
            o14000 endif

            g1 z#<z_pocz> F#<posuw> 
   (   g1 x#<sr_koncowa> z[-1 * [[#<z_pocz> + [#<krok> * #<przybranie_materialu> / 2]] / tan[#<kat_stozka>]]] f#<posuw>) 
        g1 x#<sr_koncowa> z[#<z_pocz> - [[#<sr_koncowa> - #<akt_start>] / [2 * tan[#<kat_stozka>]]]] F#<posuw> 
      g0 z[#<z_pocz> + 1] 
    o12000 endwhile

        o11100 else
        (---------- korekta ----------) 
            g0 z[#<z_pocz> + 1] F#<posuw> 
            g0 x[#<sr_pocz> - #<korekta>] 
            g1 z[#<z_pocz>] 
      g1 x[#<sr_koncowa> - #<korekta>] z[#<z_pocz> - #<dl_stozka>] f#<posuw> 
      g0 z[#<z_pocz> + 1]       
        o11100 endif
       
  o11000 endif

   
    (---------- malejacy z kątem ----------) 
  o20000 if [#<sr_pocz> gt #<sr_koncowa>] 

    #<dl_stozka> = [[[#<sr_pocz> - #<sr_koncowa>] / 2] / tan[#<kat_stozka>]] 

        o21110 if [#<korekta> eq 0] 
        ( jezeli srednica koncowa mniejsza niz material to zbieram naddatek)       
        o20100 if [#<sr_koncowa> lt #<sr_materialu>] 
          #<x_akt_start> = #<sr_materialu> 
            #<x_akt_koniec> = #<sr_pocz> 
      o20200 while [#<x_akt_start> gt #<x_akt_koniec>] 
              #<x_akt_start> = [#<x_akt_start> - #<przybranie_materialu>] 
                o20300 if [#<x_akt_start> lt #<x_akt_koniec>] 
                  #<x_akt_start> = #<x_akt_koniec> 
                o20300 endif
        g0 z[#<z_pocz> + 1] 
        g0 x#<x_akt_start> 
                g1 z[#<z_pocz> - #<dl_stozka>] F#<posuw> 
                g1 x[#<x_akt_start> + #<przybranie_materialu>] 
                g0 z[#<z_pocz> + 1] 
            o20200 endwhile
        o20100 endif

    #<akt_koniec> = #<sr_pocz> 
    o25000 while [#<akt_koniec> gt #<sr_koncowa>] 
      #<akt_koniec> = [#<akt_koniec> - #<przybranie_materialu>] 
      o21000 if [#<akt_koniec> lt #<sr_koncowa>] 
        #<akt_koniec> = #<sr_koncowa> 
      o21000 endif   
      g0 x[#<sr_pocz> + 1] 
      g0 z[#<z_pocz> - [-1 * [[#<sr_koncowa> - #<akt_koniec>] * #<dl_stozka>] / [#<sr_pocz> - #<sr_koncowa>]]] 
      g0 x#<sr_pocz> 
      g1 x[#<akt_koniec>] z[#<z_pocz> - #<dl_stozka>] f#<posuw> 
    o25000 endwhile

        o21110 else
        (---------- korekta ----------) 
            g0 z[#<z_pocz> + 1] F#<posuw> 
            g0 x[#<sr_pocz> - #<korekta>] 
            g1 z[#<z_pocz>] 
      g1 x[#<sr_koncowa> - #<korekta>] z[#<z_pocz> - #<dl_stozka>] f#<posuw> 
            g0 x[#<sr_pocz> + 1] 
      g0 z[#<z_pocz> + 1]               
        o21110 endif
  o20000 endif
(--------------------) 
o10000 else (kat == 0) 
(--------------------) 
    (---------- rosnacy z długością ----------) 
  o20000 if [#<sr_pocz> lt #<sr_koncowa>] 

       
    #<krok> = 0
        ( jezeli srednica koncowa mniejsza niz material to zbieram naddatek) 

        o22220 if [#<korekta> eq 0] 
       
        o21100 if [#<sr_koncowa> lt #<sr_materialu>] 
          #<x_akt_start> = #<sr_materialu> 
            #<x_akt_koniec> = #<sr_koncowa> 
      o21200 while [#<x_akt_start> gt #<x_akt_koniec>] 
              #<x_akt_start> = [#<x_akt_start> - #<przybranie_materialu>] 
                o21300 if [#<x_akt_start> lt #<x_akt_koniec>] 
                  #<x_akt_start> = #<x_akt_koniec> 
                o21300 endif
        g0 z[#<z_pocz> + 1] 
        g0 x#<x_akt_start> 
                g1 z[#<z_pocz> - #<dl_stozka>] F#<posuw> 
                g1 x[#<x_akt_start> + #<przybranie_materialu>] 
                g0 z[#<z_pocz> + 1] 
            o21200 endwhile
        o21100 endif
       
    #<z_krok> = [[#<dl_stozka> * #<przybranie_materialu>] / [#<sr_koncowa> - #<sr_pocz>]] 
    #<x_akt_start> = #<sr_koncowa> 
    #<z_akt_koniec> = #<z_pocz> 

    o26000 while [#<x_akt_start> gt #<sr_pocz>] 
      #<x_akt_start> = [#<x_akt_start> - #<przybranie_materialu>] 
      #<krok> = [#<krok> + 1] 
      o26100 if [#<x_akt_start> lt #<sr_pocz>] 
        #<x_akt_start> = #<sr_pocz> 
      o26100 endif
      #<z_akt_koniec> = [#<z_akt_koniec> - #<z_krok>] 
      o26200 if [#<z_akt_koniec> lt [#<z_pocz> - #<dl_stozka>]] 
        #<z_akt_koniec> = [#<z_pocz> - #<dl_stozka>] 
      o26200 endif
      g0 z[#<z_pocz> + 1] 
      g0 x#<x_akt_start> 
      g1 z#<z_pocz> f#<posuw> 
(            o312 if[#<sr_koncowa> ge #<sr_materialu>]) 
            g1 x#<sr_koncowa> z#<z_akt_koniec> f#<posuw> 
(            o312 else) 
(        g1 x#<sr_materialu> z#<z_akt_koniec> f#<posuw>) 
(            o312 endif) 

      g0 z#<z_pocz> 
    o26000 endwhile

        o22220 else
        (---------- korekta ----------) 
            g0 z[#<z_pocz> + 1] F#<posuw> 
            g0 x[#<sr_pocz> - #<korekta>] 
            g1 z[#<z_pocz>] 
      g1 x[#<sr_koncowa> - #<korekta>] z[#<z_pocz> - #<dl_stozka>] f#<posuw> 
      g0 z[#<z_pocz> + 1]               
        o22220 endif
  o20000 endif

    (---------- malejacy z długością ----------) 
  o30000 if [#<sr_pocz> gt #<sr_koncowa>] 

        o33330 if [#<korekta> eq 0] 
        ( jezeli srednica koncowa mniejsza niz material to zbieram naddatek)       
        o30100 if [#<sr_pocz> lt #<sr_materialu>] 
          #<x_akt_start> = #<sr_materialu> 
            #<x_akt_koniec> = #<sr_pocz> 
         o30200 while [#<x_akt_start> gt #<x_akt_koniec>] 
              #<x_akt_start> = [#<x_akt_start> - #<przybranie_materialu>] 
                o30300 if [#<x_akt_start> lt #<x_akt_koniec>] 
                  #<x_akt_start> = #<x_akt_koniec> 
                o30300 endif
           g0 z[#<z_pocz> + 1] 
           g0 x#<x_akt_start> 
                g1 z[#<z_pocz> - #<dl_stozka>] F#<posuw> 
                g1 x[#<x_akt_start> + #<przybranie_materialu>] 
                g0 z[#<z_pocz> + 1] 
            o30200 endwhile
        o30100 endif
   
    #<akt_koniec> = #<sr_pocz> 
       
    o40000 while [#<akt_koniec> gt #<sr_koncowa>] 
      #<akt_koniec> = [#<akt_koniec> - #<przybranie_materialu>] 

      o41000 if [#<akt_koniec> lt #<sr_koncowa>] 
        #<akt_koniec> = #<sr_koncowa> 
      o41000 endif
   
      g0 x[#<sr_pocz> + 1] 
      g0 z[#<z_pocz> - [-1 * [[#<sr_koncowa> - #<akt_koniec>] * #<dl_stozka>] / [#<sr_pocz> - #<sr_koncowa>]]] 
      g0 x#<sr_pocz> 
      g1 x[#<akt_koniec>] z[#<z_pocz> - #<dl_stozka>] f#<posuw> 
    o40000 endwhile

        o33330 else
        (---------- korekta ----------) 
            g0 z[#<z_pocz> + 1] F#<posuw> 
            g0 x[#<sr_pocz> - #<korekta>] 
            g1 z[#<z_pocz>] 
      g1 x[#<sr_koncowa> - #<korekta>] z[#<z_pocz> - #<dl_stozka>] f#<posuw> 
            g0 x[#<sr_pocz> + 1] 
      g0 z[#<z_pocz> + 1]               
        o33330 endif
  o30000 endif

o10000 endif
#<sr_koncowa_1>=#<sr_pocz> 
#<sr_pocz>=[#<sr_koncowa>+#<korekta_konca_stozka>] 
#<sr_koncowa>=#<sr_koncowa_1> 
;*****************************************(koniec stożka) 
o8000 endif 

(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_s_k> 
#<glebokosc_fazki_1> = [#<glebokosc_fazki_s_k>*#<pomijaj_faza_s_k>/#<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

Awatar użytkownika

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

#200

Post napisał: tuxcnc » 01 gru 2012, 20:24

MlKl pisze:

Kod: Zaznacz cały

        || [string match *#<*>=#\[1-3\]\[0-9\]*  $line] \
Ta linia jest zła.

.

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „LinuxCNC (dawniej EMC2)”