CNC Path Analyzer

Subprogram M98/M99: tulis bentuk berulang sekali dan panggil berkali-kali

Menjelaskan dengan contoh struktur pemanggilan subprogram menggunakan M98 dan kembali dengan M99, nomor P dan jumlah pengulangan L, cara membuat slot yang sama di beberapa posisi dengan subprogram inkremental, serta jenis kesalahan pemanggilan.

Mengapa menggunakan subprogram?

Memotong slot yang sama di lima tempat atau mengerjakan kontur yang sama beberapa kali pada kedalaman berbeda adalah hal umum. Menyalin dan menempelkan blok yang sama setiap kali membuat program panjang, dan memperbaiki satu dimensi berarti memperbaiki kelima tempat. Melewatkan satu saja akan menghasilkan benda kerja cacat karena salah satu dari lima bagian memiliki ukuran berbeda.

Subprogram memisahkan bagian berulang menjadi program tersendiri yang dipanggil program utama saat diperlukan. Bentuk hanya dikelola di satu tempat, dan program utama cukup menyatakan "di mana dan berapa kali".

Memanggil dan kembali

PerintahArtiContoh
M98 P_Memanggil program dengan nomor P (nomor O)M98 P3100
L_ atau digit awal PJumlah pengulanganL3 → 3 kali
M99Kembali ke baris setelah blok pemanggilBaris terakhir O3100
M99 P_Kembali, tetapi melompat ke nomor urut yang ditentukanDigunakan untuk struktur percabangan dan loop

Contoh: tiga slot dengan subprogram inkremental

Subprogram O3100 ditulis dalam mode inkremental G91. Dari posisi saat ini, pahat turun 6 mm, memotong slot 30 mm pada X, naik 6 mm, lalu bergerak 10 mm pada Y sambil kembali ke X awal. Posisi akhir menjadi awal pengulangan berikutnya, sehingga mengulangi pemanggilan yang sama tiga kali menghasilkan tiga slot berjarak 10 mm.

Memanggil subprogram O3100 tiga kali dengan L3 untuk memotong tiga slot berjarak 10 mm

O3007
T1 M6
G21 G90 G17 G94
G54
S3000 M03
G00 X0. Y0. Z5.
M98 P3100 L3
G90 G00 Z50.
M30
O3100
G91 G01 Z-6. F100
X30. F300
G00 Z6.
X-30. Y10.
M99
Memanggil subprogram O3100 tiga kali dengan L3 untuk memotong tiga slot berjarak 10 mm — XY jalurXY
Garis putus-putus biru muda adalah gerak cepat G00; garis jingga penuh adalah gerak potong. Busur ditampilkan sebagai kurva statis hasil perhitungan.

Gambar di atas adalah hasil CNC Path Analyzer untuk program ini (cepat 8 segmen, pemotongan linear 6 segmen).

Aturan untuk program utama

  • Pulihkan mode: subprogram berakhir dalam G91, jadi perintahkan G90 lagi dalam program utama tepat setelah kembali. G90 G00 Z50. pada contoh melakukan hal ini. Menulis hanya Z50. tanpa G90 ditafsirkan sebagai "50 mm di atas posisi saat ini", bukan "ketinggian 50". Di sini gerakannya naik sehingga tidak terlalu berbahaya, tetapi pada blok pendekatan pahat berikutnya hal itu dapat menyebabkan tabrakan.
  • Posisi awal: subprogram inkremental memberikan hasil berbeda tergantung posisi saat dipanggil. Perintahkan posisi awal dengan jelas dalam koordinat absolut tepat sebelum pemanggilan.
  • Status kompensasi dan siklus: pemanggilan saat kompensasi radius pahat atau siklus tetap aktif dapat membuat gerakan dalam subprogram berperilaku tak terduga. Rapikan status modal dengan sengaja sebelum dan sesudah pemanggilan.
  • Posisi M30: jika subprogram ditempatkan dalam file yang sama, letakkan setelah M30 program utama. Program utama berakhir pada M30 sehingga subprogram tidak dijalankan secara tidak sengaja.

Jumlah pengulangan dan perhitungan waktu siklus

Satu kali subprogram memotong Z 6 mm (F100) dan X 30 mm (F300): 3.6 detik dan 6 detik, sehingga 9.6 detik per eksekusi dan sekitar 29 detik pemotongan murni untuk tiga eksekusi. Mengubah jumlah pengulangan menjadi L5 hanya mengubah satu karakter program utama dan menghasilkan lima slot serta sekitar 48 detik pemotongan. Ini menunjukkan bagaimana struktur pengulangan menyederhanakan perubahan program dan perkiraan waktu. Metode perhitungannya dibahas lebih rinci dalam perhitungan waktu pemesinan.

Jenis kesalahan pemanggilan

Di dalam alat, program yang dipanggil dari file terpisah dapat dimuat bersama program utama, dan nomor P ditautkan ke nomor O di dalam file, bukan ke nama file.

KesalahanPenyebabYang ditampilkan CNC Path Analyzer
Program yang dipanggil tidak ditemukanTidak ada program dengan nomor O yang cocok dengan PBaris pemanggilan dan nomor yang tidak ditemukan
Nomor O duplikatDua program atau lebih memiliki nomor yang samaPeringatan bahwa program yang digunakan tidak dapat ditentukan
M99 tidak adaSubprogram tidak berakhir dan berlanjut ke program berikutnyaPeringatan tidak ada perintah kembali
Pemanggilan tanpa akhirProgram terus saling memanggil, atau sebuah program memanggil dirinya sendiriPerhitungan berhenti pada batas rekursi atau eksekusi

Pertanyaan umum

Bisakah subprogram memanggil subprogram lain?
Bisa. Ini disebut nesting, dan jumlah level yang diizinkan (biasanya empat atau lebih) berbeda menurut kontrol. Semakin dalam nesting, semakin sulit melacak status modal, jadi disarankan tetap dalam dua level.
Apa perbedaan M98 dengan pemanggilan makro G65?
G65 adalah pemanggilan makro yang meneruskan argumen (A, B, C…) sebagai variabel. Perintah ini digunakan untuk memanggil bentuk yang sama dengan dimensi berbeda, sedangkan M98 mengulangi operasi yang sama tanpa argumen.

Langkah berikutnya

Periksa jalur di CNC Path Analyzer