Simulasi Membutuhkan Bilangan Random

Simulasi mencoba menjalankan suatu model seolah-olah mengikuti kenyataan yang ada. Simulasi banyak diterapkan dalam permainan. Misalnya pemain bola, C. Ronaldo, dalam game memiliki akurasi tinggi dalam mencetak gol, tetapi tentu saja tidak selalu tendangannya akurat, seperti kenyataan di lapangan sesungguhnya. Jadi ketika pemain tersebut mengeksekusi, program harus membangkitkan suatu bilangan acak dalam rentang akurasinya sehingga bisa saja tendangannya (misal pinalti) tidak berhasil.

Fungsi “rand” di Matlab

Salah satu fungsi di Matlab yang membangkitkan bilangan random adalah fungsi rand. Fungsi ini membangkitkan bilangan acak dari nol hingga satu dalam pecahan. Ketik saja “rand” pada command window maka akan dimunculkan bilangan pecahan yang dimaksud.

Silahkan ketik help rand di command window maka akan muncul tata cara penggunaannya. Bahkan ada varian lagi dari fungsi tersebut di bagian akhir help (suggestion). Untuk membuat bilangan random yang dalam rentang tertentu, misal 9 hingga 10 butuh trik kusus, misalnya rand*10 atau 9+rand.

Contoh Kasus

Program berikut mensimulasian fungsi tangga dari suatu rangkaian masa dan suspensi. Disimulasikan beberapa komposisi pegas dan peredam yang menghasilkan beberapa kemungkinan. Perlu pengetahuan fungsi alih (transfer function) dan juga penggunaan fungsi plot pada Matlab. Buku command window.

  • figure
  • hold

Dua instruksi di atas akan menyiapkan satu gambar yang akan digunakan untuk menangkap output tiap-tiap komposisi pegas peredam. Fungsi hold membuat grafik menangkap lebih dari satu komposisi.

  • m=100;
  • for i=1:4
  • c=rand*10;
  • k=rand*10;
  • model=tf([1],[m c k])
  • step(model)
  • end

Kemudian Matlab mengeksekusi kode di atas dengan jumlah loop sebanyak empat kali. Tiap loop mencetak (fungsi step) model yang dalam bentuk fungsi alih tersebut. Massa diset 100 karena memang tidak terlalu berubah (massa motor, mobil, dan sebagainya cenderung tetap). Di sini nilai hanya sebagai contoh saja (tanpa satuan, dan standar yang telah ditentukan dalam perancangan elemen mesin). Selamat mencoba.

Iklan

Variabel Dinamis pada Fungsi Alih Simulink Matlab

[m.kul,ruang,dosen,jur:t-pemodelan-simulasi,software,rahmadya-phd,t-kom-d3]

Berbicara mengenai fungsi alih, mau tidak mau harus sedikit kilas balik ke materi pengenalan pengaturan (tek. Kendali). Untuk mudahnya ambil kasus sederhana suspensi kendaraan (post terdahulu). Fungsi alih suatu sistem suspensi adalah:

Fungsi Alih = 1/(ms^2+cs+k)

m, c dan k berturut-turut massa (Kg), peredam (N.s/m), dan konstanta pegas (N/m). Kemudian untuk memasukan variabel dinamis fungsi alih, buka simulink dengan mengetik simulink pada command window Matlab.

Memasukan Variabel Dinamis

Untuk mensimulasikan sistem suspensi pada model simulink masukan tiga diagram blok antara lain: masukan tangga, fungsi alih, dan keluaran yang ditangkap oleh scope. Masukan tangga berada di bagian SOURCE, fungsi alih di bagian CONTINUOUS, dan scope pada bagian SINK. Caranya adalah dengan mendrag ke lembar model.

 

Atur fungsi alih (transfer function) agar diperoleh persamaan di awal tulisan ini. Gunakan variabel m, c dan k yang mewakili massa, peredaman, dan kekakuan pegas.

Tekan ganda transfer function dan isikan sebagai berikut. NOTE: Nilai m, c dan k di sini berupa variabel yang jika langsung dijalankan akan memunculkan pesan kesalahan.

Mengisi Variabel lewat Command Window

Bagaimana memasukan m, c, dan k? Mudah saja, kembali ke command window, ketikan saja tiga variabel itu dengan bilangan.

>> m=100;

>> c=20;

>> k=5;

Kembali ke jendela model. Tekan tombol RUN pada jendela model yang berupa segitiga warna hijau. Pastikan tidak muncul error. Lanjutkan dengan mengklik ganda SCOPE untuk melihat grafiknya.

Atur komposisi c dan k agar diperoleh respon yang halus (smooth). Bagaimana terapan ke program GUI-nya? Sepertinya butuh postingan tersendiri karena ada sedikit masalah saat praktek tadi, yaitu data m, c, dan k tidak terkirim ke jendela model.

 

Membuat Fungsi Alih Motor Listrik

Perkenalan saya dengan Matlab pertama kali adalah lewat bidang sistem kontrol/kendali. Waktu itu saya diminta dosen pembimbing untuk mensimulasikan sistem suspensi ketika ada beberapa respon masukan (impulse, step, dan sinusoidal) mengenainya. Kembali saya membuka buku catatan mata kuliah getaran dan teknik pengaturan. Untuk mensimulasikan sesuatu kita harus mampu membuat model matematis dari sistem yang akan kita simulasikan. Model matematis itu kemudian disimulasikan di Matlab untuk melihat respon dan kinerja dari model tersebut. Asalkan sudah dalam bentuk model matematis, Matlab mampu mensimulasikan tanpa memandang domain ilmu dari model tersebut, apakah kimia, elektro, ekonomi, biologi, dan lain-lain. Misalnya kasus motor listrik (atau bisa juga generator).

Gambar di atas adalah motor DC yang saya ambil dari situs kampus UPI ini semoga masih ada. Fungsi alih sendiri (dalam istilah Inggris transfer function) dari arti katanya fungsi yang mengalihkan dari satu masukan ke keluaran tertentu. Jika masukannya tegangan dan keluarannya tegangan yang lebih besar, bisasanya disebut penguat, tetapi ada juga masukannya putaran, misal potensiometer, keluarannya arus/tegangan dan sering diistilahkan dengan transducer. Ada juga istilah lainnya yakni sensor, yang merubah masukan tertentu seperti suhu, level ketinggian air, dan lain-lain menjadi tegangan atau arus yang masuk ke dalam perangkat elektronika.

Untuk kasus motor DC di atas jika dilihat, masukannya adalah tegangan dari baterai arus searah dan keluaranya adalah puntiran di motor em. Variabel s adalah variabel Laplace. Apa itu? Yah .. mau nggak mau belajar dulu dasar-dasar sistem kontrol. Karena nanti setelah ada variabel laplace ada lagi variabel z kalau sudah masuk ke sistem digital yang melibatkan metode cuplik/sampling. Untuk orang elektro tidak ada masalah dengan besaran-besaran di atas beserta satuannya yang pasti. Situs dari malang ini lebih lengkap dengan besaran dan satuan juga teknik simulasinya.

Jika J= 10, D=5, km=2, dan Rα=0.5 maka diperoleh fungsi alih sebesar, pembilang=2/(0.5*5)=0.8 dan penyebut=s(s*(10/5)+1)=s(2s+1). Buka Matlab dan masuk ke command window. Masukan instruksi ini:

Lalu muncul plot setelah instruksi masukan impulse diterima fungsi alih, demikian pula setelah masukan tangga (step) diberikan.

Ntah bener atau salah, mohon koreksinya. Tapi setahu saya, motor DC itu harus diberi beban karena tanpa beban dia akan bertambah kencang bahkan bisa merusak motor itu sendiri.

Membandingkan Respon Sistem

Pengenalan Pengaturan/30.04.2013/Teknik komputer

Terkadang dibutuhkan grafik yang membandingkan beberapa jenis sistem kendali dalam satu SCOPE. Untuk itu diperlukan Multiplexer (MUX) yang memadukan dua atau lebih keluaran dalam satu SCOPE. Untuk latihan buat contoh Sistem Kendali sebagai berikut.


Multiplexer diperoleh dengan mudah lewat SEARCH di Simulink Library Browser.


Secara Default, MUX menyediakan dua masukan. Ganti “Number of Input” dengan tiga karena kita akan merancang tiga masukan.


Jalankan Model Simulink yang baru saja dibuat. Ketika SCOPE dilihat (dengan cara dobel klik) akan tampak respon perbandingan seperti berikut ini.


Terkadang kita diminta menampilkan grafik bukan dalam bentuk SCOPE karena kurang nyaman dicetak akibat background yang berwarna gelap. Oleh karena itu kita harus menampilkannya dalam format PLOT yang dapat diedit. Untuk itu pada gambar di atas, tekan Parameters. Pada Tab Data History, check list tombol Save Data to Workspace, dengan format Array. Maksudnya adalah ketika Simulasi berjalan, SCOPE akan menyimpan informasi grafik Workspace. Nama variabel (ScopeData) dapat kita ganti sesuai keinginan.


Berikutnya kita akan membuat PLOT lewat Command Window. Sebelumnya tekan tombol OK terlebih dahulu pada gambar di atas. Jalankan SIMULASI kemudian masuk ke Command Window. Perhatikan, pada Workspace terdapat variabel baru hasil tangkapan SCOPE dengan nama ScopeData. Buat kode berikut ini:

  • plot(ScopeData(:,1),ScopeData(:,2))
  • hold
    • Current plot held
  • plot(ScopeData(:,1),ScopeData(:,3))
  • plot(ScopeData(:,1),ScopeData(:,4))
  • grid

Perintah hold bermaksud agar gambar yang lalu tidak dihapus dan tetap dipertahankan ada di figure. Instruksi GRID agar dihasilkan garis bantu pada grafik.

Merubah Sinyal Analog ke Digital pada SIMULINK Matlab

Sekarang kebanyakan perangkat elektronika sudah berbau digital. Termasuk juga sistem kendali. Salah satu komponen terpenting adalah konverter dari analog ke digital dan sebaliknya dari digital ke analog. Untuk materi UAS, kita akan mulai membahas Sistem Kendali Digital dengan seluk beluknya yang rumit jika dianalisa tanpa bantuan komputer. Banyak yang bertanya, block function apa yang berfungsi merubah sinyal analog menjadi digital. Jawabannya sederhana, fungsi Zero Order Hold (ZOH). Buka SIMULINK dan buat diagram sebagai berikut.

Gambar di atas ZOH berisi rangkaian cuplik dan sampling terhadap sinyal sinus analog yang akan dirubah menjadi digital. Running sistem di atas, Anda akan melihat hasil perbandingannya antara sinyal asli analog (warna merah muda) dengan yang digitalnya (kuning). Perhatikan bagaimana prinsip ZOH melakukan sampling di awal (bukan di tengah).

Untuk lengkapnya baca buku yang membahas Digital Control System. Oiya, gunakan MUX untuk menggabungkan dua keluaran menjadi satu SCOPE. Kalo sulit mencarinya, gunakan SEARCH pada SIMULINK Library.

Creating a Transfer Fuction

We have to convert physical equation into laplace equation in order to make a block diagram. Some basic about mathematic, especially differential equation must be considered. First look at the electrical system with Resistor, Inductor and capacitor element (RLC).

According to kirchhoff law we have:

If we want to drop of voltage at capacitor as an output, we get a blog diagram. Inside the block diagram is a transfer function, G. The transfer function is a comparison between output and input. Instead of using equation in time domain, we use s-domain (laplace).

This is a 2-orde system. Other system can be build similar to electrical, for example, mechanical system. We have three component dumper, spring, and mass. That element behave similar to those in electrical system (RLC).

We use Newton law to get mathematical model to this system. The force equal against force at mass, spring, and dumper.

If we want displacement of mass as an output, we will get a transfer function. Remember the force at mass have connection with displacement of spring (kx).

Membuat diagram blok dengan Simulink matlab

 

Simulink adalah salah satu alat bantu dalam matlab khusus untuk perancangan diagram blok. Untuk membuatnya, klik icon di Matlab. Tunggu beberapa saat hingga matlab memunculkan jendela simulink. Untuk menggambar diagram blok baru klik icon (new) pada jendela Simulink Library browser. Gambar bentuk contoh di bawah ini.

Perhatikan cara membuatnya sebagai berikut: Step didrag dari Source, begitu juga Constant. Display dan Scope diambil dari Sink. Sementara Add diambil dari Math Operation. Transfer Fcn diambil dari Continuous. Dobel klik tiap komponen untuk mengganti harga parameter. Misalnya kita ingin mengganti harga parameter Step sebagai set point yaitu 80. Isi final value dengan harga 80.

Begitu juga dengan constant, beri harga -10. Di sini kita ambil contoh pemanas yang akan memanaskah suhu hingga 80 derajat tetapi menerima gangguan dari lingkungan sekitar misalnya 10 derajat di bawah harga set pointnya. Untuk mensimulasikan, klik icon (run) dan ganti angka di sebelah kanannya sesuai keinginan. Defaulnya adalah 10 detik, Anda bisa mengganti menjadi 100 detik atau lebih sesuai dengan kebutuhan. Hasilnya tampak pada gambar di bawah ini.

Perhatikan sistem tidak mampu menjaga suhu tetap 80 derajat karena ada gangguan sekitar -10 derajat, jadi ada error sebesar 10 derajat. Pertemuan yang akan datang akan dibahas cara menjaga suhu tetap 80 derajat walaupun ada gangguan dari lingkungan dengan batas-batas tertentu.

Konversi Variabel z menjadi z^-1 Pada Sistem Kendali Digital dengan Matlab

Peng. Pengaturan II. 17.12.2012. Teknik Komputer

Ketika kita berbicara sistem kendali digital, beberapa pakar digital yang biasanya berkecimpung dalam bidang Digital Signal Processing (DSP) cenderung menulis fungsi transfer:

                                        (1)

Dengan persamaan:

                                    (2)

Perhatikan pula, notasi g yang sering digunakan pada sistem kendali kontinue diganti dengan h. Buka Matlab dan buat persamaan (1) dengan kode:

Perhatikan, matlab akan otomatis merubah ke variabel diskrit z karena adanya time sampling sebesar 0.1 di akhir kode. Untuk membentuk menjadi persamaan standar (2), gunakan kode berikut:

Dengan menambahkan ‘variable’,’z^-1′ di akhir kode. Namun ada sedikit permasalahan untuk kasus fungsi alih sederhana, misalnya h=1/(z+1) karena jika digunakan kode berikut untuk mendapatkan fungsi dengan variabel standar z^-1 diperoleh:

Padahal, prinsip dasarnya adalah mengalikan pembilang dan penyebut dengan pangkat z terbesar yaitu z. Seharusnya pembilangnya berharga 1/z atau z^-1, bukan 1. Oleh karena itu kita harus memodifikasi sedikit persamaan di atas menjadi:

Dengan menambah 0 dibagian pembilangnya agar diperolah hasil yang tepat. Penambahan 0 ini juga tidak berpengaruh terhadap fungsi asalnya. Di sini versi yang digunakan adalah Matlab 2008, mungkin berbeda untuk Matlab 2012.

Tugas I Pengaturan II

Pengenalan Pengaturan II, 3.12.2012, Lab of Hardware

Berikut ini tugas kelompok yang harus dikerjakan hari ini. Tugasnya adalah merancang model di simulink, dan cari nilai P,I, dan D pada kontroler PID agar dipenuhi syarat:

  • Error < 0.05
  • % Overshoot < 10%
  • Settling Time < 5 detik

Kelompok I

Kelompok II

Kelompok III

Kelompok IV

Kirim ke: rahmadya.trias@gmail.com dengan melampirkan file .mdl dan capture SCOPE.

Merancang PID sistem Diskrit

Proporsional Integrator dan Diferensiator (PID) merupakan kontroler yang fungsinya memperbaiki kinerja sistem kendali. Baik buruknya sistem kendali, tergantung dari spesifikasi yang dituntut oleh sistem tersebut. Sistem yang cepat, belum tentu baik jika melebihi batas kesalahan yang ada. Sebagai contoh berikut ini sistem dengan fungsi alih digital, h=0.09516/(z-0.9048) memiliki error 0.5. Gunakan PID untuk memperbaiki kinerja sistem dengan syarat: 1) error < 0.1, 2)persentase overshott < 10%, dan respon time < 5 detik. Gunakan simulink MATLAB:

Atur nilai P, I, D dan konstanta waktu D agar diperoleh hasil spesifikasi di atas. Jika diambil besar P, I, D, t berturut-turut 1.5, 3, 1.2 dan 2, diperoleh hasil sebagi berikut:

Karena overshootnya 20 %, maka sistem tidak memenuhi syarat. Misal kita setting kembali P,I,D dan t berturut-turut 1, 2.5, 3, dan 2 diperoleh hasil sebagai berikut:

Sistem memiliki respon sekitar 7 detik, dan karena permintaan harus di bawah 5 detik, walaupun error dan % overshoot memenuhi syarat, tetap tidak bisa diaplikasikan. Berikutnya coba dengan P, I, D dan t berturut-turut

Sistem memiliki respon 5 detik (sesuai syarat) dan overshoot (1.1-1)*100 = 10 % sehingga sedikit memenuhi syarat. Coba ramu lagi PID agar diperoleh hasil optimal.

UTS P. PENGATURAN II

 

PENG. PENGATURAN, 13.11.2012, T. KOMPUTER D3

 

  1. Suatu sistem kontrol mempunyai fungsi alih :

    Buat instruksinya dalam MATLAB (sampling 0.1 detik dan teknik ‘ZOH’) untuk:

    1. Mengkonversi menjadi sistem diskrit
    2. Membuat grafik untuk masukan tangga (step).

 

  1. Suatu sistem memiliki fungsi alih
    1. Konversi nilainya menjadi sistem kontinyu
    2. Buat grafik dengan masukan step untuk menguji sistem tersebut

NOTE: NPM berarti harga terakhir NPM Saudara, jika 0 ambil harga 10. Sedangkan NPM2 adalah angka sebelum angka terakhir NPM Saudara, Jika 0 ganti 10.

Perbandingan Sistem Kendali Kontinyu dan Digital

Buka Simulink untuk memandingkan grafik keluaran antara sistem kendali kontinyu dan dijital. Untuk membandingkan kita gunakan fungsi alih yang sama.

Pilih ‘Continuous‘ dan ‘Diskrit‘ untuk membuat fungsi alihnya.

Untuk mendapatkan ‘Mux‘ gunakan ‘searching” pada simulink. Untuk mencari fungsi alih diskritnya, gunakan command window pada Matlab dan fungsi ‘c2d‘ untuk memperoleh ‘Discrete Transfer Fcn‘.

  • >> g=tf(1,[1 4 8])
  • Transfer function:
  • 1
  • ————-
  • s^2 + 4 s + 8
  • >> h=c2d(g,0.1,’zoh’)
  • Transfer function:
  • 0.004367 z + 0.003821
  • ———————-
  • z^2 – 1.605 z + 0.6703
  • Sampling time: 0.1

Hasilnya dapat dilihat pada Scope:

Ada sedikit perbedaan pada respon, tetapi akurasinya tetap sama (Lihat Display: 0.89). Ketertinggalan diakibatkan oleh ‘Time Sampling‘ yang kecil. Waktu cuplik yang terlalu akurat mengakibatkan beban saat konversi dari D/A dan A/D. Coba naikan waktu cuplik jadi satu detik, hasilnya:

Hasilnya lebih akurat tetapi akibatnya grafik kurang presisi.

Bentuk Standar Sistem Diskrit

M.kul: Pengaturan II, Senin: 15.10.12, Lab. Hardware

Penambahan komponen Analog to Digital Converter (ADC) dan Digital to Analog Converter (DAC) mengakibatkan sistem yang sudah linear dengan transformasi Laplace kembali menjadi nonlinear. Untungnya, sistem non linear tersebut dapat dikembalikan menjadi linear kembali dengan transformasi Z. Akan tetapi ada sedikit perbedaan antara sistem dengan variabel s dan z, terutama untuk penggambaran di bidang kompleksnya.

Untuk sistem kontinyu (variabel s), letak kestabilan sistem adalah sebelah kiri sumbu imajiner. Ternyata, untuk sistem diskrit (variabel z) letak kestabilannya di dalam lingkaran berpusat di titik pusat (0,0i) dan jari-jari satu.

Menentukan Orde Sistem Diskrit

Berapakah orde sistem di bawah ini:

Untuk menjawabnya, perhatikan orde pembilang sistem di atas. Karena pangkatnya adalah -5 setelah kurung dibuka, maka untuk mencari harga pangkat tertinggi di penyebut sebagai penentu orde sistem, maka pembilang dan penyebut dikalikan z^5. Hasilnya:

Tampak pangkat penyebut tertinggi adalah 5, maka sistem tersebut adalah orde 5. Untuk menuliskan di Matlab, caranya sama dengan sistem kontinyu hanya saja ada variabel tambahan yaitu waktu cuplik. Misal untuk sistem di atas, a1=0.003, b1=0.004 dan b2=0.003, maka kita tulis di command window:

Ternyata ada masalah di fungsi ‘d2c’ dimana model ‘zoh’ tidak bisa jika ada pole dekat z=0. Oleh karena itu kita modif sedikit menjadi:

>> H=tf([0.004 0.003],[1 0.003 0 0 0 0.8],0.1)

Di sini ‘0.8’ adalah angka sembarang supaya z jauh dari nol.

Perhatikan Plot yang dihasilkan, walaupun ada error sedikit, tetapi grafik kontinyunya cukup mendekati harga diskritnya.

Praktek Sistem Kendali Digital dengan Matlab

Lab Hardware UNISMA, Tek Komputer, 10 Oktober 2012.

Berbeda dengan pengenalan pengaturan I semester yang lalu, pengenalan pengaturan II membahas sistem diskrit dimana sistem kendali yang digunakan berbasis komputer/dijital. Keberadaan sistem yang dijital kian hari kian bertambah, apalagi sistem dijital lebih mudah dikontrol dibanding sistem kontinyu. Peralatan yang dahulu mahal, saat ini menjadi lebih murah karena perkembangan teknologi perangkat keras yang cepat.

Untuk praktek seperti biasa kita menggunakan bahasa pemrograman matlab untuk melihat respon sistem yang kita rancang atau analisa. Perbedaan mencolok antara sistem kontinyu dengan sistem dijital adalah pada penerapan teorema cuplik dan sampling. Teorema ini mutlak ada karena sistim dijital berkarakteristik diskrit. Secara matematis akibat dari diskritisasi adalah berubahnya linearitas variabel laplace. Oleh karena itu untuk melinearkannya (adanya variabel exponen) diperlukan transformasi –z.

Berikut ini contoh kasus dimana kita akan membuat sistem dijital dari sistem analog dengan fungsi alih: G=tf(1,[1 2 5]). Buat code di command window untuk melihat responnya terhadap masukan tangga satuan.

Jika dilihat pada jendela grafik akan tampak sistem yang tadinya continyu menjadi seperti tangga karena adanya sampling time sebesar 0.1 detik. Metode sampling ada banyak (lihat diktat), tetapi kebanyakan yang diterapkan adalah Zero Order Hold (ZOH) seperti ditunjukkan pada kode di atas. Grafik dapat dilihat pada gambar di bawah ini.

Berikutnya kita berlatih menggunakan simulink yang lebih mudah dan lebih jelas dilihat karena menggunakan diagram blok. Untuk masuk, klik simbol simulink pada Matlab anda . Buat diagram di bawah ini, caranya seperti pada kuliah pengenalan pengaturan yang lalu, hanya saja di sini kita tidak menggunakan Continuous melainkan descrete. Pilih Descrete Transfer Function.

Descrete transfer function yang dimasukkan pada isian parameter diambil dari hasil konversi dari kontinyu ke diskrit pada command window sebelumnya. Hasilnya kita coba lihat bentuk sistem tertutup dari sistem sebelumnya yang terbuka, hasilnya dapat dilihat dengan mengklik ganda scope setelah menekan tombol running .