Memprogram S Function di Simulink
Posted by admin on May 19th, 2009
Mengembangkan Program (S-Function) di Simulink
Dalam contoh ini akan dibuat model simulink yang mengolah isyarat sinus. Masukan berupa isyarat sinus, di dalam block yang kita program isyarat tersebut diolah dengan persamaan sederhana,
y adalah keluaran
x adalah masukan (isyarat sinus)
Berikut langkah-langkahnya,
1. Click tombol simulink untuk mengeluarkan block-block diagram Simulink Library Browser di Matlab

Fig 1.
2. Untuk membuat model dengan Simulink, click File -> New -> Model, dari sini muncul jendela model
3. Dari Simulink Library Browser, click atau pilih User-Defined functions, kemudian pilih di system (S-Function). Caranya, click dan pegang block tersebut kemudian pindah dan letakkan di jendela model anda.
Fig 2.
Fig. 3
6. Lengkapi model anda. Dalam contoh ini ada masukan berupa input Sinus dan output Scope. Simpan sebagai: Simulink_model_conto.mdl
Fig. 4
7. Buka jendela editor Matlab. Dari jendela Matlab, File -> New -> M-File. Ketikkan program m-file untuk “simulink_conto”. Pastikan judul function-nya adalahsimulink_conto. Berikut contoh programnya. Dapat anda copy paste-kan ke editor Matlab anda.
switch flag,
case 0
[sys,x0,str,ts] = mdlInitializeSizes; % Initialization
case 3
sys = testsinus(t,x,u); % Calculate outputs
case { 1, 2, 4, 9 }
sys = []; % Unused flags
otherwise
error(['Unhandled flag = ',num2str(flag)]); % Error handling
end;
function [sys,x0,str,ts] = mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates= 0;
sizes.NumDiscStates= 0;
sizes.NumOutputs= 1;
sizes.NumInputs= 1;
sizes.DirFeedthrough=1;
sizes.NumSampleTimes=1;
sys = simsizes(sizes);
x0 = []; % No continuous states
str = []; % No state ordering
ts = [-1 0]; % Inherited sample time
end
function sys = testsinus(t,x,u)
sys = 5*u+2;
end
end
Setelah selesai, simpan sebagai “simulink_conto.m”.
8. Pastikan anda bekerja di folder yang sama, baik di jendela Matlab (Fig. 1), model (Simulink_model_conto.mdl, Fig. 4), dan simulink_conto.m
9. Dari jendela model, jalankan model simulink ini. Simulation -> Start. Lihat Hasilnya di Scope (Double click Scope)
Fig. 4
.
Memanfaatkan S-Parameter
Masih dalam contoh yang sama, sekarang isyarat sinus diolah dengan menggunakan parameter-parameter masukan, sebagai berikut,
Sebagai contoh a = 4, dan b = 2. Double click model simulink_conto, kemudian parameter a dan b dimasukkan dari sini,

Fig 5.
Kedua parameter tersebut dipisahkan dengan koma (” , “).
Dari m-file editor, tambahkan argument masukan, jumlah parameter, tambahkan source program untuk flag=1. Lengkapnya program simulink_conto.m menjadi,
switch flag,
:
case 1 % tambahkan case 1
sys = [0 0];
:
case { 2, 4, 9 } % <– case 1 hilang di sini, pindah ke atas
:
:
end;
function [sys,x0,str,ts] = mdlInitializeSizes(a, b) % parameter a, b dimasukkan
:
sizes.NumContStates= 2; % jumlah parameter ada 2
:
:
x0 = [a b]; % initial states-nya berupa vektor dengan panjang vektor 2
:
function sys = testsinus(t,x,u)
sys = a*u+b; % <<<———————persamaan-nya di sini
end
end
Jalankan, Simulation -> Start. Lihat Hasilnya di Scope (Double click Scope)
.
Ada 2 (dua) Keluaran
Sekarang keluaran terdiri atas dua vektor, atau matriks 2×1, yaitu

Dari m-file editor, tambahkan argument masukan, jumlah parameter, tambahkan source program untuk flag=1. Lengkapnya program simulink_conto.m menjadi,
function [sys,x0,str,ts] = mdlInitializeSizes(a, b) % parameter a, b dimasukkan
:
sizes.NumOutputs= 2; % Jumlah output = 2
:
:
function sys = testsinus(t,x,u)
sys1 = a*u+b;
sys2 = -a*u+b;
sys = [sys1; sys2];
end
end
Hasil keluaran bisa dilihat dengan dua buah Scope dengan menggunakan Demux. Demux diperoleh dari Simulink Library Browser -> Simulink -> Commonly Used Block -> Demux. hasilnya,

Jalankan, Simulation -> Start. Lihat Hasilnya di Scope (Double click Scope)
.
Ada 2 (dua) Input
Jika input ada dua, atau lebih. Misal keluaran adalah fungsi dari dua buah masukan

Dari m-file editor, tambahkan argument masukan, jumlah parameter, tambahkan source program untuk flag=1. Lengkapnya program simulink_conto.m menjadi,
function [sys,x0,str,ts] = mdlInitializeSizes(a, b) % parameter a, b dimasukkan
:
sizes.NumOutputs= 1;
sizes.NumInputs= 2; % Jumlah input = 2
:
:
function sys = testsinus(t,x,u)
sys = a*u(1)-b*u(2);
end
Masukan/input dihubungkan ke block dengan menggunakan Mux. Mux diperoleh dari Simulink Library Browser -> Simulink -> Commonly Used Block -> Mux. Berikut gambar diagramnya,

Jalankan, Simulation -> Start. Lihat Hasilnya di Scope (Double click Scope)
.
Semoga manfaat.
January 2nd, 2014 at 2:52 am
เช่า Ts3…
“[...]Risanuri Hidayat » Blog Archive » Memprogram S Function di Simulink[...]“…
August 23rd, 2014 at 1:42 am
หนังx…
Risanuri Hidayat » Blog Archive » Memprogram S Function di Simulink…
September 7th, 2014 at 11:00 am
monster Legends Hack…
Risanuri Hidayat » Blog Archive » Memprogram S Function di Simulink…
September 13th, 2014 at 1:25 am
Hay Day Tips…
Risanuri Hidayat » Blog Archive » Memprogram S Function di Simulink…
September 14th, 2014 at 7:56 pm
ดูหนังx…
Risanuri Hidayat » Blog Archive » Memprogram S Function di Simulink…
October 9th, 2014 at 6:03 am
หนังโป๊…
Risanuri Hidayat » Blog Archive » Memprogram S Function di Simulink…
October 21st, 2014 at 9:18 am
relevant web page…
Risanuri Hidayat » Blog Archive » Memprogram S Function di Simulink…
October 29th, 2014 at 1:15 pm
kim Kardashian hollywood hack…
Risanuri Hidayat » Blog Archive » Memprogram S Function di Simulink…
November 3rd, 2014 at 5:57 pm
Monster Legends Hack Tool…
Risanuri Hidayat » Blog Archive » Memprogram S Function di Simulink…
November 6th, 2014 at 11:31 am
Read the Full Document…
Risanuri Hidayat » Blog Archive » Memprogram S Function di Simulink…
November 18th, 2014 at 5:58 pm
hack swamp attack…
Risanuri Hidayat » Blog Archive » Memprogram S Function di Simulink…
November 19th, 2014 at 2:31 am
hack real racing 3…
Risanuri Hidayat » Blog Archive » Memprogram S Function di Simulink…