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.