51) G82 Wiercenie z przerwą czasową na dnie

Dzisiejszy cykl nie różni się zbyt wiele od G81. Jedyną różnicą jest dodatkowy parametr P, odpowiedzialny za postój na dnie otworu.

Wzór na cykl G82

G81 X... Y... Z... R... P... F... K...

G81- Wywołanie cyklu wiercenia

X- Pozycja otworu w osi X

Y- Pozycja otworu w osi Y

Z- Głębokość wiercenia

R- Pozycja wyjazdowa z otworu bezpieczna

P- Długość postoju wiertła na dnie (wyrażona w milisekundach)

F- Posuw

K- Liczba powtórzeń cyklu

G99 czy G98?

Zasada używania G99 i G98 jest identyczna jak przy cyklu G81. Nie ma sensu pisać tego samego drugi raz, dlatego odsyłam Cię na odpowiednią stronę.

Parametr K

Identycznie jak w poprzednim akapicie, odsyłam na stronę gdzie wszystko jest wyjaśnione.

Przykład 1:

Do wykonania siatka otworów z rysunku

Głębokość wiercenia 20mm

Postój na dnie otworu 1sek

O0001 (WIERCENIE CYKL G82)
(PRZEMOCNC)

N10 G20 G17 G40 G49 G80 G90
N15 T15 M6 (WIERTLO FI 4.2)
N20 G0 G54 G90 X10 Y10 S1500 M03;
N25 G0 G43 H15 Z2.0 M8
N30 G0 Z5 M8
N35 G82 G99 X10 Y10  Z-20 R1 P1000 F20
N40 X20 X20
N45 X40 Y40
N50 X60 Y60
N60 G80
N65 G0 Z100 M9
N70 M30

Tyle na dzisiaj. Krótko ale myślę, że treściwie.

Pozdrawiam, oraz zapraszam do komentowania.

Nie zapomnij zapisać się do newslettera 🙂 .

50) G81 Wiercenie/ Nawiercanie

Witam

Długo nic nie pisałem Nie będę się rozpisywał dokładnie co się działo u mnie, bo nie o tym jest ten blog.

Ten blog jest o programowaniu, a kolejnym kodem potrzebnym do napisania programu jest G81.

Jest to jeden z kilku cykli wiercenia. Zazwyczaj będziesz go używał do nawiercania otworów lub wiercenia łatwych otworów. Łatwych mam na myśli płytkie otwory lub materiał i narzędzie pozwala na szybkie wywiercenie otworu na raz.

G81 X... Y... Z... R... F... K...

G81- Wywołanie cyklu wiercenia

X- Pozycja otworu w osi X

Y- Pozycja otworu w osi Y

Z- Głębokość wiercenia

R- Pozycja wyjazdowa z otworu bezpieczna

F- Posuw

K- Liczba powtórzeń cyklu

G99 czy G98?

Fanuc pozwala nam wybrać gdzie nasze narzędzie ma wyjechać.

Na pozycję bezpieczną R. wtedy podczas pisania cyklu należy użyć kodu G99.

Na pozycję początkową ( ostatnia pozycja Z zanim zapiszesz cykl G81). Wtedy używamy G98 Jak to działa przedstawią poniższe grafiki.

Przykład 1:

Program na ostatni obrazek

O0001 (WIERCENIE Z WYKORZYSTANIEM G98 I G99)
(PRZEMOCNC)

N10 G20 G17 G40 G49 G80 G90
N15 T15 M6 (WIERTLO FI 4)
N20 G0 G54 G90 X0 Y0 S1500 M03;
N25 G0 G43 H15 Z2.0 M8
N30 G0 Z5 M8
N35 G81 G99 X0 Y  Z-10 R1 F20
N40 X2 Z-18 R-7
N45 G98 X4 
N50 G99 X6 Z-10 R1
N55 X8 Z-17 R-5 
N60 G80
N65 G0 Z100 M9
N70 M30

K powtarzać cykl czy nie?

Parametr K pozwala nam powtarzać cykl kilka razy.

Zgaduję, że pierwsze pytanie jakie Ci się nasuwa to: po co powtarzać cykl wiercenia?

Parametr K używa się razem z kodem G91, czyli programowanie inkrementalne. Przykład 2 pokaże Ci jak prawidłowo użyć tego parametru.

Przykład 2.

T1 M6
G00 G90 G40 G21 G17 G94
G54 X20 Y20 S1000 M03
G43 H1 Z100
Z3
G81 G99 R3 Z-20 F100 M08
G91 X20 Y20 K2
G80
G00 G90 Z100
M30

Ok

Tyle na dzisiaj. Do zobaczenia następnym razem.

W razie pytań czekam na komentarze. Nie zapomnij zapisać się do Newslettera.

49) G76 Wytaczanie wykańczające

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.

  • Pozycja bezpieczna 5mm
  • Głębokość otworu 45mm
  • Odjazd od powierzchni obrobionej 0.1mm
  • Czas postoju na dnie otworu pól sekundy
  • Posuw 120 mm/min
(PRZYKLAD 1)
(PRZEMOCNC)
T06 M6 (WYTACZADLO)
N20   G90 G80 G17 G00 G54 X0 Y0 ;
N30   G43 Z5 H06 ;
N40   M03 S2000 ;
N50   M08 ;
N60   G76 Z-45 P500 Q0.1 R5 F120 ;
N70   G80 
N80 G00 Z100 ;
N90  M30 ;

Przykład 2:

Do wykonania otwory wg rysunku

  • Pozycja bezpieczna 2mm
  • Głębokość otworu 45mm
  • Odjazd od powierzchni obrobionej 0.2mm
  • Czas postoju na dnie otworu sekunda
  • Posuw 100 mm/min
(PRZYKLAD 2)
(PRZEMOCNC)
T06 M6 (WYTACZADLO)
N20   G90 G80 G17 G00 G54 X-50 Y-50 ;
N30   G43 Z5 H06 ;
N40   M03 S2000 ;
N50   M08 ;
N60   G76 Z-45 P1000 Q0.2 R2 F100 ;
N70 Y50
N80 X50
N90 Y-50
N100   G80 
N110 G00 Z100 ;
N120  M30 ;

To by było tyle na dzisiaj. Zapraszam do subskrybowania za pomocą zakładki newsletter.

Jeśli masz jakieś uwagi, nie wahaj się. Skomentuj. Na pewno odpowiem.

Pozdrawiam PrzemoCNC

48) G84, G74 Cykle Gwintowania.

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.

(PRZYKLAD 1)
(PRZEMOCNC)
T06 M6 (GWINTOWNIK M14)
N20   G90 G80 G17 G00 G54 X0 Y0 ;
N30   G43 Z5 H06 ;
N40   M03 S300 ;
N50   M08 ;
N60   G84 Z-45 P500 R1 F600 ;
N70   G80 
N80 G00 Z100 ;
N90  M30 ;

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.

(PRZYKLAD 2)
(PRZEMOCNC)
T06 M6 (GWINTOWNIK M14)
N20   G90 G80 G17 G00 G54 X0 Y0 ;
N30   G43 Z5 H06 ;
N35   G95
N40   M03 S300 ;
N50   M08 ;
N60   G84 Z-45 P500 R1 F2 ;
N70   G80 G94
N80 G00 Z100 ;
N90  M30 ;

Funkcja M29

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:

Przykład 3:

  • Zakładam głębokość gwintu 45mm
  • Gwint M14
  • Postój na dnie pół sekundy
  • Pozycja bezpieczna 1mm
(PRZYKLAD 3)
(PRZEMOCNC)
T06 M6 (GWINTOWNIK M14)
N20   G90 G80 G17 G00 G54 X0 Y0 ;
N30   G43 Z5 H06 ;
N35   G95
N40   M03 S300 M29 ;
N50   M08 ;
N60   G84 Z-45 P500 R1 F2 ;
N70   G80 G94
N80 G00 Z100 ;
N90  M30 ;

Gwintowanie stopniowe

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.

Przykład 4:

  • Zakładam głębokość gwintu 45mm
  • Gwint M14
  • Chcę gwintować stopniowo co 20mm
  • Postój na dnie pół sekundy
  • Pozycja bezpieczna 1mm
(PRZYKLAD 4)
(PRZEMOCNC)
T06 M6 (GWINTOWNIK M14)
N20   G90 G80 G17 G00 G54 X0 Y0 ;
N30   G43 Z5 H06 ;
N35   G95
N40   M03 S300 M29 ;
N50   M08 ;
N60   G84 Z-45 P500 Q20 R1 F2 ;
N70   G80 G94
N80 G00 Z100 ;
N90  M30 ;

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ć.

Przykład 5:

  • Zakładam głębokość gwintu 45mm
  • Gwint M14
  • Chcę gwintować stopniowo co 20mm
  • Postój na dnie pół sekundy
  • Pozycja bezpieczna 1mm
(PRZYKLAD 5)
(PRZEMOCNC)
T06 M6 (GWINTOWNIK M14)
N20   G90 G80 G17 G00 G54 X0 Y0 ;
N30   G43 Z5 H06 ;
N35   G95
N40   M03 S300 M29 ;
N50   M08 ;
N60   G84 Z-20 P500  R1 F2 ;
N63 Z-40
N66 Z-45
N70   G80 G94
N80 G00 Z100 ;
N90  M30 ;

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.

Przykład 6:

  • Zakładam głębokość gwintu 50mm
  • Gwinty M14
  • Chcę gwintować stopniowo co 20mm
  • Postój na dnie pół sekundy
  • Pozycja bezpieczna 1mm
(PRZYKLAD 6)
(PRZEMOCNC)
T06 M6 (GWINTOWNIK M14)
N20   G90 G80 G17 G00 G54 X-50 Y-50 ;
N30   G43 Z5 H06 ;
N35   G95
N40   M03 S300 M29 ;
N50   M08 ;
N60   G84 Z-50 P500 Q20 R1 F2 ;
N80 Y50
N90 X50
N100 Y-50
N110   G80 
N120 G00 Z100 ;
N130  M30 ;

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.

Pozdrawiam PrzemoCNC.

47) G68 Rotacja współrzędnych

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.

(PRZYKLAD 1)
(PRZEMOCNC)
N10 T06 M6 (WIERTLO FI 12)
N20   G90 G80 G17 G00 G54 X20 Y0 ;
N30   G43 Z5 H06 ;
N40   M03 S1500 ;
N50   M08 ;
N60   G73 Z-50 R1 Q10 F200 ;
N70 X40
N80 X60
N90 G68 X0 Y0 R120
N100 X20 Y0
N110 X40
N120 X60
N130 G68 X0 Y0 R240
N140 X20 Y0
N150 X40
N160 X60
N170 G69 G80
N180   G80 
N190 G00 Z100 ;
N200  M30 ;

W naszym przykładzie otwory są rozmieszczone co 120st. Ale kąt może być dowolny.

Jak zauważyłeś na końcu wpisałem G69. Ten G kod odwołuje funkcję G68.

Krótki wpis ale mam nadzieję , że wyczerpujący.

W razie jakichś wątpliwości zapraszam do komentowania.

No i oczywiście zachęcam do subskrybowania za pomocą zakładki Newsletter.

Pozdrawiam PrzemoCNC

46) G73 Cykl wiercenia z łamaniem wióra. Frezarka

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.
  • Zakładam posuw 200mm/min

Program wygląda tak:

(PRZYKLAD 1)
(PRZEMOCNC)
T06 M6 (WIERTLO FI 12)
N20   G90 G80 G17 G00 G54 X0 Y0 ;
N30   G43 Z5 H06 ;
N40   M03 S1500 ;
N50   M08 ;
N60   G73 Z-50 R1 Q10 F200 ;
N70   G80 
N80 G00 Z100 ;
N90  M30 ;

Przykład 2:

Układ otworów taki jak na rysunku.

  • Głębokość otworów to 50mm.
  • Chcę żeby po każdych 10mm wwiercenia się w materiał, narzędzie wycofało się o 1mm do tyłu.
  • Zakładam posuw 200mm/min

Jak widzisz parametry zastosowałem te same co w poprzednio. Ten przykład ma Ci pokazać jak wykonać kilka takich samych otworów.

Program wygląda tak:

(PRZYKLAD 2)
(PRZEMOCNC)
T06 M6 (WIERTLO FI 12)
N20   G90 G80 G17 G00 G54 X-50 Y-50 ;
N30   G43 Z5 H06 ;
N40   M03 S1500 ;
N50   M08 ;
N60   G73 Z-50 R1 Q10 F200 ;
N80 Y50
N90 X50
N100 Y-50
N110   G80 
N120 G00 Z100 ;
N130  M30 ;

Przykład 3:

Układ otworów taki sam jak poprzednio

  • Głębokość otworów to 100mm.
  • Chcę żeby po każdych 5mm wwiercenia się w materiał, narzędzie wycofało się o 0.5mm do tyłu.
  • Zakładam posuw 500mm/min
(PRZYKLAD 3)
(PRZEMOCNC)
T06 M6 (WIERTLO FI 12)
N20   G90 G80 G17 G00 G54 X-50 Y-50 ;
N30   G43 Z5 H06 ;
N40   M03 S1500 ;
N50   M08 ;
N60   G73 Z-100 R0.5 Q5 F500 ;
N80 Y50
N90 X50
N100 Y-50
N110   G80 
N120 G00 Z100 ;
N130  M30 ;

Myślę, że w miarę łatwo to wyjaśniłem.

W razie wątpliwości zapraszam do komentowania. No i oczywiście nie zapomnij zapisać się do newslettera. Dzięki temu, nie ominie Cie żaden nowy wpis.

Pozdrawiam PrzemoCNC

45) G83 Cykl wiercenia z odwiórowaniem, Tokarka

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
(PRZYKLAD 2 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-100 R5 P1000 Q50000 F0,15 

N60 G28 U0 W0 
N70 M30

Pozdrawiam i zapraszam do subskrybowania za pomocą newslettera.

Jeszcze raz bardzo gorąco dziękuję koledze Krzyśkowi. Zapraszam do komentowania.

43) Funkcje matematyczne Makro

Do tej pory wyjaśniłem ci różnie grupy zmiennych. Wszystkie wpisy znajdziesz w linkach pod spodem

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łanieSymbol
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

Najpierw używam mojego mnożnika

#1=3,19283753293

#2=#1*1000          3192,83753293
#3=#1*10000         31928,3753293

Teraz moje wyniki zaokrąglam do pełnych cyfr

#2=ROUND[#2]       3192
#3=ROUND[#3]       31928

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“.

OR– Tłumacząc bezpośrednio to “lub

A najlepiej będzie to widać na przykładzie

#1=100
#2=110
[100 EQ 110]        Fałsz
[100 GT 110]        Fałsz
[100 LT 110]        Prawda
[100 LE 110]        Prawda

No to teraz porównajmy nasze działania

#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:

Funkcje przekształcenia

BCD– przekształca zapis dziesiętny kodowany dwójkowo w zapis binarny

BIN– przekształca zapis binarny w zapis dziesiętny kodowany dwójkowo

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.

Pozdrawiam PrzemoCNC

42) Zmienne wspólne

Witam ponownie.

Od jakiegoś czasu jesteśmy w temacie zmiennych makro. Pod spodem linki do wszystkich artykułów poświęconych tej tematyce:

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:

  1. #100 – #149 i #500 – #549 ——— Opcja A
  2. #100 – #199 i #500 – #599 ——— Opcja B
  3. #100 – #199 i #500 – #699 ——— Opcja C
  4. #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.

Pozdrawiam Przemo239

40) Zmienne lokalne

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.

Dzisiaj porozmawiamy o zmiennych lokalnych.

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 1Zmienna 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.

#10, #12, #14, #15, #16, #27, #28, #29, #30, #31, #32 i #33.

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 2Zmienna 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ą funkcje G65, 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

O8000
(GWINTOWANIE 2 OTWORY)
G0 G90 Z2 S#19 M3
G1 Z-[ABS[#26]] F[#9*0,8] M5
S#19 M4
G1Z2 F[#9*1,2]
M5
M99

Tak będzie wyglądała część programu odpowiedzialna za transfer naszych zmiennych do Macro za pomocą G65

T01 M6 G54
G0 X10 Y10           Najazd nad 1 otwór
G43 H07 G0 Z10
G65 P8000 Z10 F425 S850   Otwor 1
G91 X20 Y20               Najazd na otwór nr 2
G65 P8000 Z10 F425 S850   Otwor 2
G90 Z50                  Koniec gwintowania
M1

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:

N10 T01 (WIERTLO 5MM)
N20 M06
N30G90 G00 G54 X100.0 Y100  (NAJAZD NA POZYCJE 1 OTWORU)
N35S1000 M03 
N40 G43 Z10 H01 M08
N50 G99 G83 R2.5 Z-80 Q10 F180 (WIERCENIE OTWORU 1)
N60 X200 (WIERCENIE OTWORU 2)
N70 Y200 (WIERCENIE OTWORU 3)
N80 G80 G00 Z10 M09
N90 G28 Z10 M05
N110 M30

Następne będą się różnic tylko trzema rzeczami

  • Q- głębokość wiercenia do momentu wycofania
  • S- obroty
  • F-posuw

Nasuwa się pytanie: czy trzeba pisać osobny program dla każdego materiału z osobna?

Nie

Wystarczy, że sparametryzuje kluczowe dla mnie dane .

Uniwersalny program będzie wyglądał w ten sposób

N10 T01 (WIERTLO 5MM)

N11 #1=1500  (OBROTY 1500 MIEKKI 1000 TWARDY)
N12 #2=240   (POSUW 240 MIEKKI 150 TWARDY)
N13 #3=15    (ODWIOROWANIE 15 MIEKKI 10 TWARDY)

N20 M06
N30 G90 G00 G54 X100.0 Y100  (NAJAZD NA POZYCJE 1 OTWORU)
N35 S#1 M03 
N40 G43 Z10 H01 M08
N50 G99 G83 R2.5 Z-80 Q#3 F#2 (WIERCENIE OTWORU 1)
N60 X200 (WIERCENIE OTWORU 2)
N70 Y200 (WIERCENIE OTWORU 3)
N80 G80 G00 Z10 M09
N90 G28 Z10 M05
N110 M30

Ł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ł.

Pozdrawiam i zapraszam do komentowania.