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: 101
Posty: 1473
Rejestracja: 25 maja 2006, 14:39
Lokalizacja: koło.wlkp

#11

Post napisał: senio » 21 lut 2015, 22:10

kamar pisze:działa , działa.
U mnie krzyczy że za dużo procedur i coś tam jeszcze. Na symulatorze to samo.



Tagi:


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

#12

Post napisał: kamar » 21 lut 2015, 22:20

Pewnie żle przepisałeś nazwę :) Sub musi się nazywać identycznie jak jest w ostatniej linijce

Awatar użytkownika

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

#13

Post napisał: senio » 21 lut 2015, 22:42

kamar pisze:Pewnie żle przepisałeś nazwę :) Sub musi się nazywać identycznie jak jest w ostatniej linijce
Tak, to był problem nazwy. Już działa

[ Dodano: 2015-02-22, 12:53 ]
Pomóżcie mi to ubrać w pętlę. Nie mogę sobie z tym poradzić.

G0 x20.1 z-10
G1 x20 f20
G1 z-8 f20
G1 z-10 f20
G1 x19,9 f20
G1 z-8 f20
G1 z-10 f20

etc. do średnicy 18mm co 0.1mm . Jeden przykład i załapie o co chodzi.

Awatar użytkownika

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

#14

Post napisał: MlKl » 23 lut 2015, 12:02

senio pisze: Pomóżcie mi to ubrać w pętlę. Nie mogę sobie z tym poradzić.

G0 x20.1 z-10
G1 x20 f20
G1 z-8 f20
G1 z-10 f20
G1 x19,9 f20
G1 z-8 f20
G1 z-10 f20

etc. do średnicy 18mm co 0.1mm . Jeden przykład i załapie o co chodzi.

Kod: Zaznacz cały

( ------------------------------ )
( czop )
( ------------------------------ )
( Z. Maciej Miki Bajkowski)

( Time-stamp: <2012-04-14 00:39> )

(info: Czop )

o<czop> sub

( ------------------------------ )
( Zmienne do tabelki )
( ------------------------------ )

(wszystkie wartosci w milimetrach)
#<srednica_surowego_walka> = #1 (=23 Średnica surowego wałka)
#<dlugosc_detalu> = #2 (=15  Długość gotowego detalu)
#<srednica_walka> = #3 (=22 Średnica gotowego detalu)
#<srednica_czopu> = #4 (=19 Średnica czopu)
#<dlugosc_czopu> = #5 (=10 Długość czopu)
#<glebokosc_fazki_czopu> = #6 (=1 Głębokość fazki czopu)
#<szerokosc_fazki_czopu> = #7 (=1 Szerokość fazki czopu, zero wyłącza)
#<promien_fazki_czopu> = #8 (=0 Promień fazki czopu, zero wyłącza)
#<glebokosc_fazki_walka> = #9 (=0 Głebokość fazki wałka)
#<szerokosc_fazki_walka> = #10 (=0 Szerokość fazki wałka, zero wyłącza)
#<promien_fazki_walka> = #11 (=0 Promień fazki wałka, zero wyłącza)
#<planowanie_czola> =#12 (=0 O ile mm splanować czoło, zero wyłącza)
#<poczatek_z>=#13 (=0 Początek na osi Z)
#<szybkosc_posuwu> = #14 (=120 Posuw) 
#<obroty_wrzeciona> = #15 (=1000 Obroty)
#<przybranie_materialu> = #16 (=0.3  Przybranie)
#<odjazd_z> =#17 (=2 odjazd od materiału w osi Z)
(koniec zmiennych) 


#<baza_x> = [#<srednica_walka> + 2]   (tu zjedzie w osi x noz po pracy, ustawić tyle, by można swobodnie zmierzyć, czy wyjąć materiał)
#<srednica_walka_do_fazki> = #<srednica_walka> (zmienna #<srednica_walka> zmniejsza się w trakcie wykonywania programu, zapamietuję ją więec w zmiennej do późniejszego fazowania)

M3 s#<obroty_wrzeciona> (wlaczamy wrzeciono)
(Planowanie powierzchni)

