NGCGUI - podstawowe procedury, ciut bardziej funkcjonalne

Dyskusje dotyczące działania obsługi programu LinuxCNC
Awatar użytkownika

senio
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 9
Posty: 1473
Rejestracja: 25 maja 2006, 14:39
Lokalizacja: koło.wlkp

#11

Post napisał: senio » 28 sty 2016, 11:45

kamar pisze:A możesz przybierać i po 0.25 :) i tak ostatnie przejście będzie dychą.
Sub nie mój wiec nie wiem co tam wymodzili.
Kurcze, ja Ciebie nie mogę zrozumieć jak mam to robić żeby ostatni przejazd wychodził na 0,1. Możesz mi to jakoś wytłumaczyć na powyższym przykładzie wymiarów z tabelki. Co być tam wpisał w pola

Średnica początkowa ?
Średnica końcowa ?
przybieranie ?

A sub w przykładzie Twój. Dokładnie ten

Kod: Zaznacz cały

( ------------------------------ )            
(     Z E W N E T R Z N A        )
( ------------------------------ )
( Kamar                          )
( Time-stamp: <2012-12-10 12:12> )
( ------------------------------ )

(info: &#9532;Ürednica zewnetrzna )

o<zew> sub

#<sr_pocz> = #1 (=60 &#9532;Ťrednica pocz&#9472;ůtkowa)
#<sr_koncowa> = #2 (=40 &#9532;Ťrednica ko&#9532;äcowa)
#<dobieranie> = #3 (=2 dobieranie)
#<poczatek> = #4 (=0 pocz&#9472;ůtek)
#<koniec> = #5 (=-40 koniec)
#<posuw> = #6 (=50 posuw)
#<woda> = #7 (=1 <> ch&#9532;éodzenie)
#<fazka> = #8 (=1 <> fazka)
#<podciecie> = #9 (=1 <> podci&#9472;Öcie B)
#<szlif> =#10 (=0 <> naddatek na szlif)
#<korekta> = #11 (=0 <> korekta)

g61 g80 g7

m3 s1
o1 if [#<woda> eq 1]
   M8
o1 endif

o2 if [#<szlif> eq 1]
	#<sr_koncowa> = [#<sr_koncowa> + 0.5]
o2 endif

g0 z[#<poczatek> + 1]
g0 x[#<sr_pocz> + 1]

o1000 if [#<korekta> eq 0]
o10 while [#<sr_pocz> gt #<sr_koncowa>]
  #<sr_pocz>=[#<sr_pocz> - #<dobieranie>]
  o402 if [#<sr_pocz> lt #<sr_koncowa>]
    #<sr_pocz> = #<sr_koncowa>
  o402 endif
  g0 x#<sr_pocz>
  g1 z#<koniec> f#<posuw>
  g1 x[#<sr_pocz> + #<dobieranie>]
  g0 z[#<poczatek> + 1]
o10 endwhile
o1000 else
  g0 x#<sr_koncowa> z[#<poczatek>+1]
  g1 z#<koniec> f#<posuw>
  g1 x[#<sr_koncowa> + #<dobieranie>]
  g0 z[#<poczatek> + 1]
o1000 endif


o100 if [#<fazka> eq 1]
	g0 z[#<poczatek> + 1]

	( ustalam wielko&#9532;Ť&#9472;ç fazy)	
	( 10&#9500;Ě18 0,6 )
	( 20&#9500;Ě38 1,0 )
	( 30&#9500;Ě48 1,6 )
	( 50&#9500;Ě75 2,0 )
	( 80&#9500;Ě125 3,2 )
	( 190&#9500;Ě320 4,0 )
	o101 if[#<sr_koncowa> ge 10 and #<sr_koncowa> lt 20]
		#<wielkosc_fazy> = 0.6
	o101 endif
	o102 if[#<sr_koncowa> ge 20 and #<sr_koncowa> lt 38]
		#<wielkosc_fazy> = 1
	o102 endif
	o103 if[#<sr_koncowa> ge 38 and #<sr_koncowa> lt 50]
		#<wielkosc_fazy> = 1.6
	o103 endif
	o104 if[#<sr_koncowa> ge 50 and #<sr_koncowa> lt 80]
		#<wielkosc_fazy> = 2.0
	o104 endif
	o105 if[#<sr_koncowa> ge 80 and #<sr_koncowa> lt 150]
		#<wielkosc_fazy> = 2.0 (3.2)
	o105 endif
	o106 if[#<sr_koncowa> ge 150]
		#<wielkosc_fazy> = 2.0 (4.0)
	o106 endif

	#<akt_faza> = 0
	(#<sr_koncowa> = [#<sr_koncowa> - #<wielkosc_fazy>])
	o120 while [#<akt_faza> lt #<wielkosc_fazy>]
		#<akt_faza> = [#<akt_faza> + #<dobieranie>]
    o130 if [#<akt_faza> gt #<wielkosc_fazy>]
      #<akt_faza> = #<wielkosc_fazy>
    o130 endif
    g0 x[#<sr_koncowa> - [#<akt_faza> * 2]]
		g1 z#<poczatek>
    g1 z[#<poczatek> - #<akt_faza>] x#<sr_koncowa> f#<posuw>
    g0 z[#<poczatek> + 1]
  o120 endwhile

o100 endif

o200 if [#<podciecie> eq 1]
   (obliczam wartosci)
	 o201 if[#<sr_koncowa> le 3]
	 		#<b> = 1
			#<a> = 0.1
			#<z> = 0.1
			#<b1> = 0.8
			#<c> = 0.5
			#<r1> = 0.25
	 o201 endif
	 o202 if[#<sr_koncowa> gt 3 and #<sr_koncowa> le 30]
	 		#<b> = 2
			#<a> = 0.2
			#<z> = 0.1
			#<b1> = 1.5
			#<c> = 1
			#<r1> = 0.4	 
	 o202 endif
	 o205 if[#<sr_koncowa> gt 30 and #<sr_koncowa> le 80]
	 		#<b> = 3
			#<a> = 0.3
			#<z> = 0.1
			#<b1> = 2.5
			#<c> = 1.5
			#<r1> = 0.6	 
	 o205 endif
	 o206 if[#<sr_koncowa> gt 80]
 	 		#<b> = 4
			#<a> = 0.4
			#<z> = 0.1
			#<b1> = 3.5
			#<c> = 2.3
			#<r1> = 1	 
	 o206 endif

	
   g0 x[#<sr_koncowa> +1]
   g0 z[#<koniec>+#<b>] 
   g1 x#<sr_koncowa> F#<posuw> 
   g2 z[#<koniec>+[#<b>-[#<b>-#<b1>]]] x[#<sr_koncowa>-#<a>*2] r[#<r1>*2]  
   g1 z[#<koniec>+[#<r1>/2]]  
   g2 z[#<koniec>-#<r1>/2] x[#<sr_koncowa>+#<a>*2] r[#<r1>]  
   g1 z#<koniec> x[#<sr_koncowa>+#<a>*2+#<c>]  
   


o200 endif

o<zew> endsub 



Tagi:


szary11
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 4
Posty: 383
Rejestracja: 16 lut 2011, 22:44
Lokalizacja: Tarnogród

#12

Post napisał: szary11 » 28 sty 2016, 12:59

kamar pisze: Sub nie mój wiec nie wiem co tam wymodzili.
Nieładnie nie przyznawać się do Artura.

senio
zrobione coś na szybko na swoim, żebyś mógł spać spokojnie.

Kod: Zaznacz cały

( ------------------------------ )           
(    Z E W N E T R Z N A        )
( ------------------------------ )
( ADAM                       )
( Time-stamp: <2015-07-12 09:12> )
( ------------------------------ )

(info: Średnica zewnętrzna )

o<zew> sub

#<nr> = #1 (=1 nr narzędzia)
#<obr> = #2 (=400 obroty)
#<odboczka> = #3 (=0 <> odboczka)
#<sr_pocz> = #4 (=50 średnica pocz.)
#<sr_koncowa> = #5 (=30 średnica koń.)
#<dobieranie> = #6 (=2 dobieranie)
#<ostatnia_warstwa> = #7 (=0.1 ostatnia warstwa)
#<poczatek> = #8 (=0 początek)
#<z_koncowe> = #9 (=-20 Z koniec)
#<wygladzanie> = #10 (=0 <> przejazd wygładzający)
#<posuw> = #11 (=0.2 posuw [mm/obr] v [m/min])
#<posuw_na_obrot> = #12 (=1 <> posuw/obrot)
#<fazka> = #13 (=0 fazka)
#<podciecie> = #14 (=0 Podcięcie / typ: 1-A, 2-B, 3-C, 4-D)
#<w_z> = #15 (=5 Z  do zmiany)
#<w_x> = #16 (=50 X  do zmiany)
#<woda> = #17 (=0 <> chłodzenie)
#<korekta> = #18 (=0 <> korekta)
#<wielkosc_korekty> = #19 (=0 wielkość korekty)
#<stala_pr_skrawania> = #20 (=1 <> stala_pr_skrawania)
#<obroty_max> = #21 (=1200 obroty max)
#<pr_skrawania> = #22 (=200 predkosc skrawania [m/min])

o20 if [#<w_z> lt #<poczatek> or #<w_x> lt #<sr_koncowa>]
(msg, KOLIZJA ! zły wyjazd)
M30
o20 endif

o30 if [#<sr_koncowa> gt #<sr_pocz>]
(msg, chyba Ci się średnice popierniczyły)
M30
o30 endif


o2 if [#<odboczka> eq 1]
  #<obr> = [#<obr> * 8]
o2 endif

o7 if [#<odboczka> eq 1]
  #<pr_skrawania> = [#<pr_skrawania> * 8]
  #<obroty_max> = [#<obroty_max> * 8]
o7 endif

g61 g80

m3 s#<obr>
o1 if [#<woda> eq 1]
   M8
o1 endif


o8 if [#<posuw_na_obrot> eq 1]
	G95 
o8 endif

g0 z[#<poczatek> + 1]
g0 x[#<sr_pocz> + 1]

(skrocenie ostatniego przejazdu przy podcieciach typu A i C)
#<korekta_podciecie>=0

o1000 if [#<korekta> eq 0]

#<aktualne_dobranie> = #<sr_pocz>

o10 while [#<aktualne_dobranie> gt #<sr_koncowa>]
  #<aktualne_dobranie>=[#<aktualne_dobranie> - #<dobieranie>]
  
  (po spelnieniu petli o402 musimy zrobic ostani przejzad i przeskoczyc petle o402)
  

  (jesli ostatnie dobranie wychodzi mniejsze niz zadana grubosc ostatniej warstwy wtedy skroc poprzednie dobranie)
  
  o402 if [#<aktualne_dobranie> eq [#<sr_koncowa> + #<ostatnia_warstwa> - #<dobieranie>]]
    #<aktualne_dobranie> = #<sr_koncowa>
    
    o109 if[#<podciecie> eq 1 or #<podciecie> eq 3]
            #<korekta_podciecie>=0.5
    o109 endif
    
  o402 elseif [#<aktualne_dobranie> lt [#<sr_koncowa>+#<ostatnia_warstwa>] ]
	#<aktualne_dobranie> = [#<sr_koncowa> + #<ostatnia_warstwa>]
  o402 endif
  
	
  
  o3 if [#<stala_pr_skrawania> eq 1]
		G96 s#<pr_skrawania> D#<obroty_max>
		o3 endif
		
  g0 x#<aktualne_dobranie>
  g1 z[#<z_koncowe> + #<korekta_podciecie>] f#<posuw>
  g1 x[#<aktualne_dobranie> + #<dobieranie>]
  g0 z[#<poczatek> + 1]
  
  g97
  
	o10 endwhile

	o50 if [#<wygladzanie> eq 1]
		 o55 repeat [1]
			 g0 x#<aktualne_dobranie>
			 g1 z[#<z_koncowe> + #<korekta_podciecie>] f#<posuw>
			g1 x[#<aktualne_dobranie> + #<dobieranie>]
			g0 z[#<poczatek> + 1]
		o55 endrepeat
	o50 endif

o1000 else

		o4 if [#<stala_pr_skrawania> eq 1]
		G96 s#<pr_skrawania> D#<obroty_max>
		o4 endif

  g0 x[#<sr_koncowa>-#<wielkosc_korekty>] z[#<poczatek>+1]
  g1 z#<z_koncowe> f#<posuw>
  g1 x[#<sr_koncowa> + 1]
  g0 z[#<poczatek> + 1]
  
  	o51 if [#<wygladzanie> eq 1]
		 o56 repeat [1]
			  g0 x[#<sr_koncowa>-#<wielkosc_korekty>] z[#<poczatek>+1]
			g1 z#<z_koncowe> f#<posuw>
			g1 x[#<sr_koncowa> + 1]
			g0 z[#<poczatek> + 1]
		o56 endrepeat
	o51 endif
  
  
	g97
o1000 endif

(PROCEDURA PODCIĘCIA)

o1500 if[#<podciecie> gt 0 and #<podciecie> lt 5] (wykonywanie podcięcia na końcu czopu)


     o1510 if[#<podciecie> eq 1] (wybieramy podcięcie typu A)

           o1520 if[#<sr_koncowa> gt 0 and #<sr_koncowa> le 3]
        #<b>  = 1
        #<a>  = 0.1
        #<z>  = 0.1
        #<b1> = 0.8
        #<c>  = 0.5
        #<r1> = 0.25

           o1520 elseif[#<sr_koncowa> gt 3 and #<sr_koncowa> le 10]
        #<b>=2
        #<a>  = 0.2
        #<z>  = 0.1
        #<b1> = 1.5
        #<c>  = 1
        #<r1> = 0.4

           o1520 elseif[#<sr_koncowa> gt 10 and #<sr_koncowa> le 18]
        #<b>  = 2
        #<a>  = 0.2
        #<z>  = 0.1
        #<b1> = 1.5
        #<c>  = 1
        #<r1> = 0.4

           o1520 elseif[#<sr_koncowa> gt 18 and #<sr_koncowa> le 30]
        #<b>  = 2
        #<a>  = 0.2
        #<z>  = 0.1
        #<b1> = 1.5
        #<c>  = 1
        #<r1> = 0.4

           o1520 elseif[#<sr_koncowa> gt 30 and #<sr_koncowa> le 80]
        #<b>  = 4
        #<a>  = 0.3
        #<z>  = 0.1
        #<b1> = 3.3
        #<c>  = 1.5
        #<r1> = 0.6

           o1520 else
        #<b>  = 6
        #<a> = 0.4
        #<z>  = 0.1
        #<b1> = 5
        #<c>  = 2.3
        #<r1> = 1


           o1520 endif
          g0 z[#<z_koncowe>+#<b>]
          g1 x#<sr_koncowa> F#<posuw>
          g2 z[#<z_koncowe>+[#<b>-[#<b>-#<b1>]]] x[#<sr_koncowa>-#<a>*2] r[#<r1>*2] F#<posuw>
          g1 z[#<z_koncowe>+#<r1>] F#<posuw>
          g2 z[#<z_koncowe>] x[#<sr_koncowa>+#<a>*2] r[#<r1>*2] F#<posuw>
		  g1 x#<sr_pocz> F#<posuw>
          
     o1510 elseif[#<podciecie> eq 2] (wybieramy podcięcie typu B)

          o1530 if[#<sr_koncowa> gt 0 and #<sr_koncowa> le 3]
        #<b>  = 1
        #<a>  = 0.1
        #<z>  = 0.1
        #<b1> = 0.8
        #<c>  = 0.5
        #<r1> = 0.25

           o1530 elseif[#<sr_koncowa> gt 3 and #<sr_koncowa> le 10]
        #<b>=2
        #<a>  = 0.2
        #<z>  = 0.1
        #<b1> = 1.5
        #<c>  = 1
        #<r1> = 0.4

           o1530 elseif[#<sr_koncowa> gt 10 and #<sr_koncowa> le 18]
        #<b>  = 2
        #<a>  = 0.2
        #<z>  = 0.1
        #<b1> = 1.5
        #<c>  = 1
        #<r1> = 0.4

           o1530 elseif[#<sr_koncowa> gt 18 and #<sr_koncowa> le 30]
        #<b>  = 2
        #<a>  = 0.2
        #<z>  = 0.1
        #<b1> = 1.5
        #<c>  = 1
        #<r1> = 0.4

           o1530 elseif[#<sr_koncowa> gt 30 and #<sr_koncowa> le 80]
        #<b>  = 4
        #<a>  = 0.3
        #<z>  = 0.1
        #<b1> = 3.3
        #<c>  = 1.5
        #<r1> = 0.6

           o1530 else
        #<b>  = 6
        #<a> = 0.4
        #<z>  = 0.1
        #<b1> = 5
        #<c>  = 2.3
        #<r1> = 1


           o1530 endif
          g0 z[#<z_koncowe>+#<b>]
          g1 x#<sr_koncowa> F#<posuw>
          g2 z[#<z_koncowe>+[#<b>-[#<b>-#<b1>]]] x[#<sr_koncowa>-#<a>*2] r[#<r1>*2] F#<posuw>
          g1 z[#<z_koncowe>+[#<r1>/2]] F#<posuw>
          g2 z[#<z_koncowe>-#<r1>/2] x[#<sr_koncowa>+#<a>*2] r[#<r1>] F#<posuw>
          g1 z[#<z_koncowe>] x[#<sr_koncowa>+#<a>*2+#<c>] F#<posuw>
          g1 x#<sr_pocz> F#<posuw>

     o1510 elseif[#<podciecie> eq 3] (wybieramy podcięcie typu C)

		
           o1540 if[#<sr_koncowa> gt 0 and #<sr_koncowa> le 10]
        (msg, Uwaga, podcięcia typu C nie wykonuje się poniżej 10 mm średnicy!)
       
         
           o1540 elseif[#<sr_koncowa> gt 10 and #<sr_koncowa> le 18]
        #<r>  = 1
        #<a1>  = 0.2
        #<z>  = 0.1
        #<b2> = 1.6
        #<b3>  = 1.4
       

           o1540 elseif[#<sr_koncowa> gt 18 and #<sr_koncowa> le 30]
        #<r>  = 1.6
        #<a1>  = 0.3
        #<z>  = 0.1
        #<b2> = 2.5
        #<b3>  = 2.2
       

           o1540 elseif[#<sr_koncowa> gt 30 and #<sr_koncowa> le 80]
        #<r>  = 2.5
        #<a1>  = 0.3
        #<z>  = 0.1
        #<b2> = 3.7
        #<b3>  = 3.4
       
           o1540 else
        #<r>  = 2.5
        #<a1> = 0.3
        #<z>  = 0.1
        #<b2> = 3.7
        #<b3>  = 3.4
   
           o1540 endif
        o1570 if[#<sr_koncowa> gt 10]
              g0 z[#<z_koncowe>+#<b2>]
              g1 x#<sr_koncowa> F#<posuw>
              g2 z[#<z_koncowe>] x[#<sr_koncowa>+#<a1>*2] r[#<r>] F#<posuw>
              g1 x#<sr_pocz> F#<posuw>
             o1570 endif 

     o1510 elseif[#<podciecie> eq 4] (wybieramy podcięcie typu D)
	
		o1550 if[#<sr_koncowa> gt 0 and #<sr_koncowa> le 10]
        (msg, Uwaga, podcięcia typu D nie wykonuje się poniżej 10 mm średnicy!)
           
                 
           o1550 elseif[#<sr_koncowa> gt 10 and #<sr_koncowa> le 18]
        #<r>  = 1
        #<a1>  = 0.2
        #<z>  = 0.1
        #<b2> = 1.6
        #<b3>  = 1.4
       

           o1550 elseif[#<sr_koncowa> gt 18 and #<sr_koncowa> le 30]
        #<r>  = 1.6
        #<a1>  = 0.3
        #<z>  = 0.1
        #<b2> = 2.5
        #<b3>  = 2.2
       

           o1550 elseif[#<sr_koncowa> gt 30 and #<sr_koncowa> le 80]
        #<r>  = 2.5
        #<a1>  = 0.3
        #<z>  = 0.1
        #<b2> = 3.7
        #<b3>  = 3.4
       
           o1550 else
        #<r>  = 2.5
        #<a1> = 0.3
        #<z>  = 0.1
        #<b2> = 3.7
        #<b3>  = 3.4
   
           o1550 endif

        o1580 if[#<sr_koncowa> gt 10]
              g0 z[#<z_koncowe>+#<b3>]
              g1 x#<sr_koncowa> F#<posuw>
              g2 z[#<z_koncowe>-#<a1>] x[#<sr_koncowa>+#<a1>*2] r[#<r>] F#<posuw>
              g2 z[#<z_koncowe>] x[#<sr_koncowa>+#<b2>*2] r[#<r>] F#<posuw>
              g1 x#<sr_pocz> F#<posuw>
        o1580 endif 
	
     o1510 else

     o1510 endif


o1500 endif (koniec procedury podcięcia) 



o100 if [#<fazka> gt 0]

		o5 if [#<stala_pr_skrawania> eq 1]
		G96 s#<pr_skrawania> D#<obroty_max>
		o5 endif

    g0 z[#<poczatek> + 1]
    g0 x[#<sr_koncowa> - [#<fazka> * 2]]
        g1 z#<poczatek> F#<posuw>
    g1 z[#<poczatek> - #<fazka>] x#<sr_koncowa> f#<posuw>
      g1 z[#<poczatek> - #<fazka> -0.5]
      
g0  x[#<sr_koncowa>+1 ]
g0 z[#<poczatek> + 1]

		g97

o100 endif


g0 x#<w_x>
g0 z#<w_z>


o<zew> endsub
troche duży bo chłopak pododawał podcięcia, ale coś jaszcze nie tak , rysuje podcięcie prawidłowo (promienie) a jedzie wektorem
ale Twoja potrzeba działa :wink:

podcięcia skopiowane od Mikiego, chciałem od Kamara, ale u niego dużo krzaków w subie na stronie


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

#13

Post napisał: kamar » 28 sty 2016, 13:12

senio pisze:
A sub w przykładzie Twój. Dokładnie ten
No faktycznie staroć dawno nie używany :)
A w temacie to wpisujesz
Srednica poczatkowa - 31.43
końcowa - 25.33
dobieranie - 0.25
i masz 24 przejazdy do wymiaru 25.43 i wykończenie na 25.33

Oczywiście, przy tak dużych przybraniach :) masz pierwszy przejazd na pusto ale ostatni dychą.

Awatar użytkownika

senio
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 9
Posty: 1473
Rejestracja: 25 maja 2006, 14:39
Lokalizacja: koło.wlkp

#14

Post napisał: senio » 28 sty 2016, 14:01

szary11 pisze: ale Twoja potrzeba działa :wink:

podcięcia skopiowane od Mikiego, chciałem od Kamara, ale u niego dużo krzaków w
A powiedz mi jeszcze który fragment wkleić do tego suba poniżej, żeby działało to końcowe dobieranie. Albo wklej sam do niego ten fragment i zapodaj. Nic więcej w nim nie zmieniaj. Poprawiłem wszystkie krzaki i ustawiłem go pod siebie i tak mam na tokarce. Doklej tylko fragment z dobieraniem ostatniego przejazdu który mi jest potrzebny w nim do szczęścia :) Ten twój nie ma rzeczy które potrzebuję i używam jak odjazdy i najazdy.

Kod: Zaznacz cały

(info: Toczenie zewnetrzne)

o<zew> sub
#<Material_Dia> =  #1 (=50 Srednica poczatkowa)
#<Final_Dia> =  #2 (=40 Srednica koncowa)
#<przybranie_materialu> =  #3 (=2 Przybranie)
#<Final_Cut> =  #4 (=0 Ostatnia warstwa)
#<FeedRate> =  #5 (=150 Posuw roboczy)
#<Max_RPM> =  #6 (=0 Max obroty wrzeciona)
#<Z_EndOfCut> =  #7 (=-50 Dlugosc w osi Z)
#<Z_StartOfCut> =  #8 (=0 Poczatek os Z)
#<Coolant> = #9(=9 Chlodziwo 8 on, 9 off)
#<korekta> = #10(=0 Korekta stozka)
#<szerokosc_fazki> = #11 (=0 Szerokosc fazki)
#<glebokosc_fazki> =#12 (=0 Glebokosc fazki)
#<promien_fazki> =#13 (=0 Promień fazki)
#<wkleslosc_fazki> =#14 (=0 Wkleslosc fazki)
#<odjazd_x> =#15 (=2 Odjazd od mat os X)
#<odjazd_z> =#16 (=1 Odjazd od mat os Z)
#<skos_z_p> =#17 (=0 Stozek na poczatku w osi Z)
#<skos_z> =#18 (=0 Stozek na koncu w osi Z)
#<odjazd_z_k> =#19 (=99 Odjazd koniec Z, 99 off)
#<odjazd_x_k> =#20 (=99 Odjazd koniec X, 99 off)



; G7:  diameter mode
; G96: constant surface speed
G43 G7 G96 D#<Max_RPM> S720

; Turn the OD
M3 M#<Coolant> ; spindle cw, coolant on/off
G0 Z[#<Z_StartOfCut>+#<odjazd_z>]

G0 X#<Material_Dia>
#<Current_Dia>=#<Material_Dia>

o100 while [#<Current_Dia> gt #<Final_Dia>]

O101   if [#<Current_Dia>-#<przybranie_materialu> gt #<Final_Dia>]
         #<Current_Dia>=[#<Current_Dia>-#<przybranie_materialu>]
#<Z_EndOfCut> = [#<Z_EndOfCut>+#<skos_z>]
#<Z_StartOfCut>=[#<Z_StartOfCut>-[#<skos_z_p>]]
O101   else
         #<Current_Dia>=#<Final_Dia>
#<Z_EndOfCut> = [#<Z_EndOfCut>+#<skos_z>]
#<Z_StartOfCut>=[#<Z_StartOfCut>-[#<skos_z_p>]]
O101   endif

      g1 X[#<Current_Dia>] Z#<Z_StartOfCut>  F#<FeedRate>
     
       G1 Z#<Z_EndOfCut> x[#<Current_Dia>+#<korekta>]   F#<FeedRate>
       G1 X[[#<Current_Dia>+#<korekta>]+#<odjazd_x>] Z[#<Z_EndOfCut>-#<skos_z>] F#<FeedRate>
       g0 X[#<Current_Dia>+#<korekta>+#<odjazd_x>]
          Z[#<Z_StartOfCut>+#<skos_z_p>+#<odjazd_z>] X[#<Current_Dia>+#<odjazd_x>]
o100 endwhile

o110 if [#<szerokosc_fazki> gt 0]
#<szerokosc_fazki_1> = 0
#<glebokosc_fazki_1> = 0
g0 Z[#<Z_StartOfCut>+#<odjazd_z>]

o111 while [#<szerokosc_fazki_1> lt #<szerokosc_fazki>]
#<szerokosc_fazki_1>=[#<szerokosc_fazki_1>+#<przybranie_materialu>/2]
#<glebokosc_fazki_1>=[#<glebokosc_fazki_1>+[#<glebokosc_fazki>*#<przybranie_materialu>/#<szerokosc_fazki>/2]]
 o112 if [#<szerokosc_fazki_1> gt #<szerokosc_fazki>]
    #<szerokosc_fazki_1> = #<szerokosc_fazki>
  o112 endif     
  o113 if [#<glebokosc_fazki_1> gt #<glebokosc_fazki>]
    #<glebokosc_fazki_1> = #<glebokosc_fazki>
  o113 endif   
x[#<Final_Dia>-#<glebokosc_fazki_1>*2]             ( wjazd do fazki na fi #<Final_Dia>)
z[#<Z_StartOfCut>]

o114 if [#<promien_fazki> lt 0.00001]
g1 x[#<Final_Dia>] z[#<Z_StartOfCut>-[#<szerokosc_fazki_1>]]  F#<FeedRate>   ( toczenie fazki na fi #<sr_pocz>)
o114 endif
o115 if [#<promien_fazki> gt 0]
o116 if [#<wkleslosc_fazki> gt 0]
g2 x[#<Final_Dia>] z[#<Z_StartOfCut>-[#<szerokosc_fazki_1>]] r[#<promien_fazki>]   F#<FeedRate>
o116 endif
o117 if [#<wkleslosc_fazki> lt 0.000001]
g3 x[#<Final_Dia>] z[#<Z_StartOfCut>-[#<szerokosc_fazki_1>]] r[#<promien_fazki>]   F#<FeedRate>
o117 endif


o115 endif
g0 x[[#<Final_Dia>]+#<odjazd_x>]
Z[#<Z_StartOfCut>+#<odjazd_z>]
o111 endwhile ( koniec pętli )
o110 endif




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

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

o140 if[#<odjazd_x_k> lt 99]
g0 x#<odjazd_x_k>
o140 endif

o150 if[#<odjazd_z_k> lt 99]
 Z#<odjazd_z_k>
o150 endif
M5 M9               ; stop spindle, all coolant off

o<zew> endsub


szary11
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 4
Posty: 383
Rejestracja: 16 lut 2011, 22:44
Lokalizacja: Tarnogród

#15

Post napisał: szary11 » 30 sty 2016, 12:52

senio pisze: A powiedz mi jeszcze który fragment wkleić do tego suba poniżej, żeby działało to końcowe dobieranie. Albo wklej sam do niego ten fragment i zapodaj.
Żebym ja był taki mądry :roll: , to by troche kasy zostało w kieszeni. :smile:
Pisanie subów zlecam trzymańcowi, a on nie chce przerabiać obcych.
Jak chcesz to Was skontaktuje i napisze Ci nowego pod Ciebie.

Awatar użytkownika

senio
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 9
Posty: 1473
Rejestracja: 25 maja 2006, 14:39
Lokalizacja: koło.wlkp

#16

Post napisał: senio » 30 sty 2016, 16:40

szary11 pisze:Jak chcesz to Was skontaktuje i napisze Ci nowego pod Ciebie.
Dzięki za propozycję, ale zostanę przy tym co mam. Może kiedyś ktoś nie komercyjnie coś takiego dłubnie. A jak nie to też się świat nie zawali.


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

#17

Post napisał: kamar » 30 sty 2016, 20:02

senio pisze:. Może kiedyś ktoś nie komercyjnie coś takiego dłubnie. A jak nie to też się świat nie zawali.
Nie bardzo widzę sens użerania się z takimi kobyłami. Przy toczeniu kilku średnic z fazkami i podcięciami szybciej wygeneruje CAM-em. Bawię się dziś Fusion 360 i coraz szybciej to idzie.
Także suby zostaną tylko te podstawowe najprostrze.

Awatar użytkownika

senio
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 9
Posty: 1473
Rejestracja: 25 maja 2006, 14:39
Lokalizacja: koło.wlkp

#18

Post napisał: senio » 30 sty 2016, 20:46

kamar pisze:
senio pisze:. Może kiedyś ktoś nie komercyjnie coś takiego dłubnie. A jak nie to też się świat nie zawali.
Nie bardzo widzę sens użerania się z takimi kobyłami. Przy toczeniu kilku średnic z fazkami i podcięciami szybciej wygeneruje CAM-em. Bawię się dziś Fusion 360 i coraz szybciej to idzie.
Także suby zostaną tylko te podstawowe najprostrze.
Ja się z Tobą całkowicie zgadzam. Potrzebne to wszystko jak dzizi majtki. Zerknij na tego suba co wrzuciłem. 20 tabelek z czego 15 na 0. W subie od Ciebie jest prawie wszystko. I gdyby była opcja ostatniego przejazdu wykańczającego nie szukał bym niczego więcej z 20 tabelkami bo nie potrzeba. Zgadzam się też z drugą częścią. Sto razy szybciej narysuję złożony kształt w camie niż w ngcgui. Dlatego się też uczę, i dość biegle co mi potrzeba w camie programuję. Tak że nie ma się czym przejmować. Może kiedy dopisze ktoś ten przejazd na wykończenie, a jak nie to jak napisałem świat się nie zawali. Idzie bez tego żyć.


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

#19

Post napisał: kamar » 30 sty 2016, 21:11

senio pisze: W subie od Ciebie jest prawie wszystko.
Chyba zadziałał "głuchy telefon" :) Większość suba pierwszy raz widzę na oczy. Za leniwy jestem na tak długie nazwy zmiennych i jeszcze po obcemu :)

Awatar użytkownika

senio
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 9
Posty: 1473
Rejestracja: 25 maja 2006, 14:39
Lokalizacja: koło.wlkp

#20

Post napisał: senio » 31 sty 2016, 00:52

kamar pisze:
senio pisze: W subie od Ciebie jest prawie wszystko.
Chyba zadziałał "głuchy telefon" :) Większość suba pierwszy raz widzę na oczy. Za leniwy jestem na tak długie nazwy zmiennych i jeszcze po obcemu :)
Znowu mnie nie rozumiesz. To jest Twój sub toczenie zewnętrzne

Kod: Zaznacz cały

#<sr_pocz> = #1 (=60 Srednica poczakowa) 
#<sr_koncowa> = #2 (=40 Srednica końcowa) 
#<dobieranie> = #3 (=2 dobieranie) 
#<poczatek> = #4 (=0 początek) 
#<koniec> = #5 (=-40 koniec) 
#<posuw> = #6 (=50 posuw) 
#<woda> = #7 (=1 <> chłodzenie) 
#<fazka> = #8 (=1 <> fazka) 
#<podciecie> = #9 (=1 <> podciecie) 
#<szlif> =#10 (=0 <> naddatek na szlif) 
#<korekta> = #11 (=0 <> korekta)
A dla mnie idealnie by było :

Kod: Zaznacz cały

#<sr_pocz> = #1 (=60 Srednica poczakowa) 
#<sr_koncowa> = #2 (=40 Srednica końcowa) 
#<dobieranie> = #3 (=2 dobieranie) 
#<poczatek> = #4 (=0 początek) 
#<koniec> = #5 (=-40 koniec) 
#<posuw> = #6 (=50 posuw) 
#<final> = #7 (=1 0.2 ostatni przejazd) 
#<fazka> = #8 (=1 <> fazka) 
#<podciecie> = #9 (=1 <> podciecie) 
W bonusie mogło by się znajdować :)

Kod: Zaznacz cały

#<odjazd_x> =#10 (=2 Odjazd od mat os X)
#<odjazd_z> =#11 (=1 Odjazd od mat os Z)
Amen

Nic więcej do szczęścia nie potrzebuję :)

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „LinuxCNC (dawniej EMC2)”