Selasa, 25 Juni 2013

MATLAB, Model-driven dan pembangkitan kode

Ada pekerjaan menarik di Jerman yang terkait dengan dunia otomotif dan kemampuan pemrograman. Pekerjaan ini biasanya bernama
  • Systemingenieur (system engineer)
  • Softwareentwickler (software developer)
  • Funktionentwickler (function developer)
  • Embedded softwareentwickler (embedded software developer)
  • Versuchingenieur/Testingenieur (test engineer)
Pekerjaan ini biasanya berhubungan dengan pemrograman pada ECU (electronic controller unit/ Steuergerät) kendaraan bermotor. Pada ECU, biasanya terdapat mikrokontroller keluarga Freescale (dulu bernama Motorola) dan tentu saja chip untuk RAM dan ROM eksternal serta chip antarmuka.


ECU/Steuergerät, dari Carperformance shop


Pekerjaan mendesain ECU biasanya disebut Hardwareentwickler (Hardware developer). Perusahaan terkenal di bidang ini adalah Continental dan Bosch di Jerman serta Magneti Marelli di Italia. Berhubung aku tidak berpengalaman mengutak-atik ECU dari perusahaan lain, maka kusebut cuma tiga perusahaan tadi.

***

Aku ingin membicarakan penggunaan MATLAB dalam merancang perangkat lunak (software developing). Zaman sekarang ada istilah "model-driven"(wiki:en,de,en). Mereka yang merancang software dengan filosofi V-model (wiki:en,de,en) akan memulai mendesain dari sistem yang besar, lalu subsistem yang lebih kecil, hingga komponen dari sistem tadi lebih detail. Seorang system engineer akan mendesain keseluruhan sistem. Seorang software developer akan mendesain software yang menyusun sistem tadi. Seorang function developer akan mendesain fungsi-fungsi yang berguna dalam software yang menyusun sistem. Setelah itu, verifikasinya akan dilakukan dari hal yang detail ke hal yang besar.


V-Model, dari testingexcellence


Dari pengalamanku bergabung dalam suatu tim yang mengurus VVT (variable valve timing, wiki:en,de) pada silinder mobil, system engineer mendesain keseluruhan sistem VVT ini. Sistem ini dimodelkan dengan MATLAB Simulink. Pada Simulink, terdapat diagram blok. Ketika blok tersebut diklik, di dalamnya terdapat diagram blok yang lebih detail, biasa disebut sebagai modul. Semakin diklik, semakin terlihat komponen yang semakin kecil. Inilah pekerjaan software dan function developer.

Model MATLAB tersebut kemudian diubah menjadi bahasa lain yang lebih dekat ke mesin, misalnya C, hingga akhirnya menjadi hex dan binary yang siap di-flash ke mikrokontroler ECU. Proses ini dinamakan pembangkitan kode (code generation). Untuk membuat model MATLAB, yang biasa digunakan adalah Simulink dan Stateflow. Lalu untuk pembangkitan kode, kami menggunakan Targetlink dari dSPACE. Sebetulnya MATLAB memiliki Embedded Coder untuk membangkitkan kode. Akan tetapi tim kami sudah menggunakan Targetlink, yang memiliki kemampuan gabungan Simulink, Stateflow dan pembangkitan kode sekaligus.

Berhubung sistem yang didesain bersifat embedded, ada kode teks berupa M script, C header dan C source code yang memiliki nama variable yang tidak boleh bertentangan dengan model Simulink. C header dan C source code berisi nama variabel dan alamat memori sesuai permintaan customer. Setelah semua sesuai, klik next-next-next, maka terbangkitlah kode C, lalu akhirnya kompilasi akan menghasilkan file binary dan hex.

Pada saat mengetes model, para software dan function developer menggunakan Model-in-the-Loop (MiL). Input dan output dites agar sesuai keinginan. Pada saat kode C telah dibangkitkan, mereka mengetes dengan Software-in-the-Loop (SiL). MiL dan SiL biasanya hanya program untuk mengambil data dan menampilkan grafik, tabel dan angka.

