44) Warunki, zapętlenia Makro WHILE, IF, GOTO.

To jest już siódmy wpis na temat programowania Makro. Dzisiaj wyjaśnię na czym polega ta ogromna moc, o której mówię praktycznie od samego początku.

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.

#40=60
......
IF [#1 LT 0] GOTO#40
......
......
......
N60 M30

GOTO

Funkcja GOTO może być używana bez dodawania innych takich jak IF . Jest to bezwarunkowy skok. Czyli jeśli zapiszesz w programie:

.........
GOTO 100
N50 .........
N60..........
N70..........
N80..........
N90..........
N100 G28 U0 W0
N110 M30

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.

Fanuc 10/11/15/21 działa

Fanuc 0/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] GOTO50
N40 IF [#100 EQ 40] GOTO60
N50 #102=50
GOTO100
N60 #102=10

N70..........
N80..........
N90 M30

Ten sam program można zapisać w ten sposób

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ętli
Dwa poziomy pętli
Trzy 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

39) Zmienne systemowe

No dobra wprowadzenie mamy już za sobą. W tym wpisie wprowadziłem Cie w świat zmiennych Macro. Opisałem wstępnie czym one są i jakie ogromne korzyści daje używanie ich w programowaniu. Dodatkowo wyjaśnione tam jest jaka jest różnica między zmiennymi, a parametrami.

Jako, temat jest naprawdę obszerny rozłożyłem go na kilka wpisów.

Zmienne systemowe

To o nich jest dzisiejszy wpis.

  • Zaczynają się od #1000 w górę. ( liczba może być czterocyfrowa lub pięciocyfrowa)
  • Zmienne systemowe nie są wyświetlane na ekranie wyświetlacza

To bardzo dużo zmiennych, a co za tym idzie bardzo dużo do zapamiętania. Ale nie martw się. Po to jest ta strona żebyś nie musiał wszystkiego pamiętać. Wystarczy, że wejdziesz na przemoncnc.pl i dzięki spisowi treści lub za pomocą wyszukiwarki łatwo znajdziesz to co w danym momencie cię interesuje .

Numery są zdefiniowanie przez Fanuca. Nie da się ich zmienić. W zależności od wersji oprogramowania lub od modelu maszyny numery mogą się zmieniać. Dlatego podstawą jest posiadanie książki obsługi maszyny. Dla każdej z osobna.

Zmienne systemowe nie mogą być pokazane bezpośrednio na wyświetlaczu (w większości maszyn ma zastosowanie ta zasada). Ale musi być jakiś sposób sprawdzenia ich obecnej wartości. Ta metoda to „transfer wartości”

W programie lub w MDI niektóre zmienne systemowe muszą być przeniesione do zmiennych lokalnych lub wspólnych. W zależności od źródła metoda może się różnie nazywać: zastępowanie zmiennych, redefinicja zmiennych, transfer wartości.

Przykład 1: (Fanuc 15M)

#105=#5221    

Wartość X z bazy G54 zostanie przetransferowana ze zmiennej systemowej #5221 do zmiennej wspólnej #105

Przykład 2: (Fanuc 15M)

#106=#5222

Wartość Y z bazy G54 zostanie przetransferowana ze zmiennej systemowej #5222 do zmiennej wspólnej #106

Zmienne lokalne i wspólne mogą być wyświetlone na monitorze.

Grupy zmiennych systemowych

Jak już pisałem wcześniej w zależności o wersji oprogramowania numery zmiennych mogą się różnić, a co za tym idzie znaczenie danego parametru będzie miało inne znaczenie w innej wersji oprogramowania. Ty jako programista musisz wiedzieć jakiego oprogramowania używa dana maszyna i jakie skutki będzie miało wywołanie konkretnej zmiennej. Program który będziesz pisał będzie mógł być używany wyłącznie na danej wersji oprogramowania, a nawet tylko na konkretnej maszynie.

Przez te wszystkie lata Fanuc wprowadził sporo wersji swojego systemu. Omawiam tylko te najnowsze i najczęściej używane. FS (Fanuc Series)

  • FS-0
  • FS-10
  • FS-11
  • FS-15
  • FS-16
  • FS-18
  • FS-21
  • Wyższe wersje

Oczywiście są inne wersja takie jak Fanuc 3, który jest właściwie podobny do Fanuc-a 0. Fanuc 6 jest dziadkiem wersji 10/11. Wszystkie te sterowania mają zastosowanie we frezarkach FS-xxM np. FS-16M, jak i w tokarkach FS-xxT np. FS-15T. Działają na nim elektrodrążarki, szlifierki i kilka innych rodzajów maszyn. Ja zajmę się toczeniem i frezowaniem.

Zmienne systemowe dzielą sie na dwie grupy:

  • Zmienne do odczytu i do zapisania
  • Zmienne tylko do odczytu

Te pierwsze można zmienić za pomocą programu lub w trybie MDI. Oczywiście jest również możliwość ich odczytania , a zapisane wartości będą przetworzone przez system.

Druga grupa może być wyświetlana za pomocą zmiennych lokalnych lub wspólnych. Nie ma możliwości ich zmiany przez użytkownika. Stąd ich nazwa i to ich najczęściej będziesz używał.

Fanuc Model 0 vs inne wersje

