LinuxCNC - tokarka

Dyskusje dotyczące działania obsługi programu LinuxCNC

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

#211

Post napisał: kamar » 09 gru 2012, 13:57

MlKl pisze: wtedy żaden rodzaj nie straszny. ]
Mnie nic nie straszne, ino robić cos sobie a muzom, to nie ja :)
I tak muszę poprawiać bo podcięcia się u mnie robi z zasady na czopach szlifowanych i trzeba
uwzglednić naddatek.



Tagi:

Awatar użytkownika

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

#212

Post napisał: MlKl » 09 gru 2012, 14:40

Widzisz - ja to zrobiłem właśnie "sobie a muzom", bo ja podcięć nie robię wcale...

Kobyła w zamyśle ma stanowić interfejs, pozwalający wykonać wszystko, co się na tokarce da zrobić przez G1, G2 i G3.

Na dziś jest gotowe może 20 procent, ale te 20 procent zadowoli w zupełności 95% tokarzy - nigdy nie zapragną zrobić więcej, niż to co już w niej działa.

Na dziś działa: procedura główna, czyli walec, walec z korektą stożka, lub stożek, i pięć ściśle z nią powiązanych podprocedur: czoło, przetaczanie surowego wałka na średnicę detalu, fazka na średnicy początkowej i na średnicy końcowej oraz podcięcie za czopem.

Obrazek

Wszystkie możliwe operacje w jednej zakładce - wariant podstawowy.

Obrazek

Samo podcięcie - każdą z operacji można wykonać samodzielnie

Obrazek

Jak widać - na podcięcie wystarczy wypełnić cztery pola - średnicę i odległość, na jakiej ma być wykonane, rodzaj podcięcia, i pomijanie przetaczania procedury głównej. I tu sobie możesz zrobić osobno podcięcie odpowiednio głębiej. Możesz też w warunku dla ostatniej linii dodać zostawianie naddatku na szlifowanie, i dodatkowe pole na wymuszanie zostawiania tego naddatku. To wszystko są niuanse, wynikające z konkretnych potrzeb w bieżącej pracy. Ty masz inne potrzeby, ja inne. Mnie zupełnie nie przeszkadza, że odrzucasz wszytko, co akurat w tej chwili tobie nie przydatne. Ważne, że z dyskusji z tobą mogę wyciągać konstruktywne wnioski co do organizacji całego procesu toczenia.

[ Dodano: 2012-12-09, 14:49 ]
Jednak trzeba wypełnić pięć pól - musi być jeszcze wpisana średnica końcowa :) Na zrzucie widać, że program bez niej wykonał podcięcie na osi matriału :)


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

#213

Post napisał: kamar » 09 gru 2012, 15:18

Ja nic nie odrzucam, nie mam ochoty bujać się na co dzień z czymś co bywa potrzebne od przypadku do przypadku.
W toczeniu zewnętrznym to jest wszystko co moge zaakceptować:

Obrazek

Jak mi jeszcze zrobi buntujące sie okienko o korektę, przy przejsciu do axisa, a nie po uruchomieniu programu, to więcej w tej operacji nie potrzebuję :)

Awatar użytkownika

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

#214

Post napisał: MlKl » 09 gru 2012, 15:32

I tu dochodzimy do clou interesu - mając kobyłę w nc_files, wcale nie musisz mieć jej w zakładkach, żeby używać z dowolnie zaprojektowanym interfejsem. Także z takim, jaki w ostatnim zrzucie zaprezentowałeś.

Nie musisz się wtedy troszczyć o kod, wystarczy zaprogramować okienko, czyli zmienne do wstawiania, i wywołać w jednej linijce kobyłę z odpowiednio ustawionymi parametrami.

Możesz sobie też robić rozmaite kombinacje, wywołujące ją wielokrotnie. Np na wielostopniowe koło pasowe pod paski klinowe.

Zobacz, jak wywołuję twój stożek w kobyle:

Kod: Zaznacz cały

o8000 else (wykonuje się po zaznaczeniu stożka) 



#<sr_materialu>=[#<sr_pocz>+#<korekta>] 

