## PENGEMBANGAN PROGRAM APLIKASI ENHANCED MACHINE CONTROL DENGAN PYTHON UNTUK METODE INTERPOLASI NEWTON
Alexander A S Gunawan 1 ; Jimmy Linggarjati 2
1 Mathematics & Statistics Department, School of Computer Science, Binus University Jln. K.H. Syahdan No. 9, Palmerah, Jakarta Barat 11480 aagung@binus.edu
2 Computer Engineering Department, Faculty of Engineering, Binus University Jln. K.H. Syahdan No. 9, Palmerah, Jakarta Barat 11480 jimmyl@binus.edu

## ABSTRACT
Nowadays, one of industrial main problems is the flexibility of machines to be customized since they are designed based on certain standard. This research develops software for CNC (Computer Numerically Controlled) machine in order to execute the Newton Interpolation using Python. The platform used in the CNC machine is EMC (Enhanced Machine Control) and GUI (Graphical User Interface) AXIS on the operating system Linux Ubuntu. The Newton interpolation is used to create a curve based on several point determined by user. By converting this curve into G-Code, which could be read by CNC machine, the machine can move according to curve designed by user. This research is an initial study to customize the CNC machine and will continue to fulfill the user needs. This research obtained a program that is able to run well up to 4 input pairs. The higher number inputs will cause the oscillation in the interpolation curve.
Keywords: CNC, EMC, AXIS, Newton interpolation, G-Code, Python

## ABSTRAK
Masalah yang dihadapi dunia industri saat ini ialah mesin yang kurang fleksibel untuk diubahsesuaikan karena dirancang oleh manufaktur yang berdasarkan standar tertentu. Penelitian ini mencoba untuk mengembangkan program untuk mesin CNC (Computer Numerically Controlled) agar mesin tersebut dapat menjalankan metode interpolasi Newton menggunakan bahasa pemrograman Python. Platform yang digunakan dalam mesin CNC ini adalah perangkat lunak EMC (Enhanced Machine Control) dengan menggunakan GUI (Graphical User Interface) AXIS pada sistem operasi Linux Ubuntu. Metode interpolasi Newton digunakan untuk membentuk suatu kurva dengan sejumlah titik tertentu. Dengan mengubah kurva tersebut menjadi G-Code yang dapat dibaca oleh mesin CNC, mesin tersebut dapat bergerak mengikuti kurva yang sudah dibuat pada perangkat lunak. Penelitian ini merupakan contoh bagaimana cara untuk mengubahsesuaikan mesin CNC sehingga dapat sesuai dengan kebutuhan pemakai. Hasil pengujian dapat berjalan dengan baik sampai dengan empat pasang data masukan dan untuk masukan yang lebih banyak akan menimbulkan osilasi pada kurva hasil interpolasi.
Kata kunci: CNC, EMC, AXIS, interpolasi Newton, G-Code, Python

