Pomoc przy gwintowaniu, program na #

Dyskusje na temat systemu Faunc

Autor tematu
bziak
Nowy użytkownik, używaj wyszukiwarki
Nowy użytkownik, używaj wyszukiwarki
Posty w temacie: 1
Posty: 8
Rejestracja: 23 paź 2014, 23:25
Lokalizacja: NS

Pomoc przy gwintowaniu, program na #

#1

Post napisał: bziak » 06 gru 2014, 15:09

Witam, potrzebuję pomocy ponieważ nie wiem jak się do tego zabrać.

Mam program napisany do wiercenia pod kątem i potrzebuję go przerobić na gwintowanie M8x1 tylko nie wiem w którym miejscu co i jak zmienić, może ktoś to rozczyta i pomoże, bo dla mnie praca na # to czarna magia...

Nie wiem gdzie i w jaki sposób wstawić skok gwintu? lub w jak najprostszy sposób można to zmienić, rozwiązać...

Bardzo proszę o pomoc i z góry będę niezmiernie wdzięczny!

T1037( WIERTLO D7 --- T37)
M6
(BOHRERRICHTUNG Y+/Z-)
(SCHNITT A1-A2)
H99D99
G0G90G56X-85Y-377S1600F224M4
T1039M16
M8M52

#181=-85(X-KOORDINATE)
#182=-197(Y-KOORDINATE)
#183=33(Z-KOORDINATE)
#184=30(WINKEL DER BOHRUNG ZU +X)
#185=23(WERKZEUGLAENGE)
#186=23(RADIUSKORR.)
#187=36(BOHRTIEFE)
#188=464(VORSCHUB BOHREN)

M98P9108

