Mitsubishi M70/M700 Makro Programlama: G65, Değişkenler, IF ve WHILE

21 Ekim 2026

Mentor CNC Editör Ekibi

Mitsubishi M70 ve M700 kontrollü işleme merkezlerinde makro programlama, sabit sayılar yerine değişkenlerle çalışan, hesap yapan ve karar veren programlar yazmayı sağlar. Aynı delik dizisini farklı çaplarda, farklı adetlerde işlemek; ölçüm sonucuna göre ofset düzeltmek ya da bir hata durumunda makineyi mesajla durdurmak makro ile birkaç satırda yapılır. Bu rehber, Mitsubishi’nin programlama kılavuzundaki yapıyı sadeleştirerek makronun nasıl yazıldığını adım adım anlatır.

Makro program nedir, alt programdan farkı ne?

Alt program (M98) her çağrıldığında aynı satırları aynı değerlerle çalıştırır. Makro program ise çağrılırken ona değer gönderilebilir; program bu değerlerle hesap yapar, koşula göre farklı satırlara atlar ve döngü kurar. Kısaca alt program “kayıtlı bir hareket”tir, makro ise “parametreli bir fonksiyon”dur.

Makro, ana programdan bir çağırma komutuyla açılır ve M99 ile ana programa döner:

O1000 (ANA PROGRAM)
...
G65 P9001 A10. B6. ;   (makroyu cagir, A ve B degerlerini gonder)
...
M30 ;

O9001 (MAKRO)
...
M99 ;

Not: Kullanıcı makrosu Mitsubishi’de bir opsiyondur. Kılavuz, makro spesifikasyonu yoksa fonksiyonların (SIN, COS vb.) kullanılamayacağını belirtir. Kendi tezgâhınızda açık olup olmadığını makine üreticisinin dokümanından kontrol edin.

Değişken türleri

Mitsubishi’de değişken # işaretiyle yazılır: #1, #101, #500 gibi. Dört ana grup vardır:

DeğişkenAralıkNe için kullanılır
Lokal#1 – #33Yalnız o makronun içinde geçerli. Çağırırken gönderilen değerler buraya düşer. Her makro seviyesinin kendi lokal değişkenleri vardır.
Ortak (common)#100 – #199 ve #500 – #999Ana program, alt program ve makrolar arasında ortak. Güç kapanınca da korunur.
Sistem#1000 ve üzeriKontrolün kendi verileri: konumlar, ofsetler, modal G kodları, alarm, zamanlayıcı.
Sabit çevrim#1 – #32Sabit çevrim programlarının kendi lokal değişkenleri.

Ortak değişkenlerin kaç tane olduğu tezgâhta tanımlı değişken set sayısına bağlıdır. Örneğin 100 set tanımlıysa yalnız #100–#149 ve #500–#549 kullanılabilir; aralık dışındaki numara program hatası verir. Kullanmadan önce kontrol ekranındaki ortak değişken listesine bakın.

Değer atama ve hesap

Değişkene değer = ile verilir. Sağ tarafta sayı, başka değişken veya formül olabilir:

#101 = 50. ;
#102 = #101 * 2 ;
#103 = SQRT[#101*#101 + 30.*30.] ;
#104 = 100. * COS[30.] ;

Kullanılabilecek temel işlemler ve fonksiyonlar:

TürYazım
Dört işlem+ - * /
Kalan#i = #j MOD #k
TrigonometriSIN[ ], COS[ ], TAN[ ], ASIN[ ], ACOS[ ], ATAN[ ] (açı derece)
DiğerSQRT[ ] karekök, ABS[ ] mutlak değer, ROUND[ ] yuvarlama, FIX[ ] aşağı, FUP[ ] yukarı
Mantıksal (bit)AND, OR, XOR

