Macro wymiany narzędzia w machu

Dyskusje dotyczące najpopularniejszego programu sterującego maszynami CNC

Autor tematu
kond666
Specjalista poziom 1 (min. 100)
Specjalista poziom 1 (min. 100)
Posty w temacie: 2
Posty: 133
Rejestracja: 09 mar 2007, 12:27
Lokalizacja: częstochowa

Macro wymiany narzędzia w machu

#1

Post napisał: kond666 » 03 lut 2009, 14:39

Witam
Mam problem z pomiarem narzędzia w mach3. Kilkudniowa zabawa z macrami z forum dała mizerne rezultaty, a dochodzę do wniosku że praca bez czujnika długości i pomiaru narzędzia w niektórych przypadkach jest niemożliwa, np. w przypadku obróbki wymagającej kilku narzędzi. Do tej pory radziłem sobie w ten sposób że po ustawieniu zera detalu, wyzerowaniu osi, odjeżdżałem do punkty pomiarowego (klocek aluminiowy), i opuszczałem wrzeciono do momentu dotknięcia czoła frezu do sztabki. Wartość z licznika zapisywałem (Z1), po czym wymieniałem narzędzie na inne, znowu podjazd czołem do sztabki, odczyt odległości (Z2). Korekta dla narzędzia to Z2-Z1, przejazd w miejsce zerowe i wpisanie tej różnicy dla Zetki. Jest to kłopotliwe, bo np. gdy narzędzie się złamie to po pomiarze i trzeba szukać wysokości na czuja. Oprócz frezarki mam ploter kimli z pomiarem długości narzędzia i tam jest to rozwiązane dość wygodnie, bo przed obróbką dokonuje sie pomiaru narzędzia, a potem ustala punkt zerowy detalu dojeżdżając do jego krawędzi, jakakolwiek wymiana narzędzia podczas pracy wywołuje korektę narzędzia i czoło frezu jest zawsze w tym samym miejscu.
Macra pobrane z forum próbowałem modyfikować, ale zawsze wywołanie korekty narzędzia było błędne. Czujnik do prób mam prowizoryczny, ale to nie w nim problem.
Naprawdę będę wdzięczny za każdą informację pozwalającą rozwiązać ten problem, ew. o kontakt do kogo mógłbym się zgłosić.
Pozdrawiam



Tagi:


faniron
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 2
Posty: 320
Rejestracja: 12 lut 2006, 18:56
Lokalizacja: Dolnośląskie

#2

Post napisał: faniron » 03 lut 2009, 18:40

Ja mam cudem jakimś zrobiłem takie makro:

Narzędziem nr 0 "łapię" zero materiału, klikam na "zerowanie materiału" i frez jedzie na punkt pomiarowy i zapamiętuje zero materiału. Po zmianie freza klikam "zerowanie" , frez jedzie na punkt i zeruje się.
Załączniki
HiddenScript.rar
(515 Bajtów) Pobrany 740 razy

Awatar użytkownika

k-m-r1
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 7
Posty: 1418
Rejestracja: 23 cze 2008, 10:38
Lokalizacja: OOL lub DW
Kontakt:

#3

Post napisał: k-m-r1 » 04 lut 2009, 20:19

do pracy z kilkoma narzędziami dobrze jest miec magazynek ułątwia prace a reczna zmiana narzędzia no cóż ... też wyjscie

faniron,

o co chodzi z

Kod: Zaznacz cały

If Tool = 0 Then
       Response = MsgBox ("Did you zero off the part First?", 4 , "Set up offset") 
       If (Response = 6) Then  'Yes
    ZPos = Zpos - ZMove

a dokładnie linijka 2 i 4 MsgBox to wiadomosc w dodatkowym oknie


faniron
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 2
Posty: 320
Rejestracja: 12 lut 2006, 18:56
Lokalizacja: Dolnośląskie

#4

Post napisał: faniron » 04 lut 2009, 23:09

Pojawia się okno z pytaniem czy złapaliśmy zero materiału narzędziem nr 0
Narzędziem o numerze zero może być sonda 3D , albo frez którym po raz pierwszy łapiemy zero materiału.

Awatar użytkownika

k-m-r1
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 7
Posty: 1418
Rejestracja: 23 cze 2008, 10:38
Lokalizacja: OOL lub DW
Kontakt:

#5

Post napisał: k-m-r1 » 05 lut 2009, 07:06

a może to tak w pl napisac?


ja osobiście zrobił bym tak

w połowie wysokości osi Z umieścił bym blaszkę która byłą by czujnikiem lub sam czujnik
kolejna rzecz to pbunkt zerowy maszyny umieścił bym X0 Y0 Z09z tą różnica żę Z0 było by w momencie gdy oś Z jest podniesiona maksymalnie)

