Custom Macro nedir? Alt programdan farkı ne?
Alt program (M98) aynı hareketleri tekrar eder. Custom Macro ise programa hesap yaptırmayı, karar verdirmeyi ve döngü kurdurmayı sağlar. Aradaki fark şudur: alt program hep aynı parçayı yapar; makro, verdiğiniz ölçüye göre farklı parça yapar.
Somut örnek: 12 delikli bir delik dairesi. Alt programla 12 ayrı koordinat yazarsınız. Makroyla çapı ve delik sayısını verirsiniz, koordinatları kontrol hesaplar. Çap değiştiğinde tek bir sayıyı değiştirirsiniz.
Değişkenler: FANUC’ta dört farklı tür
FANUC’ta değişken # işaretiyle yazılır. Hangi numarayı kullandığınız, değişkenin nerede geçerli olduğunu ve tezgâh kapanınca silinip silinmediğini belirler. Sahada en çok yapılan hata bu ayrımı bilmemektir.
| Numara | Tür | Nerede geçerli? | Kapanınca ne olur? |
|---|---|---|---|
| #0 | Boş (null) | Her yerde | Her zaman boştur, yazılamaz, sadece okunur |
| #1 – #33 | Lokal değişken | Sadece o makronun içinde | Silinir. Başka bir makro aynı #1’i kullansa bile sizinkini bozamaz. |
| #100 – #199 | Ortak değişken (uçucu) | Ana program, alt programlar ve tüm makrolar | Silinir — güç kesilince sıfırlanır |
| #500 – #999 | Ortak değişken (kalıcı) | Ana program, alt programlar ve tüm makrolar | Korunur — tezgâh kapanıp açılsa da değer durur |
| #1000 ve üzeri | Sistem değişkeni | Her yerde | Kontrolün kendi verisi: ofsetler, konum, alarm, saat, parametreler |
#500–#999 aralığına yazın. #100–#199‘a yazarsanız tezgâh kapanınca sayı sıfırlanır ve bunu genellikle ertesi sabah fark edersiniz.Kaynak kılavuzun ek notu: parametre 8135 bit 6 (NCV) ayarına göre #150–#199 ve #550–#999 aralıkları kullanılabilir hale gelir. Ayrıca #500–#999 arasındaki değişkenler parametreyle yazma korumalı (salt okunur) yapılabilir.
Değişkeni adres yerine kullanmak
Bir adresin değerini değişkenle verebilirsiniz:
Kurallar — kaynaktan birebir
- O ve N adresleri değişkenle yazılamaz.
O#27veyaN#1geçersizdir. - Opsiyonel blok atlama
/niçindeki n değişken olamaz. - Değişken numarası doğrudan değişkenle verilemez.
##30yanlıştır; doğrusu#[#30]‘dur. - Adresin izin verdiği maksimum değeri aşan bir değer yazılamaz.
#140=10000ikenG#140geçersizdir. - Değişken adres verisi olarak kullanıldığında otomatik yuvarlanır. IS-B (1/1000 mm) bir tezgâhta
#1=12.3456ikenG00 X#1→G00 X12.346olur. - Ondalık nokta atlanabilir:
#1=123yazarsanız değer 123.000 olur. - İfade kullanabilirsiniz:
X[#24+#18*COS[#1]]veyaZ-[#18+#26].
Boş (null) değişken tuzağı
Bu, makro yazarken en çok baş ağrıtan konudur ve çoğu Türkçe kaynakta hiç anlatılmaz. Değeri tanımlanmamış bir değişkene boş (null) denir. #0 ve #3100 her zaman boştur.
1. Boş değişken kullanılırsa adres komple yok sayılır
| Yazılan | #1 boş ise çalışan komut | #1 = 0 ise çalışan komut |
|---|---|---|
| G90 X100 Y#1 | G90 X100 — Y hiç yok | G90 X100 Y0 |
Yani boş bir değişken sıfır demek değildir. Y ekseni hareket etmez, hata da vermez — sessizce atlanır. Bir makroya argüman geçirmeyi unuttuğunuzda tam olarak bu olur.
2. Atama ve işlemde davranış
| İfade | #1 boş iken sonuç | #1 = 0 iken sonuç |
|---|---|---|
| #2 = #1 (lokal) | boş | 0 |
| #2 = #1 * 5 | 0 | 0 |
| #2 = #1 + #1 | 0 | 0 |
| #2001 = #1 (sistem değişkeni) | 0 | 0 |
Dikkat: boş bir değer doğrudan atanırsa boş kalır, ama içinde işlem varsa 0 olur. Sistem değişkenine atandığında ise her durumda 0 olur.
3. Karşılaştırmada boş değişken
Kaynak kılavuzun ifadesi: boş değer, sıfırdan yalnızca EQ ve NE için farklıdır. GE, GT, LE ve LT için boş değer sıfıra eşit sayılır.
IF [#1 EQ #0] GOTO 99 yazın — IF [#1 EQ 0] değil. İkincisi, kullanıcı gerçekten 0 girdiğinde de tetiklenir.Hesap işlemleri ve fonksiyonlar
| İşlem | Yazım | Açıklama |
|---|---|---|
| Toplama / çıkarma | #i = #j + #k · #i = #j - #k | |
| Çarpma / bölme | #i = #j * #k · #i = #j / #k | Sıfıra bölme PS0112 alarmı verir |
| Sinüs / kosinüs / tanjant | SIN[] · COS[] · TAN[] | Açı derece cinsindendir, radyan değil |
| Ark tanjant | ATAN[]/[] | İki değerin oranından açı verir |
| Karekök | SQRT[] | |
| Mutlak değer | ABS[] | |
| Yuvarlama | ROUND[] | En yakın tam sayıya |
| Aşağı / yukarı yuvarlama | FIX[] · FUP[] | Ondalık kısmı atar / bir üst tam sayıya çıkarır |
| Logaritma / üstel | LN[] · EXP[] | |
| Parametre okuma | #i = PRM[#j] | Makine parametresini programdan okur |
SIN[30] yazdığınızda sonuç 0.5’tir. Radyan dönüşümü yapmayın.Karşılaştırma ve mantık operatörleri
FANUC makroda >, <, = işaretleri kullanılmaz. Yerlerine iki harfli kısaltmalar vardır:
| Operatör | Anlamı | Matematik karşılığı |
|---|---|---|
EQ | Eşittir | = |
NE | Eşit değildir | ≠ |
GT | Büyüktür | > |
GE | Büyük veya eşittir | ≥ |
LT | Küçüktür | < |
LE | Küçük veya eşittir | ≤ |
Birden fazla koşulu AND ve OR ile birleştirebilirsiniz:
Dallanma ve döngü: GOTO, IF, WHILE
Koşulsuz atlama — GOTO
Koşullu dallanma — IF … GOTO
Koşullu atama — IF … THEN
Atlama yerine doğrudan bir değer atamak isterseniz:
Döngü — WHILE … DO … END
Koşul doğru olduğu sürece DO ile END arası tekrarı sürer. m yalnızca 1, 2 veya 3 olabilir.
İç içe döngü kuralı — çok önemli
İç içe döngülerde aynı numara tekrar kullanılabilir, ama döngüler birbirinin içine tam yerleşmelidir. Çakışan (overlapped) DO aralıkları PS0124 alarmı verir.
Makro çağırma: G65, G66 ve G67
G65 — basit çağırma
Makroyu bir kez çağırır ve argümanları aktarır.
G65 her argümandan önce yazılmalıdır. Satırın ortasına yazılamaz.Argüman tablosu (Argüman Belirtme I)
Hangi harfin hangi değişkene gittiğini ezberlemek yerine bu tabloyu kullanın:
| Adres | Değişken | Adres | Değişken | Adres | Değişken |
|---|---|---|---|---|---|
| A | #1 | I | #4 | T | #20 |
| B | #2 | J | #5 | U | #21 |
| C | #3 | K | #6 | V | #22 |
| D | #7 | M | #13 | W | #23 |
| E | #8 | Q | #17 | X | #24 |
| F | #9 | R | #18 | Y | #25 |
| H | #11 | S | #19 | Z | #26 |
Yani yukarıdaki örnekte makronun içinde #24 = 100.0, #25 = 50.0, #18 = 30.0, #26 = −50.0, #9 = 500 olur.
Argüman Belirtme II
A, B ve C birer kez; I, J ve K ise en fazla onar kez kullanılır. Çok sayıda nokta geçirmek gerektiğinde (örneğin serbest bir kontur) bu yöntem kullanılır. İki yöntem aynı blokta karıştırılırsa sonra yazılanın türü geçerli olur.
G66 / G67 — modal çağırma
G66 verildikten sonra makro, her eksen hareketi bloğundan sonra çağrılır. G67 ile iptal edilene kadar bu sürer.
Bu, delik dizisi işlerinde çok kullanışlıdır: bir kez G66 ile delme makrosunu tanımlarsınız, sonra sadece koordinatları yazarsınız.
İç içe geçme sınırları
- Makro çağrıları (G65 ve G66/G66.1 dahil) en fazla 5 seviye iç içe geçebilir.
- Alt program çağrıları makro çağrıları dahil en fazla 15 seviye.
- Her makro çağrısında lokal değişken seviyesi bir artar — yani içteki makronun
#1‘i dıştakinden farklıdır.
Sahada en sık yapılan hatalar
#100 serisine kalıcı veri yazmak
Parça sayacı veya takım ömrü #100–#199‘a yazılırsa tezgâh kapanınca sıfırlanır. Kalıcı olması gereken her şey #500–#999 aralığına yazılmalıdır.
Boş değişkeni sıfır sanmak
Argüman verilmediğinde değişken boş kalır, sıfır olmaz. Y#1 yazılmış bir satırda #1 boşsa Y ekseni hiç hareket etmez ve alarm da gelmez.
##30 yazmak
Değişken numarasını değişkenle vermek için #[#30] yazılır. ##30 geçersizdir.
Karşılaştırmada tek eşittir kullanmak
IF [#1 = 10] yazılmaz. Doğrusu IF [#1 EQ 10]‘dur.
Çakışan WHILE döngüleri
DO ve END aralıkları iç içe tam yerleşmelidir. Yarım çakışan aralık PS0124 alarmı verir.
Bir blokta hem NC hem makro komutu yazmak
Aynı satırda hareket komutu ve makro ifadesi bulunursa PS0127 alarmı gelir. Makro ifadesini ayrı satıra alın.
Trigonometride radyan kullanmak
FANUC makroda açılar derecedir. SIN[30] = 0.5’tir.
Makro çağrısını 5 seviyeden derine indirmek
Makro iç içe geçme sınırı 5’tir. Aşıldığında PS0122 alarmı gelir.
G65’i satırın ortasına yazmak
G65 tüm argümanlardan önce gelmelidir.
Sık sorulan sorular
Custom Macro her FANUC tezgâhında var mı?
Hayır, opsiyoneldir. Custom Macro A ve Custom Macro B olmak üzere iki seviyesi vardır; bugün yaygın olanı Macro B’dir. Tezgâhınızda olup olmadığını anlamanın en hızlı yolu MDI’dan #100=1 yazıp çalıştırmaktır; makro yoksa alarm gelir.
#100 ile #500 arasındaki fark pratikte ne?
#100–#199 geçici hesap içindir; tezgâh kapanınca silinir. #500–#999 kalıcıdır; güç kesilse de değer durur. Vardiyalar arasında taşınması gereken sayıları (parça adedi, takım ömrü) her zaman #500 serisine yazın.
Programdan takım ofsetini değiştirebilir miyim?
Evet. Takım ofsetleri sistem değişkenleri üzerinden okunup yazılabilir. Numaralandırma kontrol serisine ve ofset sayısına göre değiştiği için tezgâhınızın kılavuzundaki sistem değişken tablosunu kontrol edin. Prob ölçümü sonucunu otomatik ofsete yazdırma işlemi tam olarak bu şekilde yapılır.
Alt program mı kullanmalıyım, makro mu?
Aynı hareketler birebir tekrar ediyorsa alt program (M98) yeterlidir ve daha basittir. Ölçü değiştikçe koordinatların hesaplanması gerekiyorsa veya bir karar verilecekse makro gerekir.
WHILE döngüsünde neden sadece 1, 2, 3 kullanabiliyorum?
FANUC’ta DO numarası 1–3 ile sınırlıdır; yani en fazla üç seviye iç içe döngü kurabilirsiniz. Ardışık (iç içe olmayan) döngülerde aynı numarayı tekrar kullanabilirsiniz.
Makro programını nasıl koruma altına alırım?
Makro programları genellikle 9000 serisi program numaralarına (O9000–O9999) kaydedilir; bu programlar parametreyle görüntülenmeye ve düzenlenmeye karşı korunabilir. Ayrıca #500–#999 ortak değişkenleri parametreyle salt okunur yapılabilir.
Siemens’teki R parametrelerinin karşılığı nedir?
Kabaca FANUC’un #100 ve #500 serisi ortak değişkenlerine karşılık gelir. Ancak Siemens’te ayrıca DEF ile isimli değişken tanımlanabilir; FANUC’ta değişkenlerin adı olmaz, sadece numarası vardır.
Makro çalışırken ekranda ne görürüm?
Makro ifadeleri hareket üretmediği için blok göstergesinde ilerleme görünmeyebilir. Değişken değerlerini izlemek için kontrolün makro değişken ekranını kullanın; devreye alma sırasında en pratik teshis yöntemi budur.
Kaynaklar
- FANUC — Series 0i-MODEL F, Common to Lathe System / Machining Center System, OPERATOR’S MANUAL, doküman no B-64604EN/01: Bölüm 16.1 Değişkenler, 16.2 Sistem değişkenleri, 16.5 Aritmetik ve mantık işlemleri, 16.7 Parametre okuma, 16.8 Makro ve NC deyimleri, 16.9 Dallanma ve tekrar (IF, GOTO, WHILE), 16.10 Makro çağırma (G65, G66, G67), 16.13 Makro programlarının kaydedilmesi, 16.16 Kısıtlamalar
- FANUC — Series 0i-MODEL F MAINTENANCE MANUAL, B-64605EN/01, Ek A (makro ile ilgili PS alarmları için)