Fanuc Fs-0 w porównaniu do innych wersji jest najuboższy. Oferuje najmniejszą liczbę zmiennych. Jest to szczególnie zauważalne przy parametrach odpowiedzialnych za offset narzędzia. Mimo to rozpocznę od tej wersji. Pod spodem będę podawał zakresy parametrów za co one są odpowiedzialne i jak ich używać

Upewnij się, że znasz znaczenie konkretnego parametru zanim zaczniesz cokolwiek programować. W razie wątpliwości sprawdź instrukcję obsługi dołączoną do maszyny.

Sygnały interfejsu (#1000-#1135)

Gdy parametr 6001 MIF, bit 0 ustawiony jest na 0.

Numer zmiennejFunkcja
#1000 do #1015Zmienne są używane do przesyłania szesnastobitowego sygnału z PMC do zwykłego macro jeden po drugim.
#1032Ta zmienna jest używana do przeczytania całego szesnastobitowego sygnału na raz
#1100 do #1115Zmienne służą do wysłania sygnału szesnastobitowego ze zwykłego macro do PMC jeden po drugim
#1132Ta zmienna służy do wysłania całego szesnastobitowego sygnału na raz
#1133Ta zmienna jest używana do wysłania całego 32 bitowego sygnału ze zwykłego macro do PMC. Wartości od -99999999 do +9999999 mogą być użyte dla tej zmiennej.

Gdy parametr 6001 MIF, bit 0 ustawiony jest na 1.

Numer zmiennejFunkcja
#1000 do #1031Zmienne są używane do przesyłania 32-bitowego sygnału z PMC do zwykłego macro jeden bit po drugim.
#1100 do #1131Zmienne służą do zapisania 32-bitowego sygnału ze zwykłego macro do PMC jeden bit po drugim
#1032 do #1035Te zmienne są używane do przeczytania całego 32-bitowego sygnału z PMC do Macro na raz. Można użyć cyfry od -99999999 do +99999999
#1132 do #1135Te zmienne są używane do zapisania całego 32-bitowego sygnału z Macro do PMC na raz. Można użyć cyfry od -99999999 do +99999999

Wartości kompensacyjne narzędzi (#10000-#13400)

Zapisuj i czytaj wartości kompensacyjne narzędzi. Jak to robić pokazuje poniższa tabela.

Numer korektoraKompensacja długości narzędzi HKompensacja promienia narzędzia D
Geometria Zużycie Geometria Zużycie
1
#11001 lub #2201
#10001 lub #2001
#13001
#12001
:::::
200#11200 lub #2400#10200 lub #2200#13200#12200
:::::
400 #11400#10400#13400#12400

Generowanie własnych alarmów(#3000 i #3006)

#3000 to bardzo fajna opcja. Pozwala Ci stworzyć do 201 swoich własnych alarmów. To, że napisałem alarm nie znaczy, że musi pojawić się jakiś problem. Może chcesz dosadnie przekazać coś operatorowi, ta zmienna jest dla Ciebie wybawieniem.

#3006 poza tym, że robi to samo co #3000 dodatkowo zatrzymuje program.

Numer zmiennejFunkcja
#3000Po przypisaniu wartości od 0 do 200 dla zmiennej #3000 na wyświetlaczu wyświetli się alarm (maksymalnie 26 znaków). Numer alarmu to suma 3000 i wartości przypisanej do zmiennej.
#3006Po przypisaniu wartości od 0 do 200 dla zmiennej #3006 maszyna zatrzyma program a na wyświetlaczu wyświetli się alarm (maksymalnie 26 znaków).

Przykład 3:

#3000=4(USIADZ SOBIE)

Po wczytaniu tego bloku wyświetli się komunikat zapisany w nawiasach, o numerze 3004.

Zmienne czasowe (#3001, #3002, #3011, #3012)

Chcesz sprawdzić ile czasu maszyna pracuje? A może jaki dzisiaj jest dzień, lub która godzina. Nie ma sprawy.

Numer zmiennej Funkcja
#3001Po każdy włączeniu maszyny sterownik liczy czas od 0 do ‭2 547 483 648‬ w milisekundach
#3002Maszyna liczy całkowity czas gdy była w cyklu. Jednostka do godziny. Nie zeruje się po wyłączeniu lecz gdy osiągnie wartość ‭9 544.371767‬.
#3011Ta zmienna wyświetla datę (rok/miesiąc/dzień)
Data jest wyświetlona jako nieprzerwany numer, Np. 02 stycznia 2020r będzie wyświetlała jako 20200102
#3012Ta zmienna wyświetla godzinę (godz/min/sek). Godzina jest wyświetlona jako nieprzerwany numer. Np. 14:35 i 15 sekund wyświetli jako 143515.

Ilość wykonanych detali (#3901, #3902)

Numer zmiennej Funkcja
#3901Detale wykonane do tej pory
#3902Liczba detali do wykonania

Informacja modalna (#4001-#4130)

Co to są funkcje modalne pisałem już w tym miejscu. Dzięki zmiennym możesz się dowiedzieć, która funkcja jest aktywna w danej grupie.

Numer zmiennej FunkcjaNr. grupy
#4001G00, G01, G02, G03, G33, G75, G77,G78,G791
#4002G17, G18, G192
#4003G90, G913
#4004G22, G234
#4005G94, G955
#4006G20, G216
#4007G40, G41, G427
#4008G43, G44, G498
#4009G73, G74, G76, G80-G899
#4010G98, G9910
#4011G50, G5111
#4012G66, G6712
#4013G96, G9713
#4014G54-G5914
#4015G61-G6415
#4016G68, G6916
::
#4022G50.1, G51.120
#4102B
#4107D
#4109F
#4111H
#4113M
#4114Numer bloku
#4115Numer programu
#4119S
#4120T
#4130P (numer aktualnie wybranego dodatkowego punktu zerowego przedmiotu)

Pozycja narzędzia (#5001#5067)

Dzięki tym zmiennym przeczytasz różne pozycje w zależności op potrzeb. Tych zmiennych nie da się wpisać, można ich tylko przeczytać.

Numer zmiennej Dane polożenia
Układ współrzędnych
Kompensacja położenia długości/promienia narzędziaOperacja odczytu w czasie ruchu
#5001-#5007Pozycja punktu końcowego bloku osi nr 1 - Pozycja punktu końcowego bloku osi nr 7Układ współrzędnych przedmiotuNieuwzględnioneZałączone
#5021-#5027Pozycja bieżąca osi nr 1 - Pozycja bieżąca osi nr 7 Układ współrzędnych maszynyUwzględnioneWyłączone
#5041-#5047Pozycja bieżąca osi nr 1 - Pozycja bieżąca osi nr 7 Układ współrzędnych przedmiotuUwzględnioneWyłączone
#5061-#5067Pozycja pominięcia osi nr 1 - Pozycja pominięcia osi nr 7 Układ współrzędnych przedmiotuUwzględnioneZałączone

No dobra trochę się rozpisałem. Najlepsze, że te wszystkie tabelki to tylko namiastka tego wszystkiego co znajdziesz w Podręczniku Operatora dołączonym do twojej maszyny. Ja chciałem dać ci tylko zarys a bez tych tabelek nie było by to możliwe.

Sporo tego wyszło, a to dopiero druga część. Następny wpis będzie o podprogramach.

Tych co chcą śledzić moje kolejne wpisy zapraszam do subskrybowania za pomocą Newslettera.

W razie pytań zapraszam do komentowania.

Pozdrawiam PrzemoCNC

38) Programowanie Makro (parametryczne), Fanuc-wprowadzenie

Programowanie parametryczne, zmienne systemowe Fanuc, programowanie Macro B Fanuc.

Brzmi tajemniczo?

Tak naprawdę takie nie jest. To są tylko modne słowa oznaczające kilka prostych zagadnień. Opanowanie ich wcale nie jest trudne. Mało tego. Gdy już będziesz wiedział co do czego, posiądziesz ogromną moc i kontrolę. Porównywalną, a nawet większą niż pisanie programów za pomocą cykli obróbczych. Ba, sam będziesz tworzył swoje cykle. Nie będziesz już skazany na algorytm jakiegoś tam gościa z Fanuca.

To ty będziesz tworzył algorytmy. Dzięki temu będziesz wstanie::

  • wykonywać skomplikowane obliczenia w środku programu
  • zapętlać program w dowolny sposób
  • przeskakiwać w przód i w tył programu
  • stawiać warunki
  • zmieniać parametry systemowe
  • liczyć sztuki
  • generować alarmy

Pod poniższymi linkami znajdziesz wszystkie artykuły poświęcone tej tematyce

Ale po kolei.

W trakcie kilku kolejnych wpisów będę się starał wyjaśnić jak tego wszystkiego dokonać. Pod wieloma względami programowanie parametryczne jest najwyższym poziomem opanowania dla każdego programisty.

Czy na mojej maszynie jest zainstalowana opcja programowania Macro (parametryczne)?

Zdalnie nie jestem Ci w stanie na to pytanie odpowiedzieć. Ale mam sposób żebyś sam mógł to sprawdzić. Wejdź w tryb MDI i wpisz :

#105=1

Wciśnij przycisk START CYCLE. Jeśli nie wyskoczył Ci alarm typu: „błąd składni” (syntax error), lub „adres nie znaleziony” (address not found), na twojej maszynie jest możliwość programowania Macro. W przypadku wystąpienia błędu jedynym rozwiązaniem jest zwrócenie się do serwisu. Oni bez problemu to odblokują. Oczywiście nie za darmo.

Fanuc Macro B

Jest najczęstszym ” językiem” programowania makr. Nie wszystkie maszyny obsługują programowanie Macro B, niektóre obsługują niepełną wersję, inne oparte są na innym „języku”. Nie jestem w stanie opisać każdego z osobna. Ale zasady jakimi się rządzą są w zasadzie podobne.

Programowanie parametryczne vs programowanie G-kodami

Różnica między tymi dwoma sposobami programowanie jest ogromna. Taka jak algebry nad arytmetyką.

Dam Ci przykład :

Załóżmy, że masz 10 chlebów po 2.50zł za sztukę.

Używając arytmetyki łatwo policzymy 10*2,5=25zł

W algebrze H to ilość chlebów, a C to cena za 1 bochenek. Tworząc wzór H*C jesteśmy w stanie policzyć cenę za dowolną liczbę chlebów kosztujących każdą cenę.

Wracając do programowania. Dzięki parametrom a raczej dzięki zmiennym zyskujemy niesamowitą przewagę. Wyobraź sobie, że masz do wykonania 20 rożnych detali i w każdym jest ten sam kanałek. Jedyna różnica to średnica. Nie będziesz już musiał pisać programu na każdy z osobna. Wystarczy do wartości X dopisać zmienną, załóżmy #1 kórą będziesz mógł zmieniać w zależności od wykonywanego detalu.

To tylko jeden przykład. Zastosowań są tysiące o ile nie miliony.

Czy miałeś kiedyś taki przypadek, że brakowało ci czegoś w standardowym cyklu? Załóżmy, że posuw na wejściu chciałbyś mniejszy lub chciałbyś żeby obroty po 2 przejściach się zwiększyły. Od teraz Ty sam będziesz tworzył cykle niestandardowe i prawie nic nie będzie Cię ograniczać.

Omówienie całego zagadnienia zamie mi kilka wpisów. Mało komu chce się czytać długie teksty, dlatego podzielę to wszystko na kilka, mam nadzieję łatwych do przyswojenia rozdziałów.

Dzisiaj zajmuję się podstawami, wyjaśniam co do czego. Następnie opiszę jak się posługiwać naszą nową zabawką.

Parametry i zmienne makr to dwie różne rzeczy.

Firmy nie produkują starowinków dedykowanych do danych maszyn. Tworzą takie same sterowniki ale z możliwością adaptacji do danej maszyny i potrzeb. Wewnątrz kontrolera znajduje się zbór ustawień, które nazywa się parametrami. To one pozwalają dostosować maszynę do sterownika. Np. :

  • Prędkości wrzeciona
  • Szybkie przejazdy
  • Punkty bazowe
  • I wiele wiele innych

Nigdy nie zmieniaj parametrów systemowych chyba, że na 100% wiesz co robisz.

Zmiany mogą być nieodwracalne. Dodatkowo upewnij się, że masz kopię zapasową na wypadek awarii baterii. Zazwyczaj jest dostępna procedura zgrania ustawień na dysk zapasowy.

Zmienne są… No właśnie czym one są. Jakby to najprościej wyjaśnić? To tak jakby używać zmiennych z algebry w G-kodzie. Można im przypisać dowolną wartość. A kiedy są wywoływane w programie wczytują ostatnią przypisaną im wartość.

Składnia zmiennej to # i numer zmiennej. W zależności od maszyny maksymalna liczba zmiennych może się różnić.

Dla przykładu, chcąc przypisać wartość 10 dla zmiennej #1, zapiszesz

#1=10

Jest jedna zmienna której nie można przypisać żadnej innej wartości, poza tą która jest z góry ustalona. Jest nią #0, jej wartość zawsze będzie wynosić 0.

Zmienne mieszczą się w różnych zakresach. Poniższa tabela pokazuje co system Fanuc myśli o zmiennych znajdujących się w danym zakresie.

Numer zmiennych Typ zmiennychFunkcja
#0NullNie można przypisać żadnej wartości dla #0. Jej wartość zawsze będzie wynosić 0.
#1-#33
Zmienne lokalneZmienne lokalne służą do przekazywania argumentów do makr oraz do tymczasowego przechowywania danych w pamięci tymczasowej. Maszyna nie zapamięta danych po jej wyłączeniu. Konieczne będzie ponowne ich wczytanie. Zagnieżdżają się w podprogramach. Upewnij się że rozumiesz jak to działa.
#100-#199
#500-#999
Zmienne wspólneZmienne wspólne jak sama nazwa wskazuje, są dzielone przez wszystkie twoje programy makro. Po wyłączeniu maszyny parametry #100-#199 są zerowane. #500-#999 zapamiętują wprowadzone dane do następnego uruchomienia maszyny.
#1000- wzwyż Zmienne systemoweZmienne systemowe służą do informowania o tym co robi kontroler. Np. obecna pozycja. Nie przypisuj im żadnej wartości, chyba że na 100% wiesz jak one działają.

Weź pod uwagę, że przedziały mogą się różnić w zależności od zainstalowanego oprogramowania. Zwłaszcza innego niż Fanuc

Nasuwa się pytanie:

Których zmiennych używać?

Zmienne Systemowe i Lokalne mają specjalne zachowania. Wstrzymaj się dopóki nie zrozumiesz tych zachowań. Zmienne systemowe odnoszą się do konkretnych rzeczy w sterowaniu i nie możesz ich używać jako ogólnego przeznaczenia. Natomiast zmienne lokalne wykazują zachowanie „zagnieżdżania” makr. Zanim zaczniesz je używać poczytaj o podprogramach makro. Jeśli zrozumiesz ich zachowanie będziesz mógł ich używać.

Zmienne wspólne, to od nich zacznij programowanie na zmiennych.

Do których adresów mogę dołączać zmienne?

Prawie do wszystkich. Łatwiej będzie wymienić te do których nie można.

  • Nie można podstawiać zmiennych do numeru programu
  • Nie można numerować bloków za pomocą zmiennych
  • Pomijanie bloku /1 jest dozwolone ale /#1 już nie
  • WHILE..DO..END adresy: DO1 jest dozwolone, DO#1 nie

Jak widzisz nie ma tego za dużo.

No dobra wystarczy na dzisiaj. W następnym rozdziale opiszę zmienne systemowe. Jeśli chcesz być na bieżąco, zapraszam do subskrybowania za pomocą Newslettera zlokalizowanego po prawej stronie. W razie pytań proszę o komentarze.

Pozdrawiam PrzemoCNC

35) G43, G44, G49 kompensacja długości narzędzia

Fanuc podobnie jak i inne sterowania CNC posiadają 3 G kody odpowiedzialne za kompensację długości narzędzia. Są to kody przygotowawcze.

G43 G44 G49

Odpowiadają one wyłącznie za oś Z. Ale nie wystarczy samo wpisanie G43. Dodatkowo w tym samym bloku musi być uwzględniony adres korektora. Określa się go za pomocą litery H. Dla przykładu H05 wywołuje korekcję długości narzędzia z offsetu dla pozycji nr. 5. Jest to różnica długości pomiędzy sondą, a obecnie wybranym narzędziem.

Dzięki funkcji G43 jest ona uwzględniana w programie podczas obróbki.

Tutaj masz przykład zapisu

N10 G43 Z1 H05

Czyli uwzględniając długość narzędzia nr. 5 maszyna najedzie 1mm nad materiałem w osi Z.

Teoretycznie powinno wyglądać to w ten sposób, że jeśli narzędzie jest dłuższe niż sonda używamy G43, natomiast jeśli jest krótsze powinno się używać polecenia G44. „Teoretycznie”. (To tylko jedna z kilku metod pomiaru narzędzi na frezarce. Opiszę je szerzej za jakiś czas).

W praktyce używa się wyłącznie G43. Nie ma chyba rzadziej używanego G kodu niż G44. Narzędzia jeśli są krótsze od sondy, w offsecie zapisuje się ich z wartością ujemną, tak jak na powyższym zdjęciu.

Dlaczego?

Chodzi o czas i prostotę. Programista nie będzie się zastanawiał jakie będą długości narzędzi podczas pisania programu.

Dodając wartości ujemne są one odejmowane. Natomiast dodając do siebie wartości dodatnie będą ona zsumowane. Prosta matematyka.

Tak więc jeśli coś jest proste to po co to komplikować

Wracając do naszego przykładu

N10 G43 Z1 H05

Podczas pomiaru wartość wynikająca z różnicy pomiarów jest ładowana do parametru H. W naszym przypadku jest to H05.

W tabeli jest -12,332. Nasze narzędzie jest o 12,332mm krótsze niż sonda.

Piszę maszynie, że ma najechać 1mm nad materiałem. I to właśnie ona zrobi. Przynajmniej tak się wydaje. To co na prawdę ona zrobi, to najazd na Z-11,332, bez potrzeby modyfikowania programu. W ten sposób unikamy możliwych kolizji, a program jest dużo łatwiejszy do napisania.

G49 służy do odwołania kompensacji danego narzędzia. Gdy skończy ono już swoją pracę i będziesz chciał wybrać inne.

Dziękuję za uwagę 🙂

Tradycyjnie zapraszam do subskrybowania za pomocą newslettera i komentowania.

Pozdrawiam PrzemoCNC

34) Wybór płaszczyzny głównej G17, G18, G19

Programując frezowanie po okręgu ( G2/ G3 ) należy wskazać płaszczyznę główną, określającą dwie główne osie ruchu.

Służą do tego kody:

G17– Ustala płaszczyznę roboczą dla łuków X/Y. Kierunek dosuwu Z .

G18– Ustala płaszczyznę roboczą dla łuków X/Z. Kierunek dosuwu Y .

G19– Ustala płaszczyznę roboczą dla łuków Y/Z. Kierunek dosuwu X .

Są to kody modalne tak więc po wpisaniu są aktywne do odwołania. Zaleca się ustalenie płaszczyzny roboczej na początku programu. Przy czym dla frezarek po uruchomieniu maszyny automatycznie aktywny jest kod G17.

Dla tokarek automatycznie aktywne jest G18.

Wywołując korekcję toru narzędzia G41/G42, płaszczyzna robocza musi być podana aby ,maszyna wiedziała w jakich osiach korygować długość i promień narzędzia.

Ale jak to zapisać?

G17

W tej płaszczyźnie łuk jest równoległy do płaszczyzny X/Y, a ruch kołowy G02 jest zdefiniowany jako zgodny z ruchem wskazówek zegara dla operatora patrzącego z góry na stół

G17 G02 X...Y...I...J...

Lub

G17 G02 X...Y...R...

G18

W G18 łuk jest równoległy do płaszczyzny X Z. Należy patrzeć na kierunek kołowy tak jakbyś stał z tyłu maszyny i patrzył w stronę wrzeciona. G02 ruch zgodny z ruchem wskazówek zegra.

G18 G02 X...Z...I...K...

Lub

G18 G02 X...Z...R...

G19

W G19 łuk jest równoległy do osi Y/Z. Na kierunek kołowy musisz patrzeć tak jakbyś stał z prawej strony stołu . G02 ruch kołowy zgodny z ruchem wskazówek zegara.

G19 G02 Y...Z...J...K...

Lub

G19 G02 Y...Z...R...

Kolejne trzy kody uzupełniające tabelę G kodów za nami .

Po prawej stronie jest zakładka pozwalająca zapisać się do newslettera. Już żaden nowy wpis cię nie ominie.

Pozdrawiam PrzemoCNC

33) G07.1 Interpolacja cylindryczna

Powyższy kod jest opcjonalny a co za tym idzie nie wszystkie maszyny go czytają.

Najczęściej będzie Ci on potrzebny na tokarce wyposażonej w żywe narzędzie, ale nie tylko. Na frezarkach z czwartą osią obrotową również jest bardzo przydatną funkcją.

Więc do czego on służy?

Jakby to napisać najprościej? G07.1 spłaszcza oś obrotową.

Załóżmy, że mamy taki detal:

Programowanie takiego kształtu może być kłopotliwe, zwłaszcza w przypadku ruchów kołowych osią obrotową. I zapewne już się domyślasz, że interpolacja cylindryczna znacznie upraszcza pisanie. G07.1 pozwala programiście spłaszczyć ruchy osi obrotowej, traktując je jak ruchy osi liniowej.

Pierwszy obrazek pokazuje detal. Drugi pokazuje ten sam detal tylko kształt jest tak jakby rozwinięty.

Najlepiej zobrazuje to poprawnie zapisany program i symulacja tego programu:

Przykład 1:

Detal pokazany na wcześniejszym rysunku będzie wykonany na tokarce z żywym narzędziem i sterowaną osią C.

O0002 (PRZYKLAD 1 INTERPOLACJA CYLINDRYCZNA)
N15 T0505 (Frez palcowy fi 5mm)
N25 M13 (Włączenie obrotów na żywym narzędziu CW)
N30 G97 S2000
N32 M52 (Pozycjonowanie osi C włączone )
N35 G07.1 C19.1 (Uruchamiam interpolację cylindryczną / podaję promień detalu )
N37 G94 F200
N40 G0 X45 Z-5
N45 G1 X35 C0 Z-5
N50 G1 Z-15 C22.5
N55 Z-5 C45
N60 Z-15 C67.5
N65 Z-5 C90
N70 Z-15 C112.5
N75 Z-5 C135
N80 Z-15 C157.5
N85 Z-5 C180
N90 Z-15 C202.5
N95 Z-5 C225
N100 Z-15 C247.5
N105 Z-5 C270
N110 Z-15 C292.5
N115 Z-5 C315
N120 Z-15 C337.5
N125 Z-5 C360
N130 X45
N135 G07.1 C0 (Odwołuję interpolację)
N140 M53 (Wyłączam pozycjonowanie osi C)
N145 G0 X80 Z100 M15
N150 M30

I tym sposobem mamy kolejny G kod za sobą. Do następnego

Pozdrawiam Przemocnc

30) G05.1 Q1. Precyzyjna kontrola konturu

Żeby wyjaśnić znaczenie tego kodu muszę zacząć od samego początku, czyli końcówki lat 90-tych. To wtedy powstała koncepcja HSM (High Speed Machining).

Zwiększenie wydajności usuwania materiału jest głównym celem. Ponieważ zwiększona szybkość usuwania przekłada się na skrócenie czasu cyklu maszyny. Z czasem HSM zaczęło zyskiwać na popularności i stało się jasne, że trzeba będzie wprowadzić zmiany w budowie maszyn i oprogramowaniu.

Do tej pory większość maszyn oparta była budowie skrzyniowej. Maszyny były sztywne ale było to powiązane ze sporą masą i objętością maszyny.

I tu pojawia się fizyka

Są dwa prawa Newtona interesujące nas w tym momencie:

  • Pierwsze prawo ruchu Newtona dotyczy siły bezwładności.
    Nie będę zanudzał Cię regułkami, ale w skrócie: Im cięższy przedmiot tym ma większą bezwładność. Co za tym idzie : potrzeba więcej energii do zatrzymania takiego przedmiotu
  • Drugie prawo ruchu Newtona dotyczy przyspieszenia.
    siła = masa x przyspieszenie (F = ma). Większa masa wymaga również więcej energii, aby osiągnąć przyspieszenie wymagane dla HSM.

Ponieważ nie możemy zmienić praw fizyki,musiała się zmienić konstrukcja maszyn. Zmniejszono masę aby umożliwić wyższe prędkości przyspieszenia. Prowadnice liniowe są obecnie preferowane w maszynach , które będą wykonywać obróbkę z dużą prędkością.

Wyższe szybkości przyspieszania powodują również inny problem. Jest nim siła bezwładności podczas szybkich zmian kierunku. Są one nieodłącznie związane z HSM, więc każdy system sterowania CNC zdolny do obsługi HSM musi być w stanie dostosować przyspieszenie i opóźnienie, aby osiągnąć płynny, najbardziej dokładny i ciągły ruch na maszynie.

Aby rozwiązać ten problem ulepszono również systemy sterowania CNC. Od teraz zapewniają one użytkownikom możliwość zrównoważenia prędkości i dokładności w razie potrzeby.

Oryginalny tryb wysokiej prędkości FANUC nazywał się HPCC,
(High Precision Contour Control). Został zbudowany na podstawie architektury chipowej RISC (Reduced Instruction Set Computing). Dzięki znacznym postępom w technologii mikroprocesorowej oryginalny HPCC stał się przestarzały. Nowsze mikroprocesory pozwoliły na znacznie bardziej złożone przetwarzanie przy znacznie większych prędkościach.

Najnowsze tryby High Speed ​​FANUC to AICC i AIAPC-AI Contour Control i AI Advanced Preview Control. AI nie odnosi się do „Sztucznej inteligencji”. AI reprezentuje system serwo Alpha I serii FANUC. Istnieją różnice między dwoma trybami AI. Jednak składnia ich używania jest dokładnie taka sama.

Tu pojawia się nasza formułka

G05.1 Q1 Rxx

Rxx zapewnia użytkownikowi opcję wyboru spośród 10 stałych ustawień (R1-R10), które kontrolują prędkość ścieżki narzędzia (prędkość posuwu) z dokładnością pozycjonowania.

G05.1 Q1 R1 – Prędkość ścieżki narzędzia ma pierwszeństwo przed dokładnością
G05.1 Q1 R2
G05.1 Q1 R3
G05.1 Q1 R4
G05.1 Q1 R5 – Prędkość i dokładność pozycjonowania mają równy priorytet
G05.1 Q1 R6
G05.1 Q1 R7
G05.1 Q1 R8
G05.1 Q1 R9
G05.1 Q1 R10 – Dokładność pozycjonowania ma pierwszeństwo przed prędkością

W celu wyłączenia precyzyjnej kontroli należy wpisać:

G05.1 Q0

G05.1 Q2 FANUC Smooth Interpolation.
G05.1 Q3 to funkcja wygładzania FANUC Nano Smoothing
FANUC Smooth Interpolation i NANO Smoothing to funkcje opcjonalne.

Stosując G05.1 Q1 podczas obróbki 2D, AICC / AIAPC rozwiązuje typowe problemy z zaokrąglaniami narożników lub wypaczeniami.

Po włączeniu naszej funkcji podczas obróbki 3D, AICC / AIAPC utrzyma dokładniejszy profil konturowania.

Zastosowanie precyzyjnej kontroli może skrócić czas obróbki rdzenia nawet o kilka godzin.

Wystarczy trzymać sie 4 prostych zasad:

  1. Upewnij się, że G49 jest zapisane przed G05.1 Q1 Rx
  2. G05.1 Q1 Rx należy włączyć przed G43
  3. AICC i AIAPC należy włączyć i wyłączyć dla każdego narzędzia
  4. AICC i AIAPC nie nie działa w cyklach wiercenia

Przykład 1:

Obróbka zgrubna

(PRZYKLAD 1)
(PRZEMOCNC)

G00 G17 G40 G49 G80 G94

T01 M6 (FREZ PALCOWY FI 5)
G05.1 Q1 R1  (HSM WŁĄCZONE OBRÓBKA ZGRUBNA)
G0 G90 G54 X1 Y-1 
S8000 M3
M8
G43 H01
Z1
G1 Z0 F150
X0 Y0 Z-0.2
.....
.....
.....
.....
G0 Z1
G05.1 Q0   (HSM WYŁĄCZONE)
M5
M9
G91 G28 Z0
G49
M30

W miejsce kropek wstawiasz swoją ścieżkę wygenerowaną z programu CAM lub napisaną ręcznie.

Przykład 2:

Obróbka wykańczająca

(PRZYKLAD 2)
(PRZEMOCNC)

G00 G17 G40 G49 G80 G94

T01 M6 (FREZ PALCOWY FI 5)
G05.1 Q1 R8  (HSM WŁĄCZONE OBRÓBKA wykańczająca)
G0 G90 G54 X1 Y-1 
S8000 M3
M8
G43 H01
Z1
G1 Z0 F120
X0 Y0 Z-0.2
.....
.....
.....
.....
G0 Z1
G05.1 Q0   (HSM WYŁĄCZONE)
M5
M9
G91 G28 Z0
G49
M30

Jeśli masz dostęp do frezarki i chcesz zobaczyć różnicę w czasie obróbki przygotowałem dla Ciebie dwa programy 1 2 . Przepuść program bez HSM (wystarczy włączyć / BLOK SKIP) następnie zmieniając parametr R zobaczysz jak zmieniają się czasy obróbcze.

Pozdrawiam i życzę powodzenia w optymalizacji 🙂

28) Programowanie promieni za pomocą parametru R i kodu G01

Ostatnio pisałem jak programować kąty za pomocą parametru A i fazy za pomocą parametru C.

Dzisiaj pokaże Ci jak robić promienie bez używania G02 lub G03, zapisując tylko jedną współrzędną X lub Z.

W szkole lub na kursie nauczyciel zapewne recytował z książek:

Aby wykonać promień należy zapisać kierunek i wartość promienia, jego początek i koniec. Mało tego, trzeba znać odległość początku i końca promienia od jego środka.

Owszem tak było kiedyś. Dzisiaj maszyn potrzebujących aż tyle informacji już jest bardzo mało i naprawdę musiałbyś mieć „nieszczęście”, żeby trafiła Ci się praca na takiej. Od lat 90-tych maszynom wystarczy początek i koniec promienia oraz jego wartość. Ale i to nawet nie do końca. Zasada ta tyczy się tylko niepełnych promieni.
Ja dzisiaj pokażę Ci, że promień można zaprogramować nawet bez użycia G02/G03.

Mogą to być promienie zewnętrzne i wewnętrzne. Lewostronne i prawostronne. Zasada jest jedna musi to być pełny promień.

To jest nasz rysunek:

Zapiszę te promienie za pomocą G01:

(PROGRAM Z PARAMETREM R)
(PRZEMOCNC)
 
N10 G54 T0101
N20 G50 S2000
N30 G96 S150 M3
 
N40 G0 G42 X0 Z1
N50 G1 Z0 F0.3
N60 X40 R10
N70 Z-20 R3
N80 X80 R3
N90 Z-50 R1
N100 X90 R2
N110 Z-90 R4
N120 X102
N130 G0 G40 Z1
 
N140 G28 U0 W0
N150 M30

Proste co nie.

Należy pamiętać o dwóch ważnych rzeczach

  • Początek ruchu narzędzia musi być na pozycji wcześniejszej niż początek promienia
  • Koniec ruchu narzędzia w następnym bloku musi być dalej niż koniec promienia

Maszyna sama dobierze kierunek promienia zależnie od wartości Z lub X w następnym bloku.

Jeśli masz jakieś dodatkowe pytania nie zastanawiaj się tylko pisz w komentarzu lub za pomocą zakładki kontakt.

Pozdrawiam PrzemoCNC

27) Programowanie fazy za pomocą parametru C

