CNC Makrolarında Aritmetik Fonksiyonlar: SIN, COS ve SQRT
Fanuc, Siemens ve Mitsubishi CNC makrolarında SIN, COS ve SQRT fonksiyonlarını kullanarak dinamik takım yolu hesaplamayı ve FPU hatalarını önlemeyi öğrenin.
Giriş
Hassas bir CNC iş milinin, LookAhead tamponundaki bir uyuşmazlık veya normalize edilmemiş bir kayan nokta hatası yüzünden iş parçası sıkma pabucuna (clamp), sert ayna çenelerine veya karşı aynaya kontrolsüz şekilde hızlı ilerlemede (rapid traverse) çarpması, yalnızca iş milini durdurmakla kalmaz; iş parçasını anında hurdaya ayırır ve tüm çevrim süresini boşa harcar. Parametrik takım yollarını tezgah başında dinamik olarak hesaplamak için SIN, COS ve SQRT gibi trigonometrik ve aritmetik makro fonksiyonları kullanıldığında, "floating-point dust" olarak bilinen mikroskobik yuvarlama hataları birikebilir. Bu birikim, kontrolörün beklenmedik koordinat sapmalarıyla hareket etmesine neden olarak pahalı parçaların hurdaya dönmesine ve plansız duruş sürelerine yol açar. Bu kritik matematiksel işlemleri güvenli aralıklarla sınırlamak, değişkenleri mantıksal kontrollerle doğrulamak ve doğru senkronizasyon durdurmaları uygulamak, atölyede sıfır hurda hedefiyle üretim maliyetlerini düşürmenin temel anahtarıdır.
Teknik Özet
| Öznitelik | Detay |
|---|---|
| Komut Kodları | SIN, COS, SQRT, SQR, POT, POW |
| Modal Grubu | Matematiksel / Aritmetik Makro Fonksiyonları (Non-modal) |
| Desteklenen Markalar | Fanuc, Siemens, Mitsubishi |
| Kritik Parametreler | Fanuc: 6004#1 (MFZ), 6004#0 (NAT), 6008#0 (F16); Siemens: R0 ila R299; Mitsubishi: #1273 (ASIN çıkış aralığı), #1259 (makro önceliği) |
| Temel Kısıtlamalar | Açılar derece cinsinden olmalıdır; sıfıra bölme ve TAN[90.0] yasaktır; Fanuc ve Mitsubishi'de parantez iç içe yerleştirme 5 seviye ile sınırlıdır. |
Hızlı Okuma
- Matematiksel fonksiyonların argümanlarını Fanuc ve Mitsubishi'de köşeli parantez
[]içine, Siemens'te ise yaylı parantez()içine alın. - Radyanlar hatalı hesaplamalara yol açacağından, tüm trigonometrik girdilerin (
SIN,COS,TAN) kesinlikle derece cinsinden belirtildiğinden emin olun. - Negatif tabanlı hesaplamaları önlemek için değişken değerlerini bir
SQRTfonksiyonuna göndermeden önce mantıksal kontrollerle doğrulayın. - Hesaplanan değişkenlere referans vermeden önce LookAhead kod çözme işlemini dondurmak için Siemens kontrollerinde bir preprocessing stop (
STOPRE) programlayın. - Buffer overflow sorunlarını önlemek için Fanuc ve Mitsubishi'de parantezleri maksimum 5 seviyede tutarak iç içe yerleştirme sınırlarına uyun.
- Ters trigonometrik sonuçlar için bölge aralıklarını küresel olarak kaydırmak için Fanuc
6004#0veya Mitsubishi#1273gibi parametreleri kullanın.
Temel Kavramlar
Özel makro motorları, CNC kontrolörlerinin gerçek zamanlı olarak karmaşık trigonometrik ve aritmetik işlemler yapmasını sağlar. Geliştiriciler; SIN, COS ve SQRT gibi fonksiyonlardan yararlanarak tezgahta dinamik olarak takım yolları hesaplayan parametrik ana programlar oluşturabilirler. Bu yetenek, küçük tasarım varyasyonları için harici CAD/CAM yazılımlarından binlerce sabit koordinat çıktısı alma ihtiyacını ortadan kaldırır. Bunun yerine; çaplar, açı artışları veya derinlikler gibi parametreler doğrudan makroya aktarılır ve makinenin kendi koordinat vektörlerini hesaplamasına olanak tanır.
Özel makroları g65-custom-macro-b kullanarak programlarken, güvenlik kontrolleri gerçekleştirmek için matematik fonksiyonları sıklıkla macro-logical-operators ile eşleştirilir. Matematiksel değişkenlerin doğru şekilde doldurulmasını sağlamak için g65-macro-argument-assignment sırasında doğru parametre eşlemesi de gereklidir.
Ancak, trigonometrik matematik kesin değerler yerine floating-point dust (kayan nokta tozu) olarak adlandırılan küçük matematiksel anomaliler üretebilir. Bu mikroskobik yuvarlama hataları yönetilmezse, ardışık hesaplamalar zamanla koordinat kayması biriktirebilir. Normalize edilmemiş değişkenlere dayanarak konumlandırma hareketleri yürüten bir CNC kontrolü, takımı yolundan saptırma riski taşır. Bu koordinat kaymasını önlemek için programcılar, hareket komutlarını yürütmeden önce tüm değişkenlerin güvenli sınırlar içinde kalmasını sağlamak üzere matematiksel doğrulama ve hata kontrol mantığı uygulamalıdır.
Komut Yapısı
Aritmetik makro komutları, değerlendirilen matematiksel sonucun doğrudan yerel, ortak veya sistem değişkenine atandığı yapılandırılmış bir sözdizimi takip eder. Fanuc ve Mitsubishi kontrolleri için bu sözdizimi, trigonometrik veya karekök fonksiyonlarının argümanlarını çevrelemek üzere köşeli parantezler kullanılarak bir değişken ataması olarak yürütülür. Siemens, matematiksel sözdizimini doğrudan yüksek seviyeli NC programlama diline entegre ederek değişkenlerin standart parantez notasyonu kullanılarak değerlendirilmesine izin veren farklı bir yaklaşım benimser.
Her üç platformda da işlem önceliği standart matematik kurallarını takip eder. Önce fonksiyonlar değerlendirilir, ardından çarpma ve bölme, son olarak ise toplama ve çıkarma işlemleri yapılır. Bu varsayılan sırayı geçersiz kılmak ve açık hesaplama yolları tanımlamak için köşeli veya yaylı parantezler kullanılmalıdır. Eğer programcı çok adımlı formülleri parantez içine almayı ihmal ederse, kontrolör aritmetiği sırayla işleyecek ve bu da nihai koordinat çıktısını büyük ölçüde değiştirebilecektir.
Her marka için standart sözdizimi biçimleri:
- Fanuc:
#i = SIN[#j],#i = COS[#j],#i = SQRT[#j]veya#i = SQR[#j] - Siemens:
R_var = SIN(x),R_var = COS(x),R_var = SQRT(x),R_var = POT(x),R_var = ATAN2(y, x) - Mitsubishi:
#i = SIN[#j],#i = COS[#j],#i = SQRT[#j]veya#i = SQR[#j],#i = POW[#j, #k]
Sistemler genelindeki kritik matematik kontrol parametreleri:
| Marka | Parametre | Açıklama | Geçerli Ayarlar |
|---|---|---|---|
| Fanuc | 6004#1 (MFZ) | Mikroskobik trigonometrik sonuçlerin underflow durumunu yönetir. | 0 = Underflow; 1 = 0'a normalize et |
| Fanuc | 6004#0 (NAT) | Ters trigonometrik çıktı bölgesini belirler. | 0 = 0° ila 360.0°; 1 = -180.0° ila 180.0° |
| Fanuc | 6008#0 (F16) | Eski hesaplama hassasiyeti uyumluluğunu kontrol eder. | 0 = Yeni; 1 = FS16i / FS0i-C uyumlu |
| Siemens | R0 ila R299 | Önceden tanımlanmış aritmetik parametreler (kayan nokta biçimi). | ±0.0000001 ila 99999999 |
| Mitsubishi | #1273 (ext09/bit0) | Ters sinüs (ASIN) fonksiyonunun çıkış aralığını kaydırır. | 0 = -90° ila 90°; 1 = 270° ila 90° |
| Mitsubishi | #1259 (set31/bit7) | Dahili makro önceliğini ve işlem hızını belirler. | Özel bit ayarları |
Marka Uygulamaları
Fanuc
Fanuc kontrolleri, matematiksel hassasiyeti ve underflow durumunu 6004#1 ve 6004#0 parametrelerini kullanarak yönetir. 6004#1 parametresi son derece küçük hesaplamaların sıfıra normalize edilip edilmeyeceğini kontrol ederken, 6004#0 ters trigonometrik fonksiyonların çıkış bölgesini kaydırır.
Aritmetik değişkenler, ifadeleri değerlendirmek için köşeli parantezler kullanılarak atanır:
; Fanuc örnekleri:
#100 = SQRT[#1 * #1 + #2 * #2] ; Hipotenüsü hesapla
#101 = SIN[45.0] * 50.0 ; Sinüs bileşenini belirle
#102 = #101 + COS[#3] ; Kosinüs bileşeni ile topla
- Parametreler:
6004#1(MFZ) underflow matematiğini normalize eder;6004#0(NAT) ATAN/ASIN bölgelerini değiştirir;6008#0(F16) uyumluluk modlarını zorlar. - Alarmlar: Alarm 119 (Negatif SQRT için Geçersiz Argüman), Alarm 112 (Sıfıra Bölme veya TAN[90]), Alarm 118 (Parantez İç İçe Yerleştirme Hatası), Alarm 111 (Hesaplanan Veri Taşması).
- Versiyon Farkları: Standart makrolar standart komutları kullanır. PMC Ladder/Structured Text, bellek boyutuna göre tiplendirilmiş fonksiyon bloklarını kullanır: tek duyarlıklı (16 bayt)
SINR,COSR,SQRTRkullanır; çift duyarlıklı (20/28 bayt)SINL,COSL,SQRTLkullanır.
Uyarı: Tek bir komut satırında beş seviyeli köşeli parantez [] yerleştirme sınırının aşılması, makine yürütme tamponunu durdurarak derhal Alarm 118'i tetikleyecektir.
Siemens
Siemens Sinumerik kontrolleri, hesaplanan aritmetik değerleri saklamak için önceden tanımlanmış R0 ila R299 değişkenlerini kullanır. Kayan nokta değerleri, dahili olarak kesin mantıksal karşılaştırmalar sırasında hassasiyet kaymasına eğilimli olan standart 64-bit IEEE formatları kullanılarak saklanır.
Formüller, yaylı parantezler kullanılarak hesaplanıp saklanabilir veya doğrudan hareket bloklarının içine entegre edilebilir:
; Siemens örnekleri:
R40 = ATAN2(30.5, 80.1) ; Bölgeye duyarlı arktanjantı hesapla
R15 = SQRT(R1 * R1 + R2 * R2) ; Hipotenüsü hesapla
STOPRE ; Preprocessing stop komutu
N40 G1 Z=SIN(25.3)-R5 F200 ; Doğrudan satır içi trigonometrik hareket
- Parametreler: R parametreleri (
R0ilaR299) kayan nokta sayılarını saklar. Özel real değişkenleriDEF REALkullanılarak tanımlanır. - Alarmlar: Alarm 1019 (Kayan nokta aritmetik hatası / FPU istisnası), Alarm 1020 (Derleme döngüsünde kayan nokta aritmetik hatası).
- Versiyon Farkları: Giriş seviyesi SINUMERIK 808D kutudan çıktığı haliyle tam olarak 300 adet R parametresi ayırır. 840D sl ve SINUMERIK ONE gibi gelişmiş modeller, geniş dinamik değişken dizilerini ve karmaşık çok eksenli oryantasyon dönüşümlerini destekler.
Uyarı: Hesaplanan bir matematiksel değere güvenmeden önce bir preprocessing stop (STOPRE) komutu vermemek, LookAhead uyumsuzluğuna neden olabilir ve ciddi takım çarpmalarına yol açabilir.
Mitsubishi
Mitsubishi makro programlama, trigonometrik çıktı bölgelerini ve öncelik ayarlarını #1273 ve #1259 parametreleri aracılığıyla yönetir. Parametre #1273 ters sinüs fonksiyonunun hesaplama aralığını belirlerken, #1259 yürütme hızını optimize eder.
Trigonometrik değerler köşeli parantezler kullanılarak değerlendirilir ve değişkenlere atanır:
; Mitsubishi örnekleri:
#501 = SIN[14] ; 14 derecenin sinüsünü ata
#573 = SQRT[10. * 10. + 20. * 20.] ; Hipotenüsü hesapla
#101 = SQRT[[#111 - #112] * SIN[[#113 + #114] * #115]] ; Karmaşık iç içe geçmiş trigonometri
#107 = POW[2.5, 3.5] ; Üs alma hesaplaması (yalnızca M8 serisi)
- Parametreler: Parametre
#1273ASINçıkış aralığını değiştirir; Parametre#1259dahili işleme yöntemini ve makro hesaplama önceliğini yapılandırır. - Alarmlar: Program Hatası P282 (Aritmetik arıza / negatif SQRT), Program Hatası P225 (Format hatası / kapatılmamış parantez), Program Hatası P241 (Negatif değişken referansı).
- Versiyon/Seri Farkları:
POWfonksiyonu aracılığıyla üs alma işlemi M8 serisini gerektirir. Genişletilmiş Ortak Değişken III dosyaları, M800VW/M80VW için kontrol ünitesinin içindeki SD kartlarda saklanırken, M800VS/M80V için ekran ünitesinde saklanır.
Uyarı: Matematiksel operatörleri doğrudan eksen harflerinin içine eklemek (örneğin X123+0 gibi) yorumlanan koordinat ondalık noktasını kaydırarak milimetre ile mikron okuma hatalarına yol açar.
Marka Karşılaştırmaları
| Özellik / Konu | Fanuc | Siemens | Mitsubishi |
|---|---|---|---|
| Argüman Parantez Sözdizimi | Köşeli parantez [] (örn. SIN[45.0]) | Yaylı parantez () (örn. SIN(45.0)) | Köşeli parantez [] (örn. SIN[45.0]) |
| Formül İç İçe Yerleştirme Sınırı | Maksimum 5 seviye köşeli parantez ([]) iç içe yerleştirme | Yaylı parantez () ile önceliklendirilir, katı bir düşük iç içe yerleştirme sınırı yoktur | Maksimum 5 seviye köşeli parantez ([]) iç içe yerleştirme |
| Ters Trigonometri Aralık Kaymaları | 6004#0 parametresi ATAN aralığını 0-360.0°'den -180.0° ila 180.0°'ye kaydırır | ATAN2(,) yerel olarak dört bölgenin tamamında vektör açısını döndürür (-180° ila 180°) | #1273 parametresi ASIN aralığını -90° ila 90°'den 270° ila 90°'ye kaydırır |
| Kayan Nokta Hassasiyet Anomalileri | 6004#1 (MFZ) parametresi <= 1.0*10^-8 hesaplamalarını 0'a normalize eder | Yerel TRUNC() komutu, mantıksal karşılaştırmalardan önce kayan noktalı REAL hassasiyet kaymasını keser | #1259 parametresi, makro değerlendirmesi için önceliği ve işlem hızını ayarlar |
| Üs / Eksponent Fonksiyonları | Standart makro çarpımı; doğal üstel için EXP | Önceden tanımlanmış POT(x) (kare) veya özel üstel güçler | Yerel POW[taban, üs] (yalnızca M8 serisi) |
| Satır İçi Hareket Hesaplamaları | Desteklenmiyor (önce değişkenlere atanmalıdır) | Tamamen destekleniyor (hareket blokları içinde satır içi matematiksel ifadeler, örn. Z=SIN(25.3)) | Desteklenmiyor (önce değişkenlere atanmalıdır) |
Teknik Analiz
Fanuc, Siemens ve Mitsubishi'nin aritmetik motorlarını analiz etmek; sözdizimi entegrasyonu, hassasiyet yönetimi ve ön işlemci tamponlama konularında belirgin farkları ortaya koymaktadır. Fanuc ve Mitsubishi, matematiksel işlemlerin izole edilmiş bloklarda hesaplanıp ardından sistem veya kullanıcı değişkenlerine kaydedildiği klasik bir makro tasarımı kullanır. Bu yapı, hesaplamaları eksen hareketlerinden yalıtarak hareket ayrıştırıcısını korur ancak ek kod satırları gerektirir. Buna karşın Siemens, gelişmiş matematiği doğrudan NC çekirdeğine entegre ederek hareket blokları içinde satır içi hesaplamalara izin verir. Bu durum, geliştiricilerin trigonometriyi ve doğrusal hareketi tek bir satırda birleştirmesine olanak tanıyarak işlem yükünü azaltır ve program okunabilirliğini artırır.
Hassasiyet yönetimi de üç marka arasında farklılık gösterir. Fanuc, yol sapmasını önlemek için underflow değerlerini doğrudan sıfıra normalize eden 6004#1 parametresi aracılığıyla kayan nokta gürültüsünü giderir. Siemens, 64-bit IEEE değişkenlerindeki kayan nokta kaymasını yerel TRUNC() fonksiyonunu kullanarak çözer and programcıların koordinat mantığı karşılaştırmalarını yürütmeden önce ondalık gürültüyü temizlemesine olanak tanır. Ters trigonometri için Fanuc, ATAN bölgelerini kaydırmak üzere 6004#0 parametresini kullanırken, Mitsubishi ASIN çıkışını döndürmek için #1273 parametresini kullanır. Siemens, dört bölgenin tamamındaki vektör açılarını çözmek için ATAN2(,) komutunu kullanarak bu parametreleri tamamen devre dışı bırakır.
Son olarak, yürütme senkronizasyonu büyük bir mimari farkı temsil eder. Fanuc ve Mitsubishi makroları sıralı olarak işleyip hatalarda dururken, Siemens'in aktif LookAhead tamponu matematiksel blokları fiziksel takım hareketlerinin çok öncesinde çözebilir. Siemens tamponu, aktif döngüler tarafından henüz kesinleştirilmemiş dinamik bir geometri değişkenini ayrıştırırsa bir uyumsuzluk meydana gelir. Yol bütünlüğünü korumak için Siemens, programcıların tamponu senkronize etmek amacıyla bir STOPRE preprocessing stop komutu vermesini gerektirir; bu kısıtlama Fanuc veya Mitsubishi kontrollerinde aynı şekilde mevcut değildir.
Program Örnekleri
Fanuc Örneği
#100 = SQRT[#1 * #1 + #2 * #2] ; Üçgenin hipotenüsünü hesapla
#101 = SIN[45.0] * 50.0 ; Sinüs ofset bileşenini hesapla
#102 = #101 + COS[#3] ; Kosinüs bileşeni ile birleştir
kuru çalıştırma (dry run)
- Blok 1: Kontrolör,
#1ve#2değişkenlerinin karelerinin toplamının karekökünü hesaplayarak sonucu#100değişkenine atar. Eğer#1veya#2negatif bir toplamla sonuçlanırsa ya da argüman negatifse, CNC Alarm 119'u tetikleyecektir. - Blok 2: 45.0 derecenin sinüsü hesaplanır ve 50.0 ile çarpılır. Sonuç
#101değişkenine atanır. - Blok 3: Değişken
#3'ün (derece cinsinden değerlendirilen) kosinüsü hesaplanır ve#101içindeki değere eklenir. Nihai toplam#102değişkeninde saklanır.
Siemens Örneği
R40 = ATAN2(30.5, 80.1) ; Bölgeye duyarlı arktanjantı hesapla
R15 = SQRT(R1 * R1 + R2 * R2) ; Üçgenin hipotenüsünü hesapla
STOPRE ; Ön işlemci tamponunu durdur
N40 G1 Z=SIN(25.3)-R5 F200 ; Satır içi matematik kullanarak Z eksenini hareket ettir
R14 = R1 * R2 + R3 ; Öncelik: R1 ile R2'yi çarp, ardından R3'ü ekle
kuru çalıştırma
- Blok 1:
ATAN2fonksiyonu, 30.5 (Y) ve 80.1 (X) koordinatlarının oluşturduğu vektörün açısını hesaplayarak -180 ila +180 derece arasındaki tam bölgeyi çözer ve parametreR40'ta saklar. - Blok 2: Kontrolör,
R1veR2parametrelerinin karelerinin toplamının karekökünü hesaplayarak sonucu parametreR15'te saklar. - Blok 3:
STOPREkomutu, LookAhead ön işlemci tamponunu durdurarak CNC'yi bir sonraki bloğu okumadan önce önceki tüm aritmetik işlemler tamamen değerlendirilene kadar beklemeye zorlar. - Blok 4: Kontrolör, Z ekseni boyunca, 25.3 derecenin sinüsünden
R5parametresinin değerinin çıkarılmasıyla hesaplanan bir konuma, 200 mm/dak ilerleme hızı ile doğrusal bir hareket gerçekleştirir. - Blok 5: Kontrolör, önce
R1ileR2'yi çarpar (standart operatör önceliği nedeniyle), ardındanR3'ü ekleyerek sonucu parametreR14'te saklar.
Mitsubishi Örneği
#501 = SIN[14] ; 14 derecenin sinüsünü değerlendir
#573 = SQRT[10. * 10. + 20. * 20.] ; Hipotenüsü hesapla
#101 = SQRT[[#111 - #112] * SIN[[#113 + #114] * #115]] ; Karmaşık iç içe geçmiş denklem
#107 = POW[2.5, 3.5] ; 2.5 sayısını 3.5 kuvvetine yükselt
kuru çalıştırma
- Blok 1: 14 derecenin sinüsü hesaplanır ve
#501değişkeninde saklanır. - Blok 2: Kontrolör, 10.0 ve 20.0'nin karelerinin toplamının karekökünü hesaplayarak sonucu
#573değişkenine atar. - Blok 3: Kontrolör, en içtekinden başlayarak yuvalanmış parantezleri değerlendirir:
#113ve#114'ü toplar,#115ile çarpar, sinüsünü alır,#111ve#112farkıyla çarpar ve son olarak karekökünü hesaplayarak sonucu#101'de saklar. En fazla 5 seviyeli iç içe yerleştirme desteklenir. - Blok 4: 2.5 değeri, M8 serisine özel
POWfonksiyonu kullanılarak 3.5 kuvvetine yükseltilir ve sonuç#107değişkenine atanır.
Hata Analizi
| Alarm Kodu | Tetikleyici | Operatör Belirtisi | Kök Neden / Çözüm |
|---|---|---|---|
| Fanuc Alarm 119 | Bir SQRT fonksiyonu içinde negatif bir argüman belirtilmiş veya BCD argümanı negatiftir. | Eksen hareketi donar ve ekran "119 ILLEGAL ARGUMENT" göstererek yürütmeyi durdurur. | Kök Neden: Girdi değişkeni negatif bir sayı olarak değerlendirildi. Çözüm: Tabanın >= 0 olmasını sağlamak için hesaplamadan önce IF mantıksal ifadesini kullanarak değişkeni doğrulayın. |
| Fanuc Alarm 112 | Sıfıra bölme teşebbüs edilmiş veya tam 90 derecede bir tanjant işlemi (TAN[90.0]) komut verilmiştir. | Makine çevrim ortasında durur ve operatör konsolunda "112 DIVIDED BY ZERO" hatası verir. | Kök Neden: Bir değişken paydası sıfır olarak çözüldü veya TAN 90.0°'de çalıştırıldı.Çözüm: İşleme başlamadan önce paydanın sıfır olmadığını ve açının 90.0° olmadığını doğrulamak için koşullu kontrol ekleyin. |
| Fanuc Alarm 118 | Bir Custom Macro B matematiksel formülü içindeki parantez yerleştirme derinliği beş seviyeyi aşmıştır. | Program yürütmesi, hatalı blokta anında başarısız olur ve "118 PARENTHESIS NESTING ERROR" gösterilir. | Kök Neden: Formül 5'ten fazla iç içe geçmiş köşeli parantez çifti ([]) kullanmaktadır.Çözüm: Ara değişkenler kullanarak hesaplamayı birden fazla satıra bölüp denklemi basitleştirin. |
| Siemens Alarm 1019 | İşlemcinin FPU'su, ölümcül bir hesaplama hatası (örn. negatif SQRT argümanı veya sıfıra bölme) nedeniyle bir istisna tetikler. | Yürütme durur, "Alarm 1019: Floating point arithmetic error" hatası verir ve NC kanalının sıfırlanmasını gerektirir. | Kök Neden: Çalışma zamanında matematiksel bir imkansızlık değerlendirildi. Çözüm: Günlük dosyalarını kontrol edin ( <Ctrl>+<Alt>+<D> ile alınır) ve negatif karekök girdilerini veya sıfıra bölmeyi önlemek için kontrol ifadeleri ekleyin. |
| Mitsubishi P282 | Aritmetik bir işlem, SQRT'ye negatif bir değer geçirilmesi veya sıfıra bölünmesi gibi matematiksel olarak başarısız olur. | CNC anında durur ve ekranda "Program Error (P282)" yanıp söner. | Kök Neden: Makro yürütme sırasında matematik ihlali (negatif karekök tabanı veya sıfıra bölme). Çözüm: Değerlerin geçerli matematiksel sınırlar içinde olduğundan emin olmak için aralık kontrollerini kullanarak girdi parametrelerini doğrulayın. |
| Mitsubishi P225 | Köşeli parantez ] kapatılmadan bloğa satır sonu eklenmiş veya parantez içinde geçersiz bir karakter bulunmuştur. | Ayrıştırıcı bloğu reddeder, "Program Error (P225)" hatası verir ve çevrim başlangıcını engeller. | Kök Neden: Sözdizimi hatası veya eksik kapatma parantezi. Çözüm: Parantez eşleşmesini doğrulayın ve her açılan [ parantezinin eşleşen bir kapatma ] parantezine sahip olduğundan emin olun. |
Uygulama Notu
Siemens kontrolörlerde STOPRE ön işlemci durdurma (preprocessing stop) komutunun atlanması veya Fanuc/Mitsubishi sistemlerinde negatif bir karekök tabanı gibi geçersiz matematiksel argümanların doğrulanmaması, tezgahın çevrim ortasında donarak Alarm 119, Alarm 1019 veya P282 kodlarıyla durmasına yol açar; bu durum takımı veya iş milini doğrudan döner aynaya, puntaya veya sıkma pabuçlarına (clamp) yönlendirerek yüksek maliyetli mekanik hasara ve iş parçasının anında hurda olmasına neden olur. LookAhead önbellek kod çözücüsü, hareket bloklarını fiziksel eksen hareketlerinden çok önce yorumladığından, dinamik hesaplamalarda güncel olmayan değişkenlerin kullanılması koordinat uyuşmazlığı yaratır. Üretim öncesinde Fanuc parametresi 6004#1 (MFZ) değerini 1 yaparak trigonometrik underflow gürültüsünü sıfıra eşitlemek ve Siemens'te TRUNC() kullanarak 64-bit IEEE kayan nokta sapmasını temizlemek, plansız duruş sürelerinin en yaygın kaynağını ortadan kaldırır. Bu parametrelerin ve mantıksal kontrollerin üretim öncesinde doğru yapılandırılması, parça hassasiyetini korurken duruş süresi kayıplarını en aza indirir ve doğrudan hurda oranını düşürerek atölye verimliliğini maksimize eder.
İlişkili Komut Ağı
TAN/ATAN2: Açısal hesaplamaları ve bölge konumlarını çözmek içinSINveCOSile birlikte kullanılır.ABS:SQRTfonksiyonuna negatif sayılar aktarılmasını önlemek için bir ifadenin mutlak değerini değerlendirir.ROUND/TRUNC: Kesin mantıksal karşılaştırmalar yapmadan önce kayan nokta hassasiyet anomalilerini ve ondalık kaymayı düzeltir.STOPRE: Dinamik matematiksel değişkenleri aktif eksen hareketiyle senkronize etmek için bir Siemens ön işlemci durdurmasını zorunlu kılar.POW/POT: Desteklenen kontrolör mimarilerinde yerel üstel güç hesaplamalarına olanak tanır.
Sonuç
CNC makrolarında aritmetik fonksiyonları uygularken katı bir matematiksel denetim mantığı kurmak, yüksek parça maliyetlerini ve tezgah duruş sürelerini önlemek için zorunludur. Tüm trigonometrik değişkenleri IF koşullarıyla doğrulamak, Siemens kontrollerinde STOPRE kullanarak ön işlemci tamponunu senkronize etmek ve Fanuc/Mitsubishi'de alt seviye parametreleri (örneğin 6004#1) doğru ayarlamak, beklenmedik koordinat sıçramalarını engelleyecektir. Bu koruyucu önlemlerin standart bir programlama kuralı olarak benimsenmesi, iş mili ve taret çarpmalarını tamamen ortadan kaldırarak plansız duruş süresi maliyetlerini düşürür ve hurda oranını en aza indirerek karlılığı artırır.
Sıkça Sorulan Sorular
CNC makrolarında SQRT (karekök) hesaplarken oluşan alarmları ve hurda parça riskini nasıl önlerim?
Karekök fonksiyonuna (SQRT) negatif bir değer gönderildiğinde tezgah Alarm 119 veya P282 hatasıyla aniden durur, bu da iş milinin parça üzerinde donarak iz bırakmasına ve iş parçasının çöpe gitmesine yol açar. Bu riski önlemek için, hesaplanacak değeri her zaman mutlak değer (ABS) fonksiyonundan geçirin ve tam üretime başlamadan önce mutlaka bir kuru çalıştırma gerçekleştirin. Hesaplamadan hemen önce #100 = SQRT[ABS[#110]] yazarak veya formül öncesinde IF [#110 LT 0] GOTO 9000 şeklinde mantıksal yönlendirmeyle tezgahın plansız duruş süresini sıfıra indirin.
Siemens kontrolörlerde LookAhead kaynaklı eksen sapmalarını ve plansız duruş sürelerini nasıl engellerim?
LookAhead önbelleği hareket satırlarını önceden okur ve henüz aktif döngülerle kesinleşmemiş makro değişkenlerini kullanarak eksen sapmalarına yol açabilir. Bunu önlemek için, dinamik matematiksel hesaplamalar ile fiziksel eksen hareketlerini senkronize eden bir ön işlemci durdurma (preprocessing stop) komutu kullanmalısınız. Koordinat hesaplaması yapan R parametrelerinden hemen sonra ve G1/G2/G3 hareket satırından hemen önce boş bir satıra tek başına STOPRE yazarak preprocessor senkronizasyonunu sağlayın.
Fanuc ve Mitsubishi makrolarında kayan nokta yuvarlama hatalarının (floating-point dust) parça hassasiyetini bozmasını nasıl önlerim?
64-bit IEEE standardında yapılan kayan nokta hesaplamaları, tam sayılar yerine mikroskobik ondalık artıklar üretir ve bu durum mantıksal eşitlik karşılaştırmalarının (örneğin [#100 EQ 10.0]) başarısız olmasına yol açar. Parça hassasiyetini ve çevrim doğruluğunu korumak için, karşılaştırmalardan önce değerleri yuvarlama fonksiyonlarından geçirmeli veya underflow normalizasyon parametrelerini açmalısınız. Makro içindeki mantıksal karşılaştırmalardan önce ROUND veya FIX fonksiyonunu kullanarak değerleri belirli bir ondalık basamağa yuvarlayın ve Fanuc kontrol ünitesinde 6004#1 parametresini 1 olarak ayarlayın.
Hala çözülmedi mi?
Bu makaledeki konuyu AI asistana doğal dilde sorabilirsin. Doğrulanmış kaynaklardan, halüsinasyon yok.

- CNC CARE Co-Founder (May 2025 - Present)
- Mitsubishi Electric NC Sales & Service Section Manager (2008 - 2025)
- Reis CNC Service Engineer (2003 - 2005)
- Ören Kalıp CNC Mold Line Team Leader (1999 - 2002)
25 yılı aşkın CNC makine sektörü deneyimimle, marka-bağımsız danışmanlık, mühendislik ve orijinal yedek parça hizmetleri sunduğumuz CNC CARE'in kurucu ortağı olarak faaliyetlerime devam ediyorum.
İlgili Makaleler
Bu konuyla ilgili diğer makaleler
Fanuc 3D Girişim Önleme Kılavuzu: 10930 Parametre Kurulumu
Fanuc CNC 3D Girişim Önleme sistemini kurun. 10930 parametre ayarlarını öğrenin, PS0492 alarmını giderin ve iş parçası hurda oranını kalıcı olarak düşürün.
Fanuc Custom Macro Parametreleri 0932 & 8135 Ayar Kılavuzu
Fanuc CNC'de custom macro etkinleştirme parametreleri 0932 ve 8135 ayarlarını öğrenin. Alarm 113, 114 ve 123 hatalarını önleyerek hurda oranını düşürün.
Fanuc CNC Takım Ömrü Yönetimi Parametreleri Ayar Kılavuzu
Fanuc CNC'de 6800, 6805 ve 6810 takım ömrü parametrelerini ayarlamayı öğrenin. Alarm 156 ve 159 hatalarını önleyerek insansız ve güvenli üretimi etkinleştirin.
Fanuc Rijit Kılavuz Çekme İvmelenme Parametreleri Ayar Kılavuzu
Fanuc CNC kontrolörlerinde 11420#0 parametresi ile rijit kılavuz çekme ivmelenmesini optimize edin, duruş sürelerini azaltın ve SP0741 alarmını kalıcı olarak çözün.