Simulink adalah lingkungan simulasi berbasis diagram blok yang terpasang pada ekosistem MATLAB untuk memodelkan sistem dinamik. Topik ini membahas konsep blok, sinyal, dan pemecah numerik yang menjadi dasar Simulink. Pembahasan juga mencakup kapan desain berbasis model menjadi pilihan tepat, kapan skrip MATLAB lebih pas, serta lanskap produk di sekitar Simulink seperti Stateflow, Simscape, dan penghasil kode. Inti yang berjalan nyata adalah model loop kendali tertutup yang lazim disusun sebagai diagram blok. Model tersebut disimulasikan langsung dengan ode45 untuk menunjukkan bahwa matematika di balik diagram tetap dapat dikerjakan tanpa Simulink.
Apa itu Simulink ?#
Simulink adalah lingkungan pemodelan dan simulasi yang memvisualkan sistem sebagai diagram blok yang saling terhubung. Setiap blok menjalankan satu peran matematis, misalnya penguatan, penjumlahan, atau integrasi, dan garis penghubung antarblok membawa sinyal berupa nilai yang berubah sepanjang waktu simulasi. Simulink terintegrasi dengan MATLAB: model tersimpan sebagai berkas .slx, parameter blok dapat membaca variabel workspace, dan hasil simulasi dapat dianalisis dengan fungsi MATLAB biasa. Mesin yang menjalankan model adalah pemecah numerik (solver) yang mengintegrasikan persamaan hasil rangkaian blok dengan langkah yang menyesuaikan diri, sehingga penyusun model tidak menulis perulangan waktu secara manual.
Contoh baku diagram semacam ini adalah loop kendali tertutup, yaitu rangkaian kendali yang mengalirkan keluaran kembali ke masukan. Sinyal acuan dibandingkan dengan keluaran terukur pada blok penjumlah, lalu selisihnya diperkuat oleh blok pengendali. Plant, yakni sistem yang dikendalikan, kemudian bereaksi terhadap keluaran pengendali, dan jalur sensor membawa keluaran kembali ke blok penjumlah. Diagram berikut memperlihatkan rangkaiannya.
Tiga unsur pada diagram itu berlaku untuk setiap model Simulink. Blok adalah unit pemroses yang membaca sinyal masukan dan menghasilkan sinyal keluaran menurut perannya. Sinyal adalah nilai yang mengalir sepanjang garis penghubung dan dievaluasi pada tiap titik waktu. Pemecah menentukan titik-titik waktu itu sekaligus menjaga error integrasi tetap dalam toleransi, dan pemilihan pemecah menjadi bagian dari penyetelan model.
Kapan diagram blok tepat dipakai#
Kekuatan Simulink muncul ketika masalah memuat dinamika, yaitu keadaan sistem yang berubah mengikuti waktu dan saling memengaruhi lintas komponen. Sistem kendali dengan umpan balik, rangkaian mekanik-elektrik, atau jaringan multi ranah fisik termasuk dalam kelompok ini karena strukturnya memang tersusun dari unit yang bertukar sinyal. Simulink juga menjadi wadah desain berbasis model, yaitu alur kerja yang menjadikan model sebagai purwarupa utama sebelum implementasi. Pada alur kerja tersebut, model yang sama dapat disimulasikan, diverifikasi, dan diubah menjadi kode tanpa ditulis ulang.
| Kebutuhan | Sarana yang tepat |
|---|---|
| Sistem dinamik dengan umpan balik lintas ranah fisik | Simulink |
| Model besar yang disusun bertingkat dari subsistem | Simulink |
| Purwarupa kendali sebelum diimplementasikan sebagai kode | Simulink dengan penghasil kode |
| Pemrosesan data pengukuran dari berkas sampai plot | skrip MATLAB |
| Perhitungan matriks dan aljabar numerik | skrip atau fungsi MATLAB |
Pemrosesan data yang murni berurutan, misalnya membaca berkas sensor lalu merangkum dan menggambarkannya, tidak memuat keadaan yang saling memengaruhi. Alur semacam itu lebih pas ditulis sebagai skrip MATLAB karena setiap langkahnya berupa transformasi data yang lengkap dalam satu baris perintah. Diagram blok pada kasus seperti ini justru menambah lapisan yang harus dirawat tanpa menambah daya analisis.
Ekosistem di sekitar Simulink#
Simulink menjadi inti dari sekelompok produk yang memperluas jangkauannya. Tiga produk di antaranya cukup dikenali pada tahap ini tanpa didalami, yaitu Stateflow, Simscape, dan penghasil kode. Stateflow menambahkan mesin keadaan dan logika diskrit untuk perilaku yang bertahap, misalnya mode operasi pengendali yang berpindah menurut kondisi. Simscape memungkinkan pemodelan sistem fisik multi ranah dengan komponen listrik, mekanik, hidraulik, dan termal yang dirakit seperti jaringan nyata. Penghasil kode seperti Simulink Coder menerjemahkan model menjadi kode C dan C++ sehingga model yang terverifikasi dapat dijalankan pada pengendali tertanam.
Alur kerja yang menyatukan semuanya disebut model-in-the-loop, yaitu model mula-mula disimulasikan sepenuhnya di komputer untuk memeriksa perilaku terhadap kasus uji. Setelah perilakunya sesuai, model yang sama dihubungkan ke perangkat keras nyata untuk pengujian lebih lanjut sebelum implementasi berjalan penuh. Posisi Simulink pada alur ini adalah sebagai model tunggal yang dipakai berulang kali dari simulasi sampai implementasi.
Model yang sama tanpa Simulink#
Diagram blok pada akhirnya adalah persamaan diferensial yang disusun secara visual, sehingga model yang sama dapat dikerjakan langsung dengan pemecah ode45 yang antarmukanya mengikuti bentuk pada topik persamaan diferensial biasa. Plant pada diagram di atas adalah plant orde satu dengan konstanta waktu detik yang merespons masukan menurut persamaan
Plant itu ditulis sebagai fungsi anonim lalu disimulasikan dengan masukan tetap bernilai 1 selama 12 detik.
tau = 3;
masukan = 1;
plant = @(t, x) (masukan - x) / tau;
[t, x] = ode45(plant, [0 12], 0);
fprintf('banyak langkah : %d\n', numel(t));
fprintf('nilai akhir : %8.4f\n', x(end));
fprintf('nilai teoretis : %8.4f\n', 1 - exp(-12/tau));banyak langkah : 129
nilai akhir : 0.9817
nilai teoretis : 0.9817Nilai akhir simulasi cocok dengan jawaban analitis karena 12 detik mencakup empat konstanta waktu. Loop tertutup kemudian dibentuk dengan pengendali proporsional untuk acuan dan penguatan , sehingga persamaan gabungannya menjadi
Model gabungan itu ditulis sebagai berkas fungsi berikut, dan tiga baris terakhirnya memetakan tepat tiga blok pada diagram: penjumlah, pengendali, lalu plant.
function dxdt = kendali_tertutup(t, x)
% KENDALI_TERTUTUP model loop kendali tertutup orde satu.
% dxdt = KENDALI_TERTUTUP(t, x) menghitung turunan keadaan untuk
% acuan r = 1, penguatan pengendali proporsional K = 4, dan
% plant orde satu dengan konstanta waktu tau = 3 detik.
% Tanpa argumen, contoh t = 0 dan x = 0 dipakai.
r = 1; % nilai acuan (setpoint)
K = 4; % penguatan blok pengendali
tau = 3; % konstanta waktu plant (detik)
if nargin < 2
t = 0;
x = 0;
end
selisih = r - x; % keluaran blok penjumlah
u = K * selisih; % keluaran blok pengendali
dxdt = (u - x) / tau; % keluaran blok plant
endSimulasi loop tertutup memakai pemecah yang sama dengan keadaan awal nol.
[t, x] = ode45(@kendali_tertutup, [0 12], 0);
fprintf('banyak langkah : %d\n', numel(t));
fprintf('nilai akhir : %8.4f\n', x(end));
fprintf('nilai teoretis : %8.4f\n', 4/5 * (1 - exp(-5 * 12 / 3)));banyak langkah : 129
nilai akhir : 0.8000
nilai teoretis : 0.8000Loop tertutup mencapai nilai mantap 0.8 dengan konstanta waktu efektif detik, dan nilai akhirnya cocok dengan jawaban analitis . Simulink menawarkan cara visual untuk menyusun model yang persis sama: blok dan garisnya digambar, pemecah dipilih dari dialog, dan model berjalan tanpa satu baris kode perulangan. MATLAB juga menyediakan fungsi penyusun model secara programatik seperti berikut.
% tidak-dijalankan
new_system('kendali_loop');
open_system('kendali_loop');
add_block('simulink/Sources/Constant', 'kendali_loop/Acuan', 'Value', '1');
add_block('simulink/Math Operations/Sum', 'kendali_loop/Selisih', ...
'Inputs', '+-');
add_block('simulink/Math Operations/Gain', 'kendali_loop/Pengendali', ...
'Gain', '4');
add_block('simulink/Continuous/Transfer Fcn', 'kendali_loop/Plant', ...
'Numerator', '1', 'Denominator', '[3 1]');
add_block('simulink/Sinks/Scope', 'kendali_loop/Scope');
add_line('kendali_loop', 'Acuan/1', 'Selisih/1');
add_line('kendali_loop', 'Selisih/1', 'Pengendali/1');
add_line('kendali_loop', 'Pengendali/1', 'Plant/1');
add_line('kendali_loop', 'Plant/1', 'Selisih/2');
add_line('kendali_loop', 'Plant/1', 'Scope/1');
sim('kendali_loop');Rangkaian itu membangun diagram pada bagian pembuka: blok Constant sebagai acuan, blok Sum sebagai penjumlah dengan tanda tambah dan kurang, blok Gain sebagai pengendali, dan blok Transfer Fcn sebagai plant . Setiap add_line menyambungkan port keluaran satu blok ke port masukan blok berikutnya, dan sim menjalankan simulasi persis seperti pemanggilan ode45 pada fungsi kendali_tertutup. Sensor pada diagram dianggap ideal dengan penguatan satu, sehingga jalurnya terwakili oleh sambungan langsung dari keluaran plant ke port kedua blok Selisih.
Kesalahan umum#
- Memakai Simulink untuk alur data tanpa dinamika. Penyebabnya adalah kesan bahwa semua pekerjaan perlu berbentuk diagram blok. Akibatnya, alur baca, olah, dan gambar data menjadi rangkaian blok yang lebih sulit dirawat daripada skrip. Perbaikannya adalah memilih skrip MATLAB untuk pemrosesan data yang tidak memuat keadaan yang saling memengaruhi.
- Menganggap diagram blok menggantikan matematika. Penyebabnya adalah penyusunan yang dilakukan sepenuhnya secara visual. Akibatnya, peran parameter seperti dan tidak dipahami sehingga penyetelan menjadi coba-coba. Perbaikannya adalah menurunkan persamaan model sebagaimana fungsi
kendali_tertutupsebelum menyusun diagramnya. - Membiarkan hasil simulasi tanpa pembanding. Penyebabnya adalah kurva keluaran yang tampak wajar sehingga terasa cukup. Akibatnya, kesalahan sambungan atau penyetelan pemecah tersembunyi di balik tampilan. Perbaikannya adalah membandingkan hasil dengan jawaban analitis atau kasus batas seperti nilai mantap pada contoh di atas.
Ringkasan#
- Simulink adalah lingkungan simulasi diagram blok yang terintegrasi dengan MATLAB dan dijalankan oleh pemecah numerik, dengan blok, sinyal, dan pemecah sebagai tiga unsur dasarnya.
- Diagram blok tepat dipakai untuk sistem dinamik bertingkat dan alur desain berbasis model, sedangkan pemrosesan data murni lebih pas ditulis sebagai skrip MATLAB.
- Stateflow menambah logika keadaan, Simscape menambah pemodelan fisik, dan penghasil kode menerjemahkan model terverifikasi menjadi C atau C++.
- Model loop kendali tertutup dapat disimulasikan tanpa Simulink dengan
ode45, dan hasilnya cocok dengan jawaban analitis nilai mantap 0.8.
Referensi#
- Simulink — MathWorks — halaman produk resmi yang memperkenalkan lingkungan simulasi diagram blok.
- new_system — MathWorks — rujukan resmi pembuatan model Simulink baru secara programatik.
- ode45 — MathWorks — rujukan pemecah persamaan diferensial biasa yang dipakai pada simulasi tanpa Simulink.
- Simulink — Wikipedia — gambaran umum independen mengenai lingkungan pemodelan diagram blok beserta ekosistemnya.