Ana içeriğe geç
CNC.wiki

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.

Hakan Gündoğdu
Hakan Gündoğdu

CNC CARE Co-founder

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

ÖznitelikDetay
Komut KodlarıSIN, COS, SQRT, SQR, POT, POW
Modal GrubuMatematiksel / Aritmetik Makro Fonksiyonları (Non-modal)
Desteklenen MarkalarFanuc, Siemens, Mitsubishi
Kritik ParametrelerFanuc: 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ıtlamalarAçı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 SQRT fonksiyonuna 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#0 veya Mitsubishi #1273 gibi 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:

MarkaParametreAçıklamaGeçerli Ayarlar
Fanuc6004#1 (MFZ)Mikroskobik trigonometrik sonuçlerin underflow durumunu yönetir.0 = Underflow; 1 = 0'a normalize et
Fanuc6004#0 (NAT)Ters trigonometrik çıktı bölgesini belirler.0 = 0° ila 360.0°; 1 = -180.0° ila 180.0°
Fanuc6008#0 (F16)Eski hesaplama hassasiyeti uyumluluğunu kontrol eder.0 = Yeni; 1 = FS16i / FS0i-C uyumlu
SiemensR0 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, SQRTR kullanır; çift duyarlıklı (20/28 bayt) SINL, COSL, SQRTL kullanı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 (R0 ila R299) kayan nokta sayılarını saklar. Özel real değişkenleri DEF REAL kullanı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 #1273 ASIN çıkış aralığını değiştirir; Parametre #1259 dahili 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ı: POW fonksiyonu 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 / KonuFanucSiemensMitsubishi
Argüman Parantez SözdizimiKöş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ştirmeYaylı parantez () ile önceliklendirilir, katı bir düşük iç içe yerleştirme sınırı yokturMaksimum 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ırATAN2(,) 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 Anomalileri6004#1 (MFZ) parametresi <= 1.0*10^-8 hesaplamalarını 0'a normalize ederYerel 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üçlerYerel 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, #1 ve #2 değişkenlerinin karelerinin toplamının karekökünü hesaplayarak sonucu #100 değişkenine atar. Eğer #1 veya #2 negatif 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ç #101 değişkenine atanır.
  • Blok 3: Değişken #3'ün (derece cinsinden değerlendirilen) kosinüsü hesaplanır ve #101 içindeki değere eklenir. Nihai toplam #102 değ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: ATAN2 fonksiyonu, 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 parametre R40'ta saklar.
  • Blok 2: Kontrolör, R1 ve R2 parametrelerinin karelerinin toplamının karekökünü hesaplayarak sonucu parametre R15'te saklar.
  • Blok 3: STOPRE komutu, 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 R5 parametresinin 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 R1 ile R2'yi çarpar (standart operatör önceliği nedeniyle), ardından R3'ü ekleyerek sonucu parametre R14'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 #501 değişkeninde saklanır.
  • Blok 2: Kontrolör, 10.0 ve 20.0'nin karelerinin toplamının karekökünü hesaplayarak sonucu #573 değişkenine atar.
  • Blok 3: Kontrolör, en içtekinden başlayarak yuvalanmış parantezleri değerlendirir: #113 ve #114'ü toplar, #115 ile çarpar, sinüsünü alır, #111 ve #112 farkı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 POW fonksiyonu kullanılarak 3.5 kuvvetine yükseltilir ve sonuç #107 değişkenine atanır.

Hata Analizi

Alarm KoduTetikleyiciOperatör BelirtisiKök Neden / Çözüm
Fanuc Alarm 119Bir 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 112Sı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 118Bir 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 P282Aritmetik 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 P225Köş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çin SIN ve COS ile birlikte kullanılır.
  • ABS: SQRT fonksiyonuna 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.

AI Asistana Sor
Hakan Gündoğdu
Hakan Gündoğdu
  • 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