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

#231

Post napisał: senio » 21 lut 2022, 01:15

@jarucki

Myślałem nad takim subem i to jest do zrobienia, ale potrzeba kawałek programisty. Znasz takiego ? :). Tu jest baza pod fanuca i nawet G-kod. Jak nad nim posiedzisz to się wczyta. Możesz się wzorować, napisać i oczywiście suba udostępnić jak ogarniesz.

https://www.practicalmachinist.com/vb/c ... le-376081/



Tagi:


kris79
Specjalista poziom 1 (min. 100)
Specjalista poziom 1 (min. 100)
Posty w temacie: 2
Posty: 208
Rejestracja: 22 lis 2006, 20:12
Lokalizacja: Poznań

Re: Suby ngcgui

#232

Post napisał: kris79 » 25 mar 2022, 18:27

Witam.
Chcialem sobie napisać subik do szlifowania na szlifierce do płaszczyzn ale napotkałem problem.
Przy próbie wykonania tego suba zawiesza mi aplikację.
po usunięciu linii #<kierunek> = 0 i #<kierunek> = 1 program działa ale wtedy wchodzi tylko w jednego ifa, a chciałbym żeby raz wchodził w jednego a w nastepnej iteracji w drugiego żeby szlifowanie odbywało się raz od operatora do tyłu, a po obniżeniu zetki od tyłu do operatora. Wie ktoś może gdzie leży problem i dlaczego się zawiesza?

Kod: Zaznacz cały

( ------------------------------ )
(       PRZEJAZD I PLANOWANIE    )
( ------------------------------ )
( KW                             )
( Time-stamp: <2022-03-25 17:09> )
( ------------------------------ )

(info: Przejazd)
o<przejazd> sub

#<X0> = #1 (=0 X początkowy)
#<X1> = #2 (=10 X końcowy)
#<Y0> = #3 (=0 Y początkowy)
#<Y1> = #4 (=10 Y końcowy)
#<glebokosc> = #5  (=0.05 głębokość)
#<glebokosc_poczatkowa> = #6  (=0 głębokość początkowa )
#<skok> = #7 (=0.01 skok)
#<predkosc_bok> = #8 (=1000 prędkość bok)
#<predkosc_dol> = #9 (=1000 prędkość dół)
#<kopanie_szybkie> = #10 (=0 <> szybki wjazd)
#<szlifowanie_dwustronne> = #11 (=1 szlifowanie w dwie strony)
#<woda> = #12 (=1 <> chłodzenie)
#<frez> = #13   (=20 sciernica)
#<planowanie> = #14 (=1 planowanie powierzchni)
#<nachodzenie> = #15 (=15 zachodzenie sciernicy w mm)
#<kierunek> = #16 (=1 <> kierunek)

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

