|
Simulation of Fuzzy Control System Using Matlab M-File
Diagram
blok sistem kendali fuzzy yang akan disimulasikan adalah memiliki
struktur pengendali fuzzy PD-like seperti terlihat dalam Gambar 1, yaitu
sistem fuzzy yang memiliki dua masukan proporsional dan turunan, dengan Gp
adalah penguatan proporsional, Gd adalah penguatan turunan dan Go
adalah penguatan keluaran.

Gambar 1. Diagram
blok pengendali fuzzy PD-like.
Simulasi
dimulai dengan menetapkan nilai kondisi awal dari plant, error dan pengendali.
Kemudian langkah program memasuki proses looping yang berlangsung selama
waktu yang kita inginkan (dengan mempertimbangkan waktu pencuplikan). Setiap
memasuki iterasi ke-k , error(k) dihitung menggunakan Persamaan 1. Kemudian
nilai perubahan error (turunan error) dihitung dengan Persamaan 2. Setelah nilai
error dan perubahan error diperoleh, selanjutnya nilai tersebut dimasukan ke
sistem logika fuzzy sehingga diperoleh keluaran yang akan digunakan
sebagai masukan plant. Dengan masukan plant ini, maka keluaran plant dapat
dihitung. Selanjutnya menuju iterasi berikutnya. Proses ini dapat dilihat pada
Gambar 2.
(1)
(2)

Gambar 2. Diagram
alir simulasi sistem kendali fuzzy.
Sebelum
mensimulasikan sistem kendali fuzzy menggunakan M-file Matlab secara
keseluruhan, terlebih dahulu dituliskan fungsi-fungsi yang mendukung, supaya
program utama tidak terlalu rumit. Fungsi-fungsi tersebut adalah fungsi untuk
fuzzifikasi, fungsi pengendali fuzzy dan fungsi untuk plant.
Berikut ini adalah listing program untuk mendeklarasikan fungsi-fungsi tersebut.
Fungsi untuk fuzzifikasi himpunan error/delta error
negatif
function y=setiga_kr(x,a,b);
y=max(min(1,(b-x)/(b-a)),0);
Fungsi untuk fuzzifikasi himpunan error/delta error
zero
function y=setiga_tg(x,a,b,c);
y=max(min((x-a)/(b-a),(c-x)/(c-b)),0);
Fungsi untuk fuzzifikasi himpunan error/delta error
positif
function y=setiga_kn(x,a,b);
y=max(min(1,((x-a))/(b-a)),0);
Fungsi untuk pengendali fuzzy
function o=fuzz_satelit(x1,x2)
%fuzzifikasi masukan error
E_N=setiga_kr(x1,-1,0);
E_Z=setiga_tg(x1,-1,0,1);
E_P=setiga_kn(x1,0,1);
%fuzzifikasi masukan perubahan error
Ce_N=setiga_kr(x2,-1,0);
Ce_Z=setiga_tg(x2,-1,0,1);
Ce_P=setiga_kn(x2,0,1);
%menghitung fired weight tiap kaidah fuzzy
f1=min(E_N,Ce_N);%-1
f2=min(E_N,Ce_Z);%-1
f3=min(E_Z,Ce_N);%-1
f4=min(E_N,Ce_P);%0
f5=min(E_Z,Ce_Z);%0
f6=min(E_P,Ce_N);%0
f7=min(E_Z,Ce_P);%1
f8=min(E_P,Ce_Z);%1
f9=min(E_P,Ce_P);%1
f=[f1 f2 f3 f4 f5 f6 f7 f8 f9];
%data titik tengah membership keluaran untuk tiap
rule
y=[-1 -1 -1 0 0 0 1 1 1]; %lebar membershipnya
adalah 2
%menghitung y_Fuzzy1
num=0;
den=0;
for k=1:9
num=num+((2*(f(k)-(f(k)^2)/2))*y(k));
den=den+((2*(f(k)-(f(k)^2)/2))*y(k));
end
o=num/den;
Fungsi untuk plant satelit
function [x1,x2]=f_satelit(dt,u_0,x1_0,x2_0);
a1=u_0;
b1=x2_0;
a2=u_0;
b2=(x2_0+dt*(b1/2));
a3=u_0;
b3=(x2_0+dt*(b2/2));
a4=u_0;
b4=(x2_0+dt*(b3));
x1=x1_0+(dt/6)*(b1+2*b2+2*b3+b4);
x2=x2_0+(dt/6)*(a1+2*a2+2*a3+a4);
Fungsi-fungsi di
atas adalah digunakan dalam program utama dari simulasi sistem kendali sudut
satelit. Setiap fungsi disimpan dengan nama file seperti nama fungsinya,
sehingga ketika dipanggil dalam program utama maka fungsi yang bersangkutan akan
langsung dijalankan komputer. Listing program utama simulasinya adalah sebagai
berikut:
clear;
x1(1)=0;
x2(1)=0;
y(1)=0;
dt=0.01;
u(1)=1;
r=0.5
e(1)=-r;
gp=1;
gd=1;
go=1;
for n=1:1000
k=n+1;
e(k)=r-y(k-1);
de(k)=100*(e(k)-e(k-1));
u(k)=go*fuzz_satelit(gp*e(k),gd*de(k));
%u(k)=e(k);
[x1(k),x2(k)]=f_satelit(dt,u(k-1),x1(k-1),x2(k-1));
y(k)=x1(k);
end
t=linspace(0,10,1001);
figure;
plot(t,y);
xlabel('detik');
ylabel('rad');

Gambar 3. Tanggapan sudut satelit terhadap acuan 0,5
rad dengan Gp, Gd dan Go =1
Program utama di
atas adalah mensimulasikan sistem kendali sudut satelit dengan waktu pencuplikan
sebesar 10 mdet, selama 10 detik. Dengan Gp, Gd dan Go sebesar 1, serta acuan
0,5 rad. Jika program utama tersebut dijalankan (dieksekusi) maka akan
didapatkan grafik tanggapan (dengan garis tebal) seperti terlihat dalam Gambar
4.7, sedangkan grafik tanggapan dengan garis putus-putus adalah grafik tanggapan
sistem dengan menggunakan defuzzifikasi yang kedua(bobot tiap kaidah dikalikan
dengan titik tengah fungsi keanggotaan keluaran).
Gambar 4.8 adalah grafik tanggapan sistem kendali
dengan nilai Gp, Gd dan Go yang diubah. Grafik
bertanda 1 adalah untuk Gp=0.5, Gd=1 dan Go=1,
grafik bertanda 2 adalah untuk Gp=1, Gd=0.5 dan Go=1,
sedangkan grafik bertanda 3 adalah untuk Gp=1, Gd=1 dan Go=0.5.

Gambar 4. Tanggapan posisi satelit dengan nilai
penguatan yang berbeda.
Dari penjelasan di atas, nilai penguatan pengendali
yang berbeda, akan memberikan hasil tanggapan sistem yang berbeda pula. Terdapat
dua besaran pengutan yang dapat ditala, yaitu penguatan pada sisi masukan dan
sisi keluaran. Penguatan pada sisi masukan adalah Gp dan Gd sedangkan penguatan
pada sisi keluaran adalah Go. Jika dilihat dari bentuk fungsi keanggotaan,
perubahan nilai penguatan pengendali memiliki persamaan dengan perubahan lebar
dasar dan skala titik tengah segitiga himpunan keanggotaan masukan maupun
keluarannya. Jika penguatan masukan diperbesar, maka akan setara dengan
pengecilan lebar dasar dan skala titik tengah segitiganya dan demikian
sebaliknya akan memperbesar lebar dasar dan skala titik tengah segitiga himpunan
masukannya. Sedangkan untuk penguatan keluaran, jika diperbesar maka akan setara
dengan memperbesar skala titik tengah dan lebar himpunan fuzzy
keluarannya. Proses ini dapat dilihat pada Gambar 4.9 dan 4.10.

(a)
(b)

(c)
Gambar 5. Perubahan penguatan masukan setara dengan
perubahan fungsi keanggotaan fuzzy.
Gambar 5(a) adalah bentuk fungsi keanggotaan masukan
dengan penguatan sebesar 1, Gambar 5(b) adalah untuk penguatan sebesar 2,
sedangakan Gambar 5(c) adalah untuk penguatan 0,5.

(a)
(b)

(c)
Gambar 6. Perubahan nilai penguatan keluaran setara
dengan perubahan bentuk fungsi keanggotaan fuzzy keluaran
Gambar 6(a) adalah bentuk fungsi keanggotaan dengan
penguatan sebesar 1, Gambar 6(b) adalah untuk penguatan sebesar 0.5, sedangkan
Gambar 6(c) adalah untuk penguatan sebesar 2.
|