%
O9108(Bohren in YZ mit Winkelbohrkopf)
(#181*X-KOORDINATE DES BEZUGSPUNKTES)
(#182*Y-KOORDINATE DES BEZUGSPUNKTES)
(#183*Z-KOORDINATE DES BEZUGSPUNKTES)
(#184*YZ-WINKEL DER GENEIGTEN WERKZEUGACHSE)
N60(#185*LAENGENKORR.)
N70(#186*RADIUSKORR)
N80(#187*BOHRTIEFE)
(#188=VORSCHUB)
N210#190=#[2200+#185]+#[2000+#185](AUSLESEN WZ-L)
#191=#[13000+#185]
G0G90X#181Y[#182-#191]
G0G43H#185Z#183
#192=SIN[#184]*#187(Z)
#193=COS[#184]*#187(Y)
G1G91Z-#192Y#193F#188
G1G90Z#183Y[#182-#191]
G0G91G28Z0
G90
M99
%
G0G91G30Z0



Tagi:


PiRo_man
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 4
Posty: 329
Rejestracja: 23 sie 2010, 21:32
Lokalizacja: Świerklany

Re: Pomoc przy gwintowaniu, program na #

#2

Post napisał: PiRo_man » 06 gru 2014, 22:58

bziak pisze:(...)
#192=SIN[#184]*#187(Z)
#193=COS[#184]*#187(Y)
G1G91Z-#192Y#193F#188
G1G90Z#183Y[#182-#191]
(...)
Szkoda że po niemiecku. W każdym razie tu jest chyba (nie znam niemieckiego, wziąłem to na logikę) najważniejszy fragment o który pytasz. Wyliczenie współrzędnych wiercenia, wiercenie (współrzędne przyrostowe, także podejrzewam że wiercenie bez dosuwu), następnie wycofanie do pozycji bezpiecznej. Jeśli chciał byś to zamienić na gwintowanie to jest z tym trochę roboty. Wyliczenie współrzędnych już masz, teraz jeszcze pozostaje włączenie pozycjonowania dokładnego, zablokowanie posuwu, wprowadzenie przeciwnych obrotów przy wyjeździe gwintownika... Jeśli nie ogarniasz #'y to będziesz miał ciężko to zrobić.

inż. Mateusz

Awatar użytkownika

rafalxfiles
Specjalista poziom 3 (min. 600)
Specjalista poziom 3 (min. 600)
Posty w temacie: 3
Posty: 665
Rejestracja: 28 sie 2006, 17:55
Lokalizacja: dolnyśląsk
Kontakt:

#3

Post napisał: rafalxfiles » 08 gru 2014, 22:55

Kolego Piro_Man a co masz na myśli mówiąc "włączenie pozycjonowania dokładnego" Czyli że co?? :shock:


PiRo_man
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 4
Posty: 329
Rejestracja: 23 sie 2010, 21:32
Lokalizacja: Świerklany

#4

Post napisał: PiRo_man » 09 gru 2014, 15:25

Pisałem to z głowy i wkradł się błąd. Miało być "Zatrzymanie" a nie "Pozycjonowanie".
Instrukcja programowania FANUC pisze:Jeśli kontrola dokładnego zatrzymania jest nieaktywna, nie zostanie
wykonana kontrola dokładnego zatrzymania (kontrola położenia),
nawet w blokach nie wykonujących skrawania.
Czyli wkradły się dwa błędy. ;) Ale jakby kolega się zainteresował tematem, to po moich podpowiedziach na pewno znalazł by informacje których potrzebuje, i sam by doszedł do wniosku że do mojego opisu wkradło się parę błędów.

P.S. Jeszcze "Stop posuwu" powinien być nieaktywny.

inż. Mateusz

Awatar użytkownika

rafalxfiles
Specjalista poziom 3 (min. 600)
Specjalista poziom 3 (min. 600)
Posty w temacie: 3
Posty: 665
Rejestracja: 28 sie 2006, 17:55
Lokalizacja: dolnyśląsk
Kontakt:

#5

Post napisał: rafalxfiles » 09 gru 2014, 20:42

Sorry że Cie tak podpytuje ale sam rozmyślam jak to zrobić.. Bo.. z cyklu w dwóch osiach nie nagwintujesz trzeba to zrobić z ręki..
I o ile zablokowanie pokręteł to nie problem to problemem jest zsynchronizowanie wrzeciona z posuwem.. można to jakoś zrobić? żeby wrzeciono się w miarę szybko zatrzymało? bez oprawki kompensacyjnej zapewne się nie obejdzie, ale pytanie jak uzyskać jak najmniejszy błąd posuwu?


PiRo_man
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 4
Posty: 329
Rejestracja: 23 sie 2010, 21:32
Lokalizacja: Świerklany

#6

Post napisał: PiRo_man » 10 gru 2014, 16:23

rafalxfiles oczywiście jak najbardziej możesz pytać. Jak będę miał czas (i chęci ;)) to odpiszę.

Na wstępie zaznaczę, że nie jestem programistą PLC ani konstruktorem maszyn, więc to co napiszę będzie się opierało o moją wiedzę, doświadczenie oraz (wydaje mi się) logiczne podejście, więc mogę się mylić.

Jeśli chodzi o zatrzymanie gwintownika na dnie otworu gwintowanego, i wraz z załączeniem przeciwnych obrotów rozpoczęcie wycofywania go, to wydaje mi się że odpowiada za to właśnie to zatrzymanie dokładne. Gwintownik nie ma się zatrzymać nagle, tak jak to napisałeś, tylko płynnie. Wraz ze zmniejszaniem obrotów wprost proporcjonalnie zmniejsza się posuw, aż do całkowitego zatrzymania. Taka zaleta silników krokowych. można nimi sterować płynnie w ułamku sekundy zmieniając obroty procentowo w jakimś okresie czasu, dla ludzkiego oka wygląda to na płynne przejście, a faktycznie błąd jest na tyle mały, że narzędzie tego "nie odczuwa".
Wydaje mi się, że ta sama technika jest wykorzystana przy interpolacji kołowej - według definicji może się to wiązać z pewnym błędem wykonania. Zapewne tak jest w istocie, jednak człowiek nie jest w stanie wychwycić tak małego błędu. Odpowiedzialne za nią są silniki, a nie układ w maszynie przeliczający współrzędne. Na podstawie wykonywanego łuku odpowiedni silnik danej osi startuje z dużym posuwem, drugi wolnym, im dalsza część łuku jest wykonana, tym bardziej pierwszy silnik zwalnia a drugi przyspiesza. Dokładnie w połowie ćwiartki łuku oba powinny mieć ten sam posuw, by w końcowej fazie pierwszy zwalniał do zera, a drugi uzyskiwał zadeklarowany posuw.

Trochę się rozpisałem, ale wydaje mi się, że w miarę sensownie opisałem sytuację. Co do gwintowania w dwóch osiach, to wydaje mi się że jeżeli maszyna obsługuje czwartą oś, to jest przygotowana na przeliczenie współrzędnych pod kątem i dostosowania silników krokowych do operacji jaką che się wykonać.

W instrukcji jaką posiadam jest przykład na gwintowanie. Przykład jest akurat na jedną oś, na gwintowanie w osi "Z". Skoro przykład jest podany w instrukcji, to powinien działać zgodnie z oczekiwaniami, i nie powinien powodować uszkodzenia narzędzia.
Przykład z instrukcji sterownika:
Instrukcja programowania Fanuc pisze:O0001 ;
N1 G00 G91 X#24 Y#25 ;
N2 Z#18 ;
G04 ;
N3 #3003=3 ;
N4 #3004=7 ;
N5 G01 Z#26 F#9 ;
N6 M04 ;
N7 G01
Z---[ROUND[#18]+ROUND[#26]] ;
G04 ;
N8 #3004=0 ;
N9 #3003=0 ;
N10M03 ;
M99 ;
Opis:

Kod: Zaznacz cały

#3003 |Pojedynczy blok |Zakończenie funkcji pomocniczej
-------------------------------------------------------
0     |Uaktywnione     |Oczekiwanie
1     |Nieaktywne      |Oczekiwanie
2     |Uaktywnione     |Bez oczekiwania
3     |Nieaktywne      |Bez oczekiwania

- Po włączeniu zasilania, zmienna ma wartość 0.
- Jeśli zatrzymanie pojedynczego bloku jest nieaktywne, operacja
pojedynczego bloku nie jest wykonywana, nawet jeśli przełącznik
pojedynczego bloku jest w pozycji ON
- Jeśli nie określono oczekiwania na funkcjepomocnicze (M, S iT),
wykonanie programu przechodzi do następnego bloku przed
zakończeniem funkcji pomocniczych. Nie jest także wysyłany
sygnał zakończenia dystrybucji DEN.

Kod: Zaznacz cały

#3004 |Stop posuwu |Przesterowanie szybkości posuwu |Dokładne zatrzymanie
--------------------------------------------------------------------------
0     |Uaktywnione |Uaktywnione                     |Uaktywnione
1     |Nieaktywne  |Uaktywnione                     |Uaktywnione
2     |Uaktywnione |Nieaktywne                      |Uaktywnione
3     |Nieaktywne  |Nieaktywne                      |Uaktywnione
4     |Uaktywnione |Uaktywnione                     |Nieaktywne
5     |Nieaktywne  |Uaktywnione                     |Nieaktywne
6     |Uaktywnione |Nieaktywne                      |Nieaktywne
7     |Nieaktywne  |Nieaktywne                      |Nieaktywne

- Po włączeniu zasilania, zmienna ma wartość 0.
- Jeśli jest uaktywniony stop posuwu:
(1) Jeśli przycisk zatrzymania posuwu jest wciśnięty, maszyna zatrzymuje
się w trybie zatrzymania pojedynczego bloku. Jednak
operacja zatrzymania pojedynczego bloku nie jest wykonywana,
jeśli tryb pojedynczego bloku jest wyłączony zmienną #3003.
(2) Jeśli wciśnie się przycisk zatrzymania posuwu a następnie zwolni
go, zaświeci się lampka stopu posuwu, ale maszyna nie zatrzyma
się. Program jest nadal wykonywany i maszyna zatrzyma się w
pierwszym bloku, w którym aktywny jest stop posuwu.
- Jeśli korekcja szybkości posuwu jest nieaktywna, będzie zawsze
stosowane 100% przesterowanie, niezależnie od nastawy przełącznika
korekcji szybkości posuwu na pulpicie urządzenia.
- Jeśli kontrola dokładnego zatrzymania jest nieaktywna, nie zostanie
wykonana kontrola dokładnego zatrzymania (kontrola położenia),
nawet w blokach nie wykonujących skrawania.
Pozostaje wyliczyć współrzędne gwintowania, napisać program według przykładu, ale w dwóch osiach, przepuścić w powietrzu o sprawdzić jak zachowa się gwintownik, jeśli wizualnie wszystko będzie ok, spróbować w materiale. Gwintowania akurat nie testowałem, więc mój opis jest czysto teoretyczny, jednak jak już wcześniej wspomniałem, skoro przykład znajduje się w instrukcji, to musi działać tak jak powinien.

Zresztą w tym przypadku korzysta się z gotowych rozwiązań. Wywołując G84 wywołujemy właśnie tego typu makro, tylko po prostu tego nie widać, dzieje się to w tle bez naszej wiedzy. Maszyny dają nam duże możliwości, niestety ograniczamy te możliwości własną wyobraźnią oraz podejściem - "tego na pewno nie da się zrobić..."/"to na pewno nie zadziała...".

inż. Mateusz

Awatar użytkownika

rafalxfiles
Specjalista poziom 3 (min. 600)
Specjalista poziom 3 (min. 600)
Posty w temacie: 3
Posty: 665
Rejestracja: 28 sie 2006, 17:55
Lokalizacja: dolnyśląsk
Kontakt:

#7

Post napisał: rafalxfiles » 11 gru 2014, 18:19

Ładnie się rozpisałeś.. też widziałem ten przykład w książce fanuka..
Wiem, że wywołując np. G84.. maszyna wykonuje sobie podobne rzeczy.. te # zamiast się męczyć można dać G63.. ale dalej pozostaje problem.. bo
#3003=3 ;
#3004=7
wyłączy Ci single blok i ustawi pokrętło na 100% ale pozostaje pytanie jak zsynchronizować ruch 3 osi - dwóch liniowych i obrotu wrzeciona..
Bądź co bądź wielkie dzięki za rozpisanie się.. Ciekawe czy można by było zmienić wrzeciono na oś której zaprogramowalibyśmy wartość kontową.. np. 10 obrotów czyli 3600 stopni i wtedy wykonać ruch przy skoku gwintu 1 na głębokość w sumie 10 mm.. może tak by to zadziałało.. muszę poszukać :)


PiRo_man
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 4
Posty: 329
Rejestracja: 23 sie 2010, 21:32
Lokalizacja: Świerklany

#8

Post napisał: PiRo_man » 11 gru 2014, 20:01

Wątpię że zamiana ilości obrotów na stopnie okaże się tu dobrym rozwiązaniem - w sensie czy to cokolwiek zmieni? Narzędzie i tak musi "iść" z jakimiś obrotami i jakimś posuwem, na dnie otworu musi wyhamować zmniejszając równocześnie posuw (czyli sprawa kluczowa), następnie po włączeniu przeciwnych obrotów wykonać ruch w przeciwnym kierunku. Czyli czy są to obroty, stopnie, mm/min, czy obroty/min, nie ma chyba większego znaczenia. Ważne żeby maszyna wykonała ruch zgodny z oczekiwaniami.

Wyda mi się, że trochę za bardzo komplikujesz sobie sprawę. Pewne mechanizmy na pewno są "wbudowane", chociażby po to, żeby programistom PLC łatwiej się pracowało, i można było produkować maszyny (jednego typu) z różnymi sterownikami. Jak już wcześniej wspomniałem synchronizacja silników osi oraz wrzeciona kontrolowana jest przez punkty interpolowane. Najrozsądniejszym moim zdaniem wyjściem było by procentowe zaniżanie obrotów silników względem siebie. Czyli tak w skrócie można by to opisać w ten sposób:
- silnik obrotów się włącza, maszyna startuje z jakimś posuwem
- do pewnego momentu idzie stałym posuwem ze stałymi obrotami, teoretycznie nie konieczne jest tu sprawdzanie położenia narzędzia, bo sterownik może kontrolować pracę silników synchronizując ich pozycje.
- przykładowo 1 mm. przed dnem otworu gwintowanego sterownik dostaje sygnał, że narzędzie zbliża się do punktu docelowego, i od tego miejsca wartości silników krokowych zmniejszane są o 10% co 0,1 mm. Aż do uzyskania pozycji dna otworu (mniej więcej - tutaj ważniejsza jest synchronizacja obrotów z posuwem niż dokładność ustawienia się narzędzia na jakichś tam współrzędnych).

Da gwintowania w dwóch osiach będzie tak samo, tylko zamiast (przykładowo) posuwu 100 mm/min dla osi "Z" będzie po 50 mm/min w osiach "X" oraz "Z".

Tak to widzę, ale czy dobrze? - nie wiem. To są tylko takie moje subiektywne analizy i domysły.

Pozdrawiam
inż. Mateusz

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „Fanuc”