Setelah kode hex dan binary telah terkompilasi, mikrokontroler pada  ECU harus di-flash. ECU dicolok ke suatu alat Flash yang tersambung ke komputer dengan USB. Pengalamanku, perangkat yang digunakan adalah ETAS INCA, yang terdiri dari hardware dan software. Dengan INCA, ECU bisa diisi binary dan komputer bisa menampilkan nama variabel yang ada pada hex di INCA. Setelah ECU telah terisi software, tes yang dilakukan adalah Hardware-in-the-Loop (HiL). Sebagai perangkat keras, ECU dites dengan HiL.

Jika lulus HiL test, ECU dites dengan katup (valve) sesungguhnya. Kalau lulus tes ini, ECU dites dengan ditaruh di mesin mobil. Kalau lulus tes ini, ECU ditaruh di kendaraan bermotor (mobil), dan dimulailah test-drive. Kira-kira begitulah yang terjadi pada model-driven engineering pada dunia automotive. Terdapat banyak perusahaan besar dan kecil yang mendesain software seperti ini, termasuk perusahaan yang mendesain hardware ECU tadi.

***

Di zaman sekarang, dalam membuat suatu mobil, banyak perusahaan terlibat. Ada perusahaan yang mendesain bentuk mobil lalu perusahaan lain menguji aerodinamika serta menghitung struktur dengan finite element method (FEM). Bagaimana kadar bensin dan udara masuk silinder sekarang tergantung software. Juga bagaimana sirkulasi udara, temperatur, musik, dll dalam mobil juga tergantung software. Masing-masing software bisa disubkontrakkan ke perusahaan yang berbeda-beda. Untuk menguji software juga bisa diserahkan ke perusahaan lain.

Akibat banyak perusahaan yang terlibat, alamat memori pada ECU harus dialokasikan dengan baik untuk masing-masing perusahaan. Nama dan alamat variabel dibuka seperlunya. Relasi antar variabel tidak diketahui semua. Bagaimana keseluruhan sistem bekerja adalah resep rahasia dari merk seperti BMW, Toyota, Fiat, Chrysler, VW, dll. Perusahaan yang mendesain software hanya tahu beberapa bagian. Dari pengalamanku, tim kami hanya memanfaatkan 3000 variabel dari 17000.

Dengan keterlibatan banyak perusahaan, termasuk pekerjanya, baik yang engineer maupun yang tukang pada rantai manufaktur, nilai ekonomi industri otomotif di Jerman cukup besar. Industri ini memiliki jejaring juga dengan industri karet (ban), sekrup, baja, dll, termasuk jasa outsourcing tenaga kerja dan tenaga ahli. Ketika terjadi krisis ekonomi USA dan Eropa, Jerman mengalami gangguan permintaan (demand) kendaraan bermotor. Akibatnya banyak perusahaan yang terlibat dalam dunia otomotif melakukan penghematan. Efeknya adalah pengurangan tenaga kerja. Pegawai outsourcing tidak diperpanjang kontraknya. Pemecatan dipermudah dan penerimaan pegawai diperketat. (Untuk Indonesia, jika satu industri goyah, industri dan jasa lainnya juga bisa terkena dampaknya.)

Kini aku mencari pekerjaan Softwareentwickler atau Versuchingenieur yang berhubungan dengan model-driven engineering. Tidak harus otomotif, bisa juga urusan aerospace maupun naval. Untuk sementara, aku membatasi pencarian kerja di daerah yang dekat Bremen karena aku sudah lelah pindahan terlalu jauh. Niedersachsen adalah tempat VW dan perusahaan-perusahaan subkontraknya. Hamburg dan Bremen terkenal dengan aerospace dan naval, baik sipil maupun militer. Sayang sekali, aku belum punya Polizeiführung (surat kelakuan baik) dan VS-Berechtigung (security level) untuk pekerjaan litbang militer.


Bremen, 24 Juni 2013

Tidak ada komentar:

Posting Komentar