o8010 if[#<z_pocz> le #<z_koncowe>] 
o<stozek> call [#<sr_materialu>][#<sr_koncowa>][#<sr_pocz>][#<z_koncowe>][#<z_pocz>][#<kat_stozka>][#<przybranie_materialu>][#<posuw>][#<pomijaj_srednica>][#<woda>] 
o8010 else
o<stozek> call [#<sr_materialu>][#<sr_koncowa>][#<sr_pocz>][#<z_pocz>][#<z_koncowe>][#<kat_stozka>][#<przybranie_materialu>][#<posuw>][#<pomijaj_srednica>][#<woda>] 

o8010 endif
#<sr_pocz>=[#<sr_pocz>+#<korekta>] 

o8000 endif 
Jak widać, w zależności od warunku robię jedną linijką albo stożek wewnętrzny, albo zewnętrzny od prawej do lewej lub na odwrót.

Przy wywołaniu kobyły jedną linijką mogę wywołać na raz do sześciu procedur. A to oznacza, że mogę ich z jednego okienka wywołać nawet kilkadziesiąt w przyszłości.


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

#215

Post napisał: kamar » 09 gru 2012, 16:07

Miki, tokarka CNC nie służy popisom programistów :) ona ma toczyć :)
Jako tokarz musiełem nawet poprawić Polską Normę :) bo 6mm długie podcięcie przy wałku fi 80 to dla mnie za bogato.

Obrazek

Awatar użytkownika

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

#216

Post napisał: MlKl » 09 gru 2012, 16:27

Właśnie - tokarka ma toczyć :) Programista ma zrobić interfejs, który umożliwi pełną jej obsługę z poziomu programu, a nie przez dopisywanie kodu, ilekroć okazuje się, że programista czegoś nie przewidział.

Zgadzam się, że interfejs powinien być czytelny i łatwy do opanowania, najlepiej w sposób intuicyjny i idiotoodporny. Tu na razie NGCGUI ma spore ograniczenia, przy potencjalnie ogromnych możliwościach.

A norm to ja nie pisałem, i za nie nie odpowiadam, ja je tylko zaimplementowałem w procedurze wedle twojego linka :)

[ Dodano: 2012-12-10, 03:24 ]
I komplet podcięć:

Kod: Zaznacz cały

#<podciecie>=0
o109 if[#<podciecie> eq 1 or [[#<podciecie> eq 3 or #<podciecie> eq 4] and #<sr_koncowa>gt 10]] 
				       #<korekta_podciecie>=1
				o109 endif
To co powyżej trzeba wsadzić w ostatni przebieg czopa, i uwzględnić w poleceniu g1 je wykonującym.

Kod: Zaznacz cały



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 endif


o1500 endif (koniec procedury podcięcia) 

Obrazek

Awatar użytkownika

ArturM
Specjalista poziom 1 (min. 100)
Specjalista poziom 1 (min. 100)
Posty w temacie: 6
Posty: 160
Rejestracja: 12 kwie 2008, 07:53
Lokalizacja: Kozienice
Kontakt:

#217

Post napisał: ArturM » 11 gru 2012, 08:10

tuxcnc pisze: Tak przy okazji, to bardziej elegancko jest postawić warunki

Kod: Zaznacz cały

if {[string first "<> " $::ngc($hdl,arg,comment,$num02)] == -1}
czyli nie znaleziono łańcucha i

Kod: Zaznacz cały

if {[string first "<> " $::ngc($hdl,arg,comment,$num02)] != -1}
czyli łańcuch znaleziono.
.
Co racja to racja - poprawione w oryginalnym poście.


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

#218

Post napisał: kamar » 11 gru 2012, 08:47

ObrazekObrazek

To już raczej ostatnie nasze zdjęcia wklejane na forum , będą tylko odsyłacze do strony z podpisu. Wtykać w dwa miejsca mi się nie chce a i kol. tuccnc nie będzie się wpieniał :)

Awatar użytkownika

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

#219

Post napisał: MlKl » 11 gru 2012, 09:10

To tajny adres, czy tajne dane kontaktowe?
Kontakt

PPU Kamar
Kociołki 7a
26-900 Kozienice

asdasd
sad
asd
as
das
das
d
asd
asd
asd


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

#220

Post napisał: kamar » 11 gru 2012, 09:22

pomaniuniu, ja po nocach nie bede siedział :) robi się.

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „LinuxCNC (dawniej EMC2)”