ROZ18P, Elektronika, CNC, Fadal


Makra i programowanie parametryczne (Macros and Parametric Programming)

Makra dają programiście możliwość do wykonywania funkcji arytmetycznych i porównań w programie CNC. Wartości zmiennych (V1-V100) mogą być wprowadzone poprzez deklaracje (input statements) lub przekazywane do makr przez zmienne R lub z tabeli baz lokalnych, danych dotyczących narzędzi lub tabel czasów narzędzi. Wartości z wyrażeń makr mogą być przekazywane do programu CNC za pomocą zmiennych parametrycznych (R0-R9).

Makra posiadają liczne zastosowania. Mogą mieć zastosowanie na przykład do funkcji sondy lub do zarysu części, gdzie części są opisywane za pomocą wyrażeń arytmetycznych.

Programowanie parametryczne (Parametric Programming)

Programowanie parametryczne daje programiście możliwość do używania zmiennych parametrycznych R jako reprezentacji wartości dowolnego słowa kodu programu. Zmienne parametryczne : R0, R1 - R9. Programowanie parametryczne używane jest również do transferu danych z zmiennych makr V1-V100 do opisu ruchów, prędkości ... w programach CNC.

Przykład :

N13 R1+10. R2+5 (wyznaczenie wartości R1, R2)

N14 R3+7.5 R4+5.5 R5+0 (wyznaczenie wartości R3, R4, R5)

N15 X-R1 Y+R2. G1 F34. (linia oznacza X10. Y5. G1 F34.)

N16 X+R3. I-R4 J-R5 G3 (linia oznacza X7.5 I5.5 J0 G3)

Zmienne parametryczne są używane gdy słowa programu wymagają zmiany podczas wykonywania programu lub muszą być zmienione podczas różnych uruchomień. Jednym z typowych przykładów zmiennych słów są słowa używane w podprogramach do obróbki gniazd. Słowa Z w tej procedurze mogą być zmiennymi, co umożliwia obróbkę wielu różnych poziomów. Słowo L służące do przywołania podprogramu może być zmienną służącą do wywołania podprogramu różną ilość razy. Zmienna R używana w słowie L musi wskazywać numer podprogramu oraz liczbę powtórzeń (patrz przykład poniżej). Wartości X, Y, I i J ruchu kołowego mogą być zmieniane przez programowanie parametryczne. Wszystkie słowa programu mogą wykorzystywać zmienne parametryczne. Programowanie parametryczne może być również użyte, gdy programista zamierza wykorzystać ogólny program do obróbki grupy (rodziny) części.

Uwaga : Gdy zmienne są wykorzystywane jako wartości dla innych zmiennych, znak dodatni lub ujemny musi znajdować się pomiędzy dwoma zmiennymi, R9+R2, R8-R2. Zasada stosuje się również do wyznaczenia promienia dla ruchów kołowych oraz podczas opisywania minimalnego prześwitu płaszczyzny dla ustalonych cyklów.

Definicja Zmiennej R

Zmienna R jest definiowana przez słowo R, symbol + lub - oraz wartość.

Przykład :

N12 R8+50.0.........................Zmienna R8 zdefiniowana jest jako 50.0

N13 F+R8..............................Zmienna R8 określa wartość prędkości przesuwu na 50.0

Uwaga : Zmienne muszą być zdefiniowane na początku programu lub bezpośrednio przed ich użyciem w programie. Zmienne są wartościami modalnymi i ich wartość pozostaje po zakończeniu programu, po HO oraz po wyjściu z MDI. Zmienne R nie są przechowywane w tablicach jak na przykład zmienne makr V. Programista powinien zawsze określić wartość zmiennej R; w przeciwnym wypadku ostatnio zaprogramowana wartość będzie określona jako R co może spowodować nie przewidywalność programu obróbkowego.

Przykład programu parametrycznego :

W poniższym przykładzie zmienne parametryczne R są zdefiniowane w programie głównym w liniach 32 i 37 oraz w podprogramie w linii 19. Zmienne R są wartościami modalnymi i ich wartość pozostaje do momentu gdy ta sama zmienna R jest redefiniowana. Zauważ, że w linii 21 programu zmienna R1 jest zmieniana, zaś zamienna R2 pozostaje niezmieniona.

N01 L100 (podprogram do obróbki rowków)

N02 (R1=Z, R2= SUB & REPS, R3=promień rowka, R4= średnica rowka)

N03 X-1. Z-R1 G1

N04 X-R3 G41

N05 L+R2

N06 X+R3 G40

N07 X1.

N08 L200 (podprogram do rowka)

N09 X+R3 Y-R3 I+R3 G3

N10 X1.

N11 Y+R4 J+R3 G3

N12 X-1.

N13 X-R3 Y-R3 J-R3 G3

N14 L300 (frezowanie rowka)

N15 Z0.01 G1

N16R1+0.1 R2+201.

N17 G91

N18 L102

N19 R1+0.05

N20 L101

N21 R1+0.01 R2+202.

N22 L101

N23 G0 G49 G90 Z0.1

N24 M17

N25 M30

N26 (

N27 (program główny)

N28 G0 G90 S800 M3 E1 X1.5 Y-0.876

N29 (R1=Z,R2=SUB & REPS, R3=promień rowka, R4= średnica rowka)

N30 H1 Z0.1 M7

N31 Z0.01 G1 F30.

N32 R3+0.19 R4+0.38

N33 L301

N34X4. Y-0.876

N35 L301

N36 X4.Y-3.45

N37 R3+0.225 R4+0.51

N38 L301

N39 X1.5 Y-3.45

Makra

Każda linia makra jest zdefiniowana przez użycie symbolu # na początku linii programu. Makra mogą rezydować w programie głównym, podprogramie. Makra mogą być używane w trybie AUTO, MDI (Manual Data Input), DNC oraz w linii komend. Maksymalna liczba znaków w linii makro wynosi 63.

Zmienne parametryczne R są używane to transferu danych makra do programu CNC.

Przykład :

N1 # V1=V1+2

N2 # V2=V2-1

N3 # R1=V1

N4 # R2=V2

N5 G0 G90 S8000 M3 E1 X+R1 Y-R2

Program obróbki nie może być kodowany w liniach makra.

Przykład :

N1 G0 G90 #V1 = INT(V5*10000)/10000 Linia nieprawidłowa

N1#V1 = INT(V5*10000)/10000 Linia prawidłowa

N2 G0 G90 Linia prawidłowa

Przykład programu makro dla prostokąta zwierające wyrażenia PRINT(pisz) i INPUT(pobierz z klawiatury) :

0600 (podprogram dla obróbki kształtującej gniazda)

#CLEAR

#PRINT „ENTER THE POCKET LENGTH: ”,(tłum. pisz : „podaj długość gniazda”)

#INPUT V1 (dane pobrane z klawiatury są przypisane do V1)

#PRINT „ENTER THE POCKET WIDTH: ”,(tlum. pisz : „podaj szerokość gniazda”)

#INPUT (dane pobrane z klawiatury są przypisane do V2)

#R3=V1/2 (R3 jest równe V1 podzielone przez 2)

#R4=V2/2 (R4 jest równe V2 podzielone przez 2)

#R2=V1 (przypisanie wartości V1 do parametru R2)

#R5=V2 (przypisanie wartości V2 do parametru R5)

GOG90Z.1

X0Y0

D1

Z-.250 G1 F20

G91 G41 Y-R4

X+R3

Y+R5

X-R2

Y-R5

X+R3

Y+R4 G40 G90 (wyłączenie kompensacji)

G0 G90 Z.1 (bezpieczne przesunięcie Z)

M99 (koniec podprogramu)

0700 (podprogram dla obróbki kształtującej gniazda z zaokrągleniem rogów)

#CLEAR

#PRINT „ENTER THE POCKET LENGTH: ”,(tłum. pisz : „podaj długość gniazda”)

#INPUT V1 (wartość X) (dane pobrane z klawiatury są przypisane do V1)

#PRINT „ENTER THE POCKET WIDTH: ”,(tłum. pisz : „podaj szerokość gniazda”)

#INPUT V2 (wartość Y) (dane pobrane z klawiatury są przypisane do V2)

#PRINT „ENTER THE CORNER RADIUS: ”,(tłum. pisz : „podaj promień rogu”)

#INPUT V3 (dane pobrane z klawiatury są przypisane do V3)

#V4=V3+V3 (średnica)

#R2=V1-V4 (przypisanie wartości V1-V4 do parametru R2)

#R3=V1/2 (R3 jest równe V1 podzielone przez 2)

#R4=V2/2 (R4 jest równe V2 podzielone przez 2)

#R5=V2-V4 (przypisanie wartości V2-V4 do parametru R5)

#R6=V3 (promień)

#R7=(V2/2)-V3(R7 jest równe V2 podzielone przez 2 minus wartość promienia (Y))

#R8=(V1/2)-V3 (R7 jest równe V1 podzielone przez 2 minus wartość promienia (X))

G0 G90 Z.1 H1 (bezpieczne przesunięcie Z)

X0 Y0 (ulokowanie w środku gniazda)

D1 (średnica narzędzia musi znajdować się w tabeli narzędzi)

Z-.250 G1 F20. (przesunięcie w dół ku gniazdu)

G91 G41 Y-R4 (kompensacja współbieżna)

X+R8 (parametr przypisany do przesunięcia osi)

X+R6 Y+R6 R0+R6 G3

Y+R5

X-R6 Y+R6 R0+R6 G3

X-R2 (kalkulacje makro określające przesunięcie X Y)

X-R6 Y-R6 R0+R6 G3

Y-R5

X+R6 Y-R6 R0+R6 G3

X+R8

Y+R4 G40 G90 (wyłączenie kompensacji)

G0 G90 Z.1 (bezpieczne przesunięcie Z)

M99 (koniec podprogramu)

Funkcje matematyczne

Makra mogą wykorzystywać funkcje matematyczne, komendy oraz zmienne. Zmienne są używane w koniugacji w funkcjami do wykonania kalkulacji. Znaki opisane poniżej przedstawiają matematyczne możliwości funkcji.

W starszych sterownikach wymagane jest wpisanie znaków alfanumerycznych dla uzyskania znaków nie występujących na klawiaturze.

Znak

Opis

Znaki alfabetu (Alpha Keys)

„pusty” znak

+

plus, dodatni, dodawanie

-

minus, ujemny, odejmowanie

*

mnożenie, iloczyn

/

znak dzielenia, iloraz

ABS

wartość bezwzględna

ATN

arctg, arcus tangens

COS

cosinus

INT

wartość całkowita

RND

zaokrąglenia

SGN

(return the sign) zwróć znak

SIN

sinus

SQR

pierwiastek kwadratowy

(

lewy nawias

)

prawy nawias

=

znak równości

EQ

<

mniejszy niż

LT

>

większy niż

GT

<=

mniejszy niż większy niż

LE

>=

większy niż większy niż

GE

<>

nie równy z

NE

`

znak w linii makro

Kolejność wykonywania działań (Order of Calculation)

Operacje arytmetyczne są dokonywane w standardowej kolejności wykonywania działań :

Nawiasy ()

Funkcje (SIN, COS ...)

- (negacja)

* (mnożenie) / (dzielenie)

+ (dodawanie) - (odejmowanie)

AND, OR, NOT

Nawiasy mogą być używane do ustalenia kolejności działań arytmetycznych, omijając standardowy matematyczne porządek.

Przecinek dziesiętny (decimals)

Liczby bez przecinka dziesiętnego są uważane jako liczby całkowite. Zasada stosuje się tylko w liniach makro.

Formy wykładnicze liczb

Formy wykładnicze liczb nie są dozwolone. Zamiast 1,23^5 napisz 123000.

Etykiety (Label)

Etykiety używane są do adresowania skoku GOTO w programie. Zwykle używa się etykiet, opisujących obszar lub instrukcje do których są przypisane. Dwukropek (:)oznacza pole etykiety.

Przykład:

N5 #V1=1 (przypisanie wartości 1 do zmiennej V1)

......

N9 #GOTO :DOMATH(skok do linii N100, w której znajduje się etykieta DOMATH)

N10 #:WORK (etykieta WORK adres wysłania z linii N100)

N11 #V1=V1+1 (zwiększenie zmiennej V1o 1)

N12 #IF V1=5 THEN GOTO :DOMATH

(Jeżeli V1 jest równe 5 program przechodzi do linii N100 o etykiecie DOMATH, w przeciwnym wypadku program kontynuowany jest do linii N14)

N13 #R9=R9+V1 (przypisanie wartości V1 do parametru R9)

N14 T+R9 M6 (podanie numeru narzędzia z pomocą parametru R9)

.....

N100 #:DOMATH (adres wysłania skoku GOTO w linii N5)

.....

N110 #GOT :WORK (skok do linii N10, w której znajduje się etykieta WORK)

Komentarze

Komentarze są istotną częścią programowania makr, służą do wyjaśnienia programu innym operatorom, przypominają programiście po co zostały napisane i jakie spełniają zadanie. Komentarze w liniach makro zaczynają się od apostrofu (`). Należy pamiętać, że w linii mogą znajdować się nie więcej niż 63 znaki (kody + komentarze).

N3 # V100=1.2345 `V100 jest długością części 2

Obliczenia

Operacje matematyczne dodawania, odejmowania, mnożenia i dzielenia są reprezentowane przez znaki +, -, * oraz /.

Przykład :

N11 #V10=3/V12

Zmienne (Variables)

Zmienne wektorowe (Arrays)

Mogą być używane zmienne macierzowe. Rozszerzeniem nazwy zmiennej (subscript) może być zmienna lub wyrażenie arytmetyczne. Rozszerzeniami zmiennych są D, FX, FY, FZ, H, PX, PY, PZ, PA, PB, R, V. Rozszerzenie nazwy zmiennej nie może przekroczyć określonej długości. Na przykład rozszerzenie nazwy zmiennej dla zmiennej V musi znajdować się w przedziale od 1 do 99, dla zmiennej FX w przedziale od 1 do 48.

Przykład :

Jeżeli V1=5 i V2=1, to poniższe zapisy są równoważne :

#V5=1

#V(5)=1

#V(V1)=1

#V(V1+V2-1)=1

#V(V1/V2)=1

#V(V(SQR(V2))=1

Zmienne pozycji osi : AX, AY, AZ, AA, AB, AC.

Zmienne pozycji osi są używane do odczytu bieżącej pozycji określonej osi.

Przykład:

N79 # IF AZ>12.050 THEN GOTO :GETNEXT

W powyższym przykładzie, oś Z znajduje się w pozycji równej lub większej niż 12.050 cala, w czasie gdy wykonywana jest ta linia, program przeskoczy do linii, w której znajduje się etykieta : GETNEXT.

Przykład:

N99 E2 X0 Y0

N100 Z-30 G31 F50.

N101 G91 Z.05

N102 G90

N103 Z-30. G31 F1. (sonda zatrzyma oś Z w momencie dotyku)

N104 #IF AZ>12.050 THEN GOTO :GETNEXT

CP: (Czas od włączenia) Clock from power on

Zmienna zwróci zakumulowany czas od włączenia maszyny.

CR: (Czas od włączenia) Clock for all run time