## PENDAHULUAN
Awal lahirnya mesin CNC ( Computer Numerically Controlled ) bermula dari 1952 yang dikembangkan oleh John Pearseon dari Institut Teknologi Massachusetts, atas nama Angkatan Udara Amerika Serikat (Smid,P, 2003). Sekarang ini, fungsi mesin CNC semakin berkembang untuk menjawab tantangan dunia manufaktur yang semakin modern. Selain itu ketelitian mesin CNC telah dapat mencapai 20 mikron (0.02 milimeter) atau bahkan bisa lebih  presisi. Dengan adanya mesin CNC yang dilengkapi perangkat lunak CAM ( Computer Aided Manufacturing ), seorang operator cukup membuat gambar kerja dari benda yang akan dibuat dengan mesin CNC pada PC ( Personal Computer ). Hasil gambar kerja dapat dieksekusi secara simulasi untuk melihat pelaksanaan pengerjaan benda kerja di mesin CNC melalui layar monitor. Jika hasil eksekusi simulasi sudah sesuai dengan yang diharapkan, program dilanjutkan dengan eksekusi program mesin. Dengan cara ini, waktu yang diperlukan untuk menyelesaikan pekerjaan yang menggunakan model serupa menjadi jauh lebih cepat dan efisien.
Dalam Starovešk, et al. (2009), dijelaskan pemanfaatan sistem kontrol arsitektur terbuka berbasis Linux (OAC) sebagai platform untuk Mesin CNC Milling . Sedangkan di penelitian ini, mesin CNC yang digunakan juga dirakit sendiri, dengan menggunakan perangkat lunak open source EMC ( Enhanced Machine Control ) dengan menggunakan GUI ( Graphical User Interface ) AXIS pada sistem operasi Linux Ubuntu. Penelitian ini mencoba untuk mengembangkan program untuk metode interpolasi Newton menggunakan bahasa pemrograman Python. Hal ini dimaksudkan sebagai contoh bahwa mesin CNC tersebut dapat dikustomisasi oleh pengguna untuk berbagai keperluan yang spesifik sehingga tidak tergantung lagi dengan perangkat lunak standar yang ada di pasar.

## METODE

## EMC(Enhanced Machine Controller)
EMC( Enhanced Machine Controller ) adalah suatu perangkat lunak komputer untuk mengontrol mesin seperti milling machines , bubut, plasma cutters , cutting machines , robots , hexapods , dan lain lain. EMC adalah perangkat lunak Open Source berlisensi di bawah GNU General Public License dan GNU Lesser General Public License (GPL dan LGPL).
EMC2 merupakan pengembangan dari perangkat lunak EMC. Ada empat komponen utama untuk perangkat lunak EMC2, yaitu: kontroler gerak, kontroler I/O diskrit, modul untuk mengkoordinasi kontroler, dan antarmuka pengguna grafis ( Getting Started Guide , 2011). Selain itu ada fasilitas disebut HAL ( Hardware Abstraction Layer ) yang memungkinkan penyesuaian konfigurasi EMC2 tanpa perlu mengkompilasi ulang.
EMC2 ini juga menyediakan: (1) beberapa antarmuka untuk pengguna grafis termasuk satu untuk layar sentuh; (2) interpreter untuk "G-Code" (RS-274 alat mesin bahasa pemrograman); (3) gerakan sistem mesin secara realtime dengan tampilan-depan; (4) pengoperasian mesin elektronik tingkat rendah seperti sensor dan motor; (5) perangkat lunak PLC yang dapat diprogram dengan ladder diagram ; (6) kemudahan instalasi dengan CD-Live. Gambar 1 menunjukkan diagram blok sederhana yang menunjukkan sistem EMC2 untuk mesin 3-axis. Diagram ini menunjukkan sistem motor stepper . PC dengan Linux sebagai sistem operasinya, digunakan untuk mengendalikan drive stepper motor dengan mengirimkan sinyal melalui port printer (paralel). Sinyal-sinyal (pulsa) yang dikirim ini membuat drive stepper motor dapat bergerak.

## AXIS I

## A
interface
AXIS I menyesu kebutuha

## Bahasa
P bahasa  p perangka bahasa  p bahasa in yang lua dan Java

## G-Cod
G Bahasa i

## Interface
AXIS Interfa e pada EMC
Interface in uaikan bentu an pengguna a Pemrogr
Program apl pemrograma at lunak EM pemrograma ni mudah di as. Di sampi a.

