Suby NGCGUI nie działają

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

Autor tematu
Segitarius
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 9
Posty: 390
Rejestracja: 15 lut 2011, 19:07
Lokalizacja: Zielona Góra

#11

Post napisał: Segitarius » 27 maja 2014, 19:58

Dziękuję kolego Miki. Już nie pierwszy raz mi pomagasz i już jakoś to moje Linuxowanie zaczyna wyglądać. Zaczynam coraz wiecej z tego rozumieć.

Czytałem, że w którymś wątku (przez google nie znalazłem który to ) ktoś wrzucił kilka ciekawych subów, właśnie do popularnych zadań. Typu wiercenie otworow na okregu, kieszen itp. Czy każdy sub musi mieć rozszerzenie ngc? Mam sporo tych oryginalnych ngc. Ale nic mi z tego nie chodzi. Parametry mogę wpisać ale co mi z tego skoro mi to makro nawet kodu nie wygeneruje. Fajny jest jeden z tych oryginalnych ngc gdzie podajesz x,y poczatku rowka x,y końca, szerokość i jednym kliknięciem robi rowek. Ale ten ciul też nie śmiga :/



Tagi:


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

#12

Post napisał: kamar » 27 maja 2014, 21:16

Co chcesz z tej listy ? Ja na nich robie , gwarancji nie daje :)

Obrazek

Awatar użytkownika

Autor tematu
Segitarius
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 9
Posty: 390
Rejestracja: 15 lut 2011, 19:07
Lokalizacja: Zielona Góra

#13

Post napisał: Segitarius » 27 maja 2014, 21:19

Frezowanie po obwodzie i otwory na okregu poproszę :)


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

#14

Post napisał: kamar » 27 maja 2014, 21:49

Kod: Zaznacz cały

( ------------------------------ )
(   Frezowanie po obwodzie  )
( ------------------------------ )
( Kamar                          )
( Time-stamp: <2013-07-24 12:40> )
( ------------------------------ )

o<frezowanie_po_obwodzie> sub

#<obr> = #1 (=1500 obroty)
#<liczba_operacji> = #2 (=20 liczba operacji)
#<kat> = #3 (=-17 kąt)
#<predkosc> = #4 (=100 prędkość)
#<a_poczatkowe> = #5 (=0 A początkowe)
#<xpocz> = #6 (=0 X poczatkowy)
#<xkonc> = #7 (=57 X końcowy)
#<ypocz> = #8 (=0 Y początkowy)
#<ykonc> = #9 (=0 Y końcowy)
#<glebokosc> = #10 (=-2 głębokość)
#<skok> = #11 (=0.5 skok)
#<zpocz> = #12 (=0 Z początkowy)
#<woda> = #13 (=1 <> chłodzenie)
#<w_z> = #14 (wyjazd Z)
#<w_x> = #15 (wyjazd X)
#<w_y> = #16 (wyjazd Y)

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

#<operacja> = 0
g0 z5
g0 x#<xpocz> y#<ypocz>

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