Zmienna zwróci zakumulowany czas, w którym sterownik był w trybie auto.

CC: (Czas wykonywania programu) Clock for Current part

Ta zmienna zwróci zakumulowany czas, w którym bieżący program był wykonywany. Strona SETP musi posiadać włączone mierniki czasu (TIMERS ON) do rejestracji akumulowanego czasu.

D1-D99 (Zmienna Średnicy/Promienia Narzędzia)

Te zmienne są używane do odczytu bieżącej wartości średnicy/promienia z tablicy narzędzi. Mogą być również używane do ustalania lub zapisania wartości w tablicy. Bieżąca wartość średnicy może zmienione przez umieszczenie zmiennej po lewej stronie znaku równości.

Przykład: Odczyt średnicy

N20 #IF D5>.505 THEN GOTO :END

.....

N349 #:END

N350 M0

N350 #PRINT „Średnica narzędzia #5 nie powinna być większa niż .505”.

Przykład : Zapisanie średnicy

N89 #D2=D2+.01

Ta linia odczytuje bieżącą wartość średnicy #2, zapisuje nową średnicę #2 powiększoną o .01 w tablicy narzędzi.

Zmienne ustawienia baz lokalnych (Fixture Offset Variables)

FX1-FX48, FY1-FY48, FA1-FA48, FB-FB48

Te zmienne służą do odczytu bieżącej wartości każdego ustawienia bazy lokalnej. Mogą być używane do ustalenia lub zapisania wartości w tablicy. Bieżąca wartość dowolnego ustawienia może być zmieniona przez umieszczenie zmiennej po lewej stronie znaku równości.

FY3 (odczyt/zapis Y bazy lokalnej 3)

FZ34 (odczyt/zapis Z bazy lokalnej 34)

Przykład: Odczyt

N15 G91 G10 L02 X2. P1

N16 #IF FX1>30. THEN GOTO :SUB3

(odczyt wartości X ustawienia bazy lokalnej1)

.....

N24 #:SUB3.

N25 G91 G10 L02 X-2. P1

N26 E0 X0 Y-1.

N27 L315

Przykład : Zapis

N63 # FX1=FX1-2

Zmienne długości narzędzia : H1-H99

Te zmienne służą do odczytu bieżącej wartości każdej długości narzędzia z tabeli narzędzi. Mogą być używane do ustalenia lub zapisania wartości w tablicy. Bieżąca wartość dowolnej długości narzędzia może być zmieniona przez umieszczenie zmiennej po lewej stronie znaku równości.

Przykład: Odczyt

N34 #IF H16<-10.67 THEN GOTO :NOTOOL

N35 #IF H16=0 THEN GOTO :STOPIT

.....

N144 #:NOTOOL

N145 #R6+V6+1

N146 M6 T+R6

Przykład : Zapis

N654 # H33=H33-16

Zmienne Punktu Odczytu Sonda : PX1-PB1, PX2-PB2, PX3-PB3

Te zmienne służą do odczytu bieżącej wartości punktu dotknięcia. PX1 odczytuje bieżącą wartość X punktu dotknięcia P1. PY1 odczytuje bieżącą wartość Y punktu dotknięcia P1, zaś PZ1 zwraca wartość osi Z. Możliwe jest zapisanie wartości tylko 3 punktów. Mogą być odczytywane tylko wartości X, Y, Z, A i B.

Przykład:

N197 #V1=1

N198 #R8=V1

N199 G1 G31 X20. Y25. F25. P+R1

N200 #PRINT „PUNKT #”, V1, „ZNAJDUJE SIĘ W : X”, PX1, „Y”, PY1

Po dotknięciu punktu sondą pozycja (P1) jest w pamięci i każda pozycja osi może być użyta do dowolnych obliczeń lub może być wysłana przez port RS-232 przez komendę PRINT.

Wydrukowana linia będzie następująca :

PUNKT #1 ZNAJDUJE SIĘ WX 18.5 Y 17.65

Zmienne parametryczne : R0-R9

Te zmienne służą do przekazania danych z makro do linii programu CNC. Zmienne parametryczne R0-R9 są używane do ustalonych podprogramów i ustalonych cykli (Patrz Programowanie Parametryczne).

Przykład :

N15 #R2=V56

N16 Z-R2 G1 F20.

N17 L9201 R0+.1 R1+0 R2+.25 R3+0 R4+1 Z-R9 F+R8

TN : Numer Narzędzia

Zmienna zwróci wartość liczbową bieżącego narzędzia na trzpieniu. Numer jest określony przez ostatnio wykonywaną przez program komendą M6 T#.

Przykład :

N32 #V1=TN (zmienna V1 będzie równa numerowi bieżącego narzędzia)

TT# : Czas pracy narzędzia (Tool Time)

Zmienna zwraca zapisany w tablicy czasów oczekiwany czas wykonania wybranego ustawienia.

Uwaga : Makra TT i TU są aktywne gdy jest włączony (On) parametr SETP dla czasu pracy narzędzia. Musi być wybrana jedna z opcji (2-5).

Przykład :

N12 #V1=TT3 (zmienna V1 będzie równa czasowi pracy narzędzia wprowadzonym w tablicy czasów)

TU#: Użyte Narzędzia

Zmienna TU akumuluje całkowitą ilość czasu, w którym narzędzie było w użyciu. Na przykład, jeżeli narzędzie 5 jest używane przez 10 minut, to TU5=10. Jeżeli narzędzie 5 jest używane przez 7 kolejnych minut, to TU5=17. Wartość zamiennej TU jest utrzymywana pomiędzy kolejnymi uruchomieniami, aż do wyłączenia maszyny.

Po wymianie narzędzi, następuje deklaracja długości narzędzia (H1-H99). Bieżąca długość narzędzia determinuje która zmienna TU będzie używana. Na przykład, jeżeli jest używana H7, będzie aktywna TU7. Zmienna TU zwiększa się tylko wtedy, gdy sterownik jest w trybie interpolacji.

Uwaga : Makra TT i TU są aktywne gdy jest włączony (On) parametr SETP dla czasu pracy narzędzia. (Patrz Opcje SETP - Zarządzanie czasem pracy narzędzi).

Przykład:

N31 #IF TU3=3 THEN GOTO :CHANGTOOL

(jeżeli czas jest równy 3 program wykona skok do etykiety :CHANGETOOL)

----------

N300 #:CHANGETOOL

Użycie opcji 2 strony SETP (Zarządzanie czasem pracy narzędzi), pozwala użytkownikowi zaprogramować wyświetlenie czasu pracy narzędzia w tabeli czasu pracy narzędzi i TU odczyta użyty czas w tabeli czasu pracy narzędzi. Poprzez kombinacje makr TT i TU użytkownik może budować makra zawierające specjalizowane aplikacje zarządzające czasem pracy narzędzi.

Zmienne Makr V1-V100

Zmienne używane w liniach makr.

Przykład :

N88 #V1=V2+V3

Funkcje

ABS

ABS zwraca wartość bezwzględną liczby.

Przykład:

V2=ABS(V1)

Jeżeli V1 jest równe -2.3 wtedy V2 będzie wynosiło 2.3, jeżeli V1 jest równa 2.3 to V2 będzie równe 2.3. Wartość bezwzględną liczby jest zawsze dodatnią wartością liczbową.

ATN

ATN zwraca wartość arctg (arcus tangens) liczby. (Patrz : komenda SET wybór stopni lub radianów).

Przykład :

V5 = ATN (V6/V7)

Jeżeli V6 jest przeciwprostokątną, a V7 jest przyprostokątną, to V5 będzie wynosiło tyle, co wartość kąta pomiędzy bokami trójkąta.

* Do obliczenia funkcji matematycznej (tg) tangens kąta użyj poniższej formuły ;

tg (kąt) = sin (kąt) / cos (kąt)

COS

COS zwraca wartość cos (cosinus) kąta. (Patrz : komenda SET wybór stopni lub radianów).

Przykład :

V56=COS (V34+V72)

Jeżeli V34 i V72 oznaczają kąty, to V56 będzie równe cosinusowi sumy kątów.

* Do obliczenia funkcji matematycznej arccos (arcus cosinus) użyj poniższej formuły :

arccos(kąt) = 1570796- ATN (kąt/SQR(1-kąt*kąt))

INT

INT zwraca wartość całkowitą liczby.

Przykład:

V100 = INT (V23)

Jeżeli V23=12.345 to V100 =12 Jeżeli V23=-12.345 to V100 =-12

Jeżeli V23=12.513 to V100 =12 Jeżeli V23=-12.513 to V100 =-12

Wartość całkowita liczby nie podaje liczb po przecinku dziesiętnym.

RND

RND zwraca zaokrągloną wartość liczby. Liczba miejsc po przecinku, do której liczba jest zaokrąglana jest ustalana przez użycie komendy #SET RND#. Do ustalenia czterech miejsc po przecinku wprowadź poniższą komendę :

Przykład :

N5 #SET RND4 (ustalenie liczby miejsc po przecinku)

N6 #V1=RND (V1) (zaokrąglenie wartości V1 do czterech miejsc po przecinku)

Uwaga : Gdy pożądana jest większa dokładność zaokrąglenia, wartość może być po prostu obliczana. Ogranicza to potrzebę używania komendy #SET RND#. Do zaokrąglenia liczby do piątego miejsca po przecinku użyj równania : V1=INT(V5*10000)/10000. Wartość V5 będzie zaokrąglona do piątego miejsca po przecinku, V1 będzie używana jako liczba zaokrąglona.

SGN

SGN służy do określenia znaku liczby.

Przykład :

V50=SGN(V77-V78)

Jeżeli (V77-V78) jest wartością dodatnią, to V50 wynosi +1.

Jeżeli (V77-V78) jest równe zero, to V50 wynosi +1.

Jeżeli (V77-V78) jest wartością ujemną, to V50 wynosi -1.

SIN

SIN zwraca wartość sin (sinus) kąta. (Patrz : komenda SET wybór stopni lub radianów).

Przykład :

V56 = SIN (V34+V72)

Jeżeli V34 i V72 oznaczają kąty, to V56 będzie równe sinusowi sumy kątów.

* Do obliczenia funkcji matematycznej arcsin (arcus sinus) użyj poniższej formuły :

arcsin(kąt) = ATN (kąt) / SQR(1-kąt*kąt)

SIN/COS

* Formuła służy do obliczenia funkcji tangens kąta

TANGENS (kąt) = SINUS (kąt) / COSINUS (kąt)

Przykład :

V12 = SIN(30)/COS(30)

V12 będzie równe tangensowi funkcji kąta 30 stopni.

SQR

SQR zwraca pierwiastek kwadratowy liczby. Jeżeli liczba jest ujemna, wydrukowany jest błąd i program będzie zatrzymany.

Przykład :

V46=SQR(9) (V46 będzie równa 3)