i chyba nic prostrzego jak
pomiar pierwszy do stałego punktu w maszynie między blaszką i ...
przyjmiemy na to do wierzchołkiem nakrętki wrzeciona bądz innej czesci która nie jest zmieniana i ruszana w jakikolwiek sposób
pomiar drugi po założeniu narzędzia podjazd do tej samej blaszki z której jest wysyłany sygnał w momencie dotknięcia na jakiś pin i z czytywana wysokość Z-ki następnie wpisanie jej wartosci do rejestru dlugosci narzedzia i wywolanie korekty dla tego narzedzia


nalerzy przy tym pamiętac o maxymalnej długosci narzędzia skrawającego dostosowanej do każdej maszyny z osobna tak samo jak kilka innych wartosci makra

a możę ktoś ma inny pomysł na uniwersalny pomiar długoci narzędzia ?


Autor tematu
kond666
Specjalista poziom 1 (min. 100)
Specjalista poziom 1 (min. 100)
Posty w temacie: 2
Posty: 133
Rejestracja: 09 mar 2007, 12:27
Lokalizacja: częstochowa

#6

Post napisał: kond666 » 05 lut 2009, 08:44

Nareszcie, po paru godzinach prób, udało się pomierzyć narzędzia, koledze faniron dziękuję, punkcik leci :mrgreen:. Chodziarz wydaje mi się że to jeszcze nie to czego szukam. Przeglądam makra z różnych forum i nie mogę znaleźć takiego które ( tak to sobie wyobrażam) : po uruchomieniu maszyny, oczywiście bazujemy osie, klikamy na button wymiana narzędzia - maszyna jedzie w pkt. wymiany narzędzia,komunikat by założyć narzędzie , jeśli tak to dokonuje pomiaru długości; następnie na zero materiału, a kolejne wymiany narzędzia będą powodowały że po wciśnięciu "go to Zero" czoło frezu będzie zawsze na tej samej wysokości. Dobrze byłoby gdy podczas pracy stwierdzimy że należy ręcznie zmienić pkt. zerowy materiału to w pomiarze też by to było uwzględnione.
Gotowego na pewno nie znajde, ale pokombinować ze skryptami nie zaszkodzi, a może ktoś ma pomysł, jakby coś podobnego stworzyć? Co do magazynka narzędzi, to jest mi niepotrzebny na razie, bardziej istotny jest ten pomiar, który jest mniej skomplikowany niż ster. magazynkiem, zresztą mam wrzeciono na tuleje eo25 i nie wiem jakby można było zrealizować wymianę bez przerabiania lub wymiany wrzeciona. Popieram pomysł stworzenia uniwersalnego sposobu pomiaru narzędzia, pomimo tego że każda maszyna jest inna, ale gdyby wszystko było dobrze opisane i zakładało kilka wariantów zastosowań to mogło by się udać i wielu osobom oszczędzić trudności. Pozdrawiam

Awatar użytkownika

k-m-r1
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 7
Posty: 1418
Rejestracja: 23 cze 2008, 10:38
Lokalizacja: OOL lub DW
Kontakt:

#7

Post napisał: k-m-r1 » 19 lut 2009, 16:59

hmm wracając do tematu wymiany można zrobic magazynek narzedzi i wysterowac zmiane narzedzia na osobnym porcie np jakis port COM

a pmiar narzedzia wykonac da sie w 3 rużnych osiach zalerzy to od parametru GetVar (2002) zmian na 2000 lub 2001 spowoduje pobranie wartosci z innej osi maszyny ja wiem tylko o tych osiach X Y Z


a przy pisaniu makra i oczekiwaniu na to iż maszyn skonczy ruch radze zastosowac

Kod: Zaznacz cały

While ismoving() 
Sleep 100
Wend
mniej procesor obciąża i komp niemuli tak bardzo

[ Dodano: 2009-02-19, 17:23 ]
poprawka do GetVar

Kod: Zaznacz cały

[2000]  X  współrzędne
[2001]  Y  współrzędne
[2002]  Z współrzędne
[2003]  A współrzędne
[2004]  B współrzędne
[2005]  C współrzędne
jeśli by ktoś pomiar musiał zrobic w innej osi


kamil1986
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 1
Posty: 316
Rejestracja: 10 cze 2007, 15:09
Lokalizacja: Ostrów

#8

Post napisał: kamil1986 » 21 lut 2009, 13:38

jest to wypowiedz uzytkownika pit202 i jego marco znzlazlem na forun sam nie testowalem ale komus moze sie pezydac


moze sie komuś przyda , moj sposob na pomiar frezów , dziala to tak , wpisujemy w MDI " T1 M6" i maszyne jedzie i czeka az zalozymy jakis frez a potem jedzie i mierzy sobie dlugosc, po tym dopiero mozemy podjechac pod przedmiot i wyzerowac "Z" dla np. G55 , potrzebne do tego są 2 skrypty które sam napisałem , oto one : ( aby dzialalo powinno wystarczyc podmienic je )
M6Start.m1s
Kod:
tool = GetSelectedTool()
SetCurrentTool( tool ) ; oryginalna częsc z macha
Code "g0"
Code "G53 z0" ; wybór ruchu i ruch do Z0 maszyny ( mozna tez przez G28 G91 Z0 )
While IsMoving() ; ale nie wiem dlaczego tak zrobilem
Wend
Code "G28" ; ruch do pozycji zerowych wszystkich osi dla latwiejszej wymiany narzędzi u mnie
While IsMoving()
Wend