Ostatnio pisałem jak programować dowolne kąty za pomocą parametru A.

Bardzo często klient zaznacza na rysunku fazy. Mają one różną długość, ale kąt jest ten sam: 45°. Aby zmniejszyć pisanie do minimum określa się ich długość za pomocą literki C.

To jest nasz dzisiejszy detal:

Cztery różne fazy. Gdybym chciał to zapisać tradycyjnie, program wyglądałby tak:

(PROGRAM BEZ PARAMETRU C)
(PRZEMOCNC)

N10 G54 T0101
N20 G50 S2000
N30 G96 S150 M3

N40 G0 G42 X0 Z1
N50 G1 Z0 F0.3
N60 X20
N70 X40 Z-10
N80 Z-20
N90 X70
N100 X80 Z-25
N110 Z-50
N120 X86
N130 X90 Z-52
N140 Z-90
N150 X98
N160 X100 Z-91
N170 Z-95 
N180 U1
N190 G0 G40 Z1

N200 G28 U0 W0
N210 M30

No ale my przecież znamy parametr C. Dla tego program zapiszemy tak:

(PROGRAM Z PARAMETREM C)
(PRZEMOCNC)

N10 G54 T0101
N20 G50 S2000
N30 G96 S150 M3

N40 G0 G42 X0 Z1
N50 G1 Z0 F0.3
N60 X40 C10
N70 Z-20
N80 X80 C5
N90 Z-50
N100 X90 C2
N110 Z-90
N120 X100 C1
N130 Z-95 
N140 U1
N150 G0 G40 Z1

N160 G28 U0 W0
N170 M30

Łatwiej?

Krócej?

W następnym wpisie pokażę Ci jak zapisywać pełne promienie bez używania G02 lub G03.

Pozdrawiam PrzemoCNC

26) Programowanie kątów za pomocą parametru A.

Będąc programistą, często jest tak, że dostajesz rysunek detalu, półfabrykat i termin na wczoraj. Rysunek jak to rysunek, często niedowymiarowany. Masz kąt, brakuje współrzędnej końca albo początku tego kąta. Co zrobić?

Są trzy opcje

  • Rysujesz detal od nowa na komputerze i znajdujesz brakujące wymiary.
  • Ściągasz apkę ( np. CNC Taper) na telefon i szukasz potrzebnych wymiarów.
  • Programujesz za pomocą parametru A

Dzisiaj interesuje nas opcja nr 3.

Powtarzam to bez przerwy: Nie ma sensu utrudniać sobie życia jeśli jest opcja żeby wykonać coś łatwiej lub szybciej.

Mam taki rysunek:

Do programowania kąta wykorzystam parametr A.

No to piszemy :

(PARAMETR A)
(PRZEMOCNC)


G54 T0101
G50 S2000
G96 S150 M3

G0 G42 X0 Z1
G1 Z0 F0.3
X60
X79.83 A18
Z-50.63
X119.74 A34
X179.61
X199.57 A27
U1
G0 G40 Z1


G28 U0 W0
M30

Tak więc widzisz ułatwienie jest spore. Jest sporo programistów którzy mimo, że rysunki są poprawnie zwymiarowane, wolą pisać programy w ten sposób.

Jedyny problemem może być na początku wybadanie jak zdefiniowane są kąty na danej maszynie. Z doświadczenia wiem, że nie ma reguły.

To co na jednej maszynie jest kątem 90st, na innej będzie 270.

Teoretycznie powinno to wyglądać w ten sposób:

Jak jest u Ciebie, musisz sam wybadać puszczając symulację programu na maszynie lub wyczytać w instrukcji dołączonej do niej.

Dzisiejszy wpis był jednym z kilku na zasadzie tips and tricks. W następnych opiszę jak programować pełne promienie i fazy używając parametrów R i C