Posisi Simulink

Mengenali diagram blok Simulink dan kapan desain berbasis model menjadi pilihan tepat.

Daftar isi

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.

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.

PengendaliK = 4Plant1/(3s+1)Sensoracuan r = 1keluaran y+-umpan balik
Loop kendali tertutup sebagai diagram blok dengan jalur umpan balik sensor

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.

KebutuhanSarana yang tepat
Sistem dinamik dengan umpan balik lintas ranah fisikSimulink
Model besar yang disusun bertingkat dari subsistemSimulink
Purwarupa kendali sebelum diimplementasikan sebagai kodeSimulink dengan penghasil kode
Pemrosesan data pengukuran dari berkas sampai plotskrip MATLAB
Perhitungan matriks dan aljabar numerikskrip 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.

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.

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 τ=3 \tau = 3 detik yang merespons masukan u u menurut persamaan

dxdt=u−xτ \frac{dx}{dt} = \frac{u - x}{\tau}

Plant itu ditulis sebagai fungsi anonim lalu disimulasikan dengan masukan tetap bernilai 1 selama 12 detik.

matlab Plant orde satu dengan masukan tetap
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));
text Keluaran
banyak langkah : 129
nilai akhir    :   0.9817
nilai teoretis :   0.9817

Nilai akhir simulasi cocok dengan jawaban analitis 1−e−4 1 - e^{-4} karena 12 detik mencakup empat konstanta waktu. Loop tertutup kemudian dibentuk dengan pengendali proporsional u=K (r−x) u = K\,(r - x) untuk acuan r=1 r = 1 dan penguatan K=4 K = 4 , sehingga persamaan gabungannya menjadi

dxdt=K (r−x)−xτ \frac{dx}{dt} = \frac{K\,(r - x) - x}{\tau}

Model gabungan itu ditulis sebagai berkas fungsi berikut, dan tiga baris terakhirnya memetakan tepat tiga blok pada diagram: penjumlah, pengendali, lalu plant.

matlab kendali_tertutup.m
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
end

Simulasi loop tertutup memakai pemecah yang sama dengan keadaan awal nol.

matlab Simulasi loop tertutup dengan ode45
[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)));
text Keluaran
banyak langkah : 129
nilai akhir    :   0.8000
nilai teoretis :   0.8000

Loop tertutup mencapai nilai mantap 0.8 dengan konstanta waktu efektif τ/(K+1)=0,6 \tau/(K+1) = 0{,}6 detik, dan nilai akhirnya cocok dengan jawaban analitis 0,8 (1−e−20) 0{,}8\,(1 - e^{-20}) . 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.

matlab Model loop kendali disusun secara programatik
% 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 1/(τs+1) 1/(\tau s + 1) . 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 K K dan τ \tau tidak dipahami sehingga penyetelan menjadi coba-coba. Perbaikannya adalah menurunkan persamaan model sebagaimana fungsi kendali_tertutup sebelum 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 dx/dt=(K(r−x)−x)/τ dx/dt = (K(r - x) - x)/\tau dapat disimulasikan tanpa Simulink dengan ode45, dan hasilnya cocok dengan jawaban analitis nilai mantap 0.8.

Referensi#