Basitçe söylemek gerekirse, bir makro, parçaları işlemek için formüller kullanmaktır. Örneğin elips, makro yoksa eğri üzerindeki noktaları nokta nokta hesaplamamız ve ardından düz bir çizgi ile yavaş yavaş ona yaklaşmamız gerekir. Pürüzsüzlük gereksinimi yüksek bir iş parçasıysa o zaman çok nokta hesaplamamız gerekiyor ama makroyu uyguladıktan sonra elips formülünü sisteme giriyoruz ve ardından Z koordinatını verip her seferinde bir miktar ekliyoruz, ardından makro otomatik olarak X koordinatını hesaplar ve kesme işlemini gerçekleştirir. Aslında programdaki makronun asıl işlevi hesaplamadır.
resim
01
Makro programları hakkında
makro programı nedir
Programlama yaparken, belirli bir işlevi tamamlayabilen bir dizi talimatı bir alt program gibi hafızaya kaydedeceğiz ve bunları genel bir talimatla çağıracağız. Bunu kullanırken, depolanan işlevi yürütmek için yalnızca bu genel talimatı vermemiz gerekir. Bu talimat dizisine kullanıcı makro programı gövdesi veya kısaca makro programı denir.
Bu genel komut, kullanıcı makro çağırma komutu olarak adlandırılır. Programlama yaparken, programcıların yalnızca makro talimatlarını ezberlemesi gerekir, makro programlarını ezberlemesi gerekmez.
Makro programlama ne zaman kullanılacak?
1) Manuel olarak programlanmış işleme formül eğrisi (basit hesaplama, hızlı giriş)
2) Normal kesme yolu (kesme modülü olarak)
3) Programlar arası kontrol (program planlama)
4) Takım yönetimi (takım aşınması)
5) Otomatik ölçüm (makine içi prob)
Makro program ile normal program arasındaki fark
1) Makro program gövdesinde değişkenler kullanılabilir, değişkenlere değer atanabilir, değişkenler arasında hesaplamalar yapılabilir, programlar atlanabilir.
2) Sıradan programlarda sadece sabitler belirtilebilir ve sabitler arasında işlem yapılamaz. Programlar yalnızca sıralı olarak yürütülebilir ve atlanamaz, bu nedenle işlevler sabittir ve değiştirilemez.
3) Makro işlevi, kullanıcının CNC takım tezgahının performansını iyileştirmesi için özel bir işlevdir ve benzer iş parçalarının işlenmesinde makro programın ustaca kullanılması, yarı çabayla iki kat sonuç elde edecektir.
02
Makro programlarının değişkenleri ve formatları
Makro programlarının özellikleri
Makro programı değişkeni kullanabilir ve değişken karşılık gelen işlemleri gerçekleştirmek için kullanılabilir; gerçek değişken değeri, makro program talimatı ile değişkene atanabilir.
Üç Değişken Türü
CNC sisteminin değişken temsil biçimi "#" ve ardından 1 ila 4 hanedir ve üç tür değişken vardır:
(1) Yerel değişkenler: #1~#33, makro programında yerel olarak kullanılan ve bağımsız değişken aktarımı için kullanılan değişkenlerdir.
(2) Ortak değişken: kullanıcı onu serbestçe kullanabilir ve ana program tarafından çağrılan her alt program ve her makro program için ortaktır. #100~#149, gücü kapattıktan sonra tüm değişken değerleri silinirken #500~#509, gücü kapattıktan sonra değişken değerleri kaydedilebilir.
(3) Sistem değişkeni: Ardından 4 hane ile tanımlanır, takım tezgahı işlemcisi veya NC belleğinde yer alan salt okunur veya okuma/yazma bilgilerini alabilir, takım tezgahı işlemcisi, takım tezgahı durum edinimi ile ilgili değişim parametreleri dahil parametreler, işleme parametreleri gibi sistem bilgileri.
Makro programının basit çağrı formatı
Makro programının basit çağrılması, ana programda makro programının tek bir blok tarafından çağrılabileceği anlamına gelir.
Çağırma biçimi:
G65 P (makro program numarası) L (tekrar sayısı) (değişken ataması).
Bunların arasında: G65—makro program çağırma komutu;
P (makro program numarası) - çağrılacak makro programın kodu;
L (tekrar sayısı) - makro programın tekrarlanan çalıştırma sayısı, tekrar sayısı 1 olduğunda atlanabilir;
(Değişken Atama) - Makro programında kullanılan değişkenlere değer atayın.
Bir makro programı ile bir alt program arasındaki aynı şey, bir makro programının başka bir makro programı tarafından 4 defaya kadar çağrılabilmesidir.
Makro program yazma formatı
Bir makro programının yazma formatı, bir alt program ile aynıdır. Formatı:
0-(0001-8999, makro program numarasıdır)
N10 komutu
N-M99
Yukarıdaki makro programın içeriğinde yaygın olarak kullanılan programlama komutlarının yanı sıra değişkenler, aritmetik işlem komutları ve diğer kontrol komutları da kullanılabilmektedir. Değişken değeri, makro programı çağırma talimatında atanır.
03
FANUC sistem makro programı uygulaması
(1) Makro programı kanal açma
resim
1) WHILE ifadesi
G00 X52 Z2;
#2=-14;
Takımın z yönündeki başlangıç noktasıdır (çünkü takım genişliği 4 mm'dir, başlangıç noktası Z-14 olarak ayarlanmıştır)
[#2 GE -30] DO2;
z yönünde bir kısıtlamadır. z, -30 değerine eşit olduğunda, z yönü artık hareket etmeyecektir
G00 Z〔#2〕;
z yönündeki geçerli konum
#2=#2-2;
Her seferinde 2 mm hareket eden z yönünde hareket eden adım
#1=52;
bıçağın x yönündeki başlangıç noktasıdır
[#1 GE 20] DO1;
X yönündeki kısıtlamalar, çap 20'ye eşit olduğunda artık kesmeyecektir
G01 X〔#1〕F0.2;
x yönünde kesme derinliği
G00 X〔#1 artı 1〕;
x yönünde göreli geri çekme miktarı
#1=#1-1;
x yönünde adım mesafesi (her seferinde 1 mm kesin)
END1;
G00 X52;
END2;
Tam program:
O1234;
G40 G97 G99;
T0101;
S1000 M3;
G00 X52 Z2;
#2=-14;
WHILE〔#2GE-30〕DO2; END1;
G00 Z〔#2〕;
#2=#2-2;
#1=52
〔#1GE20〕DO1;
G01X〔#1〕F0.2;
G00X〔#1 artı 1〕;
#1=#1-1;
G00 X52;
END2;
G00 X150 Z150;
M30;
2) IF ifadesi
G00 X52 Z-2;
#1=-14;
Aletin z-yönü başlangıç noktasıdır (alet genişliği 4 mm'dir)
N2 #1=#1-2;
z yönündeki hareket adımıdır
#2=52;
takımın x yönündeki başlangıç noktasıdır
N1#2=#2-1;
x yönündeki adım mesafesidir (her seferinde 1 mm kesme derinliği)
G01 X〔#2〕F0.2;
X yönünde mevcut konum
G00 X〔#2 artı 1〕;
X yönünde göreli geri çekme miktarı
IF [#2 GE 21] GOTO1;
x yönündeki kısıtlamalar (x'in değeri 20'ye kesildiğinde aşağıdaki işlem yapılacak ve dönüş yapılmayacaktır)
G00 X52;
X, 52. konuma geri çekilir
G00 Z〔#1〕;
Z yönünde mevcut konum
IF [#1 GE -30] GOTO2;
Z yönündeki kısıtlamalar, z, -30 değerine eşit olduğunda, z yönü hareket etmeyecektir
Tam program:
O1234;
G40G97G99;
T0101;
S1000M3;
G00 X52 Z-2;
#1=-14;
N2 #1=#1-2;
#2=52;
N1#2=#2-1;
G01 X〔#2〕F0.2;
G00 X〔#2 artı 1〕;
IF〔#2GE21〕GOTO1;
G00X52;
G00Z〔#1〕;
IF[#1GE-30]GOTO2;
G00X200;
Z200;
M5;
M30;
(2) Elips programlama
1) Elips WHILE ifadesinin standart biçimi:
#1=a;
a: Aletin başlangıç noktası, elipsin Z eksenine göre a mm pozitif yöndedir
[#1 GE b] DO1;
b: Elips işlemenin bitiş noktası, elipsin Z eksenine göre negatif yönde b mm'dir (tam bir yarı elips işlenirse, o zaman a ve b aynı değere ve farklı işaretlere sahip iki değerdir)
#2= c*KAREKÖK[1-#1*#1/d*d];
c: elipsin yarı küçük ekseni
d: elipsin yarı ana ekseni (elips formülüne göre #2'yi hesaplayın, yarı ana eksen d'dir, yarı küçük eksen c'dir, #2 X'in değerini, #1 Z'nin değerini temsil eder) , ve SQRT karekök anlamına gelir)
G01 X〔±2*#2 artı e〕Z〔#1±f〕;
e: İş parçası koordinat sistemine göre elipsin X ekseninin ofseti (çap değeri)
f: İş parçası koordinat sistemine göre elipsin Z ekseninin ofseti
#1=#1-1; adım mesafesi (her seferinde 1 mm hareket eder)
END1;
Not: İçbükey bir elipsi döndürürken, X'ten sonra parantez içindeki "±" "-" olarak alınır; dışbükey bir elipsi döndürürken, X'ten sonra parantez içindeki "±" "artı" olarak alınır.
Elipsin X ekseni pozitif yöne kaydığında, Z'den sonra parantez içindeki "±" "artı" alır; elipsin X ekseni negatif yöne kaydığında, Z'den sonra parantez içindeki "±" "-" alır
2) Elips şeklindeki IF ifadesinin standart formatı
#1=a;
a: Aletin başlangıç noktası, elipsin Z eksenine göre a mm pozitif yöndedir
N1#2=b*KAREKÖK〔1-#1*#1/c*c〕;
b: elipsin yarı kısa ekseni c: elipsin yarı ana ekseni (X/c artı Y/b=1 elips formülüne göre, SQRT karekök anlamına gelir)
G01X〔±2*#2 artı d〕Z〔#1±e〕F0.2; d: koordinat sıfır noktasına göre elipsin X ekseninin ofseti (çap değeri) e: sıfır düzlemine göre elipsin Z ekseni
#1=#1-1;
Adım mesafesi (her seferinde 1 mm hareket eder)
IF [#1 GE -f] GOTO1
f: Elips işlemenin sonlandırılması
Not: İçbükey bir elipsi döndürürken, X'ten sonra parantez içindeki "±" "-" olarak alınır; dışbükey bir elipsi döndürürken, X'ten sonra parantez içindeki "±" "artı" olarak alınır. Elipsin X ekseni pozitif yöne saptığında, Z'den sonra parantez içindeki "±" "artı" alır; elipsin X ekseni negatif yöne saptığında, Z'den sonra parantez içindeki "±" "-" alır.
resim
WHILE ifadesi
#1=20;
IKEN〔#1GE-20〕DO1;
#2=10*KAREKÖK〔1-#1*#1/400〕;
G01X〔-2*#2 artı 50〕Z〔#1-25〕;
#1=#1-1;
END1;
IF ifadesi
#1=20;
N1#2=10*KAREKÖK〔1-#1*#1/400〕;
G01X〔-2*#2 artı 50〕Z〔#1-25〕F0.2;
#1=#1-1;
IF[#1GE-20]GOTO1;
tam program
O1234;
G40G97G99;
T0101;
S1000 M3;
G00 X50 Z2;
G73 U5 R5;
G73 P10 Q20 U0.5 F0.2;
N10 G0 G42 Z-5;
#1=20;
IKEN〔#1GE-20〕DO1;
#2=10*KAREKÖK〔1-#1*#1/400〕;
G01X〔-2*#2 artı 50〕Z〔#1-25〕F0.2;
#1=#1-1;
END1;
G00 X50;
N20 G00 G40 Z2;
G70 P10 Q20;
G00 X200;
Z200;
M5;
M30;
IF deyiminin tam biçimi atlanır (döngü eklendiği sürece aynı durum IF deyimi için de geçerlidir). FANUC-0i sisteminde, makro programı yalnızca G73'te eklenebilir.
(3) Parabolün işlenmesi
1) Parabolik WHILE ifadesinin standart biçimi:
#1=a;
a: Aletin başlangıç noktası, parabolik eksen Z yönünde bir mm'dir
[#1 GE -b] DO1;
b: elipsin z yönündeki işlem uzunluğudur
#2=KAREKÖK〔-#1*5/3〕;
(Z=-3/5*X*X parabolik formülüne göre, #2 olan X değerini bulun, burada SQRT karekök anlamına gelir)
G01 X〔±2*#2 artı c〕Z〔#1〕;
c: iş parçası koordinat sistemine göre parabolün X ekseninin ofseti (çap değeri), "±"
"Artı" alındığında dışbükey, "-" alındığında içbükeydir.
#1=#1-1; Adım mesafesi (her seferinde 1 mm hareket eder)
END1;
2) Parabolik IF ifadesinin standart formatı
#1=a;
a: Aletin başlangıç noktası, parabolik eksen Z yönünde bir mm'dir
N1 #2=KAREKÖK〔-#1*5/3〕;
(Z=-3/5*X*X parabolik formülüne göre, #2 olan X değerini bulun, burada SQRT karekök anlamına gelir)
G01 X〔±2*#2 artı b〕Z〔#1〕;
b: Parabolün X yönü ekseninin koordinat sıfır noktasına göre kaymasıdır (çap değeri). "±" alındığında "artı" dışbükey, "-" alındığında içbükey olur
#1=#1-1;
(Z yönünde adım mesafesi, her hareket 1 mm'dir)
IF〔#1 GE -c〕GOTO1; c: elipsin z yönündeki işlem uzunluğu
parabolik IF
başka bir cümle şekli
#1=a;
N1 #2=KAREKÖK〔( artı )#1*5/3〕;
"artı" işareti atlanabilir
G01 X〔2*#2 artı b〕Z〔-#1〕;
#1=#1 artı 1;
IF [#1 LE c] GOTO1;
Parabolün Z'nin pozitif yönünde olduğunu varsayarak Z〔-#1〕 kullanın; parabolü negatif yöne simetrik yapmak için
resim
WHILE ifadesi
#1=0;
[#1 GE -15] DO1;
#2=KAREKÖK〔-#1*5/3〕;
G01 X〔2*#2 artı 30〕Z〔#1〕;
#1=#1-1;
END1;
IF ifadesi
#1=0;
N1 #2=KAREKÖK〔-#1*5/3〕;
G01X〔2*#2 artı 30〕Z〔#1〕;
#1=#1-1;
IF [#1 GE -15] GOTO1;
tam program
O1234;
G40 G97 G99;
T0101;
S1000 M3;
G00 X42 Z1;
G73 U5 R5;
G73 P10 Q20 U0.5 F0.2;
N10 G00 G42 Z0;
#1=0;
[#1 GE -15] DO1;
#2=KAREKÖK〔-#1*5/3〕;
G01 X〔2*#2 artı 30〕Z〔#1〕;
#1=#1-1;
END1;
G00 X42;
N20 G00 G40 Z2;
G70 P10 Q20;
G00 X200;
Z200;
M5;
M30;
(4) WHILE ifadesi ile IF ifadesi arasındaki fark
1) İki ifadenin yönleri farklı
WHILE ifadesi geriye doğru döner
Örnek: WHILE〔#1 GE 20〕DO1;
G01 X〔#1〕F0.2;
Makine aletinin #1=20 bu cümleyi yürüttüğünde yürütmeye devam edeceğini varsayarsak. #1=#1-1 çalıştırıldıktan sonra, #1'in değeri 19 olur, bu artık kısıtlama koşullarını karşılamaz, dolayısıyla geri dönmez. (X yönünde 20'ye kesin)
G00 X〔#1 artı 1);
#1=#1-1;
END1;
2) IF ifadesi ileri geri döner
Örnek: N1 #2=#2-1;
G01X〔#2〕F0.2; Takım tezgahı bu cümleyi çalıştırdığında #2=20 olduğunu varsayarsak, IF〔#2 GE 20〕GOTO1; koşul hala karşılanıyorsa, N1# 2=#2-1'ye dönmeye devam edecektir; ve mevcut X değeri, artık kısıtlama koşullarını karşılamayan 19 olur ve ardından başka bir yürütme gerçekleştirir.
G01X〔#2〕F0.2; Son olarak aşağıdaki programı çalıştırın (X yönü 19'a düşürüldü)
G00X〔#2 artı 1);
IF [#2 GE 20] GOTO1;
3) Yukarıdaki yiv açma programından da görülebileceği gibi IF deyimindeki kelime sayısı WHILE deyimindekinden çok daha azdır.
4) Farklı dönüş yönleri nedeniyle, işlem sırasında WHILE ifadesi için bir cümle eksik ve IF ifadesi için bir cümle daha okuyun.
04
SIEMENS sistem (torna) makro programı uygulaması
Not: Makro programı değişkenlerle programlanmıştır ve Siemens sisteminin değişken sayısı R ile temsil edilir.
Örneğin, ortak programlama yöntemiyle yazılmış: G01X-10
Makro programı şu şekilde ifade edilebilir:
R1=-10
G01 X=R1
Koşullu transfer:
IF GOTOB: geriye atla
IF GOTOF: ileri atla
ortak programlama ile yazılmış
GO1X100
Değişkenler şu şekilde ifade edilebilir:
R1=0
AA: R1=R1 artı 1
G01X=R1
EĞER R1<100 GOTOB AA
R1 bağımsız bir değişkendir, başlangıç değeri 0'dir, R1=R1 artı 1, bağımsız değişkenin artımlı değerinin 1 olduğu anlamına gelir, program her seferinde bu satırdan geçtiğinde, değeri R1 1 artar, R1<100 is a conditional expression, IF R1<100 GOTOB AA This line means that if the argument R1<100, the program jumps backward to the mark: AA
R1, 100'den büyük veya eşitse, program kapanır.
Makro programlar hem G90 hem de G91 modlarında kullanılabilir ancak anlamları farklıdır, örneğin;
R1=0, G90R1=R1 artı 1, G1X=R1, bu programın ikinci geçişinden sonraki X değeri 2'dir.
R1=0, G91R1=R1 artı 1, G1X=R1, programın ikinci geçişinden sonraki X değeri 3'tür. Açıklama: Birinci geçişten sonraki R1 değeri 1'dir. programın geçişi ve R1'in değeri ikinci geçiştir. 2'dir, ancak G91 modunda bir öncekini temel alır.
(1) Kanal açma
resim
T1
TC
T1D1
G0G40X100Z100
M03S1000
G0X54Z2
Hızlı bir şekilde başlangıç noktasına ulaşın
Z-10
R1=3
Bıçak genişliğini 3mm olarak tanımlayın
R2=-10-R1-0.2
Aletin başlangıç noktası -10'dir ve aracı ayarlarken bıçağın sol tarafı kullanılır;
Takım ayarı, dolayısıyla bıçağın genişliği çıkarılmalıdır, 0.2 bitirme payıdır
G1Z=R2F0.1
Takım, Z ekseninin başlangıç noktasına ulaşır
AA:R2=R2-2.5
R3=50
Oluğun X ekseni noktaya ulaşır
BB: R3=R3-2
Her bıçağın kesme derinliğini 2 mm olarak tanımlayın
G1X=R3
X=R3 artı 1
0, her 2 mm kesme derinliğinde bir tarafta 5 mm talaş kaldırma
IF R3>30 artı 0,4 GOTOB BB
Define the groove depth as 10mm, if R3>30mm, program BB işaretine geri atlar ve 0,4 bitirme payıdır
G0X50
Takım, X ekseninin başlangıç noktasına ulaşır
G1Z=R2
IF R2>{{0}} artı 0,2 GOTOB AA
Yiv genişliğini 20mm olarak tanımlayın ve 0,2 bitirme payıdır
G0X50
G01Z-13
Bitiricilik
X30
Z-16
G0X50
Z-30
G01X30
Z-16
G0X50
Geri çekilmek
G0X100
Z100
M05
M30
(2) Elips
1) Temel format
R1=0
R1 değişkenini 0 başlangıç değeriyle tanımlayın
AA:R2=b×SQRT(1-R1×R1/a×a)
Elips denklemine göre, a elipsin yarı ana ekseni, b elipsin yarı küçük ekseni ve SQRT karekök simgesidir.
G1X=±2×R2 artı XZ=R1-Z
Elipsin konumunu ve şeklini ayarlayın, artı 2 dışbükeydir, -2 içbükeydir, X, Z iş parçasının ekseni ile elipsin ekseni (çap sistemi) arasındaki mesafelerdir.
R1=R1-1
İşleme adımını ayarlayın
IF R1>=n GOTOB AA
R1 değişkeni ise
2) Programlama örneği:
resim
T1D1
G0G40X100Z100
M3S1000
G0X52Z2
Z-20
DÖNGÜ95 ( )
G42S1500
OO:
R1=20
AA:R2=5×SQRT(1-R1×R1/400)
G1X=-2×R2 artı 50 Z=R1-40
R1=R1-2
IF R1>=-20 GOTOB AA
PP:X42
G0G40X100Z100
M05
M09
M30
(3) Parabol
1) Temel biçim:
R1=0
R1 değişkeninin başlangıç değerini 0 olarak ayarlayın
AA: R2=KAREKÖK(-R1×n)
SQRT'nin karekök sembolü ve n'nin katsayı olduğu parabolün temel formatına göre elde edilir.
G01X=2×R2 artı n
Z=R1
İşleme yolu artı 2 dışbükeydir, n, X ekseninin başlangıç noktasının değeridir
R1=R1-1
Değişken artış değeri 1 mm'dir
IF R1>-30 GOTOB AA
If the variable R1>-30, program işarete geri atlar: AA
2) Programlama örneği:
resim
T1
Tc
T1D1
G0G40X100Z100
M03S1000
G0X52Z2
DÖNGÜ95 ( )
G0G42
OO:
R1=0
AA:R2=KAREKÖK(-R1×5/3)
G01X=2×R2 artı 30 Z=R1
R1=R1-2
IF R1>-60 GOTOB AA
PP: X52
G0X100Z100
M05
M30