o100 while [#<operacja> lt #<liczba_operacji>]
  g0 a[#<a_poczatkowe> + [#<operacja> * #<kat>]]
	
( --- tu operacja --- )

#<akt_z> = #<zpocz>
o200 while [#<akt_z> gt #<glebokosc>]
  #<akt_z> = [#<akt_z> - #<skok>]
	o210 if [#<akt_z> lt #<glebokosc>]
	  #<akt_z> = #<glebokosc>
	o210 endif

  g0 z#<akt_z>
	g1 x#<xkonc> y#<ykonc> f#<predkosc>          
  g0 z5
  g0 x#<xpocz> y#<ypocz>
	
o200 endwhile

( --- koniec operacji --- )

  #<operacja> = [#<operacja> + 1]
o100 endwhile

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

o<frezowanie_po_obwodzie> endsub


[ Dodano: 2014-05-27, 21:51 ]

Kod: Zaznacz cały

( ------------------------------ )
(  O T W O R Y  P O  O K R E G U )
( ------------------------------ )
( Kamar                          )
( Time-stamp: <2013-08-09 13:59> )
( ------------------------------ )
(          USTAWIENIA            )
( ------------------------------ )

(info: Wycinanie otworów po okręgu)
o<otwory_po_okregu> sub

#<obr> = #1 (=1500 obroty)
#<frez> = #2 (=6 frez)
#<sr_otworu> = #3 (=6 średnica otworu)
#<srednica> = #4 (=100 średnica podziału)
#<il_otworow> = #5 (=5 ilosc otworow )
#<kat_poczatkowy> = #6 (=0 kąt początkowy)
#<glebokosc> = #7 (=-10 glebokosc )
#<skok> = #8 (=2 skok)
#<wyjazd> = #9 (=5 wyjazd)
#<predkosc_bok> = #10 (=60 prędkość bok)
#<predkosc_dol> = #11 (=30 prędkosć dół)
#<glebokosc_lba> = #12 (=0 głębokość łba)
#<srednica_lba> = #13 (=0 średnica łba)
#<woda> = #14 (=1 <> chłodzenie)
#<pompowanie> = #15 (=2 pompowanie)
#<wyjazd_wiertla> = #16 (=2 wyjazd wiertła)
#<w_z> = #17 (wyjazd Z)
#<w_x> = #18 (wyjazd X)
#<w_y> = #19 (wyjazd Y)
( ------------------------------ )


#<promien> = [#<srednica> / 2] ( promien )
#<kat> = [360 / #<il_otworow>] ( kat )
#<akt_otwor> = 0 ( aktualny otwor - od 0)
#<przesuniecie> = [[#<sr_otworu > / 2] - [#<frez> / 2]]
#<przesuniecie_lba> = [[#<srednica_lba> / 2] - [#<frez> / 2]]

( ustawiam pozycję startowa )
( G0 X#<promien> Y0 Z#<wyjazd> )

o100 while [#<akt_otwor> LT #<il_otworow>]

#<akt_kat> = [[#<akt_otwor> * #<kat>] + #<kat_poczatkowy>] ( kat * otwor )
#<poz_x> = [COS[#<akt_kat>] * #<promien>] ( X to RcosA )
#<poz_y> = [SIN[#<akt_kat>] * #<promien>] ( Y to RsinA )

g17 G21 G61

G0 Z#<wyjazd>
G0 X#<poz_x> Y#<poz_y> ( ustawiam pozycje )
g0 z1

( ------------------------------ )
(           OPERACJA             )
( ------------------------------ )
m3 s#<obr>
o1 if [#<woda> eq 1]
m8
o1 endif

o105 if [#<sr_otworu> gt #<frez>]
( frezuję )
#<akt_glebokosc> = 0
g0 z[#<akt_glebokosc>+1]
o20 while [#<akt_glebokosc> GT #<glebokosc>]
#<akt_glebokosc> = [#<akt_glebokosc> - #<skok>] ( ustalenie glebokosci )
( jezeli nizej limitu to jade max )
o30 if [#<akt_glebokosc> LT #<glebokosc>] 
#<akt_glebokosc> = #<glebokosc>
o30 endif

g0 x[#<poz_x>] y[#<poz_y> + #<przesuniecie>] 
g1 z[#<akt_glebokosc>] F#<predkosc_dol>
g2 x[#<poz_x>] y[[#<poz_y> + #<przesuniecie>]] i0 j[#<przesuniecie> * -1] F#<predkosc_bok>
(g0 y[#<poz_y>])
o20 endwhile

o105 else

G83 X#<poz_x> Y#<poz_y> Z#<glebokosc> R#<wyjazd_wiertla> Q#<pompowanie> F#<predkosc_dol>

o105 endif

G0 Z#<wyjazd>


( wybieram leb )
#<akt_glebokosc_lba> = 0
o110 if [#<glebokosc_lba> LT 0]
     #<akt_glebokosc_lba> = 0
     g0 z0
     o120 while [#<akt_glebokosc_lba> GT #<glebokosc_lba>]
     	  #<akt_glebokosc_lba> = [#<akt_glebokosc_lba> - #<skok>] ( ustalenie glebokosci )
	  ( jezeli nizej limitu to jade max )
     	  o130 if [#<akt_glebokosc_lba> LT #<glebokosc_lba>] 
     	       #<akt_glebokosc_lba> = #<glebokosc_lba>
     	  o130 endif
     	  g0 x[#<poz_x>] y[#<poz_y> + #<przesuniecie_lba>] F#<predkosc_bok>
				g1 z#<akt_glebokosc_lba> F#<predkosc_dol>
     	  g2 x[#<poz_x>] y[[#<poz_y> + #<przesuniecie_lba>]] i0 j[#<przesuniecie_lba> * -1] F#<predkosc_bok>
     	  (g0 y[#<poz_y>]	 )
     o120 endwhile
(     g0 y[#<poz_y>])
     g0 z#<wyjazd>
o110 endif

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

#<akt_otwor> = [#<akt_otwor> + 1] ( nastepny otwor )


o100 endwhile

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

o<otwory_po_okregu> endsub

Awatar użytkownika

Autor tematu
Segitarius
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 9
Posty: 390
Rejestracja: 15 lut 2011, 19:07
Lokalizacja: Zielona Góra

#15

Post napisał: Segitarius » 27 maja 2014, 21:54

Dziękuję uprzejmie :)

Awatar użytkownika

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

#16

Post napisał: MlKl » 28 maja 2014, 11:03

Wersja ósemki ciut rozbudowana:

Kod: Zaznacz cały


; Author: Z. Maciej "Miki" Bajkowski
; time stamp: 25.05.2014 12:37

; 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] Pierwiastek kwadratowy
; TAN[arg] Tangens
; EXISTS[arg] szuka zmiennej 


(info: Ósemka crosman)

o<osemka> sub
#<sr_lufy> = #1 (=11.1 Średnica lufy)
#<sr_kartusza> = #2 (=22.4 Średnica kartusza)
#<odstep_lufa_kartusz> =#3 (=2 Odstęp między lufą a kartuszem)
#<warstwa_zewn> =#4 (=3 Grubość warstwy zewnetrznej)
#<z_pocz> =  #5 (=0 Punkt początkowy na osi Z)
#<z_koncowe> =  #6 (=-11 Punkt końcowy na osi Z)
#<przybranie_materialu> =  #7 (=0.5 Przybranie)
#<odjazd_z> =#8 (=0.25 odjazd od mat. w osi Z)
#<posuw> =  #9 (=100 Posuw roboczy)
#<posuw_koncowy> =  #10 (=80 Posuw kończący)
#<woda> = #11 (=1 <> Chłodziwo)
#<g5x> = #12 (=54 Układ odniesienia G5x)
#<m> = #13 (=0 <> lewe obroty)
#<rpm> = #14 (=720 obroty)
#<max_rpm> = #15 (=1500 obroty maksymalne)
#<z_safe> = #16 (=1 Bezpieczne Z)
#<toolno> = #17 (=6 frez)
#<pomijaj_lufe> = #18 (=0 <> Pomijaj lufe)
#<pomijaj_kartusz> = #19 (=0 <> Pomijaj kartusz)


#<tooldiam>   =  [#5410]

g17 (xy plane)
g21 (mm)
g40 (cancel cutter radius compensation)
g49 (cancel tool lengthoffset)
g90 (absolute distance mode)
g94 (units/min feedrate)
g54 (Coordinate system 1 default)
#<tol>  = 0.001

      ;g64 p#<tol> (path control stop)
      g64 (wyłączona kontrola tolerancji, zakręty ścinane)
      ;g61 (dokładna jazda od punktu do punktu)
(ngcgui: Wywołaj plik procedury: /home/miki/linuxcnc-dev/nc_files/ngcgui_lib/helix.ngc)
(ngcgui: positional parameters:)
(         #1 =       toolno =            1)
(         #2 =          rpm =          720)
(         #3 =     feedrate =           10)
(         #4 =          dir =            3)
(         #5 =       inside =            1)
(         #6 =     cutdepth =            2)
(         #7 =        zincr =            1)
(         #8 =        zsafe =          0.5)
(         #9 =            x =           20)
(        #10 =            y =            0)
(        #11 =        hdiam =           11)
(        #12 =    faceangle =            0)
(        #13 =      d_angle =            0)
(        #14 =       zstart =            0)
(        #15 =  spin_notify =            0)
(        #16 =      use_g43 =            1)
(        #17 =    h_for_g43 =            0)
(        #18 =      verbose =            0)

#<x> =[[[#<sr_lufy>+#<sr_kartusza>]/2]+#<odstep_lufa_kartusz>]
o200 if [#<pomijaj_lufe> eq 0] 

o<helix> call [#<toolno>][#<rpm>][#<posuw>][2][1][abs[#<z_koncowe>]][#<przybranie_materialu>][#<z_safe>][0][0][#<sr_lufy>][0][0][#<z_pocz>][0][1][0][0]
o200 endif

o205 if [#<pomijaj_kartusz> eq 0] 
o<helix> call [#<toolno>][#<rpm>][#<posuw>][2][1][abs[#<z_koncowe>]][#<przybranie_materialu>][#<z_safe>][#<x>][0][#<sr_kartusza>][0][0][#<z_pocz>][0][1][0][0]
o205 endif
g41 d#<toolno> g0 x-2 y[#<sr_lufy>/2+#<warstwa_zewn>+#<tooldiam>]
g0 z#<z_pocz>

#<i>=0

o<2000> while [#<i> gt #<z_koncowe>]




g1 x[#<x>-2] y[#<sr_kartusza>/2+#<warstwa_zewn>] z[#<i>-#<przybranie_materialu>/4] f#<posuw>
g2 x[#<x>+#<sr_kartusza>/2+#<warstwa_zewn>] y0 z[#<i>-#<przybranie_materialu>/8*3] r[#<sr_kartusza>/2+#<warstwa_zewn>-0.4]
g2 x[#<x>-2] y-[#<sr_kartusza>/2+#<warstwa_zewn>] z[#<i>-#<przybranie_materialu>/2] r[#<sr_kartusza>/2+#<warstwa_zewn>-0.4]
g1 x-2 y-[#<sr_lufy>/2+#<warstwa_zewn>] z[#<i>-#<przybranie_materialu>/4*3]
g2 x-2 y[#<sr_lufy>/2+#<warstwa_zewn>] z[#<i>-#<przybranie_materialu>] r[#<sr_lufy>/2+#<warstwa_zewn>+0.4]
#<i>=[#<i>-#<przybranie_materialu>]

o<2000> endwhile
 g40
o<osemka> endsub
Do skończenia jej jeszcze daleko, ale już robi to, co potrzebowałem.

Kod: Zaznacz cały


( ------------------------------ )
(           Wiercenie            )
( ------------------------------ )
( Miki                          )
( Time-stamp: <09-09-2013 17:31> )
( ------------------------------ )

(info: Wiercenie )
; Author: Z. Maciej "Miki" Bajkowski
; time stamp: 03.02.2013 21:37
; 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] Pierwiastek kwadratowy
; TAN[arg] Tangens
; EXISTS[arg] szuka zmiennej 
o<wiercenie> sub

#<x_pocz> = #1 (=0 początek X)
#<y_pocz> = #2 (=0 początek Y)
#<z_pocz> = #3 (=0 początek Z)
#<glebokosc> = #4 (=10  glebokosc)
#<skok> = #5 (=2 skok)
#<ilosc_rzedow> = #6 (=1 ilosc rzedow)
#<ilosc_otworow> = #7 (=1 ilosc otworow)
#<szybkosc_posuwu> = #8 (=50 Posuw)
#<odstep_x> = #9 (=10 odstep X)
#<odstep_y> =#10 (=10 odstep Y)
#<odjazd_z> =#11 (=4 odjazd Z)


g8
m3 s1






#<ilosc_otworow_1>=#<ilosc_otworow>
#<ilosc_rzedow_1>=#<ilosc_rzedow>
o200 while [#<ilosc_rzedow_1> gt 0]

o110 while [#<ilosc_otworow_1> gt 0] 

#<akt_glebokosc>=0

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

g0 x[[#<x_pocz>]+[#<odstep_x>*#<ilosc_otworow_1>]-#<odstep_x>+0.1] y[[#<y_pocz>]+[#<odstep_y>*#<ilosc_rzedow_1>]-#<odstep_y>]
x[[#<x_pocz>]+[#<odstep_x>*#<ilosc_otworow_1>]-#<odstep_x>]
o100 while [#<akt_glebokosc> lt #<glebokosc>]


o5 if [[#<glebokosc>-#<akt_glebokosc>]gt #<skok>]
#<akt_glebokosc>=[#<akt_glebokosc>+#<skok>]
o5 else
#<akt_glebokosc> = #<glebokosc>
o5 endif

   g0 z[#<z_pocz>-#<akt_glebokosc>+#<skok>+0.1]
   g1 z[#<z_pocz>-[#<akt_glebokosc>]] f#<szybkosc_posuwu>
   g0 z[#<z_pocz>+#<odjazd_z>]




o100 endwhile

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

#<ilosc_otworow_1>=[#<ilosc_otworow_1>-1]

o1 if [#<ilosc_otworow_1> eq 0]
#<ilosc_rzedow_1>=[#<ilosc_rzedow_1>-1]

o1 endif


o2 if [#<ilosc_rzedow_1> eq 0]
#<ilosc_otworow>=0
o2 endif
o110 endwhile
#<ilosc_otworow_1>=#<ilosc_otworow>
o200 endwhile
o<wiercenie> endsub


Awatar użytkownika

Autor tematu
Segitarius
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 9
Posty: 390
Rejestracja: 15 lut 2011, 19:07
Lokalizacja: Zielona Góra

#17

Post napisał: Segitarius » 28 maja 2014, 11:13

Dziękuję :) za chwilę wypróbuje. Na nowo kalibruję sobie właśnie sterownik(może tam mam błędy)

Nawet na zdrowie mi to wyszło bo doszedłem do kilku nowych rzeczy. Inaczej przy okazji skonfigurowałem silniki i teraz fruwają bez żadnych rezonansów :P Normalnie z silnika krokowego zrobiłem kosiarkę :P

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „LinuxCNC (dawniej EMC2)”