G0 X[#<srednica_surowego_walka>+2] Z[#<poczatek_z>+#<odjazd_z>]
X#<srednica_surowego_walka>
#<Current_Dia>=#<srednica_surowego_walka>

o60 while [#<Current_Dia> gt #<srednica_walka>]

o61   if [#<Current_Dia>-#<przybranie_materialu> gt #<srednica_walka>]
         #<Current_Dia>=[#<Current_Dia>-#<przybranie_materialu>]
o61   else
         #<Current_Dia>=#<srednica_walka>
o61   endif

       X#<Current_Dia>
       Z#<poczatek_z>
       G1 Z-[#<dlugosc_detalu>] F#<szybkosc_posuwu>
       G0 X[#<Current_Dia>+2]
       Z[#<poczatek_z>+#<odjazd_z>]
o60 endwhile


(Koniec planowania powierzchni)

(Planowanie czoła)


g0 z[#<poczatek_z> + #<odjazd_z>]
g0 x[#<srednica_walka> + 2]
#<akt_pozycja> = #<poczatek_z>

o50 while [#<akt_pozycja> gt -[#<planowanie_czola>]]
  #<akt_pozycja> = [#<akt_pozycja> - #<przybranie_materialu>]
  o52 if [#<akt_pozycja> lt -[#<planowanie_czola>]]
    #<akt_pozycja> = -[#<planowanie_czola>]
  o52 endif

  g0 z#<akt_pozycja>

  g1 x0 f[#<szybkosc_posuwu>/3]
  g0 z[#<akt_pozycja> + #<odjazd_z>]
  g0 x[#<srednica_walka> + 2]

o50 endwhile


(Koniec planowania czoła)


(Toczenie czopa)

G0 z[#<odjazd_z>-[#<planowanie_czola>+#<poczatek_z>]] 

o100 while [#<srednica_walka> gt #<srednica_czopu>] ( wykonuj dopoki #<srednica_walka> wiekszy od #<srednica_czopu> )
#<srednica_walka>=[#<srednica_walka>-#<przybranie_materialu>] ( deklarowane zmniejszenie)

 o102 if [#<srednica_walka> lt #<srednica_czopu>]
    #<srednica_walka> = #<srednica_czopu>
  o102 endif

G0 x[#<srednica_walka>+2] (ustawienie noza na pozycji )
x[#<srednica_walka>]
z-[#<planowanie_czola>]
g1 z[[-#<dlugosc_czopu>]-[#<planowanie_czola>+#<poczatek_z>]] f#<szybkosc_posuwu> ( toczenie )
G0 x[#<srednica_walka>+2] ( odjazd od materialu)
z[#<odjazd_z>-[#<planowanie_czola>+#<poczatek_z>]] ( powrot na poczatek i wykonywanie ponowne )
o100 endwhile ( koniec toczenia czopa)

o110 if [#<szerokosc_fazki_czopu> gt 0] (procedura wykonania fazki na wytoczonym czopie, wykonywana tylko, gdy zadeklarowana szerokość fazki jest większa od zera)  
#<szerokosc_fazki_czopu_1> = 0
#<glebokosc_fazki_czopu_1> = 0
z[[#<poczatek_z>]-[#<planowanie_czola>]+#<odjazd_z>]  
o111 while [#<szerokosc_fazki_czopu_1> lt #<szerokosc_fazki_czopu>] ( wykonuj dopoki #<szerokosc_fazki_czopu_1> wiekszy od zera)
#<szerokosc_fazki_czopu_1>=[#<szerokosc_fazki_czopu_1>+#<przybranie_materialu>] ( deklarowane zmniejszenie)
#<glebokosc_fazki_czopu_1>=[#<glebokosc_fazki_czopu_1>+[#<glebokosc_fazki_czopu>*#<przybranie_materialu>/#<szerokosc_fazki_czopu>]]
 o112 if [#<szerokosc_fazki_czopu_1> gt #<szerokosc_fazki_czopu>]
    #<szerokosc_fazki_czopu_1> = #<szerokosc_fazki_czopu>
  o112 endif     
  o113 if [#<glebokosc_fazki_czopu_1> gt #<glebokosc_fazki_czopu>]
    #<glebokosc_fazki_czopu_1> = #<glebokosc_fazki_czopu>
  o113 endif   
x[#<srednica_czopu>-#<glebokosc_fazki_czopu_1>*2]             ( wjazd do fazki na fi #<srednica_czopu>)
z[[#<poczatek_z>]-[#<planowanie_czola>]] 

o114 if [#<promien_fazki_czopu> lt 1]
g1 x[#<srednica_czopu>] z-[[#<szerokosc_fazki_czopu_1>]+[#<planowanie_czola>]] f[#<szybkosc_posuwu>]   ( toczenie fazki na fi #<srednica_czopu>)
o114 endif
o115 if [#<promien_fazki_walka> gt 0]
g3 x[#<srednica_czopu>] z-[[#<szerokosc_fazki_czopu_1>]+[#<planowanie_czola>]] r[#<promien_fazki_czopu>]  f[#<szybkosc_posuwu>]
o115 endif
g0 x[[#<srednica_czopu>]+2]
z[[#<poczatek_z>]-[#<planowanie_czola>]+#<odjazd_z>]  
o111 endwhile ( koniec pętli czopa)
o110 endif (koniec procedury fazowania krawędzi czopa)


o120 if [#<szerokosc_fazki_walka> gt 0]  (procedura wykonania fazki na pozostałej krawędzi wałka, wykonywana tylko, gdy zadeklarowana szerokość fazki jest większa od zera)   
    
#<szerokosc_fazki_walka_1> = 0
#<glebokosc_fazki_walka_1> = 0
g0 z-[[#<dlugosc_czopu>]+[#<planowanie_czola>]] x[#<srednica_walka_do_fazki> - #<glebokosc_fazki_walka>*2] ( dojazd do fazki na fi #<srednica_walka_do_fazki>)  
o121 while [#<szerokosc_fazki_walka_1> lt #<szerokosc_fazki_walka>] ( wykonuj dopoki #<szerokosc_fazki_walka_1> wiekszy od zera)
#<szerokosc_fazki_walka_1>=[#<szerokosc_fazki_walka_1>+#<przybranie_materialu>] ( deklarowane zmniejszenie)
#<glebokosc_fazki_walka_1>=[#<glebokosc_fazki_walka_1>+[#<glebokosc_fazki_walka>*#<przybranie_materialu>/#<szerokosc_fazki_walka>]]
 o122 if [#<szerokosc_fazki_walka_1> gt #<szerokosc_fazki_walka>]
    #<szerokosc_fazki_walka_1> = #<szerokosc_fazki_walka>
  o122 endif     
  o123 if [#<glebokosc_fazki_walka_1> gt #<glebokosc_fazki_walka>]
    #<glebokosc_fazki_walka_1> = #<glebokosc_fazki_walka>
  o123 endif   
x[#<srednica_walka_do_fazki>-#<glebokosc_fazki_walka_1>*2]             ( wjazd do fazki na fi #<srednica_czopu>)
z-[[#<dlugosc_czopu>]+[#<planowanie_czola>]] x[#<srednica_walka_do_fazki> - #<glebokosc_fazki_walka_1>*2] 
o124 if [#<promien_fazki_walka> lt 1]
g1 x[#<srednica_walka_do_fazki>] z-[[#<szerokosc_fazki_walka_1>]+[#<planowanie_czola>]+#<dlugosc_czopu>] f[#<szybkosc_posuwu>]   ( toczenie fazki na fi #<srednica_czopu>)
o124 endif
o125 if [#<promien_fazki_walka> gt 0]
g3 x[#<srednica_walka_do_fazki>] z-[[#<szerokosc_fazki_walka_1>]+[#<planowanie_czola>]+#<dlugosc_czopu>] r[#<promien_fazki_walka>]  f[#<szybkosc_posuwu>]
o125 endif
g0 x[[#<srednica_walka_do_fazki>]+2]
z-[[#<dlugosc_czopu>]+[#<planowanie_czola>]] 
o121 endwhile ( koniec pętli czopa)






o120 endif (koniec procedury fazowania pozostałej krawędzi wałka)
g0 x[[#<srednica_walka_do_fazki>]+2]

G0 z0
M30

o<czop> endsub

Przykład pętli w tym subie:

Kod: Zaznacz cały

o60 while [#<Current_Dia> gt #<srednica_walka>]         (dopóki wartość zmiennej #<Current_Dia> czyli aktualna średnica - przybranie jest większa od podanej w tabelce #<srednica_walka> wykonuj poniższe linie)

o61   if [#<Current_Dia>-#<przybranie_materialu> gt #<srednica_walka>]   (jeżeli warunek jest prawdziwy wykonaj)
         #<Current_Dia>=[#<Current_Dia>-#<przybranie_materialu>] 
o61   else                                                                                   (lub)
         #<Current_Dia>=#<srednica_walka>    (wykonaj to)
o61   endif                                                                             ( koniec procedury inkrementacji licznika)

       X#<Current_Dia> 
       Z#<poczatek_z> 
       G1 Z-[#<dlugosc_detalu>] F#<szybkosc_posuwu> 
       G0 X[#<Current_Dia>+2] 
       Z[#<poczatek_z>+#<odjazd_z>] 
o60 endwhile  
o61 - nr procedury - musi być unikalny, kolejność nie ma znaczenia

while - zaczynamy pętlę, będzie się wykonywała, dopóki wielkość licznika nie przekroczy zakresu podanego w funkcji logicznej.

if - warunek, który musi być spełniony, żeby pętla wykonała w danym obiegu polecenie za nim stojące.

[/code]

Awatar użytkownika

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

#15

Post napisał: senio » 23 lut 2015, 12:25

Miki nie o to mi chodziło. Chodziło o takie ruchy w pętli jak w tym kodzie niżej. Po to żeby zmieniać ewentualnie szybko parametry. Wrzuć to w symulator i zobaczysz o co chodzi

Kod: Zaznacz cały

g61 g7

G00 x20.3 z0

G01 x19.9 F2
G01 z1.5 F5
G00 z0 F5

G01 x19.8 F2
G01 z1.5 F5
G00 z0 F5

G01 x19.7 F2
G01 z1.5 F5
G00 z0 F5

G01 x19.6 F2
G01 z1.5 F5
G00 z0 F5

G01 x19.5 F2
G01 z1.5 F5
G00 z0 F5

G01 x19.4 F2
G01 z1.5 F5
G00 z0 F5

G01 x19.3 F2
G01 z1.5 F5
G00 z0 F5

G01 x19.2 F2
G01 z1.5 F5
G00 z0 F5

G01 x19.1 F2
G01 z1.5 F5
G00 z0 F5

G01 x19.05 F2
G01 z1.5 F5
G00 z0 F5

G01 x19 F2
G01 z1.5 F5
G00 z0 F5

G01 x18.95 F2
G01 z1.5 F5
G00 z0 F5

G01 x18.90 F2
G01 z1.5 F5
G00 z0 F5

G01 x18.85 F2
G01 z1.5 F5
G00 z0 F5

G00 x21
G00 z10 


m30

Awatar użytkownika

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

#16

Post napisał: MlKl » 23 lut 2015, 17:02

senio pisze:Miki nie o to mi chodziło. Chodziło o takie ruchy w pętli jak w tym kodzie niżej. Po to żeby zmieniać ewentualnie szybko parametry. Wrzuć to w symulator i zobaczysz o co chodzi

Kod: Zaznacz cały

g61 g7

Tu wstawiasz deklaracje zmiennych do tabelki

G00 x20.3 z0 - to jest dojazd na pozycję startową - przed pętlą

tu wstawiasz procedurę pętli analogicznie jak w mojej procedurze

tu wstawiasz inkrementację licznika pętli

G01 x19.9 F2
G01 z1.5 F5
G00 z0 F5

tu kończysz pętlę

G00 x21     odjazd od materiału po x
G00 z10      j.w. tylko po z z odjazdem o 10 mm od czoła


m30


jarucki
Specjalista poziom 3 (min. 600)
Specjalista poziom 3 (min. 600)
Posty w temacie: 3
Posty: 818
Rejestracja: 11 sty 2011, 23:40
Lokalizacja: okolice nałęczowa

#17

Post napisał: jarucki » 12 wrz 2015, 18:47

senio
jakby Ci się chciało zebrać wszystkie SUBY i zapodać w pierwszym poście to powstałaby fajna baza dla potomnych :)

Awatar użytkownika

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

#18

Post napisał: senio » 12 wrz 2015, 19:58

jarucki pisze:senio
jakby Ci się chciało zebrać wszystkie SUBY i zapodać w pierwszym poście to powstałaby fajna baza dla potomnych :)
Suby te podstawowe do prostych rzeczy używam ze strony Kamara

http://kamar-cnc.pl/?page_id=620

Coś bardziej zaawansowanego wolę w jakimś programie cam sobie narysować. Tak jest dla mnie łatwiej i szybciej, a dodatkowo mam obróbkę zgrubną i wykańczającą od razu naniesioną.


jarucki
Specjalista poziom 3 (min. 600)
Specjalista poziom 3 (min. 600)
Posty w temacie: 3
Posty: 818
Rejestracja: 11 sty 2011, 23:40
Lokalizacja: okolice nałęczowa

#19

Post napisał: jarucki » 13 wrz 2015, 09:18

To gadaj jak na spowiedzi jakiego cama używasz do tokarynki

Awatar użytkownika

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

#20

Post napisał: senio » 13 wrz 2015, 10:45

jarucki pisze:To gadaj jak na spowiedzi jakiego cama używasz do tokarynki
CamBam

http://www.cambam.info/

Tu masz filmik do tokarki


ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „LinuxCNC (dawniej EMC2)”