V45=SQR (V1-(V63*V29) (V45 będzie równa pierwiastkowi kwadratowemu wyniku działania (V1-(V63*V29)

Komendy Makra

Komendy makr pomagają zaadresować każde równanie. Działanie będzie zatrzymane jeżeli komendy są zastały nieprawidłowo użyte. Błędy obliczeniowe spowodują wyświetlenie na ekranie komunikat błędu. Działanie programu może być wyegzekwowane krok po kroku przez użycie komendy DEBUG.

CLEAR (wyczyść)

CLEAR jest używana do zerowania zmiennych makr. Może występować potrzeba wyczyszczenia (zerowania) zmiennych na początku makra lub w jakimś określonym miejscu programu. CLEAR może zerować jedną zmienną w dowolnym czasie lub zakres czy listę zmiennych. Jeżeli wyrażenie CLEAR pozostaje „puste”, zostaną wyczyszczone wszystkie zmienne (V1-V100).

Uwaga : Nie poleca się zerowania zmiennych na początku każdego programu.

Przykład:

# CLEAR (Tak skonstruowana komenda zeruje wszystkie zmienne makra)

Przykład:

# CLEAR V1 (Ta linia wyzeruje jedynie zmienną V1)

# CLEAR V1-V20 (Ta linia zeruje zmienne z zakresie od V1 do V20)

# CLEAR V3-V7,V15,V30,V45-V60

(Ta linia wyzeruje zmienne w zakresie od V3 do V7, zmienną V15, zmienną V30 oraz zmienne w zakresie od V45 do V60).

GOTO

Wyrażenie GOTO jest używane do przeadresowania programu. Jeżeli jest użyte oddzielnie, program zostaje przeadresowany do linii o podanym numerze lub etykiecie.

Przykład:

N3 #V1=1 (ustalenie wartość V1 na 1)

N4 #IF V1>2 THEN GOTO :INSIDE

(jeżeli V1 jest mniejsze lub równe 1 program jest dalej wykonywany od linii N5,

jeżeli V1 jest większe niż 1 program jest kontynuowany od etykiety :INSIDE)

N5 X1.0 Y-2.3. G1

N6 X3.6 Y-3.0

.......

N15 #:INSIDE (etykieta INSIDE)

N16#R6=V2*V17 (przypisanie wyniku mnożenia V2*V17 do parametru R3)

.......

N25 X+R3 F20. G1 (wartość R3 jest przypisana do X)

N26 #GOTO :INSIDE (kontynuj od etykiety INSIDE w linii N15.

IF-THEN (jeżeli-to)

Komenda IF-THEN używana jest w porównaniach. Część IF linii makro sprawdza zmienną lub równanie i jeżeli jest to zgodne z prawdą, wykona część THEN linii makro. Jeżeli część IF linii makro nie jest zgodne z prawdą program będzie kontynuowany od następnej linii. Gdy słowo N jest użyte w części THEN nie jest ono przenumerowywane podczas wykonania komendy NU. Jeżeli program został przenumerowany, słowo N musi zostać dostosowane do programu.

Przykład 1:

N200 #IF V1>V2 THEN GOTO :PART3

N201 E2 X0 Y0

.......

N299 #:PART3

N300 E3 X0 Y0

Linia N200, jeżeli prawdą jest, że V1 jest większe od V2 program przeskoczy do linii numer N300. Jeżeli V1 nie jest większe od V2 program przeskoczy do linii N201. Część wyrażenia THEN może zawierać dowolne poprawnie skonstruowane wyrażenie.

Przykład 2:

N100 # IF (V5+V6) <=0 THEN V7 = ABS(V5+V6)

Jeżeli suma V5 I V6 jest mniejsza lub równa zero, to wartość V7 będzie wartością bezwzględną sumy V5 i V6.

INDEX

Wyrażenie makro INDEX służy do wysłania kodu indekser bezpośrednio do indeksera FADAL. Możliwe jest to tylko wtedy, gdy jest używane wraz z indekserem FADAL. Dla uzyskanie więcej informacji na temat indeksera FADAL patrz instrukcja indeksera.

Przykład:

N5 # INDEX „M1 A90. F300.”

Powyższa linia wysyła kod CNC do indeksera FADAL aby przesunąć indekser o 90 stopni z prędkością przesuwu 300.

INPUT

Komenda INPUT umożliwia operatorowi wprowadzenie danych programu podczas wykonywania makra. Gdy egzekwowane jest wyrażenie INPUT, wykonywanie programu jest zatrzymane dopóki operator nie wciśnie klawisza ENTER. Komenda PRINT może być pomocna do wskazania operatorowi, że należy wprowadzić dane. Umieszczenie przecinka na końcu wyrażenia PRINT spowoduje przesunięcie kursora do końca tekstu na ekranie.

Przykład :

N1 #CLEAR

N2 #PRINT „ENTER THE POCKET LENGTH”,

N3 #INPUT V1

N4 #PRINT „ENTER THE POCKET WIDTH”,

N5 #INPUT V2

Powyższe wyrażenia PRINT wskazują operatorowi, że należy wprowadzić dane (V1, V2) do programu. Program zawiesza operacje dopóki nie są wprowadzone wszystkie wartości.

LABELS

Etykiety określają miejsce programu, w którym wykonywanie ma być kontynuowane, gdy określone warunki zostały lub nie zostały spełnione. Renumerowanie programu nie wpływa na działanie etykiet. Za wyjątkiem etykiety nic nie może się znajdować w linii programu, w której znajduje się etykieta. Przywołania do etykiety powinno zawierać dwukropek (:) oraz nazwę etykiety. Każda etykieta w programie musi posiadać unikalną nazwę. Jeżeli występują dwie takie same nazwy, program zawsze przejdzie do etykiety znajdującej się jako pierwsza w programie. Etykiety mogą być dowolnymi ciągami znaków alfanumerycznych, muszą być natomiast poprzedzone przez dwukropek (:). Nie mogą znajdować się w linii zawierającej etykietę komentarze i kody. Etykieta wskazuje miejsce w programie, gdzie wykonywanie programu ma zostać kontynuowane po wykonaniu skoku. Może być to część programu wykonywana wiele razy lub część programu, która ma być wykonana przy zaistnieniu określonych warunków. Aby uczynić program łatwiejszy do czytania etykiety powinny opisywać operację, która zostaje wykonana. Na przykład :PĘTLA, :SKOKPOWROTNY.

PRINT

Wyrażenie PRINT służy do wyświetlania na ekranie tekstu i danych.

Uwaga : Tekst, który ma być wyświetlony musi znajdować się pomiędzy cudzysłowami.

Przykład :

N4 #V6=25.45

N5#PRINT „OBLICZONA WARTOŚĆ :”,V6,” JEST WARTOŚCIĄ X.”

Używając przecinków do oddzielenia zmiennej od tekstu napis wyglądałby następująco :

OBLICZONA WARTOŚĆ : 25.45, JEST WARTOŚCIĄ X.

Uwaga : Nie należy używać średnika do oddzielenia zmiennej od tekstu.

SET

Komenda SET służy do zmiany parametrów makra. Istnieje pięć parametrów ustawialnych za pomocą komendy SET. Są to DEBUG, RUN, RND#, DEGREES i RADIANS. Ustawienie DEGREES i RADIANS wpływa na wynik obliczeń komend : SIN, COS i ATN. Komendy SET są wprowadzane po wykonaniu komendy MA w trybie wprowadzania komend lub w programie makro. Parametry DEGREES i RADIANS mogą być ustalane w makro jak w przykładzie poniżej. Komenda SET bez określonej funkcji, ustawi wszystkie parametry jako domyślne.

Przykład MA :

MA

SET RND5

Znak „#” nie jest wymagany gdy wykonywana jest komenda MA. Ta komenda jest wpisywane w czasie, gdy na ekranie jest wyświetlony komunikat ENTER NEW COMMAND (podaj następną komendę).

Przykład makro :

N24 #SET RADIANS

N25 #V2=ATN(V1)

N26 #PRINT, V2

N27 #SET DEGREES

N28 #V2=ATN(V1)

N29 #PRINT, V2

Linia N26 drukuje (na ekranie) kąt V2 w radianach, zaś linia N28 drukuje kąt V2 w stopniach.

SET DEBUG

Komenda DEBUG jest tymczasowo używana w makrach do ochrony linii makra. Tryb DEBUG działa tylko wtedy gdy użyta została w trybie wprowadzania komend komenda SU. Korzyścią trybu debug jest to, że wyświetla wartości zmiennych. Do uruchomienie trybu debug wprowadź #SET DEB w programie makro lub SET DEB używając jednocześnie komendy MA. Aby zakończyć tryb debug wprowadź SET RUN używając jednocześnie komendy MA lub wpisz #SET RUN w programie makro.

SET DEGEES/RADIANS (ustaw stopnie/radiany)

SET DEG i SET RAD komendy są wartościami modalnymi i kasują się nawzajem. Kalkulacje funkcji SIN, COS, ATN bazują na ustawieniach DEGREE (stopnie) lub RADIANS (radiany). Stopnie są ustawieniem domyślnym.

Radiany = ((Kąt wyrażony w stopniach * PI) / 180)

Stopnie = ((Kąt wyrażony w radianach * PI) / 180)

PI=3.14159265

SET RND#

Ta funkcja zwraca zaokrągloną wartość liczby. Liczba miejsc po przecinku, do której następuje zaokrąglenie liczby jest ustawiania przez komendę SET RND#. Do ustawienia zaokrąglenia do czterech miejsc po przecinku wprowadź komendę znajdującą się poniżej. Maksymalna liczba miejsc po przecinku, do której możliwe jest zaokrąglenie wynosi 5.

Przykład :

MA

SET RND4

Uwaga : Gdy pożądana jest większa dokładność zaokrąglenia, wartość może być po prostu obliczona. Ogranicza to potrzebę używania komendy #SET RND#. Do zaokrąglenia liczby do piątego miejsca po przecinku użyj równania : V1=INT(V5*10000)/10000. Wartość V5 będzie zaokrąglona do piątego miejsca po przecinku, V1 będzie używana jako liczba zaokrąglona.

SET RUN

Komenda używana do wyjścia z trybu DEBUG. Po użyciu komendy MA wprowadź SET RUN lub wprowadź #SET RUN w programie makro. Może nastąpić wtedy wykonanie programu.

SINPUT

Komenda SINPUT służy do zatrzymania i zaakceptowania danych przesyłanych przez port RS-232 podczas wykonywania makro. Gdy wykonane jest wyrażenie SINPUT działanie programu zatrzymuje się dopóki sterownik nie odbierze danych przez port RS. Sterownik nie będzie oczekiwał linii z komendą makro SPRINT. Oczekiwanie zaczyna się gdy dane są odbierane przez port RS-232. Wysłane dane muszą kończyć się powrotem karetki (carriage return).

Przykład :

N1 #CLEAR

N2 #PRINT „CZEKAJ ! WPROWADZANE SĄ DANE DŁUGOŚCI GNIAZDA”,

N3 #SINPUT V1

N4 #PRINT „CZEKAJ ! WPROWADZANE SĄ DANE SZEROKOŚCI GNIAZDA”,

N5 #SINPUT V2

SPRINT

Komenda SPRINT jest używana do wysłania danych przez port RS-232. Dane tekstowe i zmienne mogą być wysłane. Wyrażenie SPRINT drukuje poprzez port RS-232 w taki sam sposób jak wyrażenie PRINT wyświetla na ekranie.

Uwaga : Tekst musi być ograniczony obustronnie przez cudzysłów.

Przykład:

N43 #SPRINT „DANE NUMERU CZĘŚCI ”,V4,

N44 #SPRINT „X”, AX, „Y”, AY

W linii N43, występuje tekst „dane numeru części”. Jeżeli wartość V4 wynosi 98645, linia N43 wydrukuje : DANE NUMERU CZĘŚCI 98645.

START#

Makro START służy do skoku do następnego programu. Jest używane w sytuacji gdy przywoływany program posiada podprogramy. Nie dozwolone jest umieszczenie jednych podprogramów w drugim, dlatego właśnie używana jest komenda START. Ta komenda może być użyta do połączenia wielu programów głównych. Komenda wykonuje jedynie skok, nie występuje powrót. Komenda START jest zwykle używana w miejscu M2 lub M30 na końcu łączonego programu. Gdy wywoływany jest następny program operator musi wcisnąć przycisk AUTO aby uruchomić następny program.

Przykład:

N3245 G0 G90 G49 Z0

N3246 E0 X0 Y0

N3247 #START 7 (Wywołanie skoku do programu O7)

WAIT (czekaj)

Komenda zatrzymuje tymczasowo wykonywanie programu w linii, w której występuje komenda WAIT. Działanie programu będzie kontynuowane, gdy cała zawartość buforu zostanie przetworzona i wykonana. Może być użyta do wydrukowania komunikatu, gdy program jest zakończony. Sterownik będzie drukował przez port RS-232 podczas okresu przed procesem do momentu użycia komendy WAIT. WAIT jest używane również do unieruchomienia maszyny przed wydrukowaniem bieżącego położenia maszyny używając zmiennych osiowych.

Przykład:

N256 G1 G31 Z-31. F1.

N257 #WAIT

N258 #SPRINT „PUNKT #”, V5,”: X”, AX,”Y”,AY

W linii N257 sterownik zatrzyma wykonywanie programu i zaczeka do momentu, gdy cała zawartość buforu zostanie przetworzona i wykonana, przed wykonaniem linii N258 która wydrukuje bieżące położenie maszyny.

Uwaga : Bufor, w którym program jest przetwarzany i wykonywany, jest częścią pamięci używaną przez sterownik do przechowywania danych wykonywanego programu. Gdy sterownik oczekuje te dane są przechowywane w tym buforze. Użycie komendy SETP pozwala programiście na zmianę wielkości bufora. Na stronie parametrów maszyny termin „Binary buffer” (bufor binarny) jest stosowany jako bufor, w którym jest wykonywany program.

AND, OR i NOT ( „i”, „lub”, zaprzeczenie)

AND, OR i NOT są operatorami logicznymi pozwalającymi programiście konstruować złożone testy z jednego lub więcej wyrażenia. W języku BASIC złożone wyrażenie w języku Boolean są tworzone przez łączenie dwóch wyrażeń w języku Boolean przy pomocy operatorów logicznych. Język makro FADAL pozwala na wykorzystywanie operatorów logicznych. Liczba operatorów w wyrażeniu jest ograniczona przez maksymalną liczbę znaków w linii (63) (włączone są w to znaki spacji i „#”.

Dobrą zasadą stosowaną podczas pisania wyrażeń jest weryfikowanie czy możliwe jest wystąpienie zarówno prawdy (TRUE), jak i fałszu (FALSE). Porównywane pozycje muszą być oddzielone nawiasami w celu uniknięcia błędu wynikającego z długości lub komplikacji wyrażenia. Zapewnia to również, że wyrażenie zostało ocenione w sposób zamierzony przez programistę.

Przykład 1 : AND

IF (V1 GT V2) AND (V1 LT V3) THEN GOTO : PĘTLA

Pierwszy przykład jest prawdziwy tylko wtedy jeżeli : wyrażenie 1 (V1 > V2) jest prawdziwe oraz prawdziwe jest wyrażenie 2 (V1 < V3)

Przykład 2: OR

IF (V1 GT V2) OR (V1 LT V3) THEN GOTO : PĘTLA

W tym przykładzie tylko jedno w dwóch wyrażeń musi być prawdziwe, aby nastąpił skok do etykiety :PĘTLA.

Przykład 3 : NOT

IF NOT(V1=0) THEN GOTO :PĘTLA

Jeżeli V1 nie jest (NOT) równe zero, nastąpi skok do etykiety :PĘTLA

Przykład 4: AND, OR i NOT

IF (V1 GT V2) OR (V1 LT V3) AND (NOT(V1 GT V4 )) THEN GOTO : PĘTLA

Czwarty przykład pokazuje wiele operacji logicznych zebranych w jednym wyrażeniu. Kombinacja AND, OR i NOT może być wykorzystana do budowy skomplikowanych wyrażeń, dla których nie ma ograniczenia poza dozwoloną ilością znaków w linii (63) i możliwością przeczytania wyrażenia.

Samouczek MAKRO (MACRO Tutorial)

Wstęp

Bieżący podrozdział spełnia zadanie samouczka języka FADAL Makro. Znajduje się tu wiele komend języka makro. Kompletna lista komend znajduje się rozdziale Komendy Makr.

Streszczenie

Programowanie makro wykorzystuje ---------------------.

Porównywanie wyrażeń i wykonywanie operacji algebraicznych w formie pętli IF THEN i+,-,*,/, SIN, COS, ATN (wymieniając niektóre) stwarza możliwość tworzenia zaawansowanych obliczeń w kilku liniach kodu.

Samouczek zawiera przykłady programów MAKRO wraz z wyjaśnieniami i gdzie stosowne równania, z których wyprowadzone są wyrażenia. Samouczek zaczyna się od prostych przykładów i prowadzi do bardziej skomplikowanych funkcji.

Główne zasady

Wszystkie linie makra muszą być poprzedzone znakiem „#” zaraz za numerem linii. Otwarty nawias i znak „*” są operatorami makra i nie mogą być używane w liniach makra do oznaczania komentarzy. Zamiast nich używa się apostrofu ` do oznaczenia komentarza w linii makra. Nawias otwierający „(” i zamykający „)” są grupującymi operatorami służącymi do wskazania kolejności wykonywania działań, w równaniach arytmetycznych. Znak „*” jest symbolem mnożenia.

Komentarze

Komentarze są istotną częścią programowania makr, służą do wyjaśnienia programu innym operatorom, przypominają programiście po co zostały napisane i jakie spełniają zadanie. Komentarze w liniach makro zaczynają się od apostrofu (`). Należy pamiętać, że w linii mogą znajdować się nie więcej niż 63 znaki (kody + komentarze).

N3 # V100=1.2345 `V100 jest długością części 2

Obliczenia

Operacje matematyczne dodawania, odejmowania, mnożenia i dzielenia są reprezentowane przez znaki +, -, * oraz /.

Przykład :

N11 #V10= 3 /V12

Zmienne

Zmienne makra V1-V100

Dostępnych jest 100 zmiennych lub rejestrów „V” ponumerowanych od V1 do V100. Te rejestry mogą być używane do operacji na danych nie mogą być natomiast wykorzystywane bezpośrednio w programie (złożonym z kodów G). Obliczone (przetworzone) wartości musza być przeniesione do głównego programu za pomocą rejestrów (zmiennych) R. Istnieje 10 rejestrów (zmiennych) typu R, o numerach od R0 do R9. Gdy sterownik używa zmiennych od R0 do R4 w różnych ustalonych cyklach korzystnie jest zwykle przekazywać wartości (z makr do programu głównego) przez zmienne R poczynając od R9 postępując do R0. Należy uważać aby nie wprowadzać danych do zmiennych, które już są używane.

Te zmienne są używane w wyrażeniach języka makro.

Przykład : N88 # V1=V2+V3

Zmienne wektorowe (Arrays)

Mogą być używane zmienne macierzowe. Rozszerzeniem nazwy zmiennej (subscript) może być zmienna lub wyrażenie arytmetyczne. Rozszerzeniami zmiennych są D, FX, FY, FZ, H, PX, PY, PZ, PA, PB, R, V. Rozszerzenie nazwy zmiennej nie może przekroczyć określonej długości. Na przykład rozszerzenie nazwy zmiennej dla zmiennej V musi znajdować się w przedziale od 1 do 99, dla zmiennej FX w przedziale od 1 do 48.

Przykład :

Jeżeli V1=5 i V2=1, to poniższe zapisy są równoważne :

#V5=1

#V(5)=1

#V(V1)=1

#V(V1+V2-1)=1

#V(V1/V2)=1

#V(V(SQR(V2))=1

Zmienne pozycji osi : AX, AY, AZ, AA, AB, AC.

Zmienne pozycji osi są używane do odczytu bieżącej pozycji określonej osi.

Przykład:

N79 # IF AZ>12.050 THEN GOTO :GETNEXT

W powyższym przykładzie, oś Z znajduje się w pozycji równej lub większej niż 12.050 cala, w czasie gdy wykonywana jest ta linia, program przeskoczy co linii, w której znajduje się etykieta : GETNEXT.

Przykład:

N99 E2 X0 Y0

N100 Z-30 G31 F50.

N101 G91 Z.05

N102 G90

N103 Z-30. G31 F1. (sonda zatrzyma oś Z w momencie dotyku)

N104 #IF AZ>12.050 THEN GOTO :GETNEXT

CLEAR

Wyrażenie CLEAR jest używane do zerowania wartości w tablicy zmiennych. Jeżeli jest użyte jako pojedyncze słowo wyczyści wszystkie zmienne w tablicy. Jeżeli numer zmiennej znajduje się po komendzie CLEAR wymieniona zmienna lub zmienne zostaną wyczyszczone (wyzerowane).

Przykład :

# CLEAR (wyzerowanie wszystkich zmiennych V)

# CLEAR V1 (wyzerowanie tylko zmiennej V1)

# CLEAR V10-V30 (wyzerowanie zmiennych z zakresu od V10 do V30)

W normalnej praktyce programowania umieszczenie wyrażenia CLEAR na początku programu zapewnia to, że wszystkie zmienne będą wyzerowane. Wykonuje się to aby zapobiec przypadkowi, gdy zmienna posiadająca pewną wartość skróci sekwencję pętli lub przekroczy testowaną wartość.

Na przykład wyrażenie :

# IF V1<> 10 THEN GOTO :JUMP ma powodować wykonanie pewnej sekwencji programu (o etykiecie JUMP) 10 razy. Jeżeli początkowa wartość zmiennej V1 wynosi 15 (końcowa wartość V1 w poprzednim programie) program zawsze będzie przechodził do etykiety JUMP. Jest to dobry przykład złego programowania. Jedyną możliwością na zakończenie pracy przez omawiane wyrażenie jest zmienna V1 wynosząca 10. Lepszym rozwiązaniem byłoby napisanie :

#IF <=10. W tym przypadku po przekroczeniu 10 przez zmienną V10 program opuszcza pętlę. Jeżeli wymagana jest określona wartość zmiennej na początku programu należy ją wprowadzić w osobnym wyrażeniu.

Aby przypisać wartość do zmiennej V należy użyć znaku równości. Na przykład : #V1=10 #V1=V2#V1=R9 #V1=SIN(V10). Może być użyta dowolna, prawidłowo skonfigurowana funkcja makra. Można przypisać wartość do zmiennej R w ten sam sposób. W dodatku wartości mogą być przypisane bezpośrednio poza makro przez użycie + lub -. Wartość przekazywana do zmiennej R w ten sposób musi być liczbą lub inną zmienną R.Na przykład : R9+10. R8-18. R7+R6

Komunikacja z operatorem (Operator Interaction)

PRINT

Wyrażenie PRINT służą wyświetleniu komunikatów na ekranie. Wszystkie teksty muszą być zawarte w cudzysłowach. Wszystkie wartości reprezentowane przez zmienne V lub R muszą znajdować się poza cudzysłowami („”)i oddzielone przecinkami (,).

# PRINT V10

# PRINT „ZMIANA CZĘŚCI”

# PRINT „TO JEST CZĘŚĆ NUMER”, V10

# PRINT „TO JEST CZĘŚĆ NUMER”, V10, „POZOSTAŁO”, V11,”CZĘŚCI”

Na ekranie zostanie wyświetlone :

36920

ZMIANA CZĘŚCI

TO JEST CZĘŚĆ NUMER 36920

TO JEST CZĘŚĆ NUMER 36920 POZOSTAŁO 121 CZĘŚCI

INPUT (wprowadź w klawiatury)

Wyrażenie INPUT wymaga podania która zmienna ma być wprowadzona z klawiatury. O wykonywaniu przez program wyrażenia INPUT program może poinformować operatora wcześniejszym użyciem PRINT. Operator wprowadzi wymaganą wartość, która będzie umieszczona w zmiennej wymienionej w wyrażeniu INPUT po rozpoczęciu kontynuacji programu. Wciśnięcie klawisza RETURN bez podawania jakiejkolwiek wartości spowoduje przypisanie do zmiennej wartości 0 oraz kontynuację wykonywania programu.

Wyrażenie INPUT służy do zatrzymania programu w celu odebrania danych. Zakłada się, że wyświetlona na ekranie wyrażenie poinformuje operatora co jest od niego wymagane. Wyrażenie PRINT jest jedynie wyświetlane na ekranie, nie wywołuje zatrzymania programu. Zbyt długie wyrażenie może „przewinąć ekran”, uniemożliwiając operatorowi przeczytanie komunikatu.

Przykład :

# PRINT „Podaj średnicę frezu”,

# INPUT V100

„Rozgałęzienia” programu (Program Branching)

ETYKIETY

Etykiety określają miejsce programu, w którym wykonywanie ma być kontynuowane, gdy określone warunki zostały lub nie zostały spełnione. Renumerowanie programu nie wpływa na działanie etykiet. Za wyjątkiem etykiety nic nie może się znajdować w linii programu, w której znajduje się etykieta. Przywołania do etykiety powinno zawierać dwukropek (:) oraz nazwę etykiety. Każda etykieta w programie musi posiadać unikalną nazwę. Jeżeli występują dwie takie same nazwy, program zawsze przejdzie do etykiety znajdującej się jako pierwsza w programie. Etykiety mogą być dowolnymi ciągami znaków alfanumerycznych, muszą być natomiast poprzedzone przez dwukropek (:). Nie mogą znajdować się w linii zawierającej etykietę komentarze i kody. Etykieta wskazuje miejsce w programie, gdzie wykonywanie programu ma zostać kontynuowane po wykonaniu skoku. Może być to część programu wykonywana wiele razy lub część programu, która ma być wykonana przy zaistnieniu określonych warunków. Aby uczynić program łatwiejszy do czytania etykiety powinny opisywać operację, która zostaje wykonana. Na przykład :PĘTLA, :SKOKPOWROTNY.

GOTO

Wyrażenie GOTO może być użyte jako pojedyncza instrukcja w linii. W tej formie jest to bezwarunkowy skok, co oznacza, że nie muszą być spełniono żadne warunki do wykonania skoku.

Przykład : # GOTO N45

# GOTO :LABEL

Powyższe linie spowodują wykonywanie programu od wymienionej linii lub etykiety.

Wyrażenie może odnosić się bezpośrednio do numeru linii, jednakże w wypadku przenumerowywania programu jest konieczne zweryfikowanie tych adresów (numerów). Sterownik nie zmieni żadnego ze słów N w wyrażeniach GOTO, gdy program jest renumerowany. Preferowaną metodą jest używanie etykiet.

IF-THEN

Wyrażenie IF-THEN zapewnia językowi programowania makr elastyczność potrzebną do tworzenia kompaktowych programów. Jeżeli warunki znajdujące się po słowie IF są prawdziwe program wykonuje polecenia lub skoki znajdujące się po THEN.

Warunkiem do spełnienia może być proste stwierdzenie porównujące A do B

Przykład : # IF V1=V2

To wyrażenie poszukuje równych wartości zmiennych V1 i V2.

#IF V1=8

To wyrażenie sprawdza czy zawartość zmiennej V1 równa się 8.

Oto kilka innych poprawnych równości : V1=R1R1=V1 V1=SIN(V2) V5=TN.

Te warunki mogą być również

#IF V1*V2=3 (czytaj, równaniami Boola.

Przykład :jeżeli V1 razy V2 równa się 3)

#IF V1*V2<>3 (czytaj, jeżeli V1 razy V2 nie równa się 3)

Operatory symboliczne

Operatorami Boola używanymi w języku makro FADAL są :

= lub EQ (Equal) równy

< lub LT (Less Than) mniejszy niż

> lub GT (Greater Than) większy niż

<= lub LE (Less than or Equal to) mniejszy lub równy

>= lub GE (Greater than or Equal to) większy lub równy

<> lub NE (Not equal to) nie równy

Część wyrażenia po THEN może być użyta do przypisania wartości do zmiennej

Przykład : THEN V1=V5

THEN R6=SIN (V34)

Część wyrażenia po THEN może być użyta do przeadresowania wykonania programu.

Przykład : THEN GOTO N45 (przeadresowanie programu (skok) do linii N45)

THEN GOTO :PĘTLA (przeadresowanie programu (skok) do etykiety PĘTLA)

Jeżeli program jest przeadresowany do numeru linii, jest konieczne sprawdzenie czy numer linii jest poprawny za każdym razem gdy program jest przenumerowywany. Gdy program jest przenumerowywany sterownik nie zmieni numerów pętli IF Then lub w wyrażeniu GOTO. Dlatego preferowane jest używanie etykiet do przeadresowywania wykonania programu (instrukcja skoku).

Kompletne wyrażenie IF THEN nabierze formy :

# IF V1<= 28 THEN GOTO : PĘTLA

Linia oznacza : jeżeli zawartość zmiennej V1 jest mniejsza lub równa 28, to wykonaj skok do PĘTLA V1 może być użyte jako licznik do wykonywania kilku operacji dopóki wartość V1 nie jest większa od 28, gdy wartość V1 przekracza 28 program kontynuuje wykonywanie programu w linii następującej po wyrażeniu IF THEN.

#IF V1 = 1 THEN V20 = V5

Linia oznacza : jeżeli zawartość zmiennej V1 jest równa 1, to przypisz zawartości zmiennej V20 zawartość zmiennej V5. To Wyrażenie IF THEN może być użyte do ustawienia lub skasowania wartości zmiennej V20 za pomocą zmiennej V5 gdy V1 jest równa 1.

AND, OR i NOT ( „i”, „lub”, zaprzeczenie)

AND, OR i NOT są operatorami logicznymi pozwalającymi programiście konstruować złożone testy z jednego lub więcej wyrażenia. W języku BASIC złożone wyrażenie w języku Boolean są tworzone przez łączenie dwóch wyrażeń w języku Boolean przy pomocy operatorów logicznych. Język makro FADAL pozwala na wykorzystywanie operatorów logicznych. Liczbę operatorów w wyrażeniu jest ograniczona przez maksymalną liczbę znaków w linii (63) (włączone są w to znaki spacji i „#”.

Dobrą zasadą stosowaną podczas pisania wyrażeń jest weryfikowanie czy możliwe jest wystąpienie zarówno prawdy (TRUE), jak i fałszu (FALSE). Porównywane pozycje muszą być oddzielone nawiasami w celu uniknięcia błędu wynikającego z długości lub komplikacji wyrażenia. Zapewnia to również, że wyrażenie zostało ocenione w sposób zamierzony przez programistę.

Przykład 1 : AND

IF (V1 GT V2) AND (V1 LT V3) THEN GOTO : PĘTLA

Pierwszy przykład jest prawdziwy tylko wtedy jeżeli : wyrażenie 1 (V1 > V2) jest prawdziwe oraz prawdziwe jest wyrażenie 2 (V1 < V3)

Przykład 2: OR

IF (V1 GT V2) OR (V1 LT V3) THEN GOTO : PĘTLA

W tym przykładzie tylko jedno w dwóch wyrażeń musi być prawdziwe aby nastąpił skok do etykiety :PĘTLA.

Przykład 3 : NOT

IF NOT(V1=0) THEN GOTO :PĘTLA

Jeżeli V1 nie jest (NOT) równe zero, nastąpi skok do etykiety :PĘTLA

Przykład 4: AND, OR i NOT

IF (V1 GT V2) OR (V1 LT V3) AND (NOT(V1 GT V4 )) THEN GOTO : PĘTLA

Czwarty przykład pokazuje wiele operacji logicznych zebranych w jednym wyrażeniu. Kombinacja AND, OR i NOT może być wykorzystana do budowy skomplikowanych wyrażeń, dla których nie ma ograniczenia poza dozwoloną ilością znaków w linii (63) i możliwością przeczytania wyrażenia.

Pętle obliczeniowe (Counting Loops)

Pętle obliczeniowe mogą być stosowane do liczenia liczby części obrobionych, wywierconych otworów itd.. Podstawowy kod przyjmuje postać :

#V49=V49+1

#D98=D98+1

Wartości mogą być umieszczane w dowolnej nieużywanym rejestrze na przykład :V, D, R, H, TT lub FO. Gdy używany jest rejestr jako licznik, należy zadbać aby wartość w rejestrze nie jest nadpisana przez inną używaną funkcję.

Niedokładności we wskazaniu licznika mogą być spowodowane przez własność sterownika. polegająca na pobieraniu instrukcji programu do bufora przed ich wykonaniem. Te problem można wyeliminować przez użycie wyrażenia makro WAIT w linii programu poprzedzającej wyrażenie zliczające. Wyrażenie WAIT nie powoduje zatrzymanie pracy maszyny, powoduje jedynie zatrzymania ładowania do bufora linii programu, aż do momentu gdy wykonywanie programu osiągnie dany punkt w programie. Powstrzyma to licznik przed zwiększaniem stanu licznika przez faktycznym wystąpieniem liczonego zdarzenia.

Najlepszym miejscem dla pętli obliczeniowych jest koniec programu.

Przykłady Języka FADAL Makro

Makro Otwory na średnicy okręgu.

1) Przesunięcie do środka otworu.

a) To przesunięcie może być wyrażone w wartościach względnych, jednakże makro przykładowe wyrażone (najczęściej) jest w wartościach bezwzględnych. Pamiętaj, jeżeli programujesz w wartościach względnych, wprowadź kod G91 w następnej linii programu po wywołaniu tego makro.

2) Pozycjonowanie osi Z do pożądanej głębokości Z

3) Ustalenie prędkości przesuwu

4) Użycie słowa D do ustalenia średnicy narzędzia.

