Cykl niezbędny przy wykonywaniu precyzyjnych otworów za pomocą wytaczadeł. Wytaczadło po osiągnięciu dna zatrzymuje się, następnie odsuwa od powierzchni obrabianej o zadaną wartość i wyjeżdża z otworu. Ustawianie wytaczadła na konkretny wymiar opiszę innym razem.
Wzór na G76
G76 Z... R... Q... P... F... K...
G76- Wywołanie cyklu
Z– Głębokość otworu
R– Wartość wycofania ponad pozycję początkową.
Q– Odsunięcie na dnie otworu od powierzchni obrabianej
P– Czas postoju na dnie obrabianego otworu (jednostka milisekunda)
F– Posuw
K– Liczba powtórzeń
Przy parametrze Q staraj się używać małych wartości, rzędu 0.1mm. Z doświadczenia wiem, że w otworach jest zazwyczaj bardzo ciasno i każda dyszka robi różnicę. Dodatkowo należy zwrócić szczególną uwagę na pozycję ostrza przy ładowaniu narzędzia do magazynu. Zawsze przed załadunkiem włącz pozycjonowanie wrzeciona. Pamiętaj, że domyślny odjazd wytaczadła w cyklu to -X.
Przykład 1:
Do wykonania otwór wg rysunku. Oczywiście jest on już wywiercony na mniejszy wymiar.
Gwintowanie jest jedną z najczęściej używanych operacji na frezarkach. Głupio by było nie znać cyklu tak bardzo ułatwiającego życie.
G84 bo to o nim mowa, można stosować na kilka sposobów. A to jakiego Ty użyjesz zależy tylko od Ciebie. A raczej od Ciebie i twojej maszyny. Zaraz wyjaśnię Ci dlaczego.
Zacznę od najprostszej formy. To powinna czytać każda maszyna
Wzór na G84
G84 Z... P... R... F... K...
G84– Włączenie cyklu gwintowania. Gwint prawy
Z– Pozycja dna gwintu
P-Przerwa na dnie otworu ( Jednostka milisekundy)
R-Pozycja wycofania narzędzia, ponad pozycję początkową.
F-Posuw
K– Liczba powtórzeń cyklu (opcjonalnie)
Dla gwintu lewego kod G84 zastąp G74.
Minimum informacji, wystarcza aby prawidłowo zaprogramować gwintowanie.
Ale nie Ciesz się tak bardzo. Może się okazać, że twoja maszyna, mimo tego, że przeczyta cykl i będzie go wykonywać i tak będzie rwała gwint.
Powody mogą być dwa:
Twoja maszyna ma funkcję gwintowania sztywnego ale trzeba ją dodatkowo aktywować kodem M29 wpisanym w tym samym bloku co określenie obrotów.
Twoja maszyna nie ma funkcji gwintowania sztywnego. Jedynym wyjściem jest zastosowanie oprawki kompensacyjnej.
Przykład 1:
Mam do nagwintowania otwór:
Zakładam głębokość gwintu 45mm
Postój na dnie pół sekundy
Pozycja bezpieczna 1mm
Na rysunku jest otwór ⌀ 12. No to ja nagwintuje go gwintownikiem M14, bo tak się składa, że otwór pod gwint M14 to właśnie ⌀ 12.
Na pewno zauważyłeś, że wpisałem posuw 600. Dlaczego taki a nie inny?
Skok gwintu M14 wynosi 2. Wzór na posuw przy gwintowaniu wygląda następująco:
F=P*S
F-Posuw
P-Skok gwintu
S-Obroty wrzeciona
Za każdym razem gdy zmienisz obroty, jesteś zmuszony przeliczyć od nowa posuw.
A gdyby był łatwiejszy sposób? Bez konieczności przeliczania.
Tym sposobem są dwa Gkody:
G94– Posuw milimetry na minutę (domyślny dla frezarek)
G95- Posuw milimetry na obrót
Gdy przed cyklem gwintowania ustawimy posuw w milimetrach na obrót, jedyne co będziemy musieli zrobić to wpisać wartość skoku w miejsce posuwu. Oczywiście po skończonym gwintowaniu należy powrócić do posuwu wyrażonego w milimetrach na minutę za pomocą G94. Przykład 2 pokaże Ci jak będzie taki program wyglądał.
Przykład 2:
Zakładam głębokość gwintu 45mm
Gwint M14
Postój na dnie pół sekundy
Pozycja bezpieczna 1mm
Czyli taki sam gwint jak w przykładzie nr1. Z tą różnicą że teraz użyję G95.
Tak jak pisałem wcześniej, niektóre maszyny nie obsługują gwintowania na sztywno bezpośrednio. Należy się wspomóc funkcją M29. Wtedy program będzie wyglądał tak:
Na wcześniejszych przykładach pokazałem Ci jak gwintować „na raz”. Ale co jeśli pracujemy w „trudnym” materiale lub gdy dostał się nam głęboki gwint do wykonania?
Zaprezentuję Ci jak wykonać gwint w sposób pokazany powyżej .
Jeśli masz szczęście twoja maszyna obsługuje tą funkcję. Wtedy wzór na gwintowanie wygląda następująco:
G84 Z... P... Q... R... F...
G84– Włączenie cyklu gwintowania. Gwint prawy
Z– Pozycja dna gwintu
P-Przerwa na dnie otworu ( Jednostka milisekundy)
Q– Głębokość gwintowania do momentu wycofania
R-Pozycja wycofania narzędzia, ponad pozycję początkową.
F-Posuw
Doszedł jeden parametr odpowiedzialny za stopniowe gwintowanie.
Oczywiście nie żyjemy w świecie idealnym. Może się zdarzyć, że Twoja maszyna nie będzie obsługiwała gwintowania stopniowego. Co wtedy? Nic straconego. Jest pewien sposób. Przykład 5 pokaże Ci jak tego dokonać.
Jak widzisz narzędzie pracuje tak samo, zmienił się sposób zapisu.
Gwintowanie kilku otworów
Rzadko się zdarza, że do wykonania mamy tylko jeden gwint. Zazwyczaj jest ich kilka, kilkanaście, kilkadziesiąt. Nie ma konieczności wpisywania cyklu przy każdym z nich. Wystarczy to zrobić tylko przy pierwszym, a potem już tylko podawać pozycję otworów. Przykład 6 Ci to wyjaśni.
Gwintowanie lewego gwintu wygląda tak samo. Jest tylko jedna różnica Zamiast G84 należy zastosować G74.
Trochę długo, ale chciałem jak najwięcej zawrzeć w dzisiejszym wpisie. I tak pewnie o czymś zapomniałem. Gdybyś zauważył jakieś niedociągnięcia, nie zapomnij mi o tym powiedzieć.
Nie zapomnij zasubskrybować za pomocą zakładki Newsletter.
W poprzednim wpisie dotyczącym cyklu wiercenia G73, opisałem jak wykonać otwory rozmieszczone po kwadracie lub nieregularnie.
Ale załóżmy, że układ otworów wygląda w ten sposób:
Oczywiście można by zaprogramować ich tak, że dla każdego otworu z osobna wpisywałbym współrzędne. Tylko po co sobie życie utrudniać. Jest dużo łatwiejszy sposób. A mianowicie funkcja G68, czyli rotacja współrzędnych. Poniższy przykład pokaże Ci jak ona działa.
Przykład 1:
Siatka otworów wygląda w ten sposób:
Parametry dobrałem losowo. Ponieważ teraz najbardziej interesuje nas funkcja G68.
W twojej przygodzie z maszynami na pewno przyjdzie taki dzień, że będziesz musiał wiercić w miękkich materiałach, takich jak aluminium. Wtedy pojawi się problem z wiórem, które nie chce się złamać. Cykl G73 działa tak samo jak cykl G74 na tokarkach. Wyjaśniłem go tutaj. Zasada działania jest bardzo podobna.
Wzór na cykl G73
G73 Z... R... Q... F...
G73– Wywołanie cyklu
Z– Głębokość na jaką masz zamiar wiercić
Q-Głębokość wiercenia, do momentu wycofania o parametr R
R- Wartość wycofania wiertła po każdym wwierceniu się o wartość Q
F– Posuw
Po każdym wykonanym otworze wystarczy, że wpiszesz położenie następnego otworu i cykl będzie się powtarzał do momentu odwołania go funkcją G80.
Pokażę ci na kilku przykładach jak to wygląda.
Przykład 1:
Masz do wykonania taki otwór jak na rysunku.
Głębokość otworu to 50mm.
Chcę żeby po każdych 10mm wwiercenia się w materiał, narzędzie wycofało się o 1mm do tyłu.
Jakiś czas temu zrobiłem wpis dotyczący cyklu wiercenia G74. W komentarzach odezwał się Pan Krzysztof, że zapomniałem w tabeli wpisać G83. A ja po prostu nie znałem tego cyklu. Tzn znałem, ale nie na tokarkach. Całe życie uważałem, że działa on wyłącznie na frezarkach. Jak bardzo się zdziwiłem, gdy po wpisaniu cyklu na mojej Pumie wszystko działało jak należy.
Dlatego ciągle powtarzam żebyście komentowali moje wpisy. Czasami znajdujecie błędy, a czasami jak w tym przypadku pozwalacie mi nauczyć się czegoś nowego.
Wzór na cykl G83
G83 Z... R... P... Q... F...
G83– Wywołanie cyklu wiercenia z odwiórowaniem
Z– Głębokość wierconego otworu (jednostka mm)
R– Odległość na jaką ma wyjechać wiertło aby odprowadzić wióra ( jednostka mm)
P– Czas postoju narzędzia na dnie otworu przy każdym wjeździe ( jednostka milisekunda )
Q– Głębokość wiercenia do momentu odwiórowania (jednostka mikrometr μm)
F– Posuw
Przykład 1:
Potrzebny jest otwór głęboki na 40mm
Po 10mm wiertło ma się wycofać na 1mm przed czoło.
Na dnie otworu wiertło ma się zatrzymać na pół sekundy w celu odprowadzenia wióra
(PRZYKLAD CYKL G83)
(PRZEMOCNC)
(WIERCENIE)
N10 G54 T0101 (wybór bazy i wiertła)
N30 G97 S150 M3 (określenie obrotów)
N40 G0 X0 Z1 (najazd przed czoło półfabrykatu )
N50 G83 Z-40 R1 P500 Q10000 F0,15
N60 G28 U0 W0
N70 M30
Przykład 2:
Potrzebny jest otwór głęboki na 100mm
Po 50mm wiertło ma się wycofać o 5mm przed czoło.
Na dnie otworu wiertło ma się zatrzymać na sekundę w celu odprowadzenia wióra
Wszystkie poprzednie wpisy są bardzo ważnie i wiedza o nich jest niezbędna. Ale nie będą zbyt przydatne jeśli będziesz chciał ich użyć pojedynczo. Potrzebują one czegoś jeszcze. Taki final touch. Niezbędne są jakieś formy manipulacji, żeby nasze działania stały się decyzyjne.
Proces decyzyjny w Fanucu jest oparty na najstarszym, a zarazem najprostszym języku komputerowym: BASIC. Był on najpotężniejszym językiem w swoich czasach. Do dzisiaj ewoluował już tak wiele razy, że mało co przypomina swojego pradziadka. Ale zasady działania i struktury programu do tej pory istnieją.
Weźmy na przykład nasze tytułowe funkcje zapętlania (WHILE, IF, GOTO) . To cały czas jest język Basic
WHILE– Dopóki
IF– Jeśli
IF_THEN ; Jeśli_Wtedy
GOTO– Idź do
Zasadę działania pokażę Ci na przykładzie.
If I will have a money, I will buy a car. ( Jeśli będę miał pieniądze, kupie sobie samochód)
Teraz nasze zdanie podzielę na 2 części. Warunek: If I will have a money(Jeśli będę miał pieniądze) . Rozwiązanie warunku Jeśli masz pieniądze kupisz sobie samochód, natomiast jeśli nie masz tych pieniędzy, samochodu nie będzie. Tak albo tak. Warunek prosty sam w sobie, ale bardzo potężny jeśli zastosujesz go w programowaniu makro.
IF
Funkcja decyzyjna lub Funkcja warunkowa. Jak kto woli
W programie zapisuje się ją w ten sposób:
IF [warunek zapętlenia] GOTOn
Tłumacząc to po ludzku. Dopóki warunek zapisany w nawiasach będzie spełniany, TRUE program będzie przeskakiwał do bloku n. Natomiast jeśli warunek nie będzie spełniony, FALSE maszyna przejdzie do następnego bloku.
#1=10 (naddatek w osi Z)
N10 G0 X300 Z=[0+#1]
N20 G1 X100 F0.3
N30 G0 Z=[1+#1]
N40 X300
#1=[#1-2]
IF [#1 GE 0] GOTO10
N50 G28 U0 W0
N60 M30
Jest to prosty program na planowanie czoła. Ale bardzo dobrze obrazuje zasadę działania funkcji IF.
W pierwszym przejściu naddatek wynosi 10mm. Program dochodzi do odejmowania od #1 są odejmowane 2mm. W tym momencie Nasz #1 wynosi 8. Następnie dochodzimy do naszego warunku. Czytając mój poprzedni wpis odczytasz, że GE znaczy większy lub równy.
Czyli tłumacząc na nasz język warunek wygląda tak:
Jeśli #1 jest większy lub równy 0 idź do bloku N10 .
Tak więc biorąc wynik z działania widzimy, że warunek jest spełniony i program przeskakuje do bloku N10.
Schemat działania funkcji IF
Po kolejnym przejściu znowu program dochodzi do działania #1= [#1-2]. Tym razem zamiast od 10 maszyna odejmuje od 8. Przechodzimy blok dalej, nasz warunek znowu jest spełniony, czyli przeskakujemy do bloku N10.
Po sześciu przejściach, gdy już maszyna splanuje na Z0, dochodzimy do działania. Wynik nie może być inny niż -2. Po przejściu do następnego bloku okazuje się, że warunek nie jest spełniony, bo -2 jest mniejsze niż 0. W tym momęcie maszyna automatycznie przeskakuje do bloku następnego czyli N50.
To tylko jeden przykład ale myślę, że zasada działania jest jasna.
Można za pomocą zmiennej określić nr bloku, do którego ma nastąpić skok.
Maszyna przeskoczy wszystkie bloki pośrednie i przejdzie do N100.
Starajcie się utrzymać porządek w programach. Numerujcie bloki po kolei. Najlepiej co 5 lub 10, żeby w razie czego można było dopisać bloki pomiędzy. Jeśli będziesz miał bałagan w programie to maszyna nie będzie wiedziała, do którego bloku ma przeskoczyć, bo na przykład ma dwa lub 3 bloki ponumerowane jako N100. To, że teraz wiesz co chcesz zrobić nie znaczy, że za tydzień będziesz wiedział co miałeś na myśli.
IF-THEN
Ta funkcja nie działa we wszystkich wersjach oprogramowania.
Fanuc10/11/15/21 działa
Fanuc0/16/18 Nie działa
Głównym celem polecenia IF-THEN jest prostota. Gdy do wyboru są tylko dwie opcje, ta funkcja jest idealnym rozwiązaniem. Zastępuje połączenie dwóch poprzednich, czyli IF i GOTO .
Po spodem dwie wersje. Obie mają takie same znaczenie.
N10 #100=30
N30 IF [#100 EQ 30] THEN #102=50
N40 IF [#100 EQ 40] THEN #102=10
N50..........
N60 M30
Prościej łatwiej szybciej. A przecież o to nam chodzi.
AND OR
Przy bardziej złożonych kalkulacjach nie wystarczy wynik zero jedynkowy. Czasami trzeba porównać jedną lub więcej wartości.
I znowu angielski się przydaje.If I will have a money and time I will take a vacation. ( Jeśli będę miał pieniądze i czas pojadę na wakacje). Dwa warunki muszą być spełnione. Co z tego jak będziesz miał pieniądze, ale czasu brak. Nie pojedziesz na wakacje.
W drugim przypadku jest trochę inaczej. If I earn money or borrow from my frend I will take a vacation. ( Jeśli zarobie pieniądze lub pożyczę je od przyjaciela, pojadę na wakacje). Wystarczy, że spełnisz jeden warunek z dwóch. Nie musisz pożyczać pieniędzy jeśli je zarobisz i na odwrót. Podsumowując
AND– oba warunki muszą się zgadzać żeby całe wyrażenie było prawdą
OR– wystarczy że jeden warunek się zgadza żeby całe wyrażenie było prawdą
Jest jeszcze funkcja XOR, ale jest ona tak rzadko stosowana że nie będą Ci zawracał nią głowy.
WHILE
Funkcja zapętlenia.
WHILE [WARUNEK] DO1
W prostym tłumaczeniu:
Dopóki będzie spełniany warunek w nawiasach wykonuj część programu zakończoną słowem END1.
Zasada działania funkcji WHILE
Pokażę to na takim samym przykładzie co funkcja IF.
WHILE [#1 GE 0] DO1
#1=10 (naddatek w osi Z)
N10 G0 X300 Z=[0+#1]
N20 G1 X100 F0.3
N30 G0 Z=[1+#1]
N40 X300
#1=[#1-2]
END1
N50 G28 U0 W0
N60 M30
Dopóki zmienna #1 będzie większa lub równa 0, wykonuj część programu zakończoną wyrazem END1.
Numery przy słowach DO i END są ze sobą ściśle powiązane. Służą utrzymaniu porządku w programie gdybyśmy chcieli programować pętle do kilku poziomów. Sterowanie Fanuc pozwala zagnieździć pętle do trzech poziomów. Gdzie DO1 będzie odwoływać się do END1 a DO3 do END3.
Poniższe schematy pokazują zasadę działania zagnieżdżania.
Jeden poziom pętliDwa poziomy pętliTrzy poziomy pętli
Jeden i dwa poziomy pętli są najczęściej spotykane. Pierwszy jest łatwy do zrozumienia. Drugi jest już trochę trudniejszy.
Trzy poziomy są rzadziej używane i zrozumienie ich może przysporzyć trochę kłopotu. Powtórzę to jeszcze raz: Musisz utrzymać porządek w programie, bez tego nawet podwójne zagnieżdżanie będzie skutkowało alarmami.
To by było tyle na dzisiaj. Nie pozostaje nic innego tylko siadać i pisać programy Makro. Masz wszystko wyłożone na tacy. Wydaje mi się, że prościej się wyjaśnić tego nie da. Ale Gdybyś miał jakieś wątpliwości zapraszam do komentowania lub do bezpośredniego kontaktu. Nie zapomnij o subskrybowaniu. Po prawej stronie jest zakładka Newsletter. Pozdrawiam PrzemoCNC
Ale po co by były te wszystkie zmienne jeśli nie można by było wykonywać działań matematycznych przy ich pomocy. Dzisiaj przedstawię Ci wszystkie funkcje matematyczne jakie możesz używać przy pisaniu programu Makro. A jest ich naprawdę sporo.
Funkcje matematyczne
Arytmetyczne
Trygonometryczne
Zaokrąglanie
Różne
Logiczne
Przekształcanie
Jak widzisz jest tego trochę. W tym wpisie postaram się wyjaśnić każdą jedną, a w następnym pokażę Ci jak to wszystko zapętlać, odwoływać, przeskakiwać itp.
Przypisywanie wartości zmiennym
Wartość zmiennej można określić na 2 sposoby. Poprzez funkcję G65, G66 lub przypisując jej wartości bezpośrednio w programie.
Przykład:
#1=200
#5=5
#20=100
W ten sposób przypisałem zmiennym #1 wartość 200, zmiennej #5 wartość 5, itd.
Można im przypisać nie tylko wartość liczbową. Jeśli jest taka potrzeba możesz zapisać w ten sposób:
#1=20
#5=#1
Jak widzisz zmiennej #1 przypisałem wartość 20, ale zmienna #5 jest już uzależniona od wartości zmiennej #1. Gdybym zmienił jej wartość na 25, zapis w tabeli na pozycji #5 również zmieni się na 25.
Wartość zmiennej może być również uzależniona od wyniku działania :
#1=200
#2=20
#5=#1+#2
#10=#1+20
A i jeszcze jeno wartość przypisana może być dodatnia jak i ujemna .
Funkcje Arytmetyczne
Jak już wspomniałem wcześniej, jest kilka funkcji które możemy użyć do kalkulacji matematycznych w programie. Najłatwiejsze są funkcje arytmetyczne. Do obliczeń używa się następujących symboli.
Działanie
Symbol
Dodawanie
+
Odejmowanie
-
Mnożenie
*
Dzielenie
/
Żeby lepiej zrozumieć pokażę Ci kilka przykładów. Po lewej stronie będzie działanie, a po prawej wynik działania. Normalnie, w maszynie jest on zapisany w tabeli, w miejscu zarezerwowanym dla konkretnej zmiennej.
#1=200 przypisałem wartość 200 dla zmiennej #1
#2=300 przypisałem wartość 300 dla zmiennej #2
#3=3+2 5 przypisałem zmiennej #3 wynik dodawania
#4=#2-#1 100 przypisałem zmiennej #4 wynik odejmowania zmiennej #2 od #1
#5=#4*#3 500 przypisałem zmiennej #5 wynik mnożenie zmiennej #4 przez #3
Tak można w nieskończoność. Zasady matematyczne się nie zmieniają. Pamiętasz kolejność działań? Najpierw mnożenie/dzielenie potem dodawanie/odejmowanie.
#1=10-2*3 4 Najpierw mnożenie potem odejmowanie
Gdybyś chciał zmienić kolejność działań, musisz użyć nawiasów. Ale nie zwykłych, tylko kwadratowych.
#1=[10-2]*3 24 Najpierw działania w nawiasie potem mnożenie
Nasze działania możemy bardzo mocno rozbudowywać.
#1=[2+3]*[4-1] 15 2+3=5 i 4-1=3 następnie 5*3=15
#1=30
#2=10
#3=[[#1+#2]*2]+[[8/2]+3] 47 30+10=40, 40*2=80 i 8/2=4, 4+3=7 na końcu 40+7=47
Funkcje Trygonometryczne
No dobra poprzedni rozdział był łatwy. Teraz zaczynają się schody.
Zmienne trygonometryczne dostępne w makrach służą do obliczania kątów lub danych związanych z kątami. Wszystkie funkcje trygonometryczne można używać w makrach, jednak nie wszystkie sterowania obsługują ten rodzaj makr.
W rysunkach kąty podawane są w formacie Stopnie/Minuty/Sekundy. Jednak żeby użyć ich w programowaniu należy sprowadzić ich do wartości dziesiętnych. Pod spodem przedstawiam Ci wzór na przeliczenie:
Wzór na przeliczenie kąta do wartości dziesiętnych
Gdzie:
Dd – kąt sprowadzony do wartości dziesiętnych
D– Stopnie
M– Minuty ( w godzinie jest 60 minut)
S-Sekundy (w godzinie jest 3600 sekund)
Przykład:
Mam kąt 15°30’25” używając wzoru zapiszę go w ten sposób:
15+30/60+25/3600=15,5069°
No i mamy nasz kąt w formie dziesiętnej.
Oczywiście można to wyliczyć tworząc prosty algorytm za pomocą makr
#1=15
#2=30
#3=25
#100=#1+#2/60+#3/3600 15,5069
Poniższa tabela przedstawia dostępne funkcje trygonometryczne
Tabela funkcji trygonometrycznych
Dane wejściowe dla SIN, COS, TAN jak i wyjściowe dla funkcji odwrotnych ATAN, ASIN, ACOS są wyrażane w stopniach.
W kalkulatorach funkcje odwrotne są oznaczone w ten sposób tan-1, sin-1 , cos-1
#1=SIN[40] 0,642787 kąt musi być podany w nawiasach
#2=30.5
#3=COS[#2] 0,8616291 odniesienie do zmiennej musi być w nawiasie
#4=TAN[9] 0,1583844
Funkcje Zaokrąglania
Wykonując obliczenia wynik często nas zaskakuje jeśli popatrzymy na ilość miejsc po przecinku.Maszyny obsługują tylko trzy miejsca jeśli jest to system metryczny lub cztery w przypadku obliczeń w calach. Aby rozwiązać ten problem twórcy systemu wprowadzili trzy polecenia:
Funkcje zaokrąglenia
ROUND– zaokrągla liczby do pełnych cyfr wg. zasady
ROUND[0,00001] zaokrągla do 0
ROUND[0,5] zaokrągla do 1
ROUND[0,99999] zaokrągla do 1
ROUND[1,4] zaokrągla do 1
ROUND[1,7] zaokrągla do 2
FIX- zaokrągla liczby do pełnych cyfr w dół wg. zasady
FIX[0,00001] zaokrągla do 0
FIX[0,5] zaokrągla do 0
FIX[0,99999] zaokrągla do 0
FIX[1,4] zaokrągla do 1
FIX[1,7] zaokrągla do 1
FUP- zaokrągla liczby do pełnych cyfr w górę wg. zasady
FIX[0,00001] zaokrągla do 1
FIX[0,5] zaokrągla do 1
FIX[0,99999] zaokrągla do 1
FIX[1,4] zaokrągla do 2
FIX[1,7] zaokrągla do 2
Zaokrąglenie do kilku miejsc po przecinku
Skoro powyższe funkcje zaokrąglają do pełnych liczb, to jak zaokrąglić do określonej liczby miejsc po przecinku?
Zanim zaokrąglimy liczbę , najpierw trzeba ją pomnożyć przez:
10– 1 miejsce po przecinku
100– 2 miejsca po przecinku
1000– 3 miejsca po przecinku
10000– 4 miejsca po przecinku
Zaokrąglić wynik, a następnie trzeba liczbę zaokrągloną podzielić przez:
10– 1 miejsce po przecinku
100– 2 miejsca po przecinku
1000– 3 miejsca po przecinku
10000– 4 miejsca po przecinku
Przykład:
#2 Chcę zaokrąglić cyfrę 3,19283753293 do trzech miejsc po przecinku
#3 Chcę zaokrąglić cyfrę 3,19283753293 do czterech miejsc po przecinku
I na końcu dzielimy wynik przez wartość mnożnika z pierwszego etapu
#2=#2/1000 3,192
#3=#3/10000 3,1928
Te same zasady wykorzystujemy przy funkcjach FIX, FUP.
Funkcje różne
Z tych pięciu na 90% użyjesz tylko dwóch pierwszych.
SQRT- Wyciąga pierwiastek kwadratowy z liczby umieszczonej pomiędzy nawiasami
#1=SQRT[16] 4
#2=16
#1=SQRT[#2] 4
ABS– sprowadza liczbę umieszczoną w nawiasach do wartości dodatniej
#1=ABS[-12] 12
#1=ABS{[12] 12
LN– Logarytm naturalny
EXP– Wykładnik z podstawową funkcją „e”
ADP– Funkcja dodawania przecinka
Te ostatnie trzy funkcje nie są dostępne w Fanucu 0/16/18/21. Są one tak rzadko używane, że nawet twórcy zalecają aby ich nie używać.
Funkcje logiczne
Funkcje logiczne boolowskie
O ile poprzednia tabelka będzie Ci prawie nie potrzebna, o tyle ta i następna są wręcz niezbędne.
EQ– Równy „=„
NE-Nie równy „≠„
GT-Większy „>„
LT-Mniejszy „<„
GE– Większy lub równy „≥„
LE-Mniejszy lub równy „≤„
Funkcje binarne
Funkcje binarne służą do porównania dwóch liczb lub działań i odpowiedzenia na pytanie, czy dane porównanie jest zgodne z prawdą (true 1 ) czy nie (false 0 ). W tym momencie może Ci się to wydawać niepotrzebne, ale w następnym wpisie jak zacznę wyjaśniać zapętlanie programów zobaczysz jak bardzo te warunki są potrzebne.
AND– Tłumacząc bezpośrednio na polski AND oznacza „i„.
#3= [[100 EQ 110] AND [100 LT 110]] Fałsz Tylko jedno działanie jest prawdziwe
#3= [[100 LE 110] AND [100 LT 110]] Prawda Oba działania są prawdziwe
#3= [[100 GT 110] OR [100 LE 110]] Prawda Przynajmniej jedno działanie jest prawdziwe
#3= [[100 EQ 110] OR [100 GT 110]] Fałsz Żadne działanie nie jest prawdziwe
Pamiętaj o nawiasach [ ] . Jeśli porównanie okaże się prawdą do zmiennej #3 zostanie przypisana cyfra 1, natomiast jeśli okaże się nieprawdą w tabeli zostanie zapisana cyfra 0.
Funkcje przekształcenia
No dobra na koniec zostały dwie funkcje przekształcenia:
Bardzo rzadko używa się tych funkcji. A jeśli już to musisz naprawdę wiedzieć co robisz i mieć sporą wiedzę o zapisach binarnych. Jeden błąd i można sobie załatwić postój maszyny na bardzo długi czas.
To by było tyle na dzisiaj.
Zapraszam do komentowania i subskrybowania za pomocą zakładki newsletter.
Dzisiaj zajmę się kolejnymi zmiennymi. Są nimi zmienne wspólne. Czym one są i do czego służą?
Przede wszystkim, w przeciwieństwie do zmiennych lokalnych, pozostają one aktywne po wykonaniu zaprogramowanego makra.
Zmiennych wspólnych nigdy nie wywołuje się za pomocą G65 . Trzeba im przypisać wartości z poziomu wykonywanego programu makro.
Są dwa zakresy zmiennych wspólnych. Od #100 do #199 i od #500 do #999.
#100 do #199 Zmienne z tego zakresu są zerowane w tabeli po wyłączeniu maszyny.
#500 do #999 Zmienne z tego zakresu pozostają niezmienione nawet po wyłączeniu maszyny
Jak widzisz różnica jest znacząca.
Te zakresy wcale nie są niczym pewnym. Mogą się one różnić w zależności od opcji jaką Fanuc zastosował na danej maszynie. Możecie się spotkać z 4 opcjami A, B, C, D. Zależności wyglądają w ten sposób:
#100 – #149 i #500 – #549 ———Opcja A
#100 – #199 i #500 – #599 ——— Opcja B
#100 – #199 i #500 – #699 ———Opcja C
#100 – #199 i #500 – #999 ——— Opcja D
Limit wielkości zmiennej
Prawdopodobnie nigdy nie będzie Ci to potrzebne. Sporadycznie używa się tak małe lub tak duże liczby w programowaniu. Jednak w celach informacyjnych wypada to podać.
Zabezpieczenie zmiennych wspólnych
Jeśli używacie sterowania Fanuc 10/11/15 możecie zabezpieczyć zmienne wspólne przed zapisem. No nie wszystkie, tylko te od #500 do #627. Potrzebne są do tego 2 parametry systemowe:
7031 określa pierwszą zabezpieczoną zmienną
7032 określa ostatną zabezpieczoną zmienną
Przykład 1:
Jeśli parametr 7031 ustawimy na 14 a parametr 7032 na 58 wtedy…
Zmienne od #514 do #558 będą zabezpieczone przed edycją, czyli zabronione będzie kopiowanie zapisywanie i kasowanie tych zmiennych.
Przykład 2:
Jeśli parametr 7031 ustawimy na 2 a parametr 7032 na 9 wtedy…
Zmienne od #502 do #509 będą zabezpieczone przed edycją, czyli zabronione będzie kopiowanie zapisywanie i kasowanie tych zmiennych.
Ok dzisiaj było krótko. ale już szykuję następny wpis o funkcjach matematycznych używanych przy programowaniu zmiennymi.
Zapraszam do komentowania. Nie zapomnij za subskrybować mojego bloga używając zakładki Newsletter.
Żeby zrozumieć do czego służą tytułowe kody, musisz najpierw dowiedzieć się czym są zmienne lokalne oraz czym jest program Makro. Poniżej linki do wszystkich powiązanych artykułów.
Program makro to podprogram, ale nie taki zwykły jest on level wyżej . Ale najpierw wymienię cechy wspólne, a dopiero potem różnice i sam będziesz mógł je porównać.
Cechy wspólne
Zawsze są zaangażowane przynajmniej dwa programy. Program główny i podprogram/Program Makro.
W obydwóch przypadkach program główny wywołuje podprogram/Program Makro
Oba mają swoje numery i są za ich pomocą wywoływane
Po wywołaniu stają się środowiskiem podrzędnym dla środowiska nadrzędnego, którym jest program główny.
Podprogramy tak samo jak programy makro mogą być wywołane nie tylko przez program główny ale również za pomocą innego podprogramu/Programu Mackro.
W obu przypadkach, podprogram tak samo jak program Makro zawiera specjalne, powtarzające się dane takie jak np. ścieżka narzędzia lub określony wzór otworów.
Oba kończą się kodem M99
No dobra skoro jest tyle podobieństw to jaka jest różnica?
Główną różnicą jest elastyczność.
Podprogramy używają stałych danych, których nie da się zmienić.
Programując programy Makro używamy elastycznych danych. Robi się to za pomocą zmiennych. Z ich pomocą można bardzo szybko określić wartości przejazdów, ale również bardzo łatwo można je zmieniać
Kolejną różnicą jest sposób wywołania.
Podprogramy wywołuje się za pomocą funkcji M98 P…. Gdzie P to numer podprogramu.
Programy Makro wywołuje się naszą funkcją tytułową G65 P…. Gdzie P to numer programu Makro.
Wywołując podprogramy nie trzeba wpisywać dodatkowych danych
Wywołując programy Makro trzeba dopisać dodatkowe dane po numerze programu.
Dzięki naszemu programowi Makro możemy wykonać taki kanałek jak na rysunku. Mało tego, możemy wykonać taki kanałek na dowolnej średnicy, mający dowolną głębokość. Niezły bajer co nie?
Jak to działa?
Załóżmy, że zamiast głębokości 8mm kanałek będzie miał 13mm, a średnica to 160mm zamiast 60mm.
Nie trzeba pisać całego programu od nowa. Przecież kształt jest ten sam. Wystarczy zmienić 2 parametry w programie głównym.
I tym prostym sposobem w 2 sekundy zrobiliśmy program na nowy element.
Ja podaje przykłady z tokarki, ale z powodzeniem możesz to stosować na frezarce przy obróbce dowolnych kanałków stempli, czy otworów itd.
Skąd wiadomo która litera odpowiada której zmiennej? Specjalnie w tym celu wklejam tu tabelkę z przyporządkowanymi literami.
Lista 1
Argument dla Listy 1
Zmienna lokalna
A
#1
B
#2
C
#3
D
#7
E
#8
F
#9
H
#11
I
#4
J
#5
K
#6
M
#13
Q
#17
R
#18
S
#19
T
#20
U
#21
V
#22
W
#23
X
#24
Y
#25
Z
#26
Lista 2
Argument dla Listy 2
Zmienna lokalna
A
#1
B
#2
C
#3
I1
#4
J1
#5
K1
#6
I2
#7
J2
#8
K2
#9
I3
#10
J3
#11
K3
#12
I4
#13
J4
#14
K4
#15
I5
#16
J5
#17
K5
#18
I6
#19
J6
#20
K6
#21
I7
#22
J7
#23
K7
#24
I8
#25
J8
#26
K8
#27
I9
#28
J9
#29
K9
#30
I10
#31
J10
#32
K10
#33
Jak widzisz wrzuciłem dwie listy. Większość maszyn pracuje na liście nr1. Ale oczywiście nie jest to regułą.
Chyba trochę naświetliłem sprawę co nie? A może dalej masz więcej pytań niż odpowiedzi?
G65 P... L... ARGUMENTY
Gdzie
G65 – Wywołanie programu Makro
P – Numer programu Makro
L – Liczba powtórzeń programu Makro
Argumenty – Zmienne lokalne wysłane do Makra
Przykład
G65 P9000 L2 A300 B200 F50 S200
W tym przykładzie
wywołałem program nr 9000 (P9000
będzie on powtórzony 2 razy (L2)
Przypisałem wartość 300 do zmiennej lokalnej A (#1) i wysłałem do programu 9000
Przypisałem wartość 200 do zmiennej lokalnej B (#2) i wysłałem do programu 9000
Przypisałem wartość 50 do zmiennej lokalnej F (#9) i wysłałem do programu 9000
Przypisałem wartość 200 do zmiennej lokalnej S (#19) i wysłałem do programu 9000
Teraz pewnie się zastanawiasz po co jest funkcja G66 i G67.
Nie jest łatwo wyjaśnić G66 w 1 zdaniu.
Ponownie posłużę się przykładem. W ten sposób myślę, że najlepiej wchodzi do głowy.
Przykład:
Zakładam że otwory są już wykonane. Pozostało wykonanie gwintów. Nie wykonam ich za pomocą standardowej funkcji gwintowania G84. Zastosuję technikę stosowaną przy drobnych gwintach w miękkich materiałach. Czyli wolniejszy posuw na wejściu i szybszy na wyjściu. Dzięki temu unika się zacięć podczas operacji.
T01 M6 G54
G0 X10 Y10 Najazd nad 1 otwór
G43 H07 G0 Z10
G65 P8000 Z10 F425 S850 Otwór 1
G0 X20 Y20 Najazd na otwór nr 2
G65 P8000 Z10 F425 S850 Otwór 2
G0 X40 Y40 Najazd na otwór nr 3
G65 P8000 Z10 F425 S850 Otwór 3
G0 X60 Y60 Najazd na otwór na 4
G65 P8000 Z10 F425 S850 Otwór 4
Z50 Koniec gwintowania
M1
A teraz to samo tylko z wykorzystaniem G66
T01 M6 G54
G0 X10 Y10 Najazd nad 1 otwór
G43 H07 G0 Z10
G66 P8000 Z10 F425 S850 Otwór 1
G0 X20 Y20 Najazd i wykonanie otworu nr 2
G0 X40 Y40 Najazd i wykonanie otworu nr 3
G0 X60 Y60 Najazd i wykonanie otworu nr 4
G67 Odwołanie funkcji G66
G0 Z50 Koniec gwintowania
M1
Wygląda podobnie ale jest jedna zasadnicza różnica: G65 jest funkcją niemodalną . G66 Jest funkcją modalną.
Każdy blok w którym jest zapisany ruch osi po G66 będzie wywoływał program makro do momentu wpisania G67.
G67– Odwołanie funkcji G66
Dlatego G65 raczej stosuje się przy pojedynczych elementach, a G66 przy szeregu. W moim przykładzie był to ciąg gwintów.
Na dokładkę mam jeszcze jedną funkcję G66.1 (niedostępna w niektórych maszynach).
Działa ona podobnie jak G66 z tą różnicą, że makro jest wywoływane po dowolnej komendzie, w każdym następnym bloku po G66.1 do momentu odwołania za pomocą G67.
No dobra tyle na dzisiaj mam nadzieję przedstawiłem wszystko w sposób łatwy do przyswojenia. Jeśli chcesz się podzielić spostrzeżeniami, zapraszam do komentowania. No i oczywiście nie zapomnij zapisać się do newslettera.
Witam ponownie. Dalej jesteśmy w temacie programowania za pomocą zmiennych,a to jest kolejny artykuł poświęcony tej tematyce. Poniżej znajdują się linki do wszystkich.
Zastanawiam się do czego je porównać, żebyś zrozumiał ich działanie.
Kalkulator.
Pamięć kalkulatora to takie zmienne lokalne. Coś jak pamięć podręczna. Licząc na kalkulatorze wpisujemy cyfry (zmienne lokalne) wykonujemy na nich działania (programy Macro). Gdy skończymy nasze obliczenia wciskamy przycisk CE, lub C i nasze obliczenia oraz pamięć są wyzerowane. Identycznie jest ze zmiennymi lokalnymi Po ich użyciu nie są już potrzebne i zostają wyzerowane. Jest kilka sposobów na wyzerowanie zmiennych lokalnych:
Naciśnięcie przycisku Reset
Naciśnięcie przycisku awaryjnego (czerwony grzyb)
Wczytanie kodu M30
Wczytanie kodu M99
Ręczne wyzerowanie zmiennej
#1=200 Przypisanie wartości 200 dla parametru #1
------
G1 Z#1 Wykonanie ruchu przy pomocy zmiennej
------
#1=#0 Wyzerowanie zmiennej #1
Jako, że zmienna #0 ma zawsze wartość zerową, zrównanie go z naszym parametrem zeruje wartości zapisane w tabeli przy #1.
Zmienne lokalne przenoszą dane wpisane przez programistę do szkieletu Macro. Czym on jest? Zobaczysz w przykładach. Zmienne są bezpośrednio przypisane do danego Macra i nie mogą być pomiędzy nimi transferowane. W programach Macro każda zmienna lokalna ma przypisaną konkretną literę z alfabetu angielskiego.
Dwie listy argumentów
Lista 1 – Składa się tylko z 21 zmiennych , którym przypisano litery. To ta lista jest używana przez większość maszyn i zapewniam Cię, że ta ilość jest w zupełności wystarczająca.
Argument dla Listy 1
Zmienna lokalna
A
#1
B
#2
C
#3
D
#7
E
#8
F
#9
H
#11
I
#4
J
#5
K
#6
M
#13
Q
#17
R
#18
S
#19
T
#20
U
#21
V
#22
W
#23
X
#24
Y
#25
Z
#26
Tak wiem nie są odpowiednio przyporządkowane. Dlaczego tak jest? Nie mam pojęcia.
Dwie tajemnice
1 Co z pozostałymi zmiennymi? Przecież zostało jeszcze 12 miejsc którym nie została przyporządkowana żadna litera.
Nadal możesz ich zdefiniować, ale już wewnątrz podprogramu.
2 Dlaczego użyto tylko 21 liter alfabetu, a nie 26?
G L N O P To ich brakuje prawda? Odpowiedź jest oczywista.
G Jest funkcją przygotowawczą i jest już użyta w bloku przy komendzie G65
L Określa ilość powtórzeń w bloku przy komendzie G65
N Numer bloku przy komendzie G65
O Jest przeznaczone wyłącznie dla numerowania programów
P W bloku przy komendzie G65 określa numer wezwanego podprogramu
Lista 2 – Niezbyt dużo maszyn używa tej listy. Ktoś wpadł na pomysł że 21 znaków to za mało i zrobił listę z 33 znakami.
Argument dla Listy 2
Zmienna lokalna
A
#1
B
#2
C
#3
I1
#4
J1
#5
K1
#6
I2
#7
J2
#8
K2
#9
I3
#10
J3
#11
K3
#12
I4
#13
J4
#14
K4
#15
I5
#16
J5
#17
K5
#18
I6
#19
J6
#20
K6
#21
I7
#22
J7
#23
K7
#24
I8
#25
J8
#26
K8
#27
I9
#28
J9
#29
K9
#30
I10
#31
J10
#32
K10
#33
No dobra tabele już znasz. Teraz pasowałoby wyjaśnić Ci jak się nimi posługiwać.
Aby to zrozumieć musisz wiedzieć jak działają funkcjeG65, G66, G66.1, G67. Klikając w jedną z nich zostaniesz przeniesiony na osobną stronę tam szczegółowo wyjaśniam jak one działają. Dzisiaj trochę powtórzę. No nie wszystko, tylko bardziej ogólnie.
W praktyce wygląda to tak, że za pomocą funkcji G65 zmienne lokalne zostają przeniesione z programu głównego do podprogramu tam są podstawiane w odpowiednio przygotowany szkielet programu.
Przykład 1:
Zapis Macra przy użyciu Listy 1. Mam do nagwintowania 2 otwory w odstępach takich jak na rysunku, na głębokość 10mm. Chcę zastosować takie parametry:
Obroty 850obr/min
Posuw na nominalny 425mm/min (850obr/min x skok 0,5mm)
Posuw na wjeździe 80% posuwu nominalnego
Posuw na wyjeździe 120% posuwu nominalnego
Głębokość gwintu 10mm
Rysunek otworów
Głównym celem makra jest wykonanie gwintu z mniejszym posuwem i wyjście z niego z większym. Ten sposób gwintowania używa się przy gwintowaniu drobnozwojowym w miękkich materiałach, w celu uniknięcia zacięć.
To jest nasz szkielet Macro, o którym wspominałem wcześniej. Albo inaczej, to jest podprogram
Chyba w miarę jasno pokazane jest na przykładzie 2 otworów jak działa transmisja zmiennych lokalnych do makra.
W programie wpisałem Z10, F425, S850. Te wartości zostały wczytane odpowiednio pod numery #26, #9, #19, i wysłane do naszego Macra.
Pewnie chciałbyś wiedzieć jak wczytywać Listę 2.
Przykład 2:
G65 A10 C20 I30 J40 K50 I60 I70 K80
Posługując się tabelą zobaczysz, że do odpowiednich zmiennych zostały przypisane wartości.
#1=10
#3=20
#4=30
#5=40
#6=50
#7=60
#10=70
#9=80
Wygląda jak pomieszanie z poplątaniem zwłaszcza dla początkujących. Ale jeśli przyjrzymy się tabeli po krótkiej chwili widzimy zależność. Do I1 została przyporządkowana pierwsza I z bloku, do drugiej , druga itd.
Czy można używać zmiennych lokalnych w głównym programie?
Oczywiście że można. Co prawda są one przewidziane dla programów Macro, ale zasady są po to żeby ich łamać 🙂 .
Najprostrzym przykładem wykorzystania zmiennych w głównym programie jest wiercenie takich samych otworów w materiałach różnej twardości. Często się zdarza, że materiały od różnych dostawców, a nawet od tego samego tylko, że z innej serii będą się różniły twardością.
Program na podstawowy materiał będzie wyglądał tak:
Łatwe, prawda? Tak jak mówiłem, zmienne dają Ci niewyobrażalną przewagę.
Zagnieżdżanie się zmiennych lokalnych w podprogramach
O podprogramach pisałem już w tym artykule. Dlatego nie będę się rozpisywał czym one są. Tutaj wyjaśnię jak parametry zagnieżdżają się w podprogramach.
Teraz jak to po po chłopsku wyjaśnić co to jest zagnieżdżanie? Załóżmy, że masz główny program. Ten program wywołuje podprogram za pomocą funkcji G65. W podprogramie mamy kolejne wywołanie podprogramu za pomocą tej samej funkcji itd. aż do czterech poziomów w dół. Przy każdym wywołaniu konkretne zmienne zostają przypisane do konkretnych podprogramów. Rzadko się spotyka żeby programować głębiej niż 2 poziomy.
Mapa zagnieżdżania Makr
Powyższa mapa pokazuje jak zmienne najpierw zagnieżdżają się w programie głównym, a potem 4 razy w podprogramach. Za każdym razem zmienne zagnieżdżają się w kolejnych poziomach, ale jednocześnie nie są kasowane z poprzednich. Dopiero Funkcja M99 kasuje zmienne lokalne z danego podprogramu, a na końcu funkcja M30 kasuje zmienne z głównego programu. Zmienne lokalne nie mogą być przekazywane z jednego podprogramu do drugiego. Dlatego nazywają się one lokalne. Ale jeśli pojawi się taka potrzeba, Fanuc ma dla nas rozwiązanie. Są nim zmienne wspólne. Ale o nich w następnym wpisie, bo ten i tak już wystarczająco się wydłużył.
My oraz wybrane przez nas firmy mogą (nie muszą) korzystać z informacji dla wymienionych celów.Możesz dopasować swój wybór lub przejść dalej do korzystania ze strony, jeśli zgadzasz się na te cele.
UWAGA: Te ustawienia mają zastosowanie jedynie w przeglądarce i na urządzeniu, którego teraz używasz.
Personalizacja
Personalizacja
Gromadzenie i przetwarzanie informacji na temat sposobu korzystania przez użytkownika z usługi, aby z czasem dokonać personalizacji reklam lub treści dla użytkownika w innych kontekstach, na przykład w innych witrynach albo aplikacjach. Zazwyczaj treści w witrynie lub aplikacji są wykorzystywane do wyciągania wniosków na temat zainteresowań użytkownika, które zapewniają dane na potrzeby doboru reklam lub treści w przyszłości.
To będzie zawierać następujące elementy:
Łączenie danych ze źródeł offline, które zostały wyjściowo zgromadzone w kontekstach innych niż dane zgromadzone online na potrzeby realizacji jednego albo większej liczby celów.
Przetwarzanie danych w celu powiązania ze sobą wielu urządzeń należących do tego samego użytkownika na potrzeby realizacji jednego albo większej liczby celów.
Gromadzenie i obsługa dokładnych danych dotyczących lokalizacji geograficznej na potrzeby realizacji jednego albo większej liczby celów.
Przechowywanie i dostęp do informacji
Przechowywanie informacji albo dostęp do informacji przechowywanych na urządzeniu użytkownika, w tym dostęp do identyfikatorów reklamowych, innych identyfikatorów urządzenia, wykorzystanie plików cookie oraz podobnych technologii.
To będzie zawierać następujące elementy:
Łączenie danych ze źródeł offline, które zostały wyjściowo zgromadzone w kontekstach innych niż dane zgromadzone online na potrzeby realizacji jednego albo większej liczby celów.
Przetwarzanie danych w celu powiązania ze sobą wielu urządzeń należących do tego samego użytkownika na potrzeby realizacji jednego albo większej liczby celów.
Gromadzenie i obsługa dokładnych danych dotyczących lokalizacji geograficznej na potrzeby realizacji jednego albo większej liczby celów.