M6End.m1s
Kod:
dim Z,z1,z2,z3
dim tool ; pare zmiennych
z = 70.72

z3 = GetDRO(2) ; pobranie pozycji osi Z
z3 = z3 - 70

Code "g0"
Code "g53 x1.56 y-31.84" ; ruch do pozycji XY czujnika dlugosci narzędzi
While IsMoving()
Wend ; pętla, która czeka az maszyna dojedzie

Code "G31 Z" & z3 & "f600" ; funkcja która bedzie jechała osią Z w dół aż do napotkania sygnału "DIGITIZE" ale nie wiecej niz do wartości Z3 wyliczonej wyzej
While IsMoving()
Wend

Z1 = GetVar( 2002 ) ' pobranie osi Z maszyny , ta metoda jest dokladniejsza poniewaz podczas zderzenia jest zapamietywana wartosc i nie zalezy od predkosci hamowania silnika po zatrzymaniu
Z2 = Z+z1

message (z2) ; wyswietlenie wartosci na dolnym pasku wiadomosci

Code "G0"
Code "G53 z0"
While IsMoving() ; podjechanie do góry Z maszyny Z0
Wend

call SetOEMDRO(42,z2)
Tool = GetDRO( 24 ) ; wpisanie wyliczonej wartosci do rejestru dlugosci narzedzia
Code "G43 H"&Tool ; i wywolanie korekty dla tego narzedzia

Code "G53 z-1"
While IsMoving()
Wend
Code "G53 z0" ; ta czesc jest najbardziej tajemnicza, musialem tak zrobic
While IsMoving() ; poniewaz bez tego przy zalozeniu krutszego ( albo dluzszego )
Wend ; freza maszyna jechala do góry pomimo ze byla na samej górze i naciskała na LIMIT Z


mam nadzieje , ze komus sie to przyda, ktos to sprawdzi i opisze , poniewaz duzo ludzi sie o to pyta, ja juz nie mam maszyny na ktorej moge to sprawdzic , pisalem to conajmniej 2 lata temu i juz niewiele pamietam.

Awatar użytkownika

k-m-r1
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 7
Posty: 1418
Rejestracja: 23 cze 2008, 10:38
Lokalizacja: OOL lub DW
Kontakt:

#9

Post napisał: k-m-r1 » 25 lut 2009, 16:29

czy ktoś ma możliwosc i chęci sprawdzenia tego

Kod: Zaznacz cały

 Serial port

You can send bytes of raw data to a serial port. The port number (i.e. n in COMn) to be used and the baud rate for transmission is set in Config>Logic. RTS/CTS hardware flow control protocol will be used to control large volumes of data but this will not be normally required. Data is transmitted 8 data bits, 1 stop bit No Parity by a call of SendSerial.

Sub SendSerial (chars as String) 

Example: to write the value of X DRO to an LCD display connected to the serial (RS232) port.

Call SendSerial ("X-Axis = " & GetDRO (0)) 


[edit] 
Foreign ports

Scripts can access ports on the PC which are additional to the one (or perhaps two) parallel port(s) defined in Config>Ports and Pins. These are accessed at the basic hardware port address level and you will have to be aware of the details of the individual port addresses, allocation of data and status bits etc.

Function GetPortByte (pAddr as Integer) as Byte
Sub PutPortByte (pAddr as Integer, bData as Byte) 

This feature should be used with great care as, if misused, it can interfere with any peripheral on your system, including the hard-driv
dowiedziałem sie żę można ustawiac stany na wybranym porcie i odczytywac stany dziki temu mozna w łątwy sposób zrobic magazynek wraz z czujnikami do pomiaru długosci nażedzia oraz inne ciekawe pomysły da się zrealizować czy ktoś ma możliwosc sprawdzenia??


muskiel
Specjalista poziom 1 (min. 100)
Specjalista poziom 1 (min. 100)
Posty w temacie: 2
Posty: 152
Rejestracja: 26 mar 2005, 16:25
Lokalizacja: Starachowice

#10

Post napisał: muskiel » 25 lut 2009, 21:51

Witam,

Temat ciekawy. Z tego co wiem to jest tez mozliwosc uzycia protokolu ModBus RTU, ktory obsluguja sterowniki PLC. Tyle ze przy sterowniku PLC trzeba jeszcze go zaprogramowac.

Tak czy inaczej, nie wiem czy nie lepszym, tanszym i szybszym rozwiazaniem jest zastosowanie PoKeys55 (opis w tym watku: https://www.cnc.info.pl/topics45/pokeys ... 9650#97743
A tutaj manual do pluginu dla PoKeys55. Brzmi zachecajaco...

Pzdr
Piotr

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „Mach 2 / 3 / 4 (ArtSoft software)”