a) To makro zakłada, że średnica narzędzia znajduje się w tablicy narzędzi.

b) Podaj promień y w tabeli narzędzi, wprowadź promień

5) Wpisanie słowa R oraz M98 P800.

a) R5: Użycie 0 dla CW oraz 1 dla CCW

b) R6: Promień okręgu

c) R7: Promień zaokrąglenia

d) R8: Odległość od linii (Distance to the line)

e) R9: Kąt

Przykład :

O1 (Przykład Otwór-D: Program Główny)

(Narzędzie #1, wiertło .5)

M6 T1

G90 G0 S5000 M3 E1 X2. Y-3.

H1 Z.1 M8

G81 G99 R0+.1 Z-.6 F40. X2. Y-3.

G80

M5 M9

G90 G0 G49 Z0

(Narzędzie #2, .5 HSS SFL EM)

M6 T1

G90 G0 S7000 M3 E1 X2. Y-3.

H2 Z.1 M8

Z-.3 G1 F30.

F45.

D2

R5+1. R6+2. R7+.5 R8-.7 R9+0 M98 P800

Z.1 G0

M5 M9

G 49 Z0

E0 X0 Y0

M2

Podprogram 800

N10800 (Makro otworu-D : podprogram)

N2# `Pierwszy ruch do środka otworu D, pozycjonowanie osi Z

N3#'R5=0 dla CW, 1 dla CCW

N4#'R6=Promień okręgu

N5#'R7=Promień zaokrąglenia

N6#'R8=Kierunek X i odległość od linii

N7#'R9=Kąt

N8#V1=AX `przypisanie bieżącej pozycji X

N9#V2=AY `przypisanie bieżącej pozycji Y

N10#V3=R5 `CW lub CCW

N11#V4=R6 `Promień okręgu

N12#V5=R7 `Promień zaokrąglenia

N13#V6=R8 `Kierunek X i odległość od linii

N14#V8=V4-V5

N15#V10=-(ABS(V6)-V5)`Środek X'

N16#V11=SQR((V8*V8)-(V10*V10))`Środek Y'

N17#V12=V11/V10 `pochylenie linii przechodzącej przez środek okręgu i środek

N18#V13=-SQR((V4*V4)/(1+(V12*V12)))`Punkt końcowy X na promieniu

N19#V14=V12*V13``Punkt końcowy Y na promieniu

N20#IF R5=0 THEN GOTO :CW

N21#R3=V6`Pierwszy ruch X do linii

N22#R4=0

N23 G90 G8

N24 M98 P900

N25 X+R5 Y+R6 G1

N26#R3=V6

N27#R4=-V11`Ruch Y do promienia

N28 M98 P900

N29 X+R5 Y+R6

N30#R1=R5

N31#R2=R6

N32#R3=V10

N33#R4=-V11

N34 G8

N35 M98 P900

N36#R1=R5-R1`I do środka promienia

N37#R2=R6-R2`J do środka promienia

N38#R3=V13`Punkt końcowy X promienia

N39#R4=-V14`Punkt końcowy Y promienia

N40 M98 P900

N41 X+R5 Y+R6 I+R1 J+R2 G3

N42#R1=V1-R5

N43#R2=V2-R6

N44#R3=V13

N45#R4=V14`Punkt końcowy Y okręgu

N46 M98 P900

N47 X+R5 Y+R6 I+R1 J+R2

N48#R1=R5

N49#R2=R6

N50#R3=V10

N51#R4=V11

N52 M98 P900

N53#R1=R5-R1

N54#R2=R6-R2

N55#R3=-V6`Punkt końcowy X promienia

N56#R4=V11 `Punkt końcowy Y promienia

N57 M98 P900

N58 X+R5 Y+R6 I+R1 J+R2

N59 #R3=-V6

N60#R4=0

N61 M98 P900

N62 X+R5 Y+R6

N63#R3=0

N64#R4=0

N65 M98 P900

N66 X+R5 Y+R6 G40

N67 M99

N68#:CW

N69#R3=V6`Pierwszy ruch X do linii

N70#R4=0

N71 G90 G8

N72 M98 P900

N73 X+R5 Y+R6 G1

N74#R3=V6

N75#R4=V11`Ruch Y do promienia

N76 M98 P900

N77 X+R5 Y+R6

N78#R1=R5

N79#R2=R6

N80#R3=V10

N81#R4=V11

N82 M98 P900

N83#R1=R5-R1`I do środka promienia

N84#R2=R6-R2`J do środka promienia

N85#R3=V13`Punkt końcowy X promienia

N86#R4=-V14`Punkt końcowy Y promienia

N87 M98 P900

N88 X+R5 Y+R6 I+R1 J+R2 G2

N89#R1=V1-R5

N90#R2=V2-R6

N91#R3=V13

N92#R4=-V14`Punkt końcowy Y okręgu

N93 M98 P900

N94 X+R5 Y+R6 I+R1 J+R2

N95#R1=R5

N96#R2=R6

N97#R3=V10

N98#R4=-V11

N99 M98 P900

N100#R1=R5-R1

N101#R2=R6-R2

N102#R3=V6`Punkt końcowy X promienia

N103#R4=-V11 `Punkt końcowy Y promienia

N104 M98 P900

N105 X+R5 Y+R6 I+R1 J+R2

N106#R3=V6

N107#R4=0

N108 M98 P900

N109 X+R5 Y+R6

N110#R3=0

N111#R4=0

N112 M98 P900

N113 X+R5 Y+R6 G40

N114 M99

Podprogram 900

N10900 (OBRÓT X & Y)

N2#V30=(R3*COS(R9)-R4*SIN(R9))

N3#V31=(R3*SIN(R9)+R4*COS(R9))

N4#R5=V30+V1

N5#R6=V31+V2

N6 M99

Makro Otwory w kolumnach i rzędach.

1) Rozpoczęcie ustalonego cyklu 2) Wpisanie słów R

