TurkeyCNC Forum

CNC Okulu => Fanuc => Macro Programlama => Konuyu başlatan: blade93 - Mart 06, 2016, 02:17:13 ÖÖ

Başlık: macro ile iç kama programı yazdım tamamlayamıyorum
Gönderen: blade93 - Mart 06, 2016, 02:17:13 ÖÖ
O0001
#1=100  (Toplam Boyu)
#2=30    (Genişlik)
#3=20    (takım çapı)
#4=0.5   (Talaş Miktarı)
#5=-20   (Derinlik)
#6=[#1-#2]/2  (X'de Gidecek Mesafe)
#7=[#2-#3]/2  (Y'de Gidecek Mesafe Ayrıyetten Radyüs)
#8=0      (yanaşma mesafesi
G0G90G54X#6Y#7
G43H1Z50M8
M3S2500F1000
G0Z#8
N1G1G91Z-#4
G3G90Y#7R#7X#6
G1X-#6
G3Y-#7R#7
G1X#6
G3G90Y#7R#7
G1Y-#7
IF[#4GE#5] GOTO1 (Burası Tamamlamıyor Programda Çalıştırdım Sonsuz Döngü Diyor)
G0G90Z150.M9
G91G28Z0.Y0.
M30

Bu Programda Hatalarım Ne Nerede Yanlış Yapmışım Anlatırsanız Sevinirim
Aktif Normal Programlama Yapıyorum Macroya Yeni Geçtim
kolay gelsin
Başlık: Ynt: macro ile iç kama programı yazdım tamamlayamıyorum
Gönderen: Kafkasyali - Mart 06, 2016, 03:57:42 ÖÖ
Yapmak istediğiniz şeyi biraz daha ayrıntılı olarak yazar mısınız?

Mesela ilk gözlemimde #8 değişkeni gereksiz ve kalabalık yapıyor. Değişken adı üstünde program çalışırken farklı değerler alan ölçülerdir. Bunun yerine 12. satırdaki kod bloguna direkt G0Z0 (#8'den okuttuğunuz değişken değerini) yazabilirsiniz. Hatta ve hatta #4 dışında tüm değişkenler gereksiz gibi duruyor. Çünkü #4 hariç hepsi sabit değerler. Yani N1 ve IF döngüsü arasındaki tüm değişken ifade eden yerlere gerçek ölçüleri yazabilirsiniz.

#4 değişkeni IF döngüsünden önce 0.5 artırılmalı. Çünkü program G3 G90 Y#7 R#7 X#6 satırına geldiğinde G91'i unutacak ve IF satırından N1'e yönlendirilene kadar G90 ile devam edecektir. Bu da #4 değişkenini sürekli sabit tutacak ve asla #4 ve #5 birbirine eşit olmayacak. Yani demek oluyor ki program sürekli ilk 0.5 mm adımını sonsuz tekrar edecek.

Şunu bir deneyin;

O0001
#1=100  (Toplam Boyu)
#2=30    (Genişlik)
#3=20    (takım çapı)
#4=0.5   (Talaş Miktarı)
#5=-20   (Derinlik)
#6=[#1-#2]/2  (X'de Gidecek Mesafe)
#7=[#2-#3]/2  (Y'de Gidecek Mesafe Ayrıyetten Radyüs)
#8=0      (yanaşma mesafesi  (BU SATIR İPTAL)
G0G90G54X#6Y#7
G43H1Z50M8
M3S2500F1000
G0Z0 (DİREKT DEĞER VERDİK. ÇÜNKÜ IF DÖNGÜSÜ DIŞINDA)
N1G1G90Z-#4 (G91 - G90 OLDU. #4 HARİÇ TÜM DEĞİŞKENLERE GERÇEK DEĞERLERİ YAZIP YUKARIDA TANIMLADIĞINIZ #4 HARİÇ TÜM DEĞİŞKENLERİ SİLEBİLİRSİNİZ.
KOD KALABALIĞINI ÖNLEMİŞ OLUSUNUZ. AMA BU ŞEKİLDE DE ÇALIŞIR)
G3G90Y#7R#7X#6
G1X-#6
G3Y-#7R#7
G1X#6
G3G90Y#7R#7
G1Y-#7
#4=#4+0.5 (#4 DEĞİŞKENİ HER DÖNGÜDE 0.5 ARTACAK. 0.5 - 1 - 1.5 - 2.....)
IF[-#4LE#5] GOTO1 (#4 DEĞİŞKENİ ARTI 20 OLDUĞUNDA DÖNGÜDEN ÇIKACAK VE PROGRAM BİTECEK. DİKKAT EDİLMESİ GEREKEN IF SORGUSUNDA #4'DEN ÖNCE EKSİ İŞARETİ VE "GE" YANİ BÜYÜK EŞİT DEĞİL "LE" KÜÇÜK EŞİT OLMASI GEREKİYOR. ÖRNEKLERSEM -0.5=-20 EŞİTSİZLİĞİNDE DÖNGÜ DEVAM EDECEK. İŞLEM 40 SEFER TEKRAR ETTİĞİNDE -20=-20 OLDUĞUNDA DÖNGÜ VE PROGRAM SONLANACAK. YA DA MATEMATİKSEL VE MANTIKSAL İŞLEYİŞİ TERS ÇEVİRİRSENİZ YİNE AYNI SONUCA ULAŞABİLİRSİNİZ.)
G0G90Z150.M9
G91G28Z0.Y0.
M30
Başlık: Ynt: macro ile iç kama programı yazdım tamamlayamıyorum
Gönderen: blade93 - Mart 06, 2016, 08:19:10 ÖÖ
Teşekkür Ederim Cevapladığın için Denedim usta oda aynı z'de bir kere -0.5 e iniyor kalkıyor
parça
100*30 Bir dişi olarak açılcak Slot Kama
20 mm derinlik var
Başlık: Ynt: macro ile iç kama programı yazdım tamamlayamıyorum
Gönderen: Kafkasyali - Mart 06, 2016, 11:21:50 ÖS
#4=-0.5
#5=-20.5
.
.
.
N1 G1 G90 Z#4
.
.
.
.
#4=#4-0.5
IF[#4EQ#5] GOTO1 (EQ eşitlik söz konusu. #4 -20 olduğunda işlem 39 tekrar edecek. O yüzden #5'i -20.5 yaptık.)

Bir de böyle dener misin?
Başlık: Ynt: macro ile iç kama programı yazdım tamamlayamıyorum
Gönderen: blade93 - Mart 07, 2016, 09:34:05 ÖS
Kafkasyalı kardeşim çok teşekkür ederim çözdüm bugün tezgahta deneye deneye yarın yazıyım tekrar nasıl yaptığımı koyarım buraya
yardımcı olduğun için çok çok teşekkür ederim
Başlık: Ynt: macro ile iç kama programı yazdım tamamlayamıyorum
Gönderen: Gürkan ISIK - Mart 09, 2016, 07:01:44 ÖÖ
Esenlikler Ustalar
Bana da delikte kama kanali acmak icin bir makro lazim.
Malzeme Aluminyum
Delik Capi 16 H7
Acilacak Kama genisligi 4 H9
Kama derinligi 1.8 MM
Makinam Victor C eksenli
Katerim ve Bicagim var Simtek
0.02 MM derinliklerle acmayi düsünüyorum makro olmazsa 90 sefer git gel yapmak lazim.
Yardimci olursaniz cok memnun olurum.

Saygilar
Başlık: Ynt: macro ile iç kama programı yazdım tamamlayamıyorum
Gönderen: Kafkasyali - Mart 09, 2016, 05:59:29 ÖS
Mesleki terimlere hakim değilim ama 90 sefer dediğiniz işlemin 3-5 satırını yazarsanız döngü konusunda yardımcı olmaya çalışırım.
Başlık: Ynt: macro ile iç kama programı yazdım tamamlayamıyorum
Gönderen: Gürkan ISIK - Mart 09, 2016, 07:54:39 ÖS
Esenlikler Kafkasyali
Simdi söyle,
Delik capi 16 H7
Kanalin derinligi 17.85 yani 1.85 MM derinligi
her seferinde 0.02 MM dalaraktan 1.85 MM derinlige gitmem lazim

Örnek satir,

G00 X15.5 Z5. ( BASLANGIC NOKTASI Z VE GÜVENLI YAKLASMA X )
G01X16.03F1000 ( BIRINCI DALMA )
G01 Z-15.F5000 ( KANAL BOYUNA GIDIS )
G01X15.5F1000 ( GERI KACMA X )
G00Z5.  ( BASLANGIC NOKTASINA DÖNÜS Z )
G01X16.05F1000 ( IKINCI DALMA )
G01Z-15.F5000 ( KANAL BOYUNA GIDIS )
G01X15.5F1000 ( GERI KACMA X )
G00Z5.  ( BASLANGIC NOKTASINA DÖNÜS Z )
Döngünün 17.85 e Kadar devam etmesi lazim
degiskenler:
1.Delik Capi örnegin 16 MM
2.Kanal derinligi örnegin 1.85 MM
3.Kanal boyu örnegin 15 MM
4.Her seferinde dalma miktari örnegin 0.02 MM
5.Ilerleme hizi örnegin F5000

Esenlikler Saglicakla Kal
Başlık: Ynt: macro ile iç kama programı yazdım tamamlayamıyorum
Gönderen: Kafkasyali - Mart 10, 2016, 01:02:34 ÖÖ
Öncelikle açıklayıcı kod için teşekkürler.

#1=16.03 (x için başlangıç değişkeni)
G00 X15.5 Z5. ( BASLANGIC NOKTASI Z VE GÜVENLI YAKLASMA X )
N1 G01 X#1 F1000 ( BIRINCI DALMA ) (her dalmada x'in alacağı değer)
G01 Z-15.F5000 ( KANAL BOYUNA GIDIS )
G01 X15.5 F1000 ( GERI KACMA X )
G00 Z5.  ( BASLANGIC NOKTASINA DÖNÜS Z )
#1=#1+0.02 (her döngüde dalma ölçüsü 0.02mm artacak)
IF[#1LE17.85]GOTO1 (eğer değişken 17.85'den küçük ya da eşitse döngüye devam et. büyükse döngüyü bitir)

DÖNGÜNÜN SON PASOSUNDA KESİCİ TAKIM BAŞLANGIÇ NOKTASINA DÖNECEK. BUNA GÖRE PROGRAM BİTİŞ KODLARINI GÜVENLİ ÇIKIŞ VE GÜVENLİ REFERANS NOKTASINA GELECEK ŞEKLİNDE DÜZENLEYİNİZ. LÜTFEN TÜM TEDBİRLERİ ALINIZ. PROGRAMI SİMÜLATÖRDE TEST ETME İMKANINIZ VARSA ÖNCE TEST EDİNİZ. GEREKİRSE İLK ÇALIŞMAYI TEZGAHA PARÇA BAĞLAMADAN YAVAŞ YAVAŞ ÇALIŞTIRINIZ.

Makronun çalışıp çalışmadığını belirtirseniz sevinirim. İyi çalışmalar.
Başlık: Ynt: macro ile iç kama programı yazdım tamamlayamıyorum
Gönderen: Gürkan ISIK - Mart 10, 2016, 02:03:20 ÖÖ
Esenlikler Kafkasyali

Ellerine saglik yarin veya Cuma günü deneyecegim ve sonucuda mutlaka bildirecegim.

Esenlikler Saglicakla kal Saygilar
Başlık: Ynt: macro ile iç kama programı yazdım tamamlayamıyorum
Gönderen: Gürkan ISIK - Mart 10, 2016, 09:00:43 ÖS
Esenlikler kafkasyali

Calistiramadim adres bulunamadi diyor

Saygilar
Başlık: Ynt: macro ile iç kama programı yazdım tamamlayamıyorum
Gönderen: Kafkasyali - Mart 10, 2016, 11:06:38 ÖS
Kullandığınız tam programı yazabilir misiniz?
Başlık: Ynt: macro ile iç kama programı yazdım tamamlayamıyorum
Gönderen: Gürkan ISIK - Mart 10, 2016, 11:29:20 ÖS
Esenlikler kafkasyali
Bu sekilde yazdim evde cimko edit ile calisti ve tam istedigim gibi oldu ellerine saglik ilgine sonsuz tesekkürler.Yalniz söyle bir sey var simdi dalma miktarini degistirdigim Zaman tam älcüye getirmiyor örnek verecek olursam "17.85-16.01=1.84"  "1.84/0.02=92" bu tamam "1.84/0.05=36.8" burada sadece  "36*0.05=1.8" yani 0.04 almiyor bununda bir cözümü vardir herhalde.
Birde geri kacmayida hesaplattirabiliriz herhalde.
Yarin isyerinde bu sekilde deniyecegim olmasi lazim.Sonucu da yine bildirecegim mutlaka.

Saygilar

N08
G54
G98G18M45
G00T0808
G28H0.
C0.
#1= 16.01       ( DELIK CAPI )
#2=  5.00       ( GÜVENLI MESAFE Z )
#3= 17.85      ( KANAL BITIS ÖLCÜSÜ )
#4=-15.00      ( KANAL BOYU )
#5= 15.90      ( GERI KACMA X )
#6= 3000      ( ILERLEME )
#7= 0.02      ( DALMA MIKTARI )
G00X#1.Z#2.
N99 G01 X#1#6
N10G99G01X#1
G01Z-#4.F#6
G01X#5F#6
G00Z#2
#1=#1+#7
IF[#1LE#3]GOTO99
G00X200.Z200.M09
M05
M46
M30
Başlık: Ynt: macro ile iç kama programı yazdım tamamlayamıyorum
Gönderen: Kafkasyali - Mart 11, 2016, 12:48:31 ÖÖ
Öncelikle sabit ölçüler için değişken tanımlamak kullanışsız olur. Mesela F için değişken tanımlamak fazladan satır yazmanıza sebep oluyor. Direkt F3000 yazabilirsiniz. Hatta görünüşe göre döngüye giren tek değişken #1 olduğu için diğer tüm değişkenleri silip, yerine gerçek ölçüleri yazabilirsiniz. Böylece #2 veya #7 neydi deyip program başına dönmezsiniz. Tabi yazdığım programı benden başkası anlamasın diyorsanız iyi bir çözüm  :)

N08
G54
G98G18M45
G00T0808
G28H0.
C0.
#1= 16.01       ( DELIK CAPI )
#2=  5.00       ( GÜVENLI MESAFE Z )
#3= 17.85      ( KANAL BITIS ÖLCÜSÜ )
#4=-15.00      ( KANAL BOYU )
#5= 15.90      ( GERI KACMA X )
#6= 3000      ( ILERLEME )
#7= 0.02      ( DALMA MIKTARI )
G00X#1.Z#2.
N99 G01 X#1#6
N10G99G01X#1
G01Z-#4.F#6     (#4 değişkeni zaten negatif değerde? eksi çarpı eksi artı sonuç vermez mi?)
G01X#5F#6
G00Z#2
#1=#1+#7
IF[#7GE#3] THEN #7=#3(EKLENECEK SATIR. BÖYLECE SON DALMA KANAL BİTİŞ ÖLÜSÜNDEN BÜYÜK OLURSA TAM ÖLÇÜYE GELMİŞ OLACAK)
IF[#1LE#3]GOTO99
G00X200.Z200.M09
M05
M46
M30

Açıkçası döngü içeriğini yani mavi kısmı pek anlamadım. Fakat mantık şu şekilde işliyor. IF'ler kapı olsun. Birinci IF kapısından geçerken dalma miktarı kontrol ediliyor. Bitiş ölçüsünden küçükse işlem yapmıyor. Büyükse ya da eşitse dalma miktarını tam ölçüye getirip alttaki IF kapısına paslıyor. Eğer dalma miktarı döngü sonucunda tam ölçüye geldiyse döngü ve program sonlanıyor. Dediğim gibi mavi kısmı pek anlamadım ama bilgisayar programlama dahil tüm programlama dillerinde mantık bu şekilde işliyor. Eğer yarın uygun bir saate teamviewer ile bağlantı kurarsak daha detaylı bakabiliriz.

Bu arada keşke çırağınız olsaydım. Torna hakkında sadece teorik bilgilere sahibim.
Başlık: Ynt: macro ile iç kama programı yazdım tamamlayamıyorum
Gönderen: ziro302008 - Mart 13, 2016, 07:03:34 ÖS
Gordugum kadariyla zaten program sonsuz calisacak sekilde yazilmis
bise ( while) do1  ve (end1) satirlarini kullan yani programi sartlandirman lazim
Örnek: while [#1gt#2] do1 program sonunada END1 yazarsin
Başlık: Ynt: macro ile iç kama programı yazdım tamamlayamıyorum
Gönderen: Gürkan ISIK - Mart 14, 2016, 03:33:22 ÖÖ
Esenlikler Ustalar

Program bu sekilde gayet iyi calisiyor paso derinligini tam hesaplamam lazim ki kama Kanal derinligini tam yapabilsin.Mesela paso derinligini hesaplamadan verdigim Zaman bitis ölcüsüne getirmiyor.Misal verecek olursam Kanal derinligi 19.73 MM de bitmesi gerekirken 19.51 MM de bitiyor olmasi gereken 7*0.5=3.5 MM ve son pasoyuda 0.22 MM alarak 19.73 MM de bitirmesi lazim.
Yarin videoya cekip burada yayinliyacagim.
Bu arada kafkasyali Ustam gec cevap yazdigim icin de kusuruma bakma.

ziro302008 Usta dedigini denedim ama yapamadim daha dogrusu usum kalmadi yarin tekrar ugrasirim yada sizlerin yardimi ile hallederiz.Sizlere cok tesekkür ediyorum.

Video linki https://youtu.be/9b1sw4KHGbc

Saygilar

N08
G54
G98G18M45
G00T0808
G28H0.
C0.
#1= 16.01    ( DELIK CAPI )      
#2=  5.00     ( GÜVENLI YAKLASMA Z )   
#3=  1.86           ( KANAL DERINLIGI X )   
#4= 15.00           ( KANAL BOYU Z )
#5=  0.5            ( PASO DERINLIGI X )
#6= #1-[0.1]      
#7= 6000      
#8=#1+[#3*2]    (burasini neden koydugumuda acikliyayim aynamiz dönmedigi icin kama derinliginin iki katini almamiz lazim)   
G00X#1.Z#2.
#1=#1+#5
N99 G01 X#1F#7
N10G99G01X#1
G01Z-#4F#7
G01X#6F#7
G00Z#2
#1=#1+#5
IF[#1LE#8]GOTO99
G00X200.Z200.M09
M05
M46
M30
Başlık: Ynt: macro ile iç kama programı yazdım tamamlayamıyorum
Gönderen: blade93 - Mart 14, 2016, 08:41:34 ÖS
kusura bakma Kafkasyalı kardeşim internetle ilgili sıkıntım vardı bir haftada anca çözüldü
yazdığım slot iç kama açma makrosu

O0001
#1=100  (SLOT BOYU)
#2=30    (SLOT GENİŞLİĞİ)
#3=20    (TAKIM ÇAPI)
#4=0      (ELLEME   
#5=20    (DERİNLİK
#6=[#1-#2]/2
#7=[#2-#3]/2
#8=0 (YANAŞMA)
G0G90G54X#6Y#7
G43H1Z50M8
M3S2500F1000
G0Z#8
N1G1G90Z#4
G3G90Y#7R#7X#6
G1X-#6
G3Y-#7R#7
G1X#6
#4=[-#4+0.5]
IF[-#5LE#4]GOTO1
N2
G0G90Z50.M9
G91G28Z0.Y0.
M30
Başlık: Ynt: macro ile iç kama programı yazdım tamamlayamıyorum
Gönderen: Kafkasyali - Mart 14, 2016, 11:02:11 ÖS
@Gürkan ISIK ve @blade93

Vallahi ustalar şunu söylemeden geçemeyeceğim. Bu programlar birer sanat eseri. Tam birer batch programlama örneği.
Kendi deyimimle bu kadar "değişmeyen değişken" (!!?? ne demekse :) ) tanımlanmasına anlam verememiştim. Çünkü bilgisayar programlama için gereksiz değişken tanımı hafıza ve disk şişirmekten başka bir işe yaramaz. Meğer bu değişkenler diğer ölçüler için "standart" niteliği taşıyormuş. Sırf programı çözmek için 45 dakika harcadım ve 3 tane sigara içtim. Madem değişkenlerden gidiyoruz, ölçümüzü tam yapacak eklemeleri yapalım.

N08
G54
G98G18M45
G00T0808
G28H0.
C0.
#1= 16.01    ( DELIK CAPI )     
#2=  5.00     ( GÜVENLI YAKLASMA Z )   
#3=  1.86           ( KANAL DERINLIGI X )   
#4= 15.00           ( KANAL BOYU Z )
#5=  0.5            ( PASO DERINLIGI X )
#6= #1-[0.1]     
#7= 6000     
#8=#1+[#3*2]    (burasini neden koydugumuda acikliyayim aynamiz dönmedigi icin kama derinliginin iki katini almamiz lazim)   
G00X#1.Z#2.
#1=#1+#5
N99 G01 X#1F#7
N10G99G01X#1
G01Z-#4F#7
G01X#6F#7
G00Z#2
#1=#1+#5
IF[#1GE#8]THEN #1=#8 (son pasoyu tam ölçüye getirmek için. 20.01'i görünce ölçüyü 19.73'e getirecek. Yani #8'i okuyacak.)
IF[#1LE#8]GOTO99   (yukarıdaki satırı eklemezsek 8. pasoya geldiğinde değer 20.01 olur ve son pasoyu almadan 19.51'de döngü biter.)
G00X200.Z200.M09
M05
M46
M30
Başlık: Ynt: macro ile iç kama programı yazdım tamamlayamıyorum
Gönderen: qaos35 - Mart 02, 2017, 04:22:19 ÖÖ
Ynt: macro ile iç kama programı yazdım tamamlayamıyorum
« Yanıtla #17 : Mart 14, 2016, 11:02:11 ÖS »
Alıntı
@Gürkan ISIK ve @blade93

Vallahi ustalar şunu söylemeden geçemeyeceğim. Bu programlar birer sanat eseri. Tam birer batch programlama örneği.
Kendi deyimimle bu kadar "değişmeyen değişken" (!!?? ne demekse :) ) tanımlanmasına anlam verememiştim. Çünkü bilgisayar programlama için gereksiz değişken tanımı hafıza ve disk şişirmekten başka bir işe yaramaz. Meğer bu değişkenler diğer ölçüler için "standart" niteliği taşıyormuş. Sırf programı çözmek için 45 dakika harcadım ve 3 tane sigara içtim. Madem değişkenlerden gidiyoruz, ölçümüzü tam yapacak eklemeleri yapalım.

N08
G54
G98G18M45
G00T0808
G28H0.
C0.
#1= 16.01    ( DELIK CAPI )     
#2=  5.00     ( GÜVENLI YAKLASMA Z )   
#3=  1.86           ( KANAL DERINLIGI X )   
#4= 15.00           ( KANAL BOYU Z )
#5=  0.5            ( PASO DERINLIGI X )
#6= #1-[0.1]     
#7= 6000     
#8=#1+[#3*2]    (burasini neden koydugumuda acikliyayim aynamiz dönmedigi icin kama derinliginin iki katini almamiz lazim)   
G00X#1.Z#2.
#1=#1+#5
N99 G01 X#1F#7
N10G99G01X#1
G01Z-#4F#7
G01X#6F#7
G00Z#2
#1=#1+#5
IF[#1GE#8]THEN #1=#8 (son pasoyu tam ölçüye getirmek için. 20.01'i görünce ölçüyü 19.73'e getirecek. Yani #8'i okuyacak.)
IF[#1LE#8]GOTO99   (yukarıdaki satırı eklemezsek 8. pasoya geldiğinde değer 20.01 olur ve son pasoyu almadan 19.51'de döngü biter.)
G00X200.Z200.M09
M05
M46
M30







MERHABA KAFKASYALI ŞİMDİ BURADA İF SATIRINI ALT ALTA 2 DEFA MI YAZACAĞIZ ?
Başlık: Ynt: macro ile iç kama programı yazdım tamamlayamıyorum
Gönderen: Kafkasyali - Mart 11, 2017, 12:48:17 ÖÖ
Öncelikle mesajı geç gördüm kusura bakmayın.

Bir örnekle açıklamaya çalışayım;

#1=0
#2=9
N99 #1=#1+2
IF[#1GE#8]THEN #1=#8
IF[#1LE#8]GOTO99


#1 değişkeni 0 olsun
#8 değişkeni 9 olsun

#1 değişkenini 2'şer 2'şer artıralım ve ulaşmak istediğimiz değer #8'deki 9 değeri olsun.

Şimdi #1 değeri 2-4-6-8 diye artacak ve 5'inci döngüde #8 değişkeni 10 olacak. Fakat bize 10 değil, 9 lazım. İlk IF döngüsünde #1 ile #8 karşılaştırılıyor. Bu karşılaştırmada eğer #1 değeri 10 olursa #8 değerine eşitleyecek.

İkinci IF döngüsünde #1 değeri #8 değerinden küçük mü? diye kontrol ediliyor. Eğer 2-4-6-8 değerinden biri ise döngü devam ediyor. 8'den sonra 10 geleceği için son pasoda ilk IF döngüsü 10 değerini 9'a çeker. 9=9 olduğu için şart biter. Dolayısı ile döngü biter ve parça istenilen ölçüye alınır.

Daha kısacası makro yazarken iç içe ve alt alta IF, WHILE, FOR gibi döngüler yazılabilir.
Başlık: Ynt: macro ile iç kama programı yazdım tamamlayamıyorum
Gönderen: qaos35 - Mart 11, 2017, 07:36:34 ÖÖ
Anladım kafkasyalı çok iyi açıkladın normalde if  le  while  kullanıyorum ama iyi değilim teşekkür ederim verdiğin bilgi için
Başlık: Ynt: macro ile iç kama programı yazdım tamamlayamıyorum
Gönderen: SFKY42 - Ocak 19, 2019, 07:34:55 ÖS
Alıntı yapılan: Kafkasyali - Mart 14, 2016, 11:02:11 ÖS
@Gürkan ISIK ve @blade93

Vallahi ustalar şunu söylemeden geçemeyeceğim. Bu programlar birer sanat eseri. Tam birer batch programlama örneği.
Kendi deyimimle bu kadar "değişmeyen değişken" (!!?? ne demekse :) ) tanımlanmasına anlam verememiştim. Çünkü bilgisayar programlama için gereksiz değişken tanımı hafıza ve disk şişirmekten başka bir işe yaramaz. Meğer bu değişkenler diğer ölçüler için "standart" niteliği taşıyormuş. Sırf programı çözmek için 45 dakika harcadım ve 3 tane sigara içtim. Madem değişkenlerden gidiyoruz, ölçümüzü tam yapacak eklemeleri yapalım.

N08
G54
G98G18M45
G00T0808
G28H0.
C0.
#1= 16.01    ( DELIK CAPI )     
#2=  5.00     ( GÜVENLI YAKLASMA Z )   
#3=  1.86           ( KANAL DERINLIGI X )   
#4= 15.00           ( KANAL BOYU Z )
#5=  0.5            ( PASO DERINLIGI X )
#6= #1-[0.1]     
#7= 6000     
#8=#1+[#3*2]    (burasini neden koydugumuda acikliyayim aynamiz dönmedigi icin kama derinliginin iki katini almamiz lazim)   
G00X#1.Z#2.
#1=#1+#5
N99 G01 X#1F#7
N10G99G01X#1
G01Z-#4F#7
G01X#6F#7
G00Z#2
#1=#1+#5
IF[#1GE#8]THEN #1=#8 (son pasoyu tam ölçüye getirmek için. 20.01'i görünce ölçüyü 19.73'e getirecek. Yani #8'i okuyacak.)
IF[#1LE#8]GOTO99   (yukarıdaki satırı eklemezsek 8. pasoya geldiğinde değer 20.01 olur ve son pasoyu almadan 19.51'de döngü biter.)
G00X200.Z200.M09
M05
M46
M30



Değerli forum sakinler, yukarıdaki programlamada basit bi hata payı gözden kaçmış olduğundan döngü sürekli kendisini tekrarlayacaktır(sonsuz).
Sadede gelirsek; programa yukarıdaki Kafkasyalı'nın eklediği denetim yapılarını fazla kurcalamadan, değiştirerek ve üstte de bi denetim yapısı eklersek programın hatasız çalışacağını umuyorum.


Alıntı YapN08
G54
G98G18M45
G00T0808
G28H0.
C0.
#1= 16.01    ( DELIK CAPI )     
#2=  5.00     ( GÜVENLI YAKLASMA Z )   
#3=  1.86           ( KANAL DERINLIGI X )   
#4= 15.00           ( KANAL BOYU Z )
#5=  0.5            ( PASO DERINLIGI X )
#6= #1-[0.1]     
#7= 6000     
#8=#1+[#3*2]    (burasini neden koydugumuda acikliyayim aynamiz dönmedigi icin kama derinliginin iki katini almamiz lazim)   
G00X#1.Z#2.
#1=#1+#5 (LOOP BASLAMADAN, ILK PASO VERDIK(MEMORYDE) HADI HAYIRLISI. BOSTA KESME YAPMASINI KIMSE ISTEMEZ.)
N99IF[#1GT#8]THEN #1=#8 (son pasoyu tam ölçüye getirmek için. 20.01'i görünce ölçüyü 19.73'e getirecek. Yani #8'i okuyacak.)
N10G99G01X#1F#7
G01Z-#4F#7
G01X#6F#7
G00Z#2
IF[#1NE#8]THEN #1=#1+#5
IF[#1NE#8]GOTO99
G00X200.Z200.M09
M05
M46
M30
Düzenlemesi yapılan ve eklenen&silinen satırların liste ve açıklaması;
G01 X#1 (TEZGAHIN TAKIM KONUMLANDIRMASIDAN SONRAKI ILK SATIR DUPLICATE SATIR OLDUGU ICIN SILINDI. X EKSENI MUTLAK DEGERDIR, 2 TANE OLMASININ MANASI YOK.)
N99IF[#1GT#8]THEN #1=#8 (SATIR ACIKLAMASI=SON PASO 19.73DEN FAZLASI VAR ISE HIC PARCAMI BOZMADAN, PASOYU 19.73E GETIR GUZEL KARDESIM FANUC (: )
IF[#1NE#8]THEN #1=#1+#5 (SATIR ACIKLAMASI=PASO 16.01+(1.86*2)=19.73 DEGILSE TEZGAHA PASO VER, EGER IS PARCASI VERILEN OLCUDEYSE, PASO VERIP DONGU BOZMA. BU PROGRAMIN ULASILACAK PASOSU TEK SAYI OLDUGU ICIN TEZGAH 8.PASO ALINMASINI ONGORECEK VE OLCU 20.01E ESITLENECEK DAHA SONRA ALT SATIRA GECIP ISLEMIN DEVAMINI ALT SATIRDA SAGLAYACAGIZ.)
IF[#1NE#8]GOTO99 (SATIR ACIKLAMASI= TEZGAH EGER KI PASO 19.73=19.73 NOKSANSIZ ISE SATIR ATLAMA, ALT SATIRA GEC PROGRAMI REWIND'A ULASTIR )
M30 VS.
%

Bu makro program daha da geliştirilebilir.