g17 g21 g61
g0 z5
g0 x#<X0> y#<Y0>
m3 s1
o1 if [#<woda> eq 1]
m8
o1 endif

#<przyrost> = [#<frez> - #<nachodzenie>]
#<x_pocz> = #<X0>
#<x_kon> = #<X1>
#<y_pocz> = #<Y0>
#<y_kon> = #<Y1>

#<glebokosc> = [#<glebokosc> * -1] ( koncowy Z )
#<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 z[#<glebokosc>]
     o115 else
       G0 z[#<akt_glebokosc> + #<skok> + 1]
       G1 z[#<akt_glebokosc>] f[#<predkosc_dol>]
     o115 endif
	 
	 o116 if[#<planowanie>]
	     o118 if[#<szlifowanie_dwustronne>] (szlifowanie od y zera do y koncowego i spowrotem)
		 #<kierunek_szlifu> = #<kierunek>
		 o140 if[#<kierunek_szlifu>]
		 	#<y_pocz> = #<Y0>
                        G1 y#<y_pocz> F#<predkosc_bok> 
			G1 x#<x_kon> F#<predkosc_bok> 
			G1 x#<x_pocz> F#<predkosc_bok>
			o150 while [#<y_pocz> LT #<Y1>]
				#<y_pocz> = [#<y_pocz> + #<przyrost>]
				o160 if [#<y_pocz> GT #<Y1>]
					#<y_pocz> = #<Y1>>
				o160 endif
	
				(frezowanie)
	                        G1 y#<y_pocz> F#<predkosc_bok> 
				G1 x#<x_kon> F#<predkosc_bok>            
				(powrot)
				G1 x#<x_pocz> F#<predkosc_bok> 
			o150 endwhile
		 	G0 x#<X0> y#<Y0>
			#<kierunek> = 0	
		 o140 else
			#<y_kon> = #<Y1>
			G1 y#<y_kon> F#<predkosc_bok> 
			G1 x#<x_kon> F#<predkosc_bok> 
			G1 x#<x_pocz> F#<predkosc_bok>
			o151 while [#<y_kon> GT #<Y0>]
				#<y_kon> = [#<y_kon> - #<przyrost>]
				o161 if [#<y_kon> LT #<y_pocz>]
					#<y_kon> = #<y_pocz>
				o161 endif
	
				(szlifowanie)
	                        G1 y#<y_kon> F#<predkosc_bok> 
				G1 x#<x_kon> F#<predkosc_bok>            
				(powrot)
				G1 x#<x_pocz> F#<predkosc_bok> 
			o151 endwhile
		 	G0 x#<X0> y#<Y1>
			#<kierunek> = 1		
		 o140 endif	
		 
             o118 else (szlifowanie od y zera do y koncowego)
		#<y_pocz> = #<Y0>
		 G1 x#<x_kon> F#<predkosc_bok> 
		 G1 x#<x_pocz> F#<predkosc_bok>
		 o121 while [#<y_pocz> LT #<y_kon>]
			#<y_pocz> = [#<y_pocz> + #<przyrost>]
			o122 if [#<y_pocz> GT #<y_kon>]
				#<y_pocz> = #<y_kon>
			o122 endif

			(szlifowanie)
                        G1 y#<y_pocz>
			G1 x#<x_kon> F#<predkosc_bok>            
			(powrot)
			G1 x#<x_pocz> F#<predkosc_bok> 
		 o121 endwhile
		 G0 x#<X0> y#<Y0>
             o118 endif
	o116 else
		G1 x#<X1> y#<Y1> F#<predkosc_bok> ( przejazd )
		(sprawdzam czy to szlifowanie w dwie strony)
		o120 if[#<szlifowanie_dwustronne>]
		  G1 x#<X0> y#<Y0> F#<predkosc_bok> ( przejazd w druga strone)
		o120 else
		(sprawdzam czy to koncowa glebokosc czy wracac)
		o130 if[#<akt_glebokosc> GT #<glebokosc>]
		  G0 z[#<glebokosc_poczatkowa> + 2]
		  G0 x#<X0> y#<Y0>
		o130 endif
	o116 endif
o100 endwhile

o<przejazd> endsub



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

Re: Suby ngcgui

#233

Post napisał: kamar » 02 paź 2022, 07:04

kris79 pisze:
25 mar 2022, 18:27
Chcialem sobie napisać subik do szlifowania na szlifierce do płaszczyzn ale napotkałem problem.
Pewnie już dawno nieaktualne ( jakoś mi umknęło :)) ale gdyby ktoś potrzebował .

Obrazek Obrazek

Kod: Zaznacz cały

( ------------------------------ )
(           szlifowanie          )
( ------------------------------ )
( Kamar                          )
( Time-stamp: <2018-04-06 14:00> )
( ------------------------------ )

(info: Przejazd)
o<szlif> sub


#<X0> = #1 (=0 przejazd początek)
#<X1> = #2 (=-100  - / -   koniec )
#<Y0> = #3 (=0 Y początkowy)
#<Y1> = #4 (=-40 Y końcowy)
#<Z0> = #5 ( Z początkowy)
#<Z1> = #6 (=10 Z końcowy)
#<dob_Y> = #7 (=5 dobieranie Y)
#<dob_Z> = #8 (=0.01 dobieranie Z)
#<predkosc> = #9 (=9000 prędkość stołu)
#<zabielanie> = #10 (=1 <> zabielanie)
#<x_diament> = #11    (=20 X diamentu)
#<y_diament> = #12    (=20 Y diamentu)
#<ofset> = #13    (=0.05  offset diamentu)
#<koniec> = #14  (=1 wyiskrzanie)
#<w_z> = #15 (=25 wyjazd Z)
#<w_x> = #16 (=0 wyjazd X)
#<w_y> = #17 (=0 wyjazd Y)
( ------------------------------ )
( ------------------------------ )

o20 if [#<w_z> lt #<Z0> ]
(msg, KOLIZJA ! zły wyjazd)
M30
m6 t1
g43
o20 endif
G0 G17 G40 G49 G80 G90
g21 g61 

g0 z[#<Z0> + 2]
g0 x#<X0> y#<Y0>
m3 s100

#<bylo_zabielanie> = 0
#<wysokosc_zabielania> = 0.01

  (najpierw Z)
  #<akt_glebokosc> = #<Z0> (aktualny Z)
  G0 X#<X0>
   
  o300 while [#<akt_glebokosc> GT #<Z1>]
    #<akt_glebokosc> = [#<akt_glebokosc> - #<dob_Z>] ( ustalenie glebokosci )
    ( jezeli nizej limitu to jade max )
    o310 if [#<akt_glebokosc> LT #<Z1>] 
      #<akt_glebokosc> = #<Z1>
    o310 endif

    ( zabielanie )
    o1000 if [#<zabielanie> EQ 1 AND #<bylo_zabielanie> EQ 0 AND [#<akt_glebokosc> - #<Z1>] LT #<wysokosc_zabielania>]
      #<bylo_zabielanie> = 1
      G0 Z[#<akt_glebokosc> + 2]
      
      G0 X#<x_diament> Y#<y_diament>
        
      G0 Z#<ofset>
      G1 Z[#<ofset>-0.05] f400
       G1 Y[#<y_diament> +30] f400
       g1 y#<y_diament>
      
      g92 z#<ofset>
   g92.1

      G0 Z[#<akt_glebokosc>+2]
      G0 X#<X0>  Y#<Y0>
    G1 Z#<akt_glebokosc>
    o1000 endif

    G0 z[#<akt_glebokosc>] 
	  (... przejazd po Y)
	  #<akt_Y> = #<Y0> ( aktualny Y )

    o320 if [#<Y0> LT #<Y1>]
	    (Y w górę)
      o330 while [#<akt_Y> LT #<Y1>]
        #<akt_Y> = [#<akt_Y> + #<dob_Y>] ( ustalenie Y )
        ( jezeli wyżej limitu to jade max )
	      o335 if [#<akt_Y> GT #<Y1>] 
     	    #<akt_Y> = #<Y1>
	      o335 endif
	   
	      G0 Y#<akt_Y>
        G1 x#<X1> F#<predkosc> ( przejazd )
        G0 X#<X0>
      o330 endwhile

    o320 else
      (Y w dół)
      #<akt_Y> = [#<akt_Y> + #<dob_Y>]
      o340 while [#<akt_Y> GT #<Y1>]
   	    #<akt_Y> = [#<akt_Y> - #<dob_Y>] ( ustalenie Y )
        ( jezeli nizej limitu to jade max )
     	  o345 if [#<akt_Y> LT #<Y1>] 
     	    #<akt_Y> = #<Y1>
        o345 endif

  	    G0 Y[#<akt_Y>]
        G1 x#<X1> F#<predkosc> ( przejazd )
        G0 X#<X0>   
      o340 endwhile

    o320 endif
  o300 endwhile

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



o<szlif> endsub
Uwaga. Żeby korzystać z zabielania tarczy trzeba dodatkowo konfigurować na danej szlifierce.
Bezpieczniej nie używać :)


IMPULS3
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 33
Posty: 7549
Rejestracja: 25 gru 2010, 21:55
Lokalizacja: LUBELSKIE

Re: Suby ngcgui

#234

Post napisał: IMPULS3 » 06 paź 2022, 15:29

Aktualizacja suba (jak przystało na profesjonalną firme informatyczna :) )do ciecia z fazowaniem teraz z możliwoscią dowolnego ustawienia poczatku osi Z.

Kod: Zaznacz cały

o<ciecie_z_faza> sub

#<sr_pocz> = #1 (=60 Średnica początkowa)
#<sr_koncowa> = #2 (=30 srednica koncowa)
#<z_pocz> = #3 (=0 Z początkowe)
#<szerokosc_fazy> = #4 (=2 Szerokość fazy)
#<posuw> = #5 (=21 Posuw)
#<pozycja koncowa Z> = #6 (=0 pozycja koncowa Z)
#<pauza> = #7  (=0 pauza)
#<narzedzie> =#8 (=1 narzedzie)

g61
#8=1
 
g0 x[#1+3]
z#3
g1 f90 x#1
g1 f#5 x[#1-#4*2]
g0 x[#1+0.3]
z[#4+#3]            (szerokosc fazy)
g1 x#1 
x[#1-#4*2] z#3     (glebokosc fazy)
g0 x[#1+0.3]
z-[#4-#3]       (szerokosc fazy)
g1 x#1
z#3 x[#1-#4*2]     (glebokosc fazy)
x#2            (glebokosc ciecia)
g4 p#7
g1 f900 x#1
g0 x[#1+10]
z#6            (przesuniecie osi z)

o<ciecie_z_faza> endsub


kris79
Specjalista poziom 1 (min. 100)
Specjalista poziom 1 (min. 100)
Posty w temacie: 2
Posty: 208
Rejestracja: 22 lis 2006, 20:12
Lokalizacja: Poznań

Re: Suby ngcgui

#235

Post napisał: kris79 » 15 paź 2022, 14:24

Dzięki. Już sobie poradziłem. Ale twój sobie też fajny, może go zaadoptuje do mojej nua 25 :)


tristar0
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 17
Posty: 2847
Rejestracja: 21 sty 2020, 17:48
Lokalizacja: Toruń miasto Tadeusza R

Re: Suby ngcgui

#236

Post napisał: tristar0 » 15 paź 2022, 18:10

robił ktoś suba na robienie kwadratu z wałka
Mam wyrypane na wszelkiej maści proroków ,mędrców i wszystkich którzy stawiają się ponad innymi ,i tak ich zjedzą robaki


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

Re: Suby ngcgui

#237

Post napisał: kamar » 15 paź 2022, 20:03

Jak to jest kwadrat to ja baletnica :)
A robienie tak tego czegoś to szczyt głupoty.


tristar0
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 17
Posty: 2847
Rejestracja: 21 sty 2020, 17:48
Lokalizacja: Toruń miasto Tadeusza R

Re: Suby ngcgui

#238

Post napisał: tristar0 » 15 paź 2022, 20:08

kamar pisze:A robienie tak tego czegoś to szczyt głupoty.
ty to zaraz z grubej rury przeglądam sobie takie różności i pytam ?

Dodane 2 minuty 4 sekundy:
czy jest możliwość zrobienia kwadratu w taki sposób np do śrub imaka żeby tego nie frezować w podzielnicy .
Mam wyrypane na wszelkiej maści proroków ,mędrców i wszystkich którzy stawiają się ponad innymi ,i tak ich zjedzą robaki


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

Re: Suby ngcgui

#239

Post napisał: kamar » 15 paź 2022, 21:27

tristar0 pisze:
15 paź 2022, 20:08
czy jest możliwość
Możliwe jest ale głupota :)
Prawie taka sama jak frezowanie w podzielnicy na CNC :)

Awatar użytkownika

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

Re: Suby ngcgui

#240

Post napisał: tuxcnc » 15 paź 2022, 21:59

tristar0 pisze:
15 paź 2022, 20:08
czy jest możliwość zrobienia kwadratu w taki sposób np do śrub imaka żeby tego nie frezować w podzielnicy .
Nie.
Trochę twardszy materiał i pęknie nóż.
Natomiast patent jest dobry do toczenia mimośrodów, ale też bez przesady.

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „LinuxCNC (dawniej EMC2)”