R9= Liczba otworów w rzędzie R7= Liczba otworów w kolumnie

R8= Odległość pomiędzy otworami (oś X) R6= Odległość pomiędzy otworami (oś Y)

Przykład :

010 (Program główny : rzędy i kolumny)

#CLEAR

#SET RUN

G90 G0 G40 G80 G17

E0 X0 Y0

G90 G0 S1000 M3 E1 X0 Y0

H1 Z0.1 M8

G81 G99 Z-1. R+0.1 F100. M45

R9+3. R8+1. R7+3. R6+1.

M98 P810

G80

M5 M9

G90 G0 G49 Z0

E0 X0 Y0

M2

Podprogram 810

0810 (Podprogram rzędy i kolumny)

#'R9 jest liczbą otworów w rzędzie

#'R8 jest odległością pomiędzy otworami (oś X)

#'R7 jest liczbą otworów w kolumnie

#'R6 jest odległością pomiędzy otworami (oś Y)

#V1=R9

#V2=R8

#V3=R7

#V4=R6

#V5=V1

#R5=V5

#V50=0`V50 to licznik otworów w rzędzie

#V60=0`V60 to licznik otworów w kolumnie

#V70=0`V70 to licznik ostatniego rzędu

G91

#:PRAWY

#IF V50=V1 THEN GOTO:TYŁ

#V50=V50+1

X+R8

#GOTO :PRAWY

#:TYŁ

#V60=V60+1

#V50=0

#R4=(R9*R8)-R8

X-R4 Y-R6

#IF V60=V3 THEN GOTO:OSTATNI

#GOTO:PRAWY

#:OSTATNI

X+R8

#V70=V70+1

#IF V70=V5 THEN GOTO:END

#GOTO:LAST

#:END

M99

Makro Obróbka Spiralna.

05757

#CLEAR (Wyczyść wszystkie zmienne makra)

G0 G90 G80 G40 G49

S1800 M3 M7

G0 G90 X0 Y0

H1 Z.1

G1 Z-.25 F20.

#V7=0 (Ustaw V7 w zero)

#:PĘTLA (Etykieta :PĘTLA)

#V7=V7+1 (Do V7 dodaj 1)

#IF V7>=360 THEN V7=0 (Wyrezuj kąt jeżeli przekroczył 360)

#V1=V1+.00077 (Ustaw przyrost kąta w stopniach)

#V2=SIN (V7)*V1 (Oblicz komponent X)

#V3=COS (V7)*V1 (Oblicz komponent Y)

#R9=V2 (Przypisanie wartości V2 do R9)

#R8=V3 (Przypisanie wartości V3 do R8)

#R7=V1 (Przypisanie wartości V1 do R7)

G2 X+R9 Y+R8 F30. R+R7 (Część maszynowa do kalkulacji)

#IF V1<10 THEN GOTO :PĘTLA (Zatrzymaj po 10 calach)

N20 G0 Z.1 M5 M9

N21 G28

N22 M2

Makro wykonujące siatkę otworów - zwiększenie o liczbę całkowitą

Poniższy przykład jest prostym przykładem wiercenia 100 otworów w siatce 10 na 10 otworów. Program rozpoczyna się normalnymi liniami zawierającymi kod G, następuje wyczyszczenie wartości w liście zmiennych dla zapewnienia prawidłowego działania liczników pętli. Zmienna V1 użyta została do liczenia pozycji X, zmienna V2 do liczenia pozycji. Te wartości będą przekazane do zmiennych R9 i R8, w celu ich użycia części programu zawierającego kody G. Tylko jedna etykieta jest wymagana do obsługi pętl. Pierwsze wyrażenie IF THEN sprawdza, czy wszystkie otwory na osi X zostały wywiercone. Gdy licznik wskazuje 10 program opuszcza pętlę. Następne wyrażenie zeruje licznik osi X i kolejne wyrażenie zwiększa wartość osi Y. Drugie wyrażenie IF THEN sprawdza, czy zostały wykonane wszystkie rzędy otworów (na osi Y). W tym programie wartości zmiennych służą równie dobrze jako licznik oraz jako wartość zwiększająca przesunięcie X i Y.

01234(siatka wierceń 10 kroków 1 calowych na osi X, 10 kroków 1 calowych na osi Y)

G90 G80 G40 G0 Z0

S2500 M3 M7

G0 X0 Y0 E1

Z.1 H1

G81 X0 Y0 Z-.75 R0.1 G98 F20.

#CLEAR (Wyzerowanie wszystkich zmiennych)

#:PĘTLA (Etykieta pętli )

#V1=V1+1 (Zwiększenie wartości zmiennej V1 o 1)

#R9=V1 (Przypisanie wartości zmiennej V1 do R9)

#R8=V2 (Przypisanie wartości zmiennej V2 do R8)

#X+R9 Y+R8 (Przesunięcie do położenia podanego przez R8 i R9)

#IF V1<=9 THEN GOTO :PĘTLA (Sprawdzenie czy wywiercono 10 otworów)

#V1=0 (Zerowanie V1 dla następnego rzędu)

#V2=V2+1 (Zwiększenie wartości zmiennej V2 o 1)

#IF V2<=9 THEN GOTO:PĘTLA (Sprawdzenie czy wywiercono 10 rzędów otworów)

G80 M5 M9

G49 Z0

G0 E0 X0 Y0 Z0

N20 M2

Ten program wykonuje 100 wierceń używając tylko 20 linii kodu. Ekwiwalentem w programie używającym kodu G byłoby około 109 linii programu.

Makro wykonujące siatkę otworów - zwiększenie o liczbę wymierną

Jeżeli jest konieczne stworzenie programu o przesunięciach o większych niż powiększenie numeru otworu, potrzebna będzie jedynie nieznaczna zmiana programu. Wartości zmiennych R9 i R8 będą powiększane o pożądaną wartość w kolejnym wykonywaniu pętli. Zmienne V1 oraz V2 pozostają licznikami.

01235 (siatka wierceń 10 kroków .375 cal. na osi X, 10 kroków .5 cal.

na osi Y)

G90 G80 G40 G0 Z0

S2500 M3 M7

G0 X0 Y0 E1

Z.1 H1

G81 X0 Y0 Z-.75 R0.1 G98 F20.

R9+0 R8+0 (Wyczyszczenie zawartości R9 i R8

#CLEAR (Wyzerowanie wszystkich zmiennych)

#:PĘTLA (Etykieta pętli )

#V1=V1+1 (Zwiększenie wartości zmiennej V1 o 1)

#R9=R9+.375 (Zwiększenie wartości R9 do następnego otworu)

#X+R9 Y+R8 (Przesunięcie do położenia podanego przez R8 i R9)

#IF V1<=9 THEN GOTO :PĘTLA (Sprawdzenie czy wywiercono 10 otworów)

#V1=0 (Zerowanie V1 dla następnego rzędu)

#V2=V2+1 (Zwiększenie wartości zmiennej V2 o 1)

#R9=0 (Zerowanie R9)

#R8=R8+.5 (Zwiększenie wartości R9 do następnego rzędu)

#IF V2<=9 THEN GOTO:PĘTLA (Sprawdzenie czy wywiercono 10 rzędów otworów)

G80 M5 M9

G49 Z0

G0 E0 X0 Y0 Z0

M2

Streszczenie Samouczka Programów

Poniższe programy zostały zaprojektowane jako integralna części samouczka. Każdy program jest podsumowany w tym rozdziale i każdy program jest wyjaśniony linia po linii. Ostatni podrozdział zawiera listę programów.

Program numer 1

Jest to prosty program służący do sprawdzenia długości narzędzia numer 1 i wprowadzenia tej długości do tablicy danych narzędzi. Ustawienie bazy lokalnej numer 23 musi zawierać odległość od powierzchni Z do wierzchołka sondy. Ustawienie bazy lokalnej numer 24 musi zawierać położenie (X i Y) sondaa narzędzi.

Program numer 2

Program podobny do programu 1 z tym, że używa sondy ustawienia narzędzi TS-20 lub TS-27 do sprawdzenia warunków narzędzi. Funkcją programu jest sprawdzenie czy narzędzia nie są uszkodzone.

Program numer 3

Ten program pobiera numer narzędzia dla narzędzia na trzpieniu gdy narzędzie to jest używane do wiercenia zestawu otworów. Sprawdza zgodność czasu wiercenia z czasem wprowadzonym w tabeli narzędzi. Jeżeli czas jest mniejszy niż czas całkowity w tabeli proces będzie kontynuowany. Gdy czas obróbki przekracza dozwolony czas, program zwiększy numer narzędzia i załaduje następne narzędzie. Proces będzie kontynuowany, aż wszystkie narzędzia w wymienniku narzędzi zostaną użyte. Aby program funkcjonował prawidłowo zegary muszą być ustawione na

2) DO NOT CHECK. Ta funkcja znajduje się na drugiej stronie parametrów. W dodatku wszystkie narzędzia muszą być załadowane i ich długości podane w tablicy narzędzi.

Program numer 4

Program pobiera średnicę dużego wiertła i oblicza wielkość każdego wejścia (peck) oraz minimalny czas zatrzymania wymagany do uwolnienia ciśnienia na wiertle. Pozwala to maszynie na bardziej efektywne wiercenie otworu przy mniejszym obciążeniu maszyny.

Używana formuła bierze liczbę milisekund w minucie 60000 podzieloną przez RPM pomnożoną przez .75.60000/RPM równą czasowi zatrzymania dla jednego kompletnego obrotu. Mnożąc przez .75 otrzymamy 3/4 obrotu do uwolnienia ciśnienia.

Program numer 5

Program wywierci otwory na krzywej śrubowej (circular bolt hole pattern) zdefiniowanej przez użytkownika. Użyte są funkcje sinus i cosinus do definiowania wymiarów X i Y pierwszego otworu. Program obróci otwór o wielkość określoną przez liczbę otworów.

Program numer 6

Ten podprogram sonduje dwa otwory znajdujące się w jednej linii na osi X. Wtedy ustawia ponownie ustawienie baz lokalnych w środku lewego otworu i obraca system koordynacji wyrównując z C/L otworów. Otwór po lewej stronie będzie ustawiony jako X0 Y0. Zakłada się, że odległość pomiędzy otworami wynosi 5 cali. Ten wymiar może być ustawiony w linii N14. Mogą być sprawdzone otwory o średnicy do 2.5 cala. Na wartość tą wpływa średnica sondy i może być zmieniona przez zmianę wartości X i Y w linii L9101 R1+1.

