Strona 1 z 1

Makro to pomiaru środka materiału od zewnątrz.

: 12 lis 2013, 20:09
autor: sp9kn
Szukam specyficznego makra.

Mianowicie chodzi mi o znalezienie punktu środkowego przedmiotu (załóżmy że jest okrągły).

Jest Makro, które sprawdza środek rurki ale nie o to mi chodzi a ja potrzebuje żeby:
- standardowo dokonało pomiaru wysokości przedmiotu
- jechało w lewo poza obręb przedmiotu (może być zdefiniowany na stałe)
- jechało w dół o cofało się w prawo wolno do czasu styku
I tak dla czterech stron.

Następnie ustawienie wrzeciona idealnie na środku przedmiotu, i mierzyć go po zewnętrznej nie po wewnętrznej.

Ktoś coś ma takiego może?

: 12 lis 2013, 20:33
autor: tomcat65
Tak na marginesie, kol. jest sp9kn czy guru79 ? bo to samo pytanie było z innego nicka :).
Otwórz Mach'a, g-kody, g31, w opisie jest przykładowe makro do wyznaczania środka otworu. Trochę je przerobić i zaadaptować do swoich potrzeb i będzie.

: 14 lis 2013, 11:55
autor: sp9kn
W sumie to kolego masz rację...Jak się nie zrobi samemu to człowiek nigdy się nie nauczy...

Popełniłem coś takiego, prosiłbym o sprawdzenie z racji braku przez kilka dni dostępu do frezarki. Program w swoim zamyśle ma mierzyć przedmiot po zewnętrznej średnicy w czterech miejscach. Pasuje oczywiście jeszcze przed programem właściwym ustawić odpowiednio wysokość osi Z. Jak poniższy program będzie dobry dodam na początku pomiar wysokości materiału.

Oczywiście poniższe makro ma sens gdy przedmiot odizolowany jest od reszty...

Kod: Zaznacz cały

Xstary=GetDro(0)
Ystary=GetDro(1)

'Parametry
'--------------------
POM_Z = 30
BEZP_Z = 50
MIER_Z = -10

PRED_POM = 100
PRED_NAJ = 1000
SZER_PRZED = 100 ' szerokość przedmiotu, podajemy faktycznie wartość większą niż szerokość
'--------------
Message("Dokonuje  centrowania do istniejącego materiału")
If GetOEMLed(825) Then 
Message( "Błąd:  Czujnik zwarty. Przerywam pomiar." ) 
End 
End If

If GetOEMLed(11) Then 
Message( "Błąd: Uwaga włączone wrzeciono. Przerywam pomiar.!" ) 
End 
End If

Code("G1 Z" & POM_Z & " F"&PRED_NAJ )
While IsMoving()
	Wend 

rem pomiar lewo
	XNowy= Xstary - SZER_PRZED 'ustawienie ofsetu dla szerokości materialu ; pozycja x minus szerokość przedmiotu
	Code ("G0 X" &XNowy)       'ustawienie wrzeciona dla pozycji początkowej minus szerokość przedmiotu
	While IsMoving()
	Wend
	Code ("G1 Z" & MIER_Z & " F"&PRED_NAJ )
	While IsMoving()
	Wend
	Code ("G31 X" &Xstary & " F"&PRED_POM)     ' ruch do materiału odwrotny z wykryciem przedmiotu
	While IsMoving()
	Wend
	X1= GetVar(2000)	   'zapisanie do zmiennej x1 pozycji X ; 
	Code ("G0 X" &XNowy)       'cofnięcie wrzeciona w osix
	While IsMoving()
	Wend
	Code ("G1 Z" & POM_Z & " F"&PRED_NAJ )        ' podniesienie wrzeciona do wartości pomiarowej
	While IsMoving()
	Wend
	Code ("G0 X" &Xstary)           ' szybki powrót do pierwotnej pozycji

Rem pomiar prawo
	XNowy= Xstary + SZER_PRZED 'ustawienie ofsetu dla szerokości materialu
	Code ("G0 X" &XNowy)       'ustawienie wrzeciona dla pozycji początkowej minus szerokość przedmiotu
	While IsMoving()
	Wend
	Code ("G1 Z" & MIER_Z & " F"&PRED_NAJ )
	While IsMoving()
	Wend
	Code ("G31 X" &Xstary & " F"&PRED_POM)     ' ruch do materiału odwrotny z wykryciem przedmiotu
	While IsMoving()
	Wend
	x2= GetVar(2000)	   'zapisanie do zmiennej x2 pozycji X ;
	xcenter=  (X1+X2)/2		'środek między X1 i X2 
	Code ("G0 X" &XNowy)       'cofnięcie wrzeciona w osix
	While IsMoving()
	Wend
	Code ("G1 Z" & POM_Z & " F"&PRED_NAJ )        ' podniesienie wrzeciona do wartości pomiarowej
	While IsMoving()
	Wend
	Code ("G0 X" &Xcenter)           ' szybki powrót do środkowej pozycji X

Rem pomiar góra 
	YNowy= Ystary - SZER_PRZED 'ustawienie ofsetu dla szerokości materialu ; pozycja y minus szerokość przedmiotu
	Code ("G0 Y" &YNowy)       'ustawienie wrzeciona dla pozycji początkowej minus szerokość przedmiotu
	While IsMoving()
	Wend
	Code ("G1 Z" & MIER_Z & " F"&PRED_NAJ )
	While IsMoving()
	Wend
	Code ("G31 Y" &Ystary & " F"&PRED_POM)     ' ruch do materiału odwrotny z wykryciem przedmiotu
	While IsMoving()
	Wend
	Y1= GetVar(2001)	   'zapisanie do zmiennej y1 pozycji y ; 
	Code ("G0 Y" &YNowy)       'cofnięcie wrzeciona w osiy
	While IsMoving()
	Wend
	Code ("G1 Z" & POM_Z & " F"&PRED_NAJ )        ' podniesienie wrzeciona do wartości pomiarowej
	While IsMoving()
	Wend
	Code ("G0 Y" &Ystary)           ' szybki powrót do pierwotnej pozycji

Rem pomiar prawo
	YNowy= Ystary + SZER_PRZED 'ustawienie ofsetu dla szerokości materialu
	Code ("G0 Y" &YNowy)       'ustawienie wrzeciona dla pozycji początkowej minus szerokość przedmiotu
	While IsMoving()
	Wend
	Code ("G1 Z" & MIER_Z & " F"&PRED_NAJ )
	While IsMoving()
	Wend
	Code ("G31 Y" &Ystary & " F"&PRED_POM)     ' ruch do materiału odwrotny z wykryciem przedmiotu
	While IsMoving()
	Wend
	Y2= GetVar(2000)	   'zapisanie do zmiennej y1 pozycji y ;
	Ycenter=  (Y1+Y2)/2		'środek między y1 i y2 
	Code ("G0 Y" &YNowy)       'cofnięcie wrzeciona w osiy
	While IsMoving()
	Wend
	Code ("G1 Z" & POM_Z & " F"&PRED_NAJ )        ' podniesienie wrzeciona do wartości pomiarowej
	While IsMoving()
	Wend
	Code ("G0 Y" &Ycenter)           ' szybki powrót do środkowej pozycji y

: 14 lis 2013, 17:35
autor: tomcat65
sp9kn pisze:.Jak się nie zrobi samemu to człowiek nigdy się nie nauczy
Też tak uważam i dlatego podałem tylko tak skąpe informacje :).
Makra nie sprawdzę, brak czynnej maszyny.