05 March 2017
09 July 2016
Simulasi tanki
Pengantar
Yang dimaksud simulasi tanki di sini adalah menggunakan model matematika untuk mengetahui dinamika ketinggian air di dalam tanki ketika debit air masukan berubah-rubah. Model matematika diturunkan dari sebuah tanki terbuka dengan satu pipa keluaran (Gb. 1) menggunakan persamaan kesetimbangan massa dan hukum Bernoulli.
Gambar 1. Tangki tunggal terbuka dengan satu pipa keluaran
Asumsi
Dalam menurunkan model tanki Gb. 1, sejumlah asumsi dipakai yaitu:
- Luas penampang di titik 2 (A2) jauh lebih besar dari luas penampang aliran fluida di titik 1 (A1), sehingga diasumsikan kecepatan fluida di 1 bisa diabaikan (v1 = 0).
- Titik 2 berada pada ketinggian 0 m dari tanah, sehingga h2 = 0 m.
- Debit fluida di titik 2 (qo) tidak dipengaruhi oleh gaya gesek fluida dengan pipa.
Model dinamika level tanki
Model dinamika tanki terdiri dari persamaan aliran debit output fluida dan persamaan ketinggian fluida di dalam tanki.
Debit output
Persamaan untuk debit output diturunkan menggunakan persamaan Bernoulli di dua titik, yaitu titik 1 dan titik 2 pada Gb. 1. Persamaan tersebut adalah
Berdasarkan asumsi no. 1, kecepatan fluida di titik 2 dapat diabaikan dibandingkan dengan kecepatan fluida di titik 1. Demikian juga, tekanan di titik 1 adalah sama dengan tekanan di titik 2, yaitu tekanan udara luar (p0). Berdasarkan asumsi no 2 dan 3, maka persamaan 1 dapat ditulis sebagai berikut:
Dengan demikian, debit output tangki adalah: ,
dimana ao, g, dan h berturut-turut adalah luas penampang output, percepatan gravitasi, dan ketinggian permukaan air dari dasar tanki.
Ketinggian fluida di tanki
Berdasarkan Gb. 1, maka perubahan massa fluida yang terjadi di dalam tanki (dM/dt) adalah sama dengan perubahan jumlah fluida yang masuk (dMi/dt) dikurangi yang keluar tanki (dMo/dt), atau jika ditulis dalam bentuk persamaan adalah:
Karena hanya ada satu jenis fluida (rho sama) dan tidak ada pemampatan, maka persamaan 2 dapat disederhanakan menjadi:
Karena kecepatan perubahan volume fluida per detik adalah debit fluida dan volume tangki adalah luas penampang tangki kali tinggi tanki, maka persamaan 3 jika ditulis ulang dalam bentuk debit akan menjadi:
Persamaan 4 menjadi persamaan yang akan digunakan dalam aplikasi simulink untuk mensimulasikan dinamika ketinggian fluida di dalam tanki Gb. 1.
Model simulink
Salah satu implementasi simulink dari persamaan 4 dapat dilihat pada Gb. 2 berikut.
Gambar 2. Aplikasi simulink untuk persamaan 4
Pada Gb. 2, aplikasi simulink menggunakan komponen-komponen sebagaimana tersebut di Tabel 1.
Tabel 1. Komponen simulink pada Gb. 2.
| No. | Nama Komponen | Tempat | Parameter | Fungsi |
| 1. | DDE Source | lihat: excel-DDE | DDE Service: ‘excel’ DDE Topic: ‘tank_2.xlsx’ DDE Item: ‘r2c1’ | membaca data dari sel excel |
| 2. | DDE Sink | idem | DDE Service: ‘excel’ DDE Topic: ‘tank_2.xlsx’ DDE Item: ‘r2c2’ | menulis data ke sel excel |
| 3. | Add | Simulink –> math operations | List of signs: +- | melakukan operasi pengurangan |
| 4. | Gain | Simulink –> math operations | Gain: a0 | melakukan operasi perkalian dengan konstanta a0 |
| 5. | Gain1 | idem | Gain: 1/A | melakukan operasi perkalian dengan konstanta 1/A |
| 6. | Integrator | Simulink –> continuous | melakukan integrasi numerik h(t)=integral(dh/dt) | |
| 7. | Fcn (user defined function) | Simulink –> user-defined functions | Expression: 2*9.8*u(1) | menghitung ekspresi matematika: 2gh |
| 8. | Fcn1 | idem | Expression: sqrt(u(1)) | menghitung akar dari 2gh |
| 9. | Scope | Simulink –> Sink | menampikan h (ketinggian fluida dari awal – akhir simulasi) | |
| 10. | Floating scope (optional) | idem | signal selections—>integrator | menampilkan h saat simulasi berjalan. |
Dari Gb. 2, aplikasi simulink membutuhkan parameter a0 dan A yang berturut-turut adalah luas penampang output dan luas penampang tangki. Parameter tersebut ditulis di m-file terpisah dan diberi nama: startFcnTank2.m. Kurang lebih isi dari startFcnTank2.m adalah:
a0 = 0.02;
A = 0.5;
M-file ini akan dijalankan aplikasi simulink saat pertama kali dibuka. File startFcnTank2.m harus didefinisikan di File – model properties – callbacks – initFcn.
Selain m-file, file excel juga perlu dipersiapkan (lihat excel-DDE) dulu. Contoh jalannya simulasi dapat dilihat di video ini.
26 June 2016
Komunikasi MATLAB-Simulink dengan NI USB-6009
Pengantar
Saat merancang kontoller, kita sering membutuhkan sarana untuk menguji kinerjanya. Manakala tidak mungkin menguji kontroler langsung di tempat ia akan dijalankan, karena kendala biaya, waktu, atau keselamatan, maka alternatifnya adalah menggunakan model matematika sebagai media uji. Teknik menguji perangkat keras (kontroller misalnya) menggunakan model matematika yang diprogramkan di sebuah komputer disebut hardware in the loop (HIL).
Untuk dapat melakukan HIL, diperlukan perangkat akuisisi data yang bertugas menjembatani komunikasi antara model dengan kontroller. Berikut ini akan diulas bagaimana cara mengirim data ke perangkat akuisisi data merek National Instrument (NI USB-6009) dan bagaimana cara membaca data dari perangkat tersebut. Sebagian besar tulisan berikut ini adalah terjemahan bebas dari “DAQ in MATLAB’' karya Hans-Peter Halvorsen (2012).
Persiapan
Perangkat keras yang disiapkan adalah perangkat akuisisi data NI USB-6009. Kurang lebih bentuk perangkat tersebut adalah seperti pada gambar 1. Kemungkinan besar USB-6009 sudah tidak diproduksi lagi oleh National Instrument. Sebagai gantinya dapat digunakan yang memiliki spesifikasi mirip yaitu USB-6002 dengan harga kurang dari 5 Juta Rupiah.
Gambar 1. NI USB-2009
Agar bisa digunakan, NI USB-6009 memerlukan driver yang terinstall di komputer. Driver tersebut dapat di download di sini.
Dalam tulisan ini, demo dilakukan menggunakan MATLAB versi 7.6 (32 bit), Simulink versi 7.1 (32 bit), dan sistem operasi Windows 7 Ultimate (32 bit).
Jika berbasis perintah MATLAB (biasanya menggunakan M-File), maka minimal komunikasi MATLAB dengan NI USB-6009 dilakukan dengan tahap:
- Inisialisasi
- Baca/Tulis
- Clean Up
Sedangkan jika menggunakan Simulink, maka dapat menggunakan komponen “Analog Input” yang terdapat di Data Aquisition Toolbox dan “Embedded Function”. Baik MATLAB atau Simulink, keduanya akan dijelaskan melalui contoh sederhana.
Inisialisasi
Di tahap ini, kita menentukan jenis alat yang akan digunakan sebagai piranti input dan output. Dalam contoh ini, piranti yang digunakan adalah ‘nidaq’. Perintah MATLAB yang ditulis untuk inisialisasi input dan output adalah analoginput() dan analogoutput():
Contoh:
ai = analoginput('nidaq', 'Dev1');
ao = analogoutput('nidaq', 'Dev1');
Langkah selanjutnya adalah menentukan kanal (channel) piranti yang akan digunakan. Perintah yang digunakan adalah addchannel().
Contoh:
a10 = addchannel(ai, 0);
Baca/Tulis
Untuk menuliskan data ke piranti USB-6009 digunakan perintah putsample().
Contoh:
ao_value = 3.5;
putsample(ao, ao_value);
Sedangkan jika akan membaca data digunakan perintah getsample().
Contoh:
ai_value = getsample(ai)
Clean up
Setelah selesai, sambungan ke piranti harus ditutup dengan perintah delete().
Contoh:
delete(ai)
Contoh aplikasi
Berikut akan dituliskan contoh pembuatan aplikasi menggunakan M-File dan Simulink.
A. Contoh aplikasi menggunakan M-File
% Membaca dan menulis ke piranti NI USB-6008
clear
clc
% Inisialisasi
% Input analog:
ai = analoginput('nidaq', 'Dev1');
% Output analog:
ao = analogoutput('nidaq', 'Dev1');
% Menambah kanal
% Input analog – Kanal 0
ai0 = addchannel(ai, 0);
% Output Analog – Kanal 1
ao1 = addchannel(ao, 1);
% Menulis data ke piranti
ao_value = 5;
putsample(ao, ao_value)
% Membaca data dari piranti
ai_value = getsample(ai)
% Mempersihkan
delete(ai)
delete(ao)
B. Contoh aplikasi menggunakan Simulink
Contoh aplikasi Simulink untuk membaca dan menulis data ke NI USB-6009 ditampilkan pada gambar 2 berikut.
Gambar 2. Aplikasi Simulink untuk Baca\Tulis NI USB-6009
Pada gambar 2, aplikasi menggunakan sebuah komponen sebagai berikut:
Tabel 1. Komponen yang digunakan pada aplikasi Simulink Gb. 2
|
No. |
Nama komponen |
Simulink Library Browser |
Property |
Value |
| 1. | Analog Input | Data aquisition toobox | Device | |
| Hardware sample rate | ||||
| Channels | ||||
| 2. | Display | Simulink –> Sinks | ||
| 3. | Constant | Simulink –> Sources | Constant value | 4 |
| 4. | Embedded MATLAB Function | Simulink –> User-Defined Functions | function write_daq(value) |
Pada komponen Embedded MATLAB Function, setelah di double klik akan muncul tempat menulis program. Ketikkan program berikut:
function write_daq(value)
% This block supports the Embedded MATLAB subset.
% See the help menu for details.
eml.extrinsic('analogoutput','addchannel','putsample','delete')
device='Dev1';
channel=1;
% Inisialisasi
% output analog
ao = analogoutput('nidaq', device);
% channel output, channel 1
ao1 = addchannel(ao,channel);
% tulis data
putsample(ao,value)
% membersihkan
delete(ao)
Running aplikasi
Kedua macam aplikasi, baik M-File maupun Simulink akan melakukan penulisan data ke Channel 1 dari bagian analog output (AO1). Kemudian, karena AO1 dihubungkan dengan kabel konektor ke Channel 0 dari bagian analog input (AO0), maka tegangan yang terbaca adalah sama dengan tegangan yang ditulis.
~Bersambung~
16 June 2016
Komunikasi Simulink dan Excel Menggunakan DDE Library
Suatu saat, saya ingin menjalankan simulasi di Simulink – MATLAB dan melihat hasilnya di Microsoft Excel. Untuk keperluan tersebut, saya menggunakan DDE Library yang telah dibuat oleh Jan Houska (2003).
DDE adalah singkatan dari Dynamics Data Exchange yang merupakan sebuah standar dalam penggunaan bersama sebuah data untuk berbagai program (http://www.abbreviations.com/term/46373).
Adapun DDE Library untuk Simulink saya unduh dari laman File Exchange di Mathworks.com (http://www.mathworks.com/matlabcentral/fileexchange/3376-dde-library-for-simulink)
Langkah Mengunduh
- Pada halaman “DDE Lybrari for Simulink”, carilah tombol Download Zip, kemudian tekan tombol tersebut.
- Bagi yang belum terdaftar di www.mathworks.com, maka perlu melakukan regristrasi terlebih dahulu sebelum dapat mengunduh.
- Hasil unduhan dapat disimpan di hardisk komputer, di directory apa pun. Artinya tidak harus di directory MATLAB.
Persiapan file simulink dan excel
Langkah-langkah penggunaan DDE Library di Simulink akan dijabarkan melalui sebuah contoh sederhana, yaitu penjumlahan dua bilangan dalam bentuk persamaan X+Y=Z. Dua buah file akan digunakan untuk keperluan tersebut, yaitu file jumlah.mdl dan jumlah.xlsx. Yang pertama adalah file simulink dan kedua adalah file excel.
| jumlah.mdl | jumlah.xlsx |
Di file simulink terdapat dua buah komponen DDE Source, sebuah komponen DDE Sink, dan sebuah komponen operator Add. Sedangkan di file excel, akan digunakan enam buah sel yaitu A1, A2, B1, B2, C1, dan C2. Sel-sel A1, B1, dan C1 digunakan untuk menuliskan nama variabel yaitu X, Y, dan Z. Sedangkan sel-sel A2, B2, dan C2 digunakan untuk data X, Y, dan Z.
Pengaturan parameter blok simulink
Selanjutnya mengatur parameter di komponen DDE Source dan DDE Sink. Parameter pada DDE Source untuk variabel X, Y, maupun Z, tampak pada gambar berikut.
| DDE Source untuk X | DDE Source untuk Y |
|
|
| DDE Sink untuk Z |
Untuk ketiga komponen, isilah parameter “DDE Service” dengan ‘excel’, lalu “DDE Topic” dengan ‘jumlah.xlsx’, dan “DDE Item” dengan posisi sel di file excel yang akan menjadi variabel X, Y, dan Z. Format sel yang digunakan adalah baris-kolom (row – column). Baris (row) di file excel, berawal di baris ke-0 dan semakin ke bawah semakin besar, sedangkan posisi kolom (column) semakin ke kanan semakin besar. Jadi “DDE item” untuk komponen X, Y, dan Z berturut-turut adalah r2c1, r2c2, dan r2c3. Jika semua sudah terisi, maka klik OK sehingga pada layar komputer kembali hanya ada jendela simulink dan excel.
Persiapan menjalankan simulink
Agar program simulink dapat berjalan terus-menerus, maka pada bagian “simulation step time” diisi inf seperti tampak pada gambar berikut.
| “simulation step time” diisi inf |
Menjalankan proses simulasi
Untuk menjalankan, tekanlah tombol “run” (gambar segitiga) pada file simulink. Namun file excel “jumlah.xlsx” harus dipastikan sudah dibuka.
Di file jumlah.xlsx, tepat pada sel-sel yang berada di bawah huruf X dan Y, kita dapat mengisi dengan angka sembarang, dan akan terlihat jumlahnya di bawah sel Z. Selamat mencoba.
28 May 2016
Notepad++ untuk Python
Notepad++ dapat digunakan untuk menulis program Python.
Sebelum digunakan untuk menulis program Python, pada bagian Language di abjad P, pilih Python.
12 March 2013
Interpolasi Linier Menggunakan Fungsi Forecast
3. Kemudian di sel C10 diisikan perintah FORCECAST sebagai berikut:
05 March 2013
Memperbaiki Kerusakan File Word 2010
Pernahkah anda mengalami pesan “The file cannot be opened because there are problems with the contents. Details: Unspecified error, Location: Part: /word/document.xml, Line: 2, Column: 103370” seperti gambar di bawah ini?
Pesan tersebut muncul kemungkinan disebabkan oleh adanya kesalahan pada Equation Editor yang terletak di file document.xml.
Untuk memperbaikinya, saya menggunakan dua buah perangkat lunak yaitu: 7-zip dan notepad++ dengan langkah-langkah sebagai berikut:
1. Merubah file ekstensi *.docx menjadi *.zip.
Caranya adalah dengan fasilitas rename melalui Windows Explorer seperti pada gambar berikut.
Gb. 2 Merubah ekstensi *.docx menjadi *.zip
Nanti akan ada pesan seperti di bawah, dan tekan OK.
Gb. 3 Pesan saat *.docx akan diubah menjadi *.zip
2. Buka file *.zip dengan 7-zip
Akan muncul tampilan sebagi berikut:
Gb. 4. Tampilan file *.docx yang dibuka di 7zip
Dilanjutkan dengan masuk ke folder word:
Gb. 5. Isi di dalam folder word
3. Buka file document.xml menggunakan notepad++
Agar 7-zip dapat mengedit document.xml menggunakan notepad++, maka terlebih dahulu default editor dari 7-zip ke notepad++ melalui menu Tools – Options – Editor, lalu isilah field Editor dengan lokasi notepad++. Langkah tersebut diilustrasikan pada Gb. 6.
Gb. 6. Merubah default editor 7-zip
Jika sudah dilakukan, maka langkah selanjutnya adalah mengedit file, yang dimaksud, menggunakan notepad++. Ketika dibuka, akan muncul tampilan seperti berikut:
Gb. 7. Tampilan pertamakali file document.xml saat dibuka di notepad++
Tentu saja tampilan dokumen yang demikian masih menyulitkan dalam pencarian lokasi kesalahannya. Oleh karena itu semua <> diubah menjadi >\r\n< agar dokumen menjadi lebih mudah dibaca. Perubahan secara sitematik dapat dilakukan melalui menu Replace (Ctrl+H) : Search – Replace. Jangan lupa untuk merubah Searc Mode ke Extended. Berikut ilustrasinya:
Gb. 8. Replace <> menjadi >\r\n<
Hasilnya adalah tampilan dokumen xml yang mudah ditelusuri.
Gb. 9. dokumen xml yang lebih mudah dibaca
Setelah itu, tutuplah editor notepad++. Jangan lupa untuk mengklik OK saat dialog editor di 7-zip untuk meng-update file document.xml ke dalam archive. Selanjutnya 7-zip juga ditutup.
4. Ubah kembali file *zip menjadi *.docx
5. Buka file *docx dengan Ofice 2010
Akan didapat pesan kesalahan kembali, namun lokasi kesalahannya sudah lebih mudah ditelusuri, yaitu pada baris ke-4075 (bandingkan dengan pesan kesalahan pertama kali yaitu pada baris ke-2). Pesan kesalahan yang baru adalah sebagai berikut:
Gb. 10. Pesan kesalahan yang baru.
6. Lakukan kembali langkah 1, lalu buka dokumen.xml dengan notepad++ dan lihat pada baris 4075. Lalu hapuslah perintah xml yang terdapat di baris tersebut. Kadang perintah xml tersebut berdiri sendiri, tapi dapat juga terjadi bahwa perintah xml harus dihapus beserta anak-anaknya. Untuk kasus yang saya alami, yang diperlukan hanya menghapus baris ke-4075 saja.
Gb. 11. Baris yang menyebabkan error dihapus
7. Setelah disimpan, diupdate ke archive, lalu diubah ekstensi dari zip ke docx kembali, maka pesan error sudah hilang, dan file dapat dibuka kembali secara normal.
Sumber: Office TechCenter