Program numer 7

Ten program służy do obróbki prostokątnego gniazda o zbieżnych bokach. Gniazdo będzie obrobione zgrubne do końcowego dolnego wymiaru. Kąt jaki tworzą boki wynosi pięć stopni, krok Z wynosi .01. Przekroczenie osi X i Y wynosi tg 5 * .01 = odległość przekroczenia. Punkt styczny (tangent point) na dnie gniazda musi być obliczony dla wymiarów początkowych. Jeżeli gniazdo jest wykończone, głębokość Z będzie równa głębokości dna gniazda plus 1/2 średnicy użytego fezu. Wielkość przesunięcia X Y będzie równa promieniowi frezu podzielonego przez cosinus kąta.

Przykład : .1875/COS 5 = .1875/.99619=.1882 będzie współczynnikiem korekcyjnym dla fezu 3/8 dla 5 stopni. Jeżeli gniazdo nie jest wykończone głębokość Z będzie równe głębokości gniazda minus 1/2 średnicy fezu. Wielkość przesunięcia X Y będzie obliczana w ten sam sposób co dla gniazda wykończonego plus czynnik korekcyjny dla różnicy głębokości. Będzie równy ontangens kąta razy promień frezu. Przykład : TAN 5* .1875 = .087488*.1875 =.0164 Dla obliczenia całkowitego współczynnika korekcyjnego należy współczynnik głębokości (.0164) odjąć od współczynnika kąta .1882. : .1882 - .0164= .1718.

Program numer 8

Sinusoida tworzona jest przez rozłożenie linii reprezentującej 360 stopniowy obrót. W przypadku krzywki będzie to równe obwodowi części przeznaczonej do obróbki. Przykładowo średnica 1 1/2 cala posiada obwód PI*średnica= 3.1416*1.5= 4.7124. Ta linia jest dzielona na równe segmenty określone przez wymagania na rysunku. Duża ilość segmentów zapewnia wysoki rozkład , mała ilość segmentów daje mały rozkład. Dwu stopniowe segmenty są akceptowalne przez większość aplikacji. Gdy została określona liczba segmentów, linia jest podzielona przez tą liczbę dla określenia skoku osi Y. Znalezienie liczby kroków (gdy linia jest o długości 360 stopni) dzieląc 360 przez kątowe zwiększenie (2 w tym przypadku). 360/2=180 kroków. Dzielimy długość linii (4.7124) przez liczbę kroków (180) 4.7124/180= .0262. Jest to wielkość przesunięcia osi Y dla każdego dwu stopniowego zwiększenia na sinusoidzie. Przesunięcie osi X jest określona przez pomnożenie sinusa zakumulowanego kąta przez wysokość fali. Wysokość fali wynosi połowę wysokości przesunięcia osi X. Całkowite przesunięcie o 1.25 cala na osi X naszej fali wynosi 1.25/2.

Formuła :

PI* średnica = obwód

360/zwiększenie kątowe = przesunięcie osi Y

sinus kąta * wysokość fali = przesunięcie osi X

Program „owinie” sinusoidę dookoła okrągłej części na czwartej osi.

Program numer 9

Elipsa - elipsa jest określona jako zbiór punktów, dla których suma odległości od dwóch określonych punktów jest zawsze równa. Formuła wygląda następująco ( X/ a) + (Y2 / b2 )=1, gdzie a jest równe promieniowi X elipsy i b równe jest promieniowi Y elipsy. Z wzoru można wyprowadzić wzór na Y, który wygląda następująco : . Ponieważ formuła posiada dwa rozwiązania + i - potrzebne są dwie pętle do wykonania elipsy, jedna dla Y+ oraz jedna dla Y-. Oś X będzie powiększana krokami .01.

Samouczek - programy z objaśnieniem

Program numer 1

Jest to prosty program służący do sprawdzenia długości narzędzia numer 1 i wprowadzenia tej długości do tablicy danych narzędzi. Ustawienie bazy lokalnej numer 23 musi zawierać odległość od powierzchni Z do wierzchołka sondy. Ustawienie bazy lokalnej numer 24 musi zawierać położenie (X i Y) sondy narzędzi.

N1 O99 (sprawdzenia narzędzia)

Zawiera numer programu i komentarz

N2 G90 G0 E24 X0 Y.25 S250. M4

Ustalenie trybu wartości bezwzględnej i trybu szybkiego , przesunięcie do pozycji X0 Y.25 na sondzie narzędzi, włączenie trzpienia (na biegu wstecznym) z prędkością 250 obrotów na minutę.

N3 M65

Uruchomienie sondy ustawienia narzędzi TS-20.

N4 G1 G31 Z-.1 F20.

Przypisuje długość narzędzia do narzędzia #1 plus korekcja osi Z dla położenie bazy lokalnej plus 1 cal. Powoduje to przesunięcie wierzchołka narzędzia jeden cal powyżej sondy narzędzi.

N5 G1 G31 Z-.1 F20

Wywołanie funkcji pominięcia sondy i przesunięcie narzędzie do sondy.

N6 G91 Z.05

Odsuniecie osi Z o .05 od sondy narzędzi.

N7 G90 S500

Ustawienie trybu wartości bezwzględnej i zwiększenie prędkości obrotu do 500 obrotów na minutę.

N8 G1 G31 Z-.1 F1.

Wywołanie funkcji pominięcia sondy i przesunięcie narzędzie do sondy z mniejszą prędkością dla poprawienia dokładności pomiaru.

N9 #R9=AZ

Zapisanie bieżącego położenia Z (AZ) w rejestrze 9 (R9). Jest to aktualna wartość Z dla pozycji „domowej”

N10 #R8=R9-FZ23

Dane wyrażenie makro odejmuje położenie (Z) bazy lokalnej w FZ23 od wartości zmiennej R9 i obliczoną wartość umieszcza w rejestrze 8 (R8).

N11 G10 L10 P1 R0+R8

Funkcja G10 przechowuje wartość rejestru 8 (R8) jako dane narzędzia numer 1.

N12 M5 G0

Wyłączenie trzpienia i ustalenie szybkiego trybu.

N13 G0 G90 H0 Z0

Ustawienie trybu wartości bezwzględnej, kasowanie danych narzędzia, przesunięcie Z do zera.

N14 E0 X0 Y0 Z0

Skasowanie danych baz lokalnych oraz przesunięcie do X0 Y0 i Z0.

N15 M99

Kod wyjścia z podprogramu, powrót sterownika do programu głównego lub programu wywołującego.

Program numer 2

Program podobny do programu 1 w tym, że używa sondy ustawienia narzędzi TS-20 lub TS-27 do sprawdzenia warunków narzędzi. Funkcją programu jest sprawdzenie czy narzędzia nie są uszkodzone.

N1 O2(podprogram sprawdzający uszkodzenie narzędzi)

Linia zawiera numer programu i komentarz

N2 G90 G0 E24 X0 Y.25 S250. M4

Ustalenie trybu wartości bezwzględnej i trybu szybkiego (rapid modes), przesunięcie do pozycji X0 Y.25 sondy narzędzi, włączenie trzpienia (na biegu wstecznym) z prędkością 250 obrotów na minutę.

N3 #R8=TN

Przypisanie numeru narzędzia do rejestru 8 (R8)

N4 #H99=H(R8)

Przypisanie ustawienia narzędzia numer 99 (H99) wartości wskazanej w rejestrze 8(R8)

N5 #H99=H99+F23

Dodanie czynnika korekcyjnego dla różnicy pomiędzy Z zero i wierzchołkiem sondy.

Uwaga : Linie 4 i 5 mogą być połączone eliminując krok : N4 #H99=H(R8)+FZ23

N6 M65

Włączenie sondy narzędzi.

N7 H99 Z1.(dł------)

Ustawienie narzędzia o skorygowanej długości jeden cal powyżej sondy narzędzi.

N8 G1 Z-.1

Przesunięcie wierzchołka narzędzia poniżej krawędzi sondy

N9 G1 G31 Y0

Włączenie funkcji ominięcia sondy i przesunięcie narzędzia do sondy

N10 #R9=AY

Zapisanie bieżącej pozycji osi Y w rejestrze numer 9 (R9).

N11 G0 Y.25

Odsunięcie narzędzia od sondy narzędzi.

N12 H0 Z0 G0 X0 Y0

Skasowanie wszystkich ustawień i odesłanie urządzenia do pozycji „domowej”

N13 #IF R9>0 THEN GOTO : WYJŚCIE

Test wartości R9. Jeżeli wartość R9 jest większa niż zero oznacza to złamanie narzędzia. Gdy narzędzie dotyka sondy, ruch osi jest zatrzymany. W wypadku złamania narzędzia kontakt narzędzia z sondą nie następuje i nastąpi przesunięcie do Y0. Jeżeli wartość R9 jest większa niż zero to część linii po THEN spowoduje skok do etykiety WYJŚCIE. Jeżeli wartość R9 jest równa 0 program będzie kontynuowany od następnej linii.

N14 M0

Zatrzymanie programu. Jeżeli narzędzie jest złamane program zostanie zatrzymany w tej linii. Wyrażenie PRINT (drukuj) może być użyte do zaalarmowania operatora o złamaniu narzędzia.

N15 #:WYJŚCIE

Etykieta do której odwołuje się skok w linii 13. Program jest kontynuowany.

N16 M99

Kod wyjścia z podprogramu, powrót sterownika do programu głównego lub programu wywołującego.

Program numer 3

Ten program pobiera numer narzędzia dla narzędzia na trzpieniu gdy narzędzie to jest używane do wiercenia zestawu otworów. Sprawdza zgodność czasu wiercenia z czasem wprowadzonym w tabeli narzędzi. Jeżeli czas jest mniejszy niż czas całkowity w tabeli proces będzie kontynuowany. Gdy czas obróbki przekracza dozwolony czas, program zwiększy numer narzędzia i załaduje następne narzędzie. Proces będzie kontynuowany, aż wszystkie narzędzia w wymienniku narzędzi zostaną użyte. Aby program funkcjonował prawidłowo zegary muszą być ustawione na

2) DO NOT CHECK. Ta funkcja znajduje się na drugiej stronie parametrów. W dodatku wszystkie narzędzia muszą być załadowane i ich długości podane w tablicy narzędzi.

N1 O3 *Czas pracy narzędzia*

Linia zawiera numer programu i komentarz

N2 G0 G90 E1 X0 Y0

Ustalenie trybu wartości bezwzględnej i trybu szybkiego (rapid modes), przesunięcie do X0 Y0 w stosunku do bazy lokalnej numer 1.

N3 #V9=TN `Przypisanie numeru narzędzia

Przypisanie numeru narzędzia będącego na trzpieniu do zmiennej 9 (V9)

N4 #R9=V9

Przypisanie numeru narzędzia do rejestru 9 (R9).

Uwaga : Linie 3 i 4 mogą być połączone eliminując dodatkowy krok

#R9 = TN

N5 #:PĘTLA

Etykieta :PĘTLA. Tu nastąpi odesłanie programu w pętli IF THEN

N6 M6 T+R9

Wymiana narzędzia na narzędzie wymienione w rejestrze 9 (R9).

N7 Z.1 H+R9

Ustawienie narzędzia .1 powyżej Z zero

N8 G81 G98 Z-.1 R0+.1 F50 M45

Wiercenie otworu

N9 G91 X.5 L20

Wiercenie 20 otworów w osi X

N10 G80 G90 M5 M9

Kasowanie cyklu wiercenia, wyłączenie trzpienia i chłodzenia (coolant), ustawienie trybu wartości bezwzględnej.

N11 X0 Y0

Cofnięcie do X0 Y0.

N12 #IF TU(R9)<TT(R9) THEN GOTO :PĘTLA

Porównanie czasu pracy z czasem ustawionym w tabeli czasu pracy narzędzi. Jeżeli czas pracy jest mniejszy niż czas w tabeli, wykonywanie programu będzie kontynuowane od etykiety :PĘTLA w linii 5. Jeżeli czas pracy narzędzi może być taki sam dla wszystkich narzędzi TT(R9) może być zmieniony na TT1. Eliminuje to potrzebę wielokrotnego ustawiania czasu pracy w wielu miejscach tabeli, wszystkie czasy będą porównywane do jednej wartości w tabeli. Jeżeli czas pracy będzie dłuższy niż czas ustawiony w tabeli czasu pracy narzędzi, program będzie kontynuowany w następnej linii.

N13 #R9=R9+1

Powiększenie numeru narzędzia o jeden

N14 # TU(R9)=0

Ustawienie czasu użytego w tabeli czasów na zero.

N15 #IF R9<22 THEN GOTO :PĘTLA

Porównanie wartości R9, mające na celu sprawdzenie czy wszystkie narzędzia zostały użyte. Jeżeli narzędzie ma numer 21 lub niższy, program będzie kontynuowany od etykiety : PĘTLA w linii N5. Jeżeli numer narzędzia jest większy niż 21 program będzie kontynuowany w następnej linii.

Uwaga : Wartość testowana może być zmieniona do testowania mniejszej lub większej liczby narzędzi.

N16 M2

Kod zakończenia programu.

Program numer 4

Program pobiera średnicę dużego wiertła i oblicza wielkość każdego dziobnięcia oraz minimalny czas zatrzymania wymagany do uwolnienia ciśnienia na wiertle. Pozwala to maszynie na bardziej efektywne wiercenie otworu w mniejszym przemęczeniem maszyny.

Używana formuła bierze liczbę milisekund w minucie 60000 podzieloną przez RPM pomnożoną przez .75.60000/RPM równą czasowi zatrzymania dla jednego kompletnego obrotu. Mnożąc przez .75 otrzymamy 3/4 obrotu do uwolnienia ciśnienia.

N1 O4

Linia zawiera numer programu i komentarz

N2 L100

Podprogram numer 1.

N3 G1 G91 F5.Z-R6

Ustalenie trybu wartości bezwzględnej, prędkości przesuwu na 5 cali na minutę oraz Z jako wartość ujemna rejestru 6 (R6).

N4 G4 P+R4

Zatrzymanie na czas o wielkości wskazanej przez wartość zawartą w R4.

N5 #V10=AZ

Przypisanie bieżącej pozycji Z w V10

N6 #IF V10>V1 THEN GOTO N3

Sprawdzenie bieżącego położenia Z. Jeżeli całkowita głębokość nie została osiągnięta następuje przejście do N3.

N7 #V10=0

Ustawienie V10 jako 0.

N8 G90 G1 Z.1 F50.

Ustalenie trybu wartości bezwzględnej. Odsunięcie o .1 powyżej Z zero.

N9 M17

N10 M30

Linie 9 i 10 kończą definiowanie podprogramu.

N11 #CLEAR

Program zaczyna się od tej linijki. Wrażenie kasuje wszystkie wartości w tablicy zmiennych.

N12 R9-1. R8+1000. R7+.05

Ustawienie wartości R dla wiercenie, które ma być wykonane.

N13 #PRINT „R9=Bęzwzglęna głębokość Z”

