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.

Capture

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:

  1. Inisialisasi
  2. Baca/Tulis
  3. 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.

image

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~

3 comments:

  1. This comment has been removed by the author.

    ReplyDelete
  2. Artikel tersebut sangat bermanfaat bagi saya yang sedang menggarap TA. adakah contoh yang lebih sederhana untuk pembacaan tegangan analog input pada arduino mega 2560 yang programnya dibuat menggunakan simulink matlab. besar harapan untuk membantu mengerjakan skripsi, jika ada mohon di-email : supriadidonk32@gmail.com terimakasih.

    ReplyDelete
    Replies
    1. Supri, mohon maaf tidak/belum punya contoh seperti yang anda maksudkan. Terima kasih.

      Delete