CNC Frezede Makro Programlamaya Giriş: Değişkenler, IF ve WHILE

19 Temmuz 2026

Mentor CNC Editör Ekibi

Makro programlama, CNC programındaki sabit sayılar yerine değişkenler, matematiksel işlemler ve koşullar kullanarak esnek programlar hazırlama yöntemidir. Normal bir programda delik konumları tek tek yazılır; makro programda ise başlangıç konumu, delik aralığı ve delik sayısı değişken olarak tanımlanır ve program koordinatları otomatik hesaplar.

Makro programlama özellikle şu işlerde yararlıdır: farklı ölçülerdeki benzer parçalar, düzenli delik dizileri, tekrar eden cep ve kanal işlemleri, ölçüye göre otomatik koordinat hesabı, prob sonuçlarının değerlendirilmesi, takım ömrü/kırılma kontrolü ve belirli şartlarda programı durdurma. Bu sayfadaki örnekler genel FANUC tipi makro (Custom Macro) mantığını öğretmek amacıyla hazırlanmıştır.

Makro Program ile Normal Program Farkı

Normal CNC programı doğrudan koordinatları ve kesme değerlerini içerir. Makro programda ise bu değerler değişkenlerden alınabilir:

#100 = 20.   (başlangıç X konumu)
#101 = 20.   (başlangıç Y konumu)
#102 = 20.   (delik aralığı)

G00 X#100 Y#101

Değişkenlere verilen anlam programcı tarafından belirlenir; program bu değerleri kullanarak koordinatı hesaplar.

Makro Değişkeni Nedir?

Makro değişkeni, içine sayısal değer kaydedilebilen bir hafıza alanıdır. Yaygın yazım #100 = 25. şeklindedir; bu satırda #100 değişkenine 25 değeri atanır. Değişken daha sonra koordinat, ilerleme veya hesaplama içinde kullanılabilir:

#100 = 25.
#101 = 40.
G00 X#100 Y#101   (takım X25 Y40 konumuna gider)

Değişken grupları

Değişken numaralarının anlamı kontrol ünitesine göre değişebilir. FANUC tipi kontrollerde genel olarak şu gruplar görülebilir:

Değişken grubuGenel kullanım
#1–#33Yerel değişkenler
#100–#199Ortak değişkenler
#500–#999Kalıcı ortak değişkenler
Sistem değişkenleriOfset, konum, alarm ve kontrol bilgileri

Bu aralıklar her kontrol ünitesinde aynı olmayabilir. Özellikle sistem değişkenleri makine kılavuzu görülmeden kullanılmamalıdır. Başlangıç seviyesinde örnek programlarda #100, #101 gibi ortak değişkenler kullanılabilir.

Değişkene Değer Atama ve Matematik

Bir değişken sabit bir değer, başka bir değişken veya bir hesap sonucu alabilir:

#100 = 30.
#101 = #100          (başka değişkenden değer alır)
#102 = #100 + 20.    (#100=30 ise #102=50 olur)

Temel matematik işlemleri toplama, çıkarma, çarpma ve bölmedir. İşlem önceliğini belirlemek için köşeli parantez kullanılır:

#100 = #101 + #102
#100 = #101 - #102
#100 = #101 * #102
#100 = #101 / #102
#100 = [#101 + #102] / 2.   (iki değerin ortalaması)

Örneğin #101 = 20. ve #102 = 60. ise #100 = [#101 + #102] / 2. sonucunda #100 = 40 olur. Bu hesap, probla ölçülen iki yüzey arasındaki merkezi bulmak için de kullanılabilir.

Sık kullanılan matematik fonksiyonları

Kontrol ünitesi destekliyorsa SIN[], COS[], TAN[], ATAN[], SQRT[], ABS[], ROUND[], FIX[], FUP[] gibi fonksiyonlar bulunabilir. Örneğin #100 = SQRT[100.] sonucunda #100 = 10 olur. Dairesel delik dizilerinde sinüs ve kosinüs kullanılabilir; ancak trigonometrik açı biriminin derece veya başka biçimde yorumlanması kontrol kılavuzundan doğrulanmalıdır.

IF Koşulu

IF, belirli bir şart doğruysa bir işlem yapılmasını sağlar. Temel mantık IF [şart] GOTO satır şeklindedir:

IF [#100 EQ 0] GOTO 100   (#100 sıfıra eşitse N100 satırına git)
...
N100
İfadeAnlamı
EQEşit
NEEşit değil
GTBüyük
GEBüyük veya eşit
LTKüçük
LEKüçük veya eşit

Makro programın başında girilen değerler kontrol edilebilir. Örneğin delik sayısı sıfır veya negatif girilmişse program devam etmemelidir:

IF [#103 LE 0] GOTO 900
...
N900
#3000 = 1 (DELIK SAYISI HATALI)

#3000 gibi kullanıcı alarmı değişkenlerinin kullanımı kontrol ünitesine göre değişebilir; rastgele kullanılmamalı ve makine kılavuzundan doğrulanmalıdır.

WHILE Döngüsü

WHILE, belirli bir şart doğru kaldığı sürece program bölümünün tekrar çalışmasını sağlar. Yaygın format WHILE [şart] DO1 ... END1 şeklindedir:

#100 = 1
WHILE [#100 LE 5] DO1
...
#100 = #100 + 1
END1

Bu bölüm beş kez çalışır; DO1 ve END1 aynı döngünün başlangıç ve bitişini gösterir.

Döngü sayacı ve sonsuz döngü

Döngü içinde tekrar sayısını takip eden değişkene sayaç denir ve her tekrarın sonunda artırılır (#100 = #100 + 1). Sayaç artırılmazsa WHILE şartı sürekli doğru kalabilir ve sonsuz döngü oluşur:

(RISKLI – sayaç artmadığı için sonsuz döngü)
#100 = 1
WHILE [#100 LE 5] DO1
G00 X20
END1

Parametrik Doğrusal Delik Dizisi

Aşağıdaki örnek, X yönünde eşit aralıklı delikler açan temel bir makro mantığını gösterir. Değişkenler: #100 ilk delik X, #101 Y, #102 delik aralığı, #103 delik sayısı, #104 sayaç.

%
O5000
G17 G21 G40 G49 G80 G90
T01 M06
G54
S1200 M03
G00 X0 Y0
G43 H01 Z50
M08
#100 = 20.
#101 = 30.
#102 = 25.
#103 = 4.
#104 = 1.
G00 X#100 Y#101
G98 G81 Z-15. R2. F120.
WHILE [#104 LT #103] DO1
#100 = #100 + #102
X#100 Y#101
#104 = #104 + 1.
END1
G80
G00 Z50
M09
M05
M30
%

Not: Döngü içinde konum satırı G00 ile değil, doğrudan X#100 Y#101 şeklinde yazılmıştır. Bunun nedeni, G00 ile G81‘in aynı modal grupta olması ve döngü içinde G00 yazılmasının aktif delik çevrimini iptal edebilmesidir. G81 modal kaldığı için her yeni X konumunda delik otomatik olarak açılır. Bu davranış kontrol ünitesine göre doğrulanmalıdır.

Program nasıl çalışıyor?

İlk delik G81 satırında X20 Y30 konumunda açılır. Her tekrarda #100 = #100 + #102 hesabı yapılır: ilk tekrarda 20 + 25 = 45, ikinci tekrarda 45 + 25 = 70, üçüncüde 70 + 25 = 95. Sayaç değeri delik sayısına ulaştığında WHILE döngüsü sona erer. Delik konumları sonuçta X20, X45, X70 ve X95 olur.

G65 ile Makro Çağırma ve Yerel Değişkenler

Makro program bir alt program gibi çağrılabilir. Bazı FANUC tipi kontrollerde G65 P9000 A20. B30. C25. D4. çağrısında harflerle gönderilen değerler yerel değişkenlere aktarılır; kontrol yapısına bağlı olarak A → #1, B → #2, C → #3 gibi eşleşmeler olabilir. Ancak harf–değişken eşleşmeleri kontrol ünitesine göre doğrulanmalıdır; bu nedenle G65 kullanılan makrolar başka makineye doğrudan kopyalanmamalıdır.

Makro Program ile Alt Program Farkı

Alt programMakro program
Sabit hareketleri tekrarlarDeğişken değerlere göre hesap yapar
M98 ile çağrılırG65 gibi makro çağrısı kullanılabilir
Koordinatlar çoğunlukla sabittirKoordinatlar otomatik hesaplanabilir
Basit tekrarlar için uygundurFarklı ölçülerde esnek çalışır
Mantıksal kontrol sınırlıdırIF ve WHILE kullanılabilir

Makro program, alt programın daha esnek ve hesaplama yapabilen biçimi olarak düşünülebilir.

Makro Programlamada Sık Yapılan Hatalar

  • Değişkene başlangıç değeri vermemek
  • Yanlış değişken numarasını kullanmak
  • Sayaç değerini artırmamak (sonsuz WHILE döngüsü)
  • EQ, GT veya LT şartını ters yazmak
  • Köşeli parantezleri eksik kullanmak
  • Sıfıra bölme işlemi yapmak
  • G90/G91 durumunu kontrol etmemek
  • Makro sonunda G80, G40 veya diğer modal durumları açık bırakmak
  • Sistem değişkenlerini kılavuz görmeden değiştirmek
  • Programı doğrudan gerçek parçada tam hızla denemek

Güvenli İlk Test

  1. Değişken değerlerini kâğıt üzerinde hesaplayın; oluşacak ilk ve son koordinatı belirleyin.
  2. Döngünün kaç kez çalışacağını doğrulayın.
  3. Grafik simülasyon yapın; programı önce talaş kaldırmadan test edin.
  4. Single Block kullanın; Rapid Override değerini düşürün.
  5. Aktif değişkenleri makro değişken ekranından izleyin.
  6. İlk ve son hareket konumlarını kontrol edin; sonsuz döngü ihtimaline karşı program akışını takip edin.

Makro program doğru hesap yapsa bile yanlış başlangıç değeri verilirse takım yanlış noktaya gidebilir.

Mentor CNC Sorumluluk Reddi ve Güvenlik Uyarısı

Makro değişken aralıkları, G65 çağırma yapısı, harflerin yerel değişkenlere eşleşmesi, sistem değişkenleri, kullanıcı alarmı ve WHILE yazım biçimi kontrol ünitesine göre değişebilir. Örnekler genel FANUC tipi makro mantığını öğretmek amacıyla hazırlanmıştır. Gerçek makinede kullanılmadan önce kontrol ünitesinin programlama kılavuzu incelenmeli; program grafik simülasyon, Single Block ve düşük Rapid Override ile test edilmelidir.

MENTOR CNC
Sahadan gelen cnc bilgisi

Mentor CNC; CNC torna, CNC freze, kontrol üniteleri, kesici takımlar ve teknik hesaplamalar konusunda üretim sahasında edinilen tecrübeyi anlaşılır ve uygulanabilir teknik içeriklere dönüştürür.

Amacımız; operatörlerin, öğrencilerin, mühendislerin ve atölye sahiplerinin doğru bilgiye daha hızlı ulaşmasını ve üretimde daha güvenli, verimli kararlar almasını sağlamaktır.