Suby ngcgui

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

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

Re: Suby ngcgui

#181

Post napisał: senio » 26 sty 2020, 15:13

kamar pisze:
26 sty 2020, 14:37
Nie widzę nic coby się mogło przydać. Dopisz pętle podziału do tego wyżej i będzie.
Próbowałem coś wczoraj posklejać parę godzin ale poległem jak Andzia w bratkach :). To nie moja bajka.



Tagi:


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

Re: Suby ngcgui

#182

Post napisał: szary11 » 29 sty 2020, 19:50

Troszkę przerobiony sub skanowania/próbkowania materiału, może komuś się przyda,
w orginale jest dla trzech osi, ale u mnie działa i na tokarce :

Kod: Zaznacz cały

( Rectangular area probe )
( adapted for ngcgui-compatibility from smartprobe.ngc written by Chris Radek )
( This program repeatedly probes a regular XY grid and writes the )
( probed locations to the file 'probe_result.txt' in the same directory )
( as the .ini file )

( Requires a probe connected to motion.probe-input )
( or use scripts/simulate_probe )

(info: Probe a rectangular area)
o<probe> sub
      #<xmin> =  #1 (=  0.0)
      #<xmax> =  #2 (=   10.0)
 #<xinterval> =  #3 (=   0.1)
      #<ymin> =  #4 (=  0.0 nie dotykaj dla tokarki) 
      #<ymax> =  #5 (=   0.0 zostaw dla tokarki)	
 #<yinterval> =  #6 (=   1.0 nierusz dla tokarki)
     #<zsafe> =  #7 (=   1.0)
  #<zretract> =  #8 (=   2.0 wycofanie Z offset)
    #<zprobe> =  #9 (=  -10.)
#<probespeed> =  #10 (=  200)
  #<in_or_mm> = #11 (=  21 in|mm 20|21)
      #<wait> = #12 (=   1 Wait for Start)

O1 if [ [#<in_or_mm> ne 20] and [#<in_or_mm> ne 21]]
     (debug, in_or_mm invalid: #<in_or_mm> - EXITING)
     (print, in_or_mm invalid: #<in_or_mm> - EXITING)
     (AXIS,notify, probe: in_or_mm invalid - EXITING)
     m2
O1 endif

#<xsteps> = [fix [abs[#<xmax> - #<xmin>]/#<xinterval> + 1]]
#<ysteps> = [fix [abs[#<ymax> - #<ymin>]/#<yinterval> + 1]]

G#<in_or_mm>
#<points> = [#<xsteps> * #<ysteps>]

(debug, Probing #<xsteps> * #<ysteps> = #<points> points)
(LOGOPEN,probe_result.txt)
(LOG,# xmin = #<xmin> xmax = #<xmax> xinterval = #<xinterval> xsteps = #<xsteps>)
/(LOG,# ymin = #<ymin> ymax = #<ymax> yinterval = #<yinterval> ysteps = #<ysteps>)

#<yct> = 0
#<xct> = 0
G0Z#<zsafe>
F#<probespeed>

O2 while [#<yct> lt #<ysteps>]
     #<xct> = 0
/     G0 Y[#<ymin>+#<yinterval>*#<yct>]
O3   while [#<xct> lt #<xsteps>]
       #<xtarget> = 0
O4     if [[#<yct>/2] - fix[#<yct>/2] eq 0]
         #<xtarget> = [#<xmin> + #<xinterval> * #<xct>]
O4     else
         #<xtarget> = [#<xmin> + #<xinterval> * [#<xsteps> - #<xct> - 1]]
O4     endif
       #<probesuccess> = 1
O5     while [#<probesuccess> NE 0]
         G38.5 z#<zsafe>   (probe until no contact away from work, no error)
         #<probesuccess> = #5070
         G38.3 x#<xtarget> (probe until contact, toward work, no error)
         #<probesuccess> = #5070
O5     endwhile
O6     if [[#<wait> eq 1] and [[#<yct> eq 0] and [#<xct> eq 0]]]
         (debug, S to Begin Probe)
         m0 (mandatory stop)
  /       M110 (axisui.notifications-clear)
O6     endif
       G38.2Z#<zprobe> (probe until contact, toward work, with error)
		(G0z#<zsafe>)
		G91
		G0Z#<zretract>
		G90
       #<probex> = #5061
       #<probey> = #5062
       #<probez> = #5063
 /      (LOG,X#<probex> Y#<probey> Z#<probez>)  odkomentuj dla frezarki
        (LOG,X#<probex> Z#<probez>)
       #<xct> = [#<xct> + 1]
O3    endwhile
      (G0Z#<zsafe>)
      G91
      G0Z#<zretract>
      G90
      #<yct> = [#<yct> + 1]
O2 endwhile

(LOG,# Finished: total points = #<points>)
(LOGCLOSE)
(debug, Finished: see probe_result.txt)

G0Z#<zsafe>
G0X#<xmin>
/Y#<ymin>
o<probe> endsub

Awatar użytkownika

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

Re: Suby ngcgui

#183

Post napisał: senio » 05 lut 2020, 19:17

kamar pisze:
26 sty 2020, 14:37
Nie widzę nic coby się mogło przydać. Dopisz pętle podziału do tego wyżej i będzie.
Napisałem z palucha wszelkie kody i porobiłem wszystko. Na koniec również zębatki też z palucha napisałem. Ale obliczanie stopni ośki A przy dziwnych podziałach to nie jest bułka z masłem, bo te cyferki po przecinkach....... dużo tego, i łatwo się walnąć.

tokareczka-frezareczka-koleczka-wrzecio ... ml#p714196

Dzisiaj usiadłem po raz enty do Kamarowego suba i go zmodyfikowałem po swojemu. Mam nadzieje że nie będziesz Kamar zły. A jak coś, to nagłówek z niego możesz wywalić i będzie na mnie :D .Tyle że ja mam do tych akcji konfig tokarki zrobiony na ośki XYZA. Może komuś kiedyś się przyda. Do wiercenia po obwodzie kółek z suportu czy frezowania zębatek czy cokolwiek takiego. Wywaliłem obroty, trochę pozmieniałem Y, dodałem prędkość wsteczną X i wszystko co mi było potrzeba jest i działa.

Kod: Zaznacz cały

( ------------------------------ )
(      K O L A   Z E B A T E     )
( ------------------------------ )
( Kamar                          )
( Time-stamp: <2012-09-17 10:49> )
( ------------------------------ )
(info: Nacinaie koła zębatego)

o<frezowanie_tokarka> sub

#<il_zebow> = #1 (=10 Liczba zębów)
#<wjazd> = #2 (=0 Wjazd)
#<dlugosc> = #3 (=-20 Długość)
#<predkosc> = #4 (=50 Prędkość)
#<dlugosc_wstecz> = #5 (=0 Długość wstecz)
#<predkosc_wstecz> = #6 (=100 Prędkość wstecz)
#<woda> = #7 (=0  <> chłodzenie)
#<w_z> = #8 (=0 wyjazd Z)
#<w_x> = #9(=0 wyjazd X)
#<w_y> = #10 (=0 wyjazd Y)
( ------------------------------ )

#<zab> = 0
#<obrot> = [360 / #<il_zebow>]

g0 y0
g0 z0
g0 x0

o1 if [#<woda> eq 1]
m8
o1 endif

o100 while [#<zab> lt #<il_zebow>]

     g0 a[#<zab> * #<obrot>]
     g0 y#<wjazd> 
     g1 x#<dlugosc>   f[#<predkosc>]
     g1 x#<dlugosc_wstecz>   f[#<predkosc_wstecz>]
     g0 y0
    #<zab> = [#<zab> + 1]

o100 endwhile

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

o<frezowanie_tokarka> endsub


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

Re: Suby ngcgui

#184

Post napisał: kamar » 05 lut 2020, 19:22

senio pisze:
05 lut 2020, 19:17
i wszystko co mi było potrzeba jest i działa.
I o to w tym wszystkim biega :) A sub wstawiony żyje swoim życiem i bez krępacji :)


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

Re: Suby ngcgui

#185

Post napisał: kamar » 18 kwie 2020, 07:14

Witam.
Dla potrzebujących subik na frezowanie w poziomie, g-cod i akcja :)

Kod: Zaznacz cały

( ------------------------------------ )
(    P R Z E J A Z D  P O Z I O M Y    )
( ------------------------------------ )
( Kamar                                )
( Time-stamp: <2019-11-14 07:49>       )
( ------------------------------------ )

(info: Przejazd poziomy)
o<przejazd_poziomy> sub

#<obr> = #1 (=1500 obroty)
#<X0> = #2 (=0 X początkowy)
#<X1> = #3 (=0 X końcowy)
#<Z0> = #4 (=0 Z początkowy)
#<Z1> = #5 (=0 Z końcowy)
#<glebokosc> = #6  (=-10 głębokość)
#<glebokosc_poczatkowa> = #7  (=0 Y początkowe )
#<skok> = #8 (=2 skok)
#<predkosc_bok> = #9 (=100 prędkość bok)
#<predkosc_dol> = #10 (=30 prędkość w głąb)
#<kopanie_szybkie> = #11 (=0 <> szybki wjazd)
#<woda> = #12 (=1 <> chłodzenie)
#<w_z> = #13 (wyjazd Z)
#<w_x> = #14 (wyjazd X)
#<w_y> = #15 (wyjazd Y)

( ------------------------------ )
( ------------------------------ )

g17 g21 g61
g0 y5
g0 x#<X0> z#<Z0>
m3 s#<obr>
o1 if [#<woda> eq 1]
m8
o1 endif

#<skok> = ABS[#<skok>]
#<akt_glebokosc> = #<glebokosc_poczatkowa> ( aktualna glebokosc )

o100 while [#<akt_glebokosc> GT #<glebokosc>]
     #<akt_glebokosc> = [#<akt_glebokosc> - #<skok>] ( ustalenie glebokosci )

     ( jezeli nizej limitu to jade max )
     o110 if [#<akt_glebokosc> LT #<glebokosc>] 
     	  #<akt_glebokosc> = #<glebokosc>
     o110 endif

     o115 if [#<kopanie_szybkie>]
       g0 y[#<akt_glebokosc>]
     o115 else
     		   g0 y[#<akt_glebokosc> + #<skok> + 1]
       g1 y[#<akt_glebokosc>] f[#<predkosc_dol>]
     o115 endif
     G1 x#<X1> z#<Z1> F#<predkosc_bok> ( przejazd )

		 (sprawdzam czy to koncowa glebokosc czy wracac)
		 o120 if[#<akt_glebokosc> GT #<glebokosc>]
       g0 y[#<glebokosc_poczatkowa> + 4]
       g0 x#<X0> z#<Z0>
		 o120 endif
g0 y[#<glebokosc_poczatkowa> + 4]
       g0 x#<X0> z#<Z0>
o100 endwhile

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

o<przejazd_poziomy> endsub 

Awatar użytkownika

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

Re: Suby ngcgui

#186

Post napisał: senio » 18 cze 2020, 08:45

Kamar bawiłeś się takim czymś i może masz jakiegoś subika ?. Przykładowo stół magnesowy i skośna powierzchnia do szlifu. X jedzie prosto, a Z dobiera i jedzie po skosie. Tak jak na tym schemacie.

Obrazek


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

Re: Suby ngcgui

#187

Post napisał: kamar » 18 cze 2020, 10:46

Nie mam nic takiego i nie przewiduje. Sub prosty by nie był a w razie potrzeby to szybciej i wygodniej zrobię na Fusionie.

Obrazek

frez przyjąć np. 0.2, dłuższe wyjazdy i tarczą tez obrobi.

Awatar użytkownika

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

Re: Suby ngcgui

#188

Post napisał: senio » 18 cze 2020, 11:25

Wszytko jasne.


tomal4321
Stały bywalec (min. 70)
Stały bywalec (min. 70)
Posty w temacie: 2
Posty: 74
Rejestracja: 18 sty 2010, 18:33
Lokalizacja: rogi

Re: Suby ngcgui

#189

Post napisał: tomal4321 » 18 cze 2020, 11:52

Robił ktoś może Suba do planowania powieszchni?
Chodzi mi o wpisanie średnicy narzędzia, punktów startowych, powierzchni do splanowania(punkty) , zachodzenia, ilość przejść w Z. ?


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

Re: Suby ngcgui

#190

Post napisał: kamar » 18 cze 2020, 11:56

Mam cos takiego

Kod: Zaznacz cały

( ------------------------------ )
(    ZABIELENIE POWIERZCHNI      )
( ------------------------------ )
( Kamar                          )
( Time-stamp: <2019-11-14 07:48> )
( ------------------------------ )

(info: Zabielanie prostokąta )

o<powierzchnia> sub
#<obr> = #1 (=1500 obroty)
#<frez> = #2   (=8 frez)
#<x_pocz> = #3 (=20 X początkowy)
#<x_kon> = #4  (=10 X końcowy )
#<y_pocz> = #5 (=10 Y początkowy)
#<y_kon> = #6 (=20  Y końcowy )
#<glebokosc> = #7  (=-10 głębokość  )
#<glebokosc_poczatkowa> = #8 (=0 głębokość poczatkowa )
#<skok> = #9 (=2 skok)
#<predkosc_bok> = #10 (=60 prędkość bok)
#<predkosc_dol> = #11 (=40 prędkość dół)
#<pokrycie> = #12 (=1 zachodzenie w mm )
#<woda> = #13 (=1 <> chłodzenie)
#<w_z> = #14 (=5 wyjazd Z)
#<w_x> = #15 (=0 wyjazd X)
#<w_y> = #16 (=0 wyjazd Y)


( ------------------------------ )
( ------------------------------ )
#<skok> = ABS[#<skok>]
#<przyrost> = [#<frez> - #<pokrycie>]

g17 g21 g61
g0 z[#<glebokosc_poczatkowa>+1]
g0 x#<x_pocz> y#<y_pocz>


m3 s#<obr>
z[#<glebokosc_poczatkowa>+1]
o111 if [#<woda> eq 1]
  m8
o111 endif

( pion czy poziom? )
o12 if [ABS[#<x_kon> - #<x_pocz>] GE ABS[#<y_kon> - #<y_pocz>]]
  #<poziom> = 1
o12 else 
  #<poziom> = 0
o12 endif

#<akt_glebokosc> = #<glebokosc_poczatkowa> ( aktualna glebokosc )
#<x_akt> = #<x_pocz>
#<y_akt> = #<y_pocz>

o100 while [#<akt_glebokosc> GT #<glebokosc>]
  #<akt_glebokosc> = [#<akt_glebokosc> - #<skok>] ( ustalenie glebokosci )

  ( jezeli nizej limitu to jade max )
  o110 if [#<akt_glebokosc> lt #<glebokosc>]
    #<akt_glebokosc> = #<glebokosc>
  o110 endif
		 
  G1 z[#<akt_glebokosc> + #<skok>]F#<predkosc_dol> 
  G1 Z#<akt_glebokosc> F#<predkosc_dol> ( dobieranie poczatkowe )


  o500 if[#<x_pocz> LT #<x_kon>] ( powierzchnia w prawo )

    o510 if[#<poziom> eq 1] (poziomo)

      G1 y#<y_akt>
      G1 x#<x_kon> f#<predkosc_bok>

      o130 while [#<y_akt> lt #<y_kon>]
        #<y_akt> = [#<y_akt> + #<przyrost>]
        o132 if [#<y_akt> gt #<y_kon>]
          #<y_akt> = #<y_kon>
        o132 endif

        G1 y#<y_akt>				 
        G1 x#<x_pocz> f#<predkosc_bok>        

        o136 if [#<y_akt> lt #<y_kon>] (sprawdzam czy wykonywac drugą operację)
          #<y_akt> = [#<y_akt> + #<przyrost>]
          o134 if [#<y_akt> gt #<y_kon>]
            #<y_akt> = #<y_kon>
          o134 endif

          G1 y#<y_akt>
          G1 x#<x_kon> f#<predkosc_bok>
        o136 endif

      o130 endwhile

    o510 else (pionowo)

      G1 x#<x_akt>
      G1 y#<y_kon> f#<predkosc_bok>
     
      o120 while [#<x_akt> lt #<x_kon>]
        #<x_akt> = [#<x_akt> + #<przyrost>]
        o122 if [#<x_akt> gt #<x_kon>]
          #<x_akt> = #<x_kon>
        o122 endif

        G1 x#<x_akt>				 
        G1 y#<y_pocz> f#<predkosc_bok>        

        o126 if [#<x_akt> lt #<x_kon>] (sprawdzam czy wykonywać drugą operację)
          #<x_akt> = [#<x_akt> + #<przyrost>]
          o124 if [#<x_akt> gt #<x_kon>]
            #<x_akt> = #<x_kon>
          o124 endif

          G1 x#<x_akt>
          G1 y#<y_kon> f#<predkosc_bok>
        o126 endif

      o120 endwhile

    o510 endif

  o500 else ( powierzchnia w lewo )

    o520 if[#<poziom> eq 1] (poziomo)

      G1 y#<y_akt>
      G1 x#<x_kon> f#<predkosc_bok>

      o230 while [#<y_akt> lt #<y_kon>]
        #<y_akt> = [#<y_akt> + #<przyrost>]
        o232 if [#<y_akt> gt #<y_kon>]
          #<y_akt> = #<y_kon>
        o232 endif

        G1 y#<y_akt>				 
        G1 x#<x_pocz> f#<predkosc_bok>        

        o236 if [#<y_akt> lt #<y_kon>] (sprawdzam czy wykonywac drugą operację)
          #<y_akt> = [#<y_akt> + #<przyrost>]
          o234 if [#<y_akt> gt #<y_kon>]
            #<y_akt> = #<y_kon>
          o234 endif

          G1 y#<y_akt>
          G1 x#<x_kon> f#<predkosc_bok>
        o236 endif

      o230 endwhile
    

    o520 else (pionowo)
		
		
     o220 while [#<x_akt> gt #<x_kon>]

       G1 x#<x_akt>				 
       G1 y#<y_kon> f#<predkosc_bok>        

       #<x_akt> = [#<x_akt> - #<przyrost>]
       o222 if [#<x_akt> lt #<x_kon>]
         #<x_akt> = #<x_kon>
       o222 endif

       G1 x#<x_akt>				 
       G1 y#<y_pocz> f#<predkosc_bok>        

       #<x_akt> = [#<x_akt> - #<przyrost>]
       o224 if [#<x_akt> lt #<x_kon>]
         #<x_akt> = #<x_kon>
       o224 endif

       G1 x#<x_akt>
       G1 y#<y_kon> f#<predkosc_bok>

     o220 endwhile

     o520 endif

     o500 endif
     
	  G0 z[#<akt_glebokosc> + #<skok>]
	  G0 X#<x_pocz> Y#<y_pocz>
    #<x_akt> = #<x_pocz>
    #<y_akt> = #<y_pocz>

o100 endwhile

g0 z5
g0 X#<x_pocz> Y#<y_pocz>
g0 Z[#<glebokosc> + 1]

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

o<powierzchnia> endsub

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „LinuxCNC (dawniej EMC2)”