Uyulması gereken üç kural:

  • Fonksiyondan sonraki ifade köşeli parantez içinde yazılır: SIN[#1], SIN #1 yazılmaz.
  • İşlem sırası: önce fonksiyon, sonra çarpma/bölme, en son toplama/çıkarma. Önceliği değiştirmek için köşeli parantez kullanılır; fonksiyon parantezleri dahil en fazla 5 iç içe parantez yazılabilir.
  • #6/2 yazımı “#6’nın yarısı” olarak okunur. “6/2 numaralı değişken” isteniyorsa #[6/2] yazılır.

Değişkenler adreslerin yerine de kullanılır: G01 X#120 Y#121 F#9 ; gibi.

Makroyu çağırma: G65, G66, G66.1, G67

KomutDavranış
G65 P_ L_ (argüman)Basit çağırma. Makro bir kez (veya L kadar) çalışır, sonra ana programa döner.
G66 P_ L_ (argüman)Modal çağırma A. G67 gelene kadar, hareket komutu olan her satırdan sonra makro çalışır.
G66.1 P_ L_ (argüman)Modal çağırma B. G67 gelene kadar her satırda makro çağrılır.
G67Modal çağırmayı iptal eder. G66/G66.1 ile aynı programda eşleşmelidir.

P makro program numarasıdır, L tekrar sayısıdır. M700/M70’te P yerine <DOSYA ADI> şeklinde dosya adıyla da çağırma yapılabilir.

Argümanlar hangi değişkene düşer?

Çağırma satırındaki harfler makronun içinde belirli lokal değişkenlere atanır (argüman atama I):

AdresDeğişkenAdresDeğişkenAdresDeğişken
A#1H#11T#20
B#2M#13U#21
C#3Q#17V#22
I#4R#18W#23
J#5S#19X#24
K#6D#7Y#25
E#8F#9Z#26

G, L, N, O ve P argüman olarak kullanılamaz (P program numarası, L tekrar sayısıdır). Harflerin alfabetik sırada yazılması gerekmez; tek istisna I, J, K’nın kendi aralarında sırayla yazılmasıdır (I_ J_ K_ doğru, J_ I_ K_ yanlış). Kullanılmayan harfler atlanabilir.

Örnek: G65 P9001 A0. B6. R40. X0. Y0. ; satırında makro içinde #1 = 0, #2 = 6, #18 = 40, #24 = 0, #25 = 0 olur.

Kılavuz ayrıca I, J, K’nın 10 gruba kadar tekrar edildiği ikinci bir atama tipi (argüman atama II) tanımlar. Günlük kullanımda tip I yeterlidir.

İç içe çağırma sınırı

G65/G66 ile makro içinden başka makro en fazla 4 seviye çağrılabilir. M98 alt programlarla birlikte toplam iç içe derinlik 8 seviyedir.

Karar verme: IF … GOTO

IF [#1 GT 100.] GOTO 50 ;
...
N50 ... ;

Koşul doğruysa program N50 satırına atlar, değilse bir sonraki satırla devam eder. IF [ ] kısmı yazılmazsa GOTO koşulsuz atlamadır.

OperatörAnlamı
EQeşit
NEeşit değil
GTbüyük
LTküçük
GEbüyük veya eşit
LEküçük veya eşit

Atlanacak N numarası aynı programda ve satırın başında olmalıdır; aksi hâlde P231 program hatası oluşur.

Ondalıklı değerleri EQ ile karşılaştırmak hesap yuvarlamaları yüzünden yanıltabilir. Kılavuzun önerdiği güvenli yol, farkı küçük bir toleransla kıyaslamaktır: IF [ABS[#10 - #20] LT 0.001] GOTO 10 ;

Döngü: WHILE … DO … END

WHILE [#101 LT #2] DO1 ;
   ... (tekrarlanan satirlar)
END1 ;

Koşul doğru olduğu sürece DO1 ile END1 arasındaki satırlar tekrar çalışır. Kurallar:

  • DO numarası 1–127 arasında olabilir, en fazla 27 iç içe döngü kurulabilir.
  • WHILE ... DOm ile ENDm aynı programda ve birebir eşleşmelidir; iki döngü birbirinin içine çaprazlama giremez.
  • Döngünün içinden dışarı GOTO ile çıkılabilir, ama dışarıdan döngünün içine atlanamaz.
  • Koşul hiç değişmezse sonsuz döngü oluşur; sayaç değişkenini döngü içinde mutlaka artırın.

İşe yarayan sistem değişkenleri

DeğişkenNe verir
#3000Programdan alarm üretir: #3000 = 70 (KONTROL EDIN) ;
#3006Mesaj göstererek durdurur: #3006 = 1 (TAKIMI KONTROL ET) ;
#3001, #3002Zamanlayıcılar (bekleme ve süre ölçümü)
#4001 – #4021Bir önceki satıra kadar geçerli modal G kodları (ör. #4003: G90 mı G91 mi)
#5001 – …Eksenlerin satır sonu konumu (X = #5001, Y = #5002, Z = #5003)
#5021 – …Makine koordinatları
#5041 – …İş parçası koordinatları
#5061 – …G31 atlama (prob) sinyalinin geldiği konum
#2001 – … / #10001 – …Takım boyu ofsetleri (okunabilir ve yazılabilir)
#5201 – …İş parçası koordinat sistemi (G54–G59) değerleri

Sistem değişkenine yazmak (ofset veya iş koordinatı değiştirmek) tezgâh hareketini doğrudan etkiler. Bu satırları ilk kez kullanırken tek satır modunda ve ekrandaki değeri izleyerek deneyin.

Örnek: cıvata deliği dairesi makrosu

Aşağıdaki makro, merkezi ve yarıçapı verilen bir daire üzerinde eşit aralıklı delik konumlarına gider. Delme işini makro değil, önceden tanımlanmış sabit çevrim yapar. Örnek, G90 mutlak modunda çalışacak şekilde sadeleştirilmiştir.

Ana program:

O1000 ;
G90 G54 G00 X0. Y0. ;
G43 Z50. H01 ;
M03 S1200 ;
G81 Z-15. R2. F150 L0 ;          (delme verisini tanimla, burada delme)
G65 P9920 A0. B6. R40. X0. Y0. ; (baslangic acisi 0, 6 delik, R40, merkez X0 Y0)
G80 ;
G00 Z50. ;
M30 ;

Makro:

O9920 ;
#101 = 0 ;                          (delik sayaci)
#111 = #1 ;                         (ilk delik acisi = A)
WHILE [#101 LT #2] DO1 ;            (delik sayisi B kadar tekrar)
  #120 = #24 + #18 * COS[#111] ;    (X = merkez X + R*cos)
  #121 = #25 + #18 * SIN[#111] ;    (Y = merkez Y + R*sin)
  X#120 Y#121 ;                     (bu konumda G81 deligi delinir)
  #101 = #101 + 1 ;
  #111 = #1 + 360. * #101 / #2 ;    (bir sonraki delik acisi)
END1 ;
M99 ;

Satırların mantığı:

  • G81 ... L0 satırı delme verisini (Z, R, F) hafızaya alır ama o konumda delik delmez. Böylece makronun her X_ Y_ hareketinde G81 çalışır.
  • A (#1) başlangıç açısı, B (#2) delik adedi, R (#18) daire yarıçapı, X (#24) ve Y (#25) dairenin merkezidir.
  • Döngü her turda bir delik konumu hesaplar, oraya gider, sayacı bir artırır ve açıyı 360°/delik adedi kadar ilerletir.

Kılavuzdaki orijinal örnek ayrıca #4003 ile G90/G91 modunu okuyup artışlı modda da çalışacak şekilde yazılmıştır. Atölyede çoğunlukla mutlak mod kullanıldığı için burada sade hâli verildi.

Mitsubishi M70’te G34 komutu aynı işi hazır özel çevrim olarak da yapar. Makro örneği, mantığı öğrenmek ve kendi ihtiyacınıza göre değiştirebilmek için verilmiştir.

Makro programı ilk kez çalıştırırken

Mitsubishi’de makro satırları (hesap, IF, WHILE) normalde hareket satırlarıyla paralel işlenir ve tek satır modunda tek tek durmaz. Makro satırlarında da tek tek durmak isteniyorsa ilgili ayar (“macro single” parametresi) makine üreticisi veya yetkili servis tarafından açılmalıdır. Önerilen ilk deneme sırası:

  1. Grafik/simülasyon ekranında kuru çalıştırma.
  2. Takım boyu ve iş ofseti kontrolü.
  3. Tek satır ve düşük ilerleme/hızlı hareket override ile ilk çalıştırma.
  4. Ekrandaki ortak ve lokal değişken değerlerini izleme.

Sık yapılan hatalar

  • Argüman olarak G, L, N, O veya P harfini kullanmak.
  • I, J, K’yı sırasız yazmak (J önce, I sonra).
  • Fonksiyonu köşeli parantezsiz yazmak (COS #1).
  • GOTO hedefindeki N numarasını satır başına koymamak veya başka programa atlamaya çalışmak (P231).
  • WHILE ile END numaralarını eşleştirmemek ya da döngünün içine dışarıdan atlamak.
  • Döngü sayacını artırmayı unutup sonsuz döngü oluşturmak.
  • Tezgâhtaki ortak değişken set sayısını kontrol etmeden #150 veya #600 gibi aralık dışı değişken kullanmak.
  • Ondalıklı sayıları EQ ile karşılaştırmak.

Sık sorulan sorular

Fanuc makrosu Mitsubishi’de çalışır mı? Temel yazım (G65, #değişken, IF-GOTO, WHILE-DO-END) büyük ölçüde benzerdir. Ancak sistem değişken numaraları, ortak değişken aralıkları ve opsiyonlar farklıdır. Fanuc için yazılmış bir makro, sistem değişkenleri kontrol edilmeden Mitsubishi’de çalıştırılmamalıdır.

Makro programı hangi numaraya kaydetmeliyim? Kılavuz örneklerinde 9000’li numaralar (ör. O9920) kullanılır. Hangi program numarası bloklarının düzenlemeye karşı korunduğu tezgâh ayarına bağlıdır; makine üreticisinin dokümanına bakın.

Ortak değişkenler kapatınca silinir mi? Hayır, ortak değişkenler güç kesildiğinde de korunur. Bazı tezgâhlarda bir parametre ile reset veya açılışta sıfırlanacak şekilde ayarlanmış olabilir.

Mentor CNC Sorumluluk Reddi ve Güvenlik Uyarısı: Bu içerik Mitsubishi 700/70 serisi işleme merkezi programlama kılavuzu esas alınarak eğitim amacıyla hazırlanmıştır. Makro fonksiyonu, değişken aralıkları ve sistem değişkenleri kontrol yazılımına, opsiyonlara ve makine üreticisinin ayarlarına göre değişebilir. Örnek programlar doğrudan üretimde kullanılmak için değil, mantığı anlatmak içindir. Programları önce simülasyon, kuru çalıştırma ve tek satır modunda düşük ilerlemeyle deneyin. Sistem değişkenlerine yazmak ofset ve koordinatları değiştirir; çarpışma riskine karşı dikkatli olun. Mentor CNC uygulamadan doğabilecek zararlardan sorumlu değildir; tezgâh üreticisinin kılavuzu her zaman önceliklidir.

Mentor CNC logosu

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.