## de
G-Code ada ini memakai
face merupak
C2 yang seca ni dapat dik uk tampilan a. Tampilan A raman Pyt
likasi untuk an Python 2 MC2-AXIS  y an dinamis y gunakan kar ing itu bahas alah bahasa p komputer se
Gambar 1. E
kan salah sat ra aktif dike konfigurasi n pada saat AXIS dapat d Gamba thon 2.6 metode int .6 (Ascher e yang berada yang mendu rena memilik sa Python in
pemrograma ebagai alat b EMC2 Contro
tu tampilan a embangkan o dengan me t menjalank dilihat pada g ar 2. AXIS In terpolasi Ne et al., 2005 di sistem op kung pemro ki susunan ta ni dapat diint
an mesin yan bantu penghu ComTec olled Machine
antar muka d oleh para pen enambahkan an program gambar 2 ber
terface. wton akan ). Dimana b perasi Linux ograman ber ata bahasa ya tegrasikan d
ng berkaitan ubung antara
dari EMC2. nggunanya (
Virtual  C m EMC2 su rikut ini:
dirancang  d bahasa ini a x Ubuntu. B orientasi obj ang jernih se dengan bahas
n erat denga a mesin dan p
AXIS adala ( User Manua Control Pane upaya sesuai
dengan meng akan dijalank Bahasa Pytho jek. Di sam erta memilik sa lain seper
an grafik da perangkat lu
ah default al , 2011). el untuk i dengan
ggunakan kan pada on adalah mping itu, ki pustaka rti C/C++
n vektor. unak yang
terdapat di komputer. Mesin akan mengikuti gerak alur dari vektor yang dituliskan dalam G-Code . Bahasa pemrograman G-Code ini ditulis dalam file dengan ekstensi .ngc ( Numerical G-Code ). Berikut adalah beberapa contoh bahasa G-Code disertai dengan fungsinya masing-masing:
Code Description G0 Rapid motion G1 Coordinated motion ("Straight feed") G2, G3 Coordinated helical motion ("Arc feed") G4 Dwell (no motion for P seconds) G38.2…G38.5   Straight probe G80 Cancel motion mode G81, G82 Drilling cycle without (with) dwell G83, G73 Peck and Chip-break drilling cycles G85, G89 Boring cycle without (with) dwell G33 Spindle-synchronized motion G33.1 Rigid tapping G76 Multiphase lathe threading cycle

## Spesifikasi Mesin CNC
Spesifikasi mesin CNC yang digunakan adalah sebagai berikut:
Minimum Track Width 0.5 mm Minimum Isolation Width               0.5 mm Minimum Drill Hole Diameter 0.6 mm Working Area (X/Y/Z) 500 mm x 400 mm x 50 mm Resolution 0.1 mm Travel speed (max) 200 mm per second X positioning system dc-servo motor Y/Z positioning system 5-phase stepper motors Dimensions (W x H x D)                600 mm x 500 mm x 1500 mm Weight 300 kg Power supply 220 V, 60 Hz/500 VA
Mesin CNC yang digunakan dapat dilihat pada Gambar 3 berikut ini:
Gambar 3. Mesin CNC.

## Interpo
J diketahu melewat aplikasi kombina Di mana D U Tabel 1 Beda Ter D 1 di atas

## Implem
U pembuat menghas Abstract CNC di
y a = 0 0
olasi Newt
Jika diberika ui bentuk atu ti pasangan t adalah interp
Interpolasi  N asi (x-x i ) dan a koefisien a 0 Dengan beda Untuk memp rbagi Di mana koe .

## mentasi Pr
Untuk impl tan Virtual  C silkan file .xm tion Layer ). dalam file
y a ∇ = 1 1 0 ton an sekumpul uran fungsiny titik – titik te polasi Newto
Newton men n didefinisika
0 , a 1 , …, a n d a terbagi ini, permudah pe efisien polino rogram lementasi pr Control Pane ml ; (2) meng Langkah ini axis_mm.ini
n x P ( n a = … 1
an berhingga ya, interpolas ersebut. Sala on (Kiusalaas
nggunakan  p an dengan: dapat dihitung koefisien po erhitungan, b om dalam in rogram apli el yang terin gkoneksikan i akan meng i agar memb
x x a x ( ( ) 0 − + + = … 2 = ∇ = ∇ = ∇ n n i i y y x y y n n y ∇ =
a pasangan t si polinom a ah satu interp s,J, 2010) pendekatan  f g dengan bed olinom dalam biasanya akan nterpolasi Ne ikasi ini m ntegrasi deng n PyVCP den ghasilkan file baca file .xm
x x a x x ( ) ( ) 1 1 1 − − + − … 1 1 1 1 − − − − − − ∇ − ∇ = − ∇ − ∇ − − n n n i i i i i i i i x x y x x y y i x x y y
titik - titik (x adalah jawab polasi polino fungsi polin da terbagi ( d m interpolasi n dibuat perh ewton adalah memerlukan gan AXIS m ngan EMC2 e .hal ; (3) m ml dan file .h
n n a x x x x ) )( ( 1 − − − 1 1 1 1 , 2 , , 2 , 1 − − − ∇ = = n n n x y i n … … ch Vol.3 No.
x 1 , y 1 ), (x 2 , y 2 ban untuk me om yang ser nomial yang divided differe Newton ada hitungan beri h nilai pada d beberapa  t melalui PyVC melalui fasil mengatur ulan hal yang tel
a x ) 2 2 , n …
2 ), . . . , (x n , embentuk ku ring digunak disusun dal ences ) beriku alah: ikut ini (Tabe diagonal dal tahapan ber CP. Langkah litas HAL ( H ng konfigura ah dibuat ya
y n ) tanpa urva yang an dalam lam deret (1) ut ini: (2)
(3) el 1). am Tabel ikut: (1) h ini akan Hardware asi mesin aitu pada
bagian PYVCP dan POSTGUI_HALFILE; (4) membuat program utama dalam bahasa Python, yang akan menghasilkan G-Code dalam file .ngc ; (5) mengeksekusi file .ngc dari AXIS Interface .

## HASIL DAN PEMBAHASAN

## Pembuatan Virtual Control Panel
Untuk membuat GUI Interpolasi Newton seperti pada Gambar 4 di bawah ini diperlukan pembuatan file .xml untuk mengatur tampilan tersebut. Dalam implementasi, file ini dinamai interpolasi.xml yang isinya dapat dilihat sebagai berikut:
<pyvcp> <labelframe text="PolNewton Interpolation"> <font>("Helvetica",9)</font> <hbox> <bd>3</bd> <button> <font>("Helvetica",11)</font> <width>6</width> <halpin>"newton"</halpin> <text>"Newton"</text> </button> <button> <font>("Helvetica",11)</font> <width>3</width> <halpin>"runn"</halpin> <text>"run"</text> </button> </hbox> </labelframe> </pyvcp>
Dalam file interpolasi.xml yang pertama kali membuat tag <pyvcp>. PyVCP (Python Virtual Control Panel) dibutuhkan untuk melakukan suatu virtualisasi panel di perangkat lunak EMC2. Bentuk virtualisasi panel ini dibutuhkan karena perangkat lunak EMC2 mengenal panel sebagai suatu objek yang telah dibuat pada perangkat lunak tersebut. Dalam implementasi ini, virtualisasi panel dengan PyVCP dipakai sebagai penghubung ( connector ) antara perangkat lunak EMC2 dengan program interpolasi yang telah dibuat.
Gambar 4. GUI interpolasi Newton.

## Mengkoneksikan PyVCP dengan HAL (Hardware Abstraction Layer)
HALUI (Hardware Abstraction Layer User Interface) adalah salah satu fungsi dalam perangkat lunak EMC2 yang digunakan untuk membuat suatu sinyal dan port sehingga GUI yang dibuat dengan PyVCP dapat terkoneksi dengan mesin CNC nya ( HAL Manual , 2011). Untuk itu dibuat file .hal untuk membuat koneksi sinyal melalui port tertentu pada perangkat lunak EMC2 ke mesin CNC dan dalam implementasi file ini dinamai interpolasipostgui.hal yang isinya dapat dilihat sebagai berikut:
net btn5 halui.mdi-command-04 <= pyvcp.newton net btn6 halui.mdi-command-05 <= pyvcp.runn

## Mengatur Ulang Konfigurasi Mesin CNC
Dalam perangkat lunak EMC2-Axis ini, terdapat file .ini ( initial ) dimana file tersebut akan menyimpan dan memanggil semua pengaturan yang ada untuk ditampilkan ketika perangkat lunak EMC2 dipanggil. File ini dapat diakses oleh pengguna dan dapat dimodifikasi sesuai dengan kebutuhan. Untuk implementasi interpolasi Newon, digunakan file axis_mm.ini dan dilakukan beberapa pengaturan pada file tersebut. Modifikasi file .ini terutama agar perangkat lunak EMC2 dapat membaca file .xml dan file .hal yang telah dibuat yaitu pada bagian PYVCP dan POSTGUI_HALFILE.

## Membuat Interpolasi Newton dengan Python
Metode interpolasi Newton diimplementasikan melalui program Python 2.6 dalam sistem operasi Linux Ubuntu, Perangkat lunak EMC2-Axis tersebut memanggil program Python dalam pengoperasiannya melalui fasilitas MDI commands pada HALUI ( Hardware Abstraction Layer ) dan mengeksekusi perintah G-Code M101…M199 ( User-defined M-codes ). Selain itu untuk membuat GUI pada Python untuk menginput data interpolasi digunakan Tkinter (Swipman,et al, 2010). Program interpolasi Newton yang dibuat dengan bahasa pemrograman Python akan menghasilkan file yang berupa G-Code (file .ngc ). Dalam implementasi, file Python dinamai M101 dan hasilnya berupa file 101.ngc yang isinya dapat dilihat sebagai berikut:
O101 Sub G20 F8.0 G1 X 0.000000 Y 0.000000 (Koordinat pada G-Code tergantung kurva yang dibentuk)
G1 X 1.000000 Y 1.000000
O101 Endsub M2

## Mengeksekusi File .ngc dari AXIS
Setelah file .ngc terbentuk maka file tersebut dapat dipanggil melalui fasilitas MDI commands pada HALUI ( Hardware Abstraction Layer ) dan mengeksekusi perintah G-Code O101…O199 ( Call Subroutines ). Untuk melakukan ini, pengguna cukup mengklik tombol Run yang sudah dibuat dengan PyVCP.

## PENUTUP
Untuk mempercepat proses kinerja dalam suatu industri yang memakai mesin CNC, seringkali dibutuhkan customization atau pengubahsesuaian mesin misalnya untuk membuat kurva berdasarkan beberapa data tertentu dan metode interpolasi Newton dapat memenuhi kebutuhan untuk membuat kurva ini. Dengan menggunakan perangkat lunak EMC2 yang bersifat terbuka sehingga dapat dimodifikasi dengan relatif mudah, dapat diimplementasi metode interpolasi Newton dengan bahasa pemrograman Python pada mesin CNC yang digunakan. Hasil pengujian interpolasi Newton pada mesin CNC telah dapat berjalan dengan baik sampai dengan 4 pasang data masukan dan untuk masukan yang lebih banyak akan menimbulkan osilasi pada kurva hasil interpolasi. Penelitian ini merupakan contoh bagaimana mesin CNC dapat dikustomisasi sehingga dapat memenuhi kebutuhan yang spesifik.

## DAFTAR PUSTAKA
Ascher, D., Martelli, A., Ravenscroft, A. (2005). Python Cookbook . California: O’Reilly.
Kiusalaas, Jaan. (2010). Numerical Methods in Engineering with Python .  Pennsylvania: Pennsylvania State University.
Smid, P. (2003). CNC Programming Handbook, (2nd edition). New York: Industrial Press.
Starovešk, T., Brezak, D., Udiljak, T., & Majeti ć , D. (2009). Implementation of a Linux-based CNC open control system . 12th International Scientific Conference on Production Engineering – CIM.
Swipman, John W. (2010). Tkinter 8.4 Reference: a GUI for Python . Mexico: New Mexico Tech.