N14 #PRINT „R8=Prędkość obrotowa, która ma być zastosowana”

N15 #PRINT „R7=Średnica wiertła, która ma być użyta”

Linie 13, 14 i 15 informują operatora w jaki celu używane są wartości R.

N16 #V1=R9

Przekazanie wartości R9 do V1.

N17 #V2=R8

Przekazanie wartości R8 do V2.

N18 #R4=(6000/V2)*.75

Obliczenie czasu zatrzymania i przechowanie w R4.

N19 #V3=R7

Przekazanie wartości R7 do V3.

N20 #V4=V3*3 `.3=30 Procent średnicy wiertła

Obliczenie odległości dziobnięcia.

N21 #R6=V4

Przekazanie wartości R6 do V4.

N22 G90 G0 S+R8 M3 E1 X0 Y0

Ustalenie trybu wartości bezwzględnej, włączenie trzpienia i przesunięcie do X0 Y0 w stosunku do bazy lokalnej #1.

N23 H1 Z1. M8

Przysunięcie trzpienia na .1 powyżej Z zero i włączenie chłodzenia (chłodziwa).

N24 Z.1

Przysunięcie narzędzia na .1 powyżej Z zero.

N25 L101 G66

Wywołanie podprogramu L100 jako procedury modalnej. Od tego miejsca aż do momentu kasowania przez kod G67 podprogram zostanie wykonany po każdym pozycjonowaniu.

N26 M45

Wykonanie podprogramu w tym położeniu.

N27 X1.

Przesunięcie do X1. i wywołanie podprogramu.

N28 X2.

Przesunięcie do X2. i wywołanie podprogramu.

N29 G67

Kasowanie podprogramu.

N30 G0 G90 H0 Z0

Ustalenie trybu wartości bezwzględnej i trybu szybkiego, kasowanie długości narzędzia i przesunięcie do Z0.

N31 E0 X0 Y0

Kasowanie danych baz lokalnych i przesunięcie do X0 Y0.

N32 M2

Koniec programu.

Program numer 5

Program wywierci otwory na krzywej śrubowej (circular bolt hole pattern) zdefiniowanej przez użytkownika. Użyte są funkcje sinus i cosinus do definiowania wymiarów X i Y pierwszego otworu. Program obróci otwór o wielkość określoną przez liczbę otworów.

N1 O5

Numer programu i komentarz.

N2 #CLEAR

Wyczyszczenie wszystkich zmiennych.

N3 #PRINT „X0 Y0 jest środkiem wzoru wykorzystującego bazę lokalną #1”

N4 #PRINT „R5 jest liczbą otworów do wywiercenia”

N5 #PRINT „R4 jest średnicą wzoru otworów”

N6 #PRINT „R3 jest kątem startowym”

Linie od 3 do 6 służą do informowania operatora.

N7 R5+10. R4+5. R3+30.

Definiowanie parametrów części.

N8 #R7=360/R5`Kąt pomiędzy otworami”

Przypisanie do R7 wartości kąta pomiędzy otworami. Jest to wykorzystane w linii kodu G68 do obrócenia otworu.

N9 #V1=R4/2 `Promień wzoru śrubowego.

Ustalenie promienia wzoru śrubowego dla obliczeń X Y.

N10 #R9=SIN(R3)*V1 `Pozycja startowa X

N11 #R8=COS(R3)*V1 `Pozycja startowa y

N12 T1 M6

N13 G90 G80 G0 S5000 M3 E1 X+R9 Y+R8

N14 Z5. H1 M8

N15 G81 X+R9 Y+R8 Z-1. R0.1 F10. G98

N16 #R6=R7

Przyrównanie R6 do R7 aby umożliwić zwiększenie kąta dla każdego obrotu.

N17 #: PĘTLA

Etykieta, adres skoku.

N18 G68 R+R7 X0 Y0

Obrót otworu o kąt określony w R7.

N19 #R7=R7+R6

Powiększenie kąta obrotu (dla następnego otworu).

N20 #IF R7<(360-R6) THEN GOTO: PĘTLA

Sprawdzenie czy został wykonany ostatni otwór.

N21 G80 M5 M9

N22 G49 Z0

N23 G28 X0 Y0 Z0

N24 M2

Program numer 6

Ten podprogram sonduje dwa otwory znajdujące się w jednej linii na osi X. Wtedy ustawia ponownie ustawienie baz lokalnych w środku lewego otworu i obraca system koordynacji wyrównując z C/L otworów. Otwór po lewej stronie będzie ustawiony jako X0 Y0. Zakłada się, że odległość pomiędzy otworami wynosi 5 cali. Ten wymiar może być ustawiony w linii N14. Mogą być sprawdzone otwory o średnicy do 2.5 cala. Na wartość tą wpływa średnica sondy i może być zmieniona przez zmianę wartości X i Y w linii L9101 R1+1.

N1 O6

Linia zawiera numer programu i komentarz

N2 G0 G90 G40 G80 Z0

Linia bezpiecznego startu.

N3 X0 Y0 E1

Przesunięcie do X0 Y0 w stosunku do bazy lokalnej #1.

N4 Z0.1 H1

Przesunięcie sondy w .1 powyżej Z zero.

N5 G1 Z-0.25 F30.

Przesunięcie sondy w .25 poniżej Z zero.

N6 M64

Włączenie sondy.

N7 L9101 R1+1. Y1.25 P1 F30.

Wywołanie procedury sondy do pobrania pierwszego punktu pierwszego otworu.

N8 L9101 R1+1 X-1.0825 Y-0.625 P2 F30.

Wywołanie procedury sondy do pobrania drugiego punktu pierwszego otworu.

N9 L9101 R1+1 X1.0825 Y-0.625 P3 F30.

Wywołanie procedury sondy do pobrania trzeciego punktu pierwszego otworu.

N10 L9101 R1+2

Obliczenie średnicy i środka pierwszego otworu.

N11 #V50=R1

Zapamiętanie położenia X pierwszego otworu w V50.

N12 #V51=R2

Zapamiętanie położenia Y pierwszego otworu w V51.

N13 G0 Z.1

Przesunięcie do Z.1

N14 X5. Y0

Przesunięcie w celu oszacowania środka drugiego otworu.

N15 G1 Z-0.25 F20.

Przesunięcie do Z-.25

N16 L9101 R1+1. X5 Y1.25 P1 F30.

Wywołanie procedury sondy do pobrania pierwszego punktu drugiego otworu.

N17 L9101 R1+1 X3.9175 Y-0.625 P2 F30.

Wywołanie procedury sond do pobrania drugiego punktu drugiego otworu.

N18 L9101 R1+1 X6.0825 Y-0.625 P3 F30.

Wywołanie procedury sond do pobrania trzeciego punktu drugiego otworu.

N19 L9101 R1+2

Obliczenie średnicy i środka drugiego otworu.

N20 #V60=R1

Zapamiętanie położenia X drugiego otworu w V60.

N21 #V61=R2

Zapamiętanie położenia Y drugiego otworu w V61.

N22 #V55=V60-V50

Obliczenie odległości X od pierwszego do drugiego otworu.

N23 #V56=V61-V51

Obliczenie odległości Y od pierwszego do drugiego otworu.

N24 #V57=ATN(V56/V55)

Obliczenie obrotu kątowego w stosunku do 0.

N25 #FX1=FX1+V50

Ustalenie położenia X bazy lokalnej 1 w środku pierwszego otworu.

N26 #FY1=FY1+V50

Ustalenie położenia Y bazy lokalnej 1 w środku pierwszego otworu.

N27 #R9=V57

Przypisanie do R9 wartości obrotu kątowego drugiego otworu.

N28 G49 Z0

Skasowanie ustawień długości narzędzi.

N29 G0 X0 Y0 E1

Przesunięcie do X0 Y0 w stosunku do bazy lokalnej 1.

N30 G68 X0 Y0 R+R9

Obrót systemu koordynacji w celu wyrównania z otworami.

N31 M99

Kod wyjścia z podprogramu, powrót do programu głównego lub programu wywołującego.

Program numer 7

Ten program służy do obróbki prostokątnego gniazda o zbieżnych bokach. Gniazdo będzie obrobione zgrubne do końcowego dolnego wymiaru. Kąt jaki tworzą boki wynosi pięć stopni, krok Z wynosi .01. Przekroczenie osi X i Y wynosi tg 5 * .01 = odległość przekroczenia. Punkt styczny (tangent point) na dnie gniazda musi być obliczony dla wymiarów początkowych. Jeżeli gniazdo jest wykończone, głębokość Z będzie równa głębokości dna gniazda plus 1/2 średnicy użytego fezu. Wielkość przesunięcia X Y będzie równa promieniowi frezu podzielonego przez cosinus kąta.

Przykład : .1875/COS 5 = .1875/.99619=.1882 będzie współczynnikiem korekcyjnym dla fezu 3/8 dla 5 stopni. Jeżeli gniazdo nie jest wykończone głębokość Z będzie równe głębokości gniazda minus 1/2 średnicy fezu. Wielkość przesunięcia X Y będzie obliczana w ten sam sposób co dla gniazda wykończonego plus czynnik korekcyjny dla różnicy głębokości. Będzie on równy tangens kąta razy promień frezu. Przykład : TAN 5* .1875 = .087488*.1875 =.0164 Dla obliczenia całkowitego współczynnika korekcyjnego należy współczynnik głębokości (.0164) odjąć od współczynnika kąta .1882. : .1882 - .0164= .1718.

N1 O7

Linia zawiera numer programu i komentarz

N2 G0 G90 G80 G40 G49 Z0

Linia bezpiecznego startu.

N3 S7500 M3 M8

Prędkość obrotowa trzpienia : 7500 obrotów na minutę, włączenie chłodziwa.

N4 G8 M92

Włączenie trybu wartości względnych umożliwia wyłączenie nachylenia (ramping). Powoduje to zwiększenie dokładność i gładkość przesunięć.

N5 G0 X0 Y0 E1

Przesunięcie do środka gniazda.

N6 Z0.05 H1

Przesunięcie do .05 powyżej Z zero.

N7 G1 Z-1.687 F50.

Przesunięcie do dna gniazda. Punkt styku musi być obliczony dla położenia

X i Y.

N8 R9+0.8736

Zapisanie w R9 wartości 1/2 średnicy wymiaru Y na dnie gniazda plus punktu styku fezu (ball end mill).

N9 R8+1.3556

Zapisanie w R9 wartości 1/2 średnicy wymiaru Y na dnie gniazda plus punktu styku fezu (ball end mill).

N10 R7+1.687

Zapisanie w R7 głębokości Z : głębokość gniazda plus 1/2 średnicy frezu.

N11 #:PĘTLA

Etykieta koku dla każdego kroku.

N12 G1 Y-R9

Odsunięcie frezu od środka do wymiaru Y-.

N13 X+R8

Odsunięcie frezu od środka do wymiaru X+.

N14 Y+R9

Przesunięcie frezu do wymiaru Y+.

N15 X-R8

Przesunięcie frezu do wymiaru X-.

N16 Y-R9

Przesunięcie frezu do wymiaru Y-.

N17 X0

Przesunięcie frezu do X0.

N18 #R9=R9+.00087

Zwiększenie wymiaru Y o .00087 (styczna do kąta razy krok Z .01.) W tym przypadku kąt wynosi 5 stopni.

N19 #R8=R8+.00087

Zwiększenie wymiaru X o .00087 (styczna do kąta razy krok Z .01.) W tym przypadku kąt wynosi 5 stopni.

N20 #R7=R7-.01

Zwiększenie wymiaru Z o .01

N21 Z-R7.

Odsunięcie osi Z o .01.

N22 #IF R7 GT 0 THEN GOTO :PĘTLA

Sprawdzenie czy został osiągnięty wierzchołek części.

N23 G0 Z.5 M5 M9

Odsuniecie do Z.5, wyłączenie trzpienia i chłodziwa.

N24 G49 Z0 E0 X0 Y0 Z0

Skasowanie ustawień (offsets) i powrót do pozycji „domowej”.

N25 M2

Koniec programu.

Program numer 8

Sinusoida tworzona jest przez rozłożenie linii reprezentującej 360 stopniowy obrót. W przypadku krzywki będzie to równe obwodowi części przeznaczonej do obróbki. Przykładowo średnica 1 1/2 cala posiada obwód PI * średnica= 3.1416*1.5= 4.7124. Ta linia jest dzielona na równe segmenty określone przez wymagania na rysunku. Duża ilość segmentów zapewnia wysoki rozkład, mała ilość segmentów daje mały rozkład. Dwu stopniowe segmenty są akceptowalne przez większość aplikacji. Gdy została określona liczba segmentów, linia jest podzielona przez tą liczbę dla określenia skoku osi Y. Znalezienie liczby kroków (gdy linia jest o długości 360 stopni) dzieląc 360 przez kątowe zwiększenie (2 w tym przypadku). 360/2=180 kroków. Dzielimy długość linii (4.7124) przez liczbę kroków (180) 4.7124/180= .0262. Jest to wielkość przesunięcia osi Y dla każdego dwu stopniowego zwiększenia na sinusoidzie. Przesunięcie osi X jest określona przez pomnożenie sinusa zakumulowanego kąta przez wysokość fali. Wysokość fali wynosi połowę wysokości przesunięcia osi X. Całkowite przesunięcie o 1.25 cala na osi X naszej fali wynosi 1.25/2.

Formuła :

PI* średnica = obwód

360/zwiększenie kątowe = przesunięcie osi Y

sinus kąta * wysokość fali = przesunięcie osi X

Program „owinie” sinusoidę dookoła okrągłej części na czwartej osi.

N1 O7 (demonstracja sinusoidy)

Numer programu i komentarz.

N2 L100

Etykieta podprogramu.

N3 R1+0 R2+0 R3+0 R4+0 (ustalenie wartości słów R)

Zerowanie zmiennych.

N4 #V1=1.5 `średnica części

Wprowadzenie średnicy części.

N5 #V2=.625` współczynnik sinusoidy

Wprowadzenie współczynnika sinusoidy

N6 #V3=3.3141593*V1 `obwód części

Obliczenie obwodu części.

N7 #V4=90/(5*V3) `Obliczenie słowa Q

Obliczenie słowa Q krzywki.

N8 #R1=V4`Przypisanie wartości słowa Q do R1

Przypisanie wartości słowa Q do R1

N9 G51.1 Y0`Ustawienie odwrócenia osi Y

Odwrócenie osi Y dla zawijania krzywki.

N10 G17 Q+R1`Włączenie zawijania krzywki

Włączenie zawijania krzywki.

N11 G90 F50.

Ustawienie trybu wartości bezwzględnej, prędkości 50 obrotów na minutę

N12 #V10=V3/180`Zwiększenie osi Y dla każdego ruchu 2 stopni

Obliczenie zwiększenia osi Y dla każdych 2 stopni.

N13 #:PĘTLA

Etykieta skoku.

N14 #V12=V12+V10

Obliczenie pozycji osi Y.

N15 #V13=V13+2

Zwiększenie kąta.

N16 #V14=SIN(V13)*V2

Obliczenie pozycji osi X.

N17 #R4=V12

Zapisanie położenia osi Y w R4

N18 #R5=V14

Zapisanie położenia osi X w R5

N19 G1 X+R5 Y+R4 F20.

Przesunięcie do następnego miejsca.

N20 #IF V13 LT 360 THEN GOTO :PĘTLA

Sprawdzenie czy nie zostały wykonane wszystkie operacje.

N21 G0 Z1.

Ruch do wyczyszczenia części.

N22 Y0

Tryb odwijania.

N23 G50.1

Wyłączenie odwrócenia osi.

N24 G17

Wyłączenie zawijania krzywką.

N25 M17

N26 M30

Koniec podprogramu.

N27 G0 G80 G90 G40 G49 Z0

Linia bezpiecznego startu.

N28 T1 M6

Zmiana narzędzia

N29 S2500 M3 M8

Włączenie trzpienia i chłodziwa.

N30 G0 X0 Y0 A0 Z0 E1

Przesunięcie do pozycji.

N31 Z1. H1

Przesunięcie do Z1.

N32 G1 Z0.65 F15.

Przesunięcie w celu obróbki na wysokość. Z zero jest środkiem części.

N33 L101

Wywołanie podprogramu.

N34 M5 M9

Wyłączenie trzpienia i chłodziwa.

N35 G49 E0 X0 Y0 Z0

Skasowanie ustawień

N36 G28

Powrót do pozycji bazowej

N37 M2

Zakończenie programu.

Program numer 9

Elipsa - elipsa jest określona jako zbiór punktów, dla których suma odległości od dwóch określonych punktów jest zawsze równa. Formuła wygląda następująco ( X/ a) + (Y2 / b2 )=1, gdzie a jest równe promieniowi X elipsy i b równe jest promieniowi Y elipsy. Z wzoru można wyprowadzić wzór na Y, który wygląda następująco : . Ponieważ formuła posiada dwa rozwiązania + i - potrzebne są dwie pętle do wykonania elipsy, jedna dla Y+ oraz jedna dla Y-. Oś X będzie powiększana krokami .01.

N1 O9 (program elipsy)

Numer programu i komentarz

N2 G0 G90 G80 G40 G49 Z0

Linia bezpiecznego startu

N3 T1 M6

Wywołanie narzędzia 1.

N4 S2500 M3 M7

Uruchomienie trzpienia i chłodziwa.

N5 G0 X0 Y0 Z0 E1

Przesunięcie do środka części.

N6 #:XDIM

Etykieta pętli, odwołanie w przypadku wprowadzenia niewłaściwych danych

N7 #PRINT ”Wprowadź wymiar X”

Wyświetlenie na ekranie wyrażenia proszącego operatora o wprowadzenie danych.

N8 #INPUT V1

Pobranie zarządzanych danych

N9 #V1=V1/2

Obliczenie promienia X.

N10 #IF V1 LE 0 THEN GOTO :XDIM

Test danych

N11 #:YDIM

Etykieta pętli, odwołanie w przypadku wprowadzenia niewłaściwych danych

N12 #PRINT ”Wprowadź wymiar Y”

Wyświetlenie na ekranie wyrażenia proszącego operatora o wprowadzenie danych.

N13 #INPUT V10

Pobranie zarządzanych danych

N14 #V10=V10/2

Obliczenie promienia X.

N15 #IF V10 LE 0 THEN GOTO :YDIM

Test danych

N16 #V20=V1

Przepisanie wartości V1 do V20.

N17 #V1=V1*V1

Obliczenie a przez podniesienie V1 do drugiej potęgi.

N18 #V10=V10*V10

Obliczenie b przez podniesienie V10 do drugiej potęgi.

N19 #R9=V20

Przepisanie położenia X+ do R9

N20 G0 X+R9 Y0

Przesunięcie do punktu początkowego elipsy.

N21 Z0.1 H1

Przesunięcie narzędzia o .1 powyżej Z zero.

N22 G1 Z-0.25 F20.

Przesunięcie narzędzia do Z-.25

N23 #V25=V20

Skopiowanie wartości V20 w V25, która ma być użyta jako licznik.

N24 #:PĘTLA

Etykieta skoku dla każdego skoku.

N25 #V20=V20-.01

Obliczenie położenia następnego X.

N26 #V21=V20*V20

Podniesienie do drugiej potęgi położenia X (do wykorzystania w formule)

N27 #V30=(V21*V10)/V1

Obliczenia : (X2 * b 2)/a2

N28 #V31=SQR(V10-V30)

Obliczenia :

N29 #R9=V20

Skopiowanie położenia X do R9.

N30 #R8=V31

Skopiowanie położenia Y do R8.

N31 G1 X+R9 Y+R8 F20.

Przesunięcie do następnego położenia

N32 #IF V20>-V25 THEN GOTO :PĘTLA

Sprawdzenie czy została wykonana górna część elipsy

N33 #:PĘTLA1

Etykieta skoku dla dolnej części elipsy.

N34 #V20=V20+.01

Odwrócenie ruchu osi X.

N35 #V21=V20*V20

Podniesienie do drugiej potęgi położenia X (do wykorzystania w formule)

N36 #V30=(V21*V10)/V1

Obliczenia formuły.

N37 #V31=SQR(V10-V30)

Obliczenia formuły.

N38 #R9=V20

Skopiowanie położenia X do R9.

N39 #R8=V31

Skopiowanie położenia Y do R8.

N40 G1 X+R9 Y-R8 F20.

Przesunięcie do następnego położenia

N41 #IF V20<V25 THEN GOTO :PĘTLA1

Sprawdzenie czy elipsa została wykonana.

N42 G0 Z0.1 M5 M9

Przesunięcie do Z.1, wyłączenie trzpienia i chłodziwa.

N43 G49 Z0 E0 X0 Y0

Skasowanie ustawień, powrót do 0.

N44 G28

Powrót do pozycji bazowej

N45 M2

Koniec programu.

Lista programów samouczka

Program numer 1

N1 O99 (sprawdzenia narzędzia)

N2 G90 G0 E24 X0 Y0 Y.25 S250. M4

N3 M65

N4 G1 G31 Z-.1 F20.

N5 G1 G31 Z-.1 F20

N6 G91 Z.05

N7 G90 S500

N8 G1 G31 Z-.1 F1.

N9 #R9=AZ

N10 #R8=R9-FZ23

N11 G10 L10 P1 R0+R8

N12 M5 G0

N13 G0 G90 H0 Z0

N14 E0 X0 Y0 Z0

N15 M99

Program numer 2

N1 O2(podprogram sprawdzający uszkodzenie narzędzi)

N2 G90 G0 E24 X0 Y.25 S250. M4

N3 #R8=TN

N4 #H99=H(R8)

N5 #H99=H99+F23

N6 M65

N7 H99 Z1.(dł------)

N8 G1 Z-.1

N9 G1 G31 Y0

N10 #R9=AY

N11 G0 Y.25

N12 H0 Z0 G0 X0 Y0

N13 #IF R9>0 THEN GOTO :EXIT

N14 M0

N15 #:EXIT

N16 M99

Program numer 3

N1 O3 *Czas pracy narzędzia*

N2 G0 G90 E1 X0 Y0

N3 #V9=TN `Przypisanie numeru narzędzia

N4 #R9=V9

N5 #:PĘTLA

N6 M6 T+R9

N7 Z.1 H+R9

N8 G81 G98 Z-.1 R0+.1 F50 M45

N9 G91 X.5 L20

N10 G80 G90 M5 M9

N11 X0 Y0

N12 #IF TU(R9)<TT(R9) THEN GOTO :PĘTLA

N13 #R9=R9+1

N14 # TU(R9)=0

N15 #IF R9<22 THEN GOTO :PĘTLA

N16 M2

Program numer 4

N1 O4

N2 L100

N3 G1 G91 F5.Z-R6

N4 G4 P+R4

N5 #V10=AZ

N6 #IF V10>V1 THEN GOTO N3

N7 #V10=0

N8 G90 G1 Z.1 F50.

N9 M17

N10 M30

N11 #CLEAR

N12 R9-1. R8+1000. R7+.05

N13 #PRINT „R9=Bęzwzglęna głębokość Z”

N14 #PRINT „R8=Prędkość obrotowa, która ma być użyta”

N15 #PRINT „R7=Średnica wiertła, która ma być użyta”

N16 #V1=R9

N17 #V2=R8

N18 #R4=(6000/V2)*.75

N19 #V3=R7

N20 #V4=V3*3 `.3=30 Procent średnicy wiertła

N21 #R6=V4

N22 G90 G0 S+R8 M3 E1 X0 Y0

N23 H1 Z1. M8

N24 Z.1

N25 L101 G66

N26 M45

N27 X1.

N28 X2.

N29 G67

N30 G0 G90 H0 Z0

N31 E0 X0 Y0

N32 M2

Program numer 5

N1 O5

N2 #CLEAR

N3 #PRINT „X0 Y0 jest środkiem wzoru wykorzystującego bazę lokalną #1”

N4 #PRINT „R5 jest liczbą otworów do wywiercenia”

N5 #PRINT „R4 jest średnicą wzoru otworów”

N6 #PRINT „R3 jest kątem startowym”

N7 R5+10. R4+5. R3+30.

N8 #R7=360/R5`Kąt pomiędzy otworami”

N9 #V1=R4/2 `Promień wzoru śrubowego.

N10 #R9=SIN(R3)*V1 `Pozycja startowa X

N11 #R8=COS(R3)*V1 `Pozycja startowa y

N12 T1 M6

N13 G90 G80 G0 S5000 M3 E1 X+R9 Y+R8

N14 Z5. H1 M8

N15 G81 X+R9 Y+R8 Z-1. R0.1 F10. G98

N16 #R6=R7

N17 #: PĘTLA

N18 G68 R+R7 X0 Y0

N19 #R7=R7+R6

N20 #IF R7<(360-R6) THEN GOTO: PĘTLA

N21 G80 M5 M9

N22 G49 Z0

N23 G28 X0 Y0 Z0

N24 M2

Program numer 6

N1 O6

N2 G0 G90 G40 G80 Z0

N3 X0 Y0 E1

N4 Z0.1 H1

N5 G1 Z-0.25 F30.

N6 M64

N7 L9101 R1+1. Y1.25 P1 F30.

N8 L9101 R1+1 X-1.0825 Y-0.625 P2 F30.

N9 L9101 R1+1 X1.0825 Y-0.625 P3 F30.

N10 L9101 R1+2

N11 #V50=R1

N12 #V51=R2

N13 G0 Z.1

N14 X5. Y0

N15 G1 Z-0.25 F20.

N16 L9101 R1+1. X5 Y1.25 P1 F30.

N17 L9101 R1+1 X3.9175 Y-0.625 P2 F30.

N18 L9101 R1+1 X6.0825 Y-0.625 P3 F30.

N19 L9101 R1+2

N20 #V60=R1

N21 #V61=R2

N22 #V55=V60-V50

N23 #V56=V61-V51

N24 #V57=ATN(V56/V55)

N25 #FX1=FX1+V50

N26 #FY1=FY1+V50

N27 #R9=V57

N28 G49 Z0

N29 G0 X0 Y0 E1

N30 G68 X0 Y0 R+R9

N31 M99

Program numer 7

N1 O7

N2 G0 G90 G80 G40 G49 Z0

N3 S7500 M3 M8

N4 G8 M92

N5 G0 X0 Y0 E1

N6 Z0.05 H1

N7 G1 Z-1.687 F50.

N8 R9+0.8736

N9 R8+1.3556

N10 R7+1.687

N11 #:PĘTLA

N12 G1 Y-R9

N13 X+R8

N14 Y+R9

N15 X-R8

N16 Y-R9

N17 X0

N18 #R9=R9+.00087

N19 #R8=R8+.00087

N20 #R7=R7-.01

N21 Z-R7.

N22 #IF R7 GT 0 THEN GOTO :PĘTLA

N23 G0 Z.5 M5 M9

N24 G49 Z0 E0 X0 Y0 Z0

N25 M2

Program numer 8

N1 O7 (demonstracja sinusoidy)

N2 L100

N3 R1+0 R2+0 R3+0 R4+0 (ustalenie wartości słów R)

N4 #V1=1.5 `średnica części

N5 #V2=.625`wspołczynnik sinusoidy

N6 #V3=3.3141593*V1 `obwód części

N7 #V4=90/(5*V3) `Obliczenie słowa Q

N8 #R1=V4`Przypisanie wartości słowa Q do R1

N9 G51.1 Y0`Ustawienie odwrócenia osi Y

N10 G17 Q+R1`Włączenie zawijania krzywki

N11 G90 F50.

N12 #V10=V3/180`Zwiększenie osi Y dla każdego ruchu 2 stopni

N13 #:PĘTLA

N14 #V12=V12+V10

N15 #V13=V13+2

N16 #V14=SIN(V13)*V2

N17 #R4=V12

N18 #R5=V14

N19 G1 X+R5 Y+R4 F20.

N20 #IF V13 LT 360 THEN GOTO :PĘTLA

N21 G0 Z1.

N22 Y0

N23 G50.1

N24 G17

N25 M17

N26 M30

N27 G0 G80 G90 G40 G49 Z0

N28 T1 M6

N29 S2500 M3 M8

N30 G0 X0 Y0 A0 Z0 E1

N31 Z1. H1

N32 G1 Z0.65 F15.

N33 L101

N34 M5 M9

N35 G49 E0 X0 Y0 Z0

N36 G28

N37 M2

Program numer 9

N1 O9 (program elipsy)

N2 G0 G90 G80 G40 G49 Z0

N3 T1 M6

N4 S2500 M3 M7

N5 G0 X0 Y0 Z0 E1

N6 #:XDIM

N7 #PRINT”Wprowadź wymiar X”

N8 #INPUT V1

N9 #V1=V1/2

N10 #IF V1 LE 0 THEN GOTO :XDIM

N11 #:YDIM

N12 #PRINT”Wprowadź wymiar Y”

N13 #INPUT V10

N14 #V10=V10/2

N15 #IF V10 LE 0 THEN GOTO :YDIM

N16 #V20=V1

N17 #V1=V1*V1

N18 #V10=V10*V10

N19 #R9=V20

N20 G0 X+R9 Y0

N21 Z0.1 H1

N22 G1 Z-0.25 F20.

N23 #V25=V20

N24 #:PĘTLA

N25 #V20=V20-.01

N26 #V21=V20*V20

N27 #V30=(V21*V10)/V1

N28 #V31=SQR(V10-V30)

N29 #R9=V20

N30 #R8=V31

N31 G1 X+R9 Y+R8 F20.

N32 #IF V20>-V25 THEN GOTO :PĘTLA

N33 #:PĘTLA1

N34 #V20=V20+.01

N35 #V21=V20*V20

N36 #V30=(V21*V10)/V1

N37 #V31=SQR(V10-V30)

N38 #R9=V20

N39 #R8=V31

N40 G1 X+R9 Y-R8 F20.

N41 #IF V20<V25 THEN GOTO :PĘTLA1

N42 G0 Z0.1 M5 M9

N43 G49 Z0 E0 X0 Y0

N44 G28

N45 M2

18-52

Rozdział osiemnasty : Makra Strona 73



Wyszukiwarka