Simulasi Sistem Kendali Fuzzy  

Home

Neural Net Neuro Fuzzy Mikrokontroler Fuzzy Membuat Web

 

 

 

 

 

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.

 

 

 

 

 

 

Home

Neural Net Neuro Fuzzy Mikrokontroler Fuzzy Membuat Web

Contact Webmaster 

© 2008 Wakhyu Dwiono