program pembentukan matrix admitansi pada sistem

advertisement
JETri, Volume 1, Nomor 1, Agustus 2001, Halaman 1 - 16, ISSN 1412-0372
PROGRAM PEMBENTUKAN MATRIX ADMITANSI
PADA SISTEM TENAGA LISTRIK
MENGGUNAKAN MATLAB
Maula Sukma Widjaja
Dosen Jurusan Teknik Elektro-FTI, Universitas Trisakti
Abstract
The study aims to point out appluation of Matlab in analyzing admittance of electrical power
system. Furthemore, its correlation with other pachage program such as MS Word or even
Excel, makes the analysis sampler and more flexible. Eventually the analysis made in Matlab
format, can be obtained or exported other related pachage program such as Excel and MS
Word according to the fowsing Needs
Keywords: admittance, simulation, manipulation, arrays
1. Pendahuluan
Perkembangan komputer baik hardware maupun software
berkembang akhir-akhir ini dengan sangat pesatnya. Salah satu
perkembangan dibidang software (perangkat lunak), khususnya yang sering
digunakan dibidang teknik adalah Matlab. Matlab adalah suatu bahasa
pemerograman komputer yang digunakan untuk memecahkan persoalanpersoalan (khususnya bidang teknik), seperti halnya bahasa-bahasa program
lainnya yang sudah dikenal, misalnya Fortran, Basic, Pascal, C language
dan lain-lain. Jadi Matlab adalah salah satu High level language yang
dikembangkan setelah bahasa-bahasa tersebut diatas (The Math Works Inc.,
1997: 30). Syntax Mat-lab mirip dengan Basic dan C, namun memiliki
kemampuan/kelebihan dari bahasa-bahasa yang disebutkan terakhir.
Kelebihan-kelebihan Matlab dari bahasa lainnya akan diperlihatkan
dalam tulisan ini, khususnya penggunaan dibidang Sistem Tenaga Listrik,
diantaranya pendefinisian data bilangan serta pengoperasiannya. Data yang
berupa bilangan biasa, atau bilangan komplek atau bahkan suatu matrix
(baik ril maupun komplek), pengoperasiannya sudah disiapkan operasinya
built-in didalam Matlab itu sendiri. Jadi kita tidak perlu lagi mendefinisikan
dan membuat definisi-definisi / rutin-rutin untuk operasi terhadap data-data
tersebut. Dengan demikian pembuatan program dalam Matlab akan jauh
lebih mudah dan lebih singkat dibanding dengan bahasa-bahasa program
lainnya.
JETri, Tahun Volume 1, Nomor 1, Agustus 2001, Halaman 1 - 16, ISSN 1412-0372
Naskah makalah tulisan ini diketik menggunakan MS-Word (office
2000), dimana program Matlab dapat berkomunikasi langsung dengannya
dan menuliskan hasil perhitungannya langsung kedalam MS-Word. Hal ini
dilakukan berkat adanya fasilitas “Templates and Add-Ins…” dalam MSWord dan adanya “template m-book.dot” yang disediakan oleh Matlab.
2. Perintah Sederhana Dalam Matlab
Dalam matlab, untuk mendefinisikan x=0,2 ; 0,4; 0,6;….1.0,
maka x dinyatakan dalam bentuk array 1 dimensi.
Untuk menyatakan hal tersebut, dalam Matlab kita dapat tulis
perintahnya sebagai berikut:
x = [0.2*pi 0.4*pi 0.6*pi 0.8*pi 1.0*pi] .
Jika pada akhir kurung tutup "]" kemudian ditekan [ctrl][enter], maka akan
ditampilkan dalam Microsoft Word sebagai berikut:
x = 0.6283 1.2566 1.8850 2.5133 3.1416
dapat juga dituliskan perintah
x = (0.2:0.2:1)*pi
x = 0.6283 1.2566 1.8850 2.5133 3.1416
Pernyataan x = (0.2:0.2:1)*pi artinya setiap elemen dalam x diisi dari 0.2*pi
s/d 1.0*pi dengan increment 0.2*pi.
Jika hendak menghitung nilai sinus dari x, sebut y = sin(x), maka
variabel y juga berupa array 1 dimensi, yang elemen-elemen untuk y adalah
nilai sinus dari x untuk index array yang bersesuaian. Jadi:
y = sin(x)
y = 0.5878 0.9511 0.9511 0.5878
0.0000
Jika ditulis m=[x;y] , maka akan dibentuk matrix m yang baris pertamanya
adalah x dan baris keduanya adalah y.
m = [x;y]
m = 0.6283 1.2566 1.8850
0.5878 0.9511 0.9511
2
2.5133 3.1416
0.5878 0.0000
Maula Sukma Widjaja, Program Pembentukan Matriks Admitansi pada Sistem Tenaga Listrik
Matrix bilangan acak ma=rand(3), maka variabel ma akan berisi matrix
bilangan acak 3x3, yaitu:
ma = 0.9501 0.4860 0.4565
0.2311 0.8913 0.0185
0.6068 0.7621 0.8214
Pengambilan baris 1 dari ma dapat ditulis mab1=ma(1,:). Artinya
isi variabel mab1 dengan isi matrix ma baris ke 1. Jadi:
mab1 = 0.9501 0.4860 0.4565
Demikian juga untuk pengambilan kolom kedua, dalam Matlab
perintahnya adalah mak2=ma(:,2). Perhatikan M(:,j) artinya ambil isi matrix
M untuk setiap baris pada kolom ke j, sedangkan M(j,:) artinya ambil isi
baris M yang ke j untuk setiap kolom. Jadi untuk variabel mak2 adalah:
mak2 = 0.4860
0.8913
0.7621
Misalkan ada 2 Matrix bilangan sembarang A dan B ukuran 3x3 yang
didefinisikan dengan A=rand(3)
A = 0.4447 0.9218 0.4057
0.6154 0.7382 0.9355
0.7919 0.1763 0.9169
B = rand(3)
B = 0.4103 0.3529 0.1389
0.8936 0.8132 0.2028
0.0579 0.0099 0.1987
Perkalian matrix diperlakukan seperti perkalian bilangan biasa.
Jadi C=A*B
C = 1.0297 0.9105 0.3293
0.9663 0.8267 0.4211
0.5355 0.4318 0.3279
3
JETri, Tahun Volume 1, Nomor 1, Agustus 2001, Halaman 1 - 16, ISSN 1412-0372
Sedangkan invers matrix, D=inv(C)
D = 276.0720
-282.7105
-78.5431
-483.6128
498.9152
132.7520
343.7162
-356.6976
-88.5285
(perhatikan bahwa rutin invers matrix sudah built-in dalam Matlab). Dan
E=C*D
E = 1.0000 0.0000 0.0000
-0.0000 1.0000 -0.0000
-0.0000 0.0000 1.0000
yang hasilnya adalah matrix satuan.
Peintah-perintah untuk operasi bilangan komplek bahwa Matlab juga
diperlakukan seperti bilangan biasa.
Misalnya Z=3-3i
Z = 3.0000 - 3.0000i
Z/2
ans = 1.5000 - 1.5000i
1/Z
ans = 0.1667 + 0.1667i
demikian pula dengan matrix bilangan komplek,
a = rand(3)+sqrt(-1)*rand(3)
a = rand(3)+sqrt(-1)*rand(3)
a = 0.8462 + 0.5028i 0.6721 + 0.3046i 0.6813 + 0.6822i
0.5252 + 0.7095i 0.8381 + 0.1897i 0.3795 + 0.3028i
0.2026 + 0.4289i 0.0196 + 0.1934i 0.8318 + 0.5417i
b = inv(a)
b = 1.3341 + 1.2778i -1.0514 - 1.1237i -0.5512 - 0.8864i
-0.1257 - 1.4494i 1.2173 + 1.0783i -0.7144 + 0.8205i
-0.4280 - 0.6570i 0.1609 + 0.4026i 1.0592 - 0.0428i
4
Maula Sukma Widjaja, Program Pembentukan Matriks Admitansi pada Sistem Tenaga Listrik
dan jika dilihat hasil perkaliannya, a*b
ans = 1.0000 + 0.0000i
-0.0000 + 0.0000i
-0.0000 + 0.0000i
0.0000 - 0.0000i
1.0000 - 0.0000i
0.0000 - 0.0000i
0 + 0.0000i
0 - 0.0000i
1.0000
misalkan didefinisikan kembali matrix dengan variabel a sebagai berikut:
a=rand(4,5) ; adalah matrix bilangan random 4x5 (baris, kolom)
a = 0.9501
0.2311
0.6068
0.4860
0.8913
0.7621
0.4565
0.0185
0.8214
0.4447
0.6154
0.7919
0.9218
0.7382
0.1763
0.4057
0.9355
0.9169
0.4103
0.8936
Misalkan diambil matrix b ukuran 4x2 yang elemennya merupakan kolom 1
dan 2 dari matrix a. Dalam Matlab perintahnya adalah:
b = a(:,1:2)
b = 0.9501
0.2311
0.6068
0.4860
0.8913
0.7621
0.4565
0.0185
Matrix c(4x2) adalah matrix yang elemennya kolom 1 dan 5 dari matrix a.
Dalam Matlab penulisannya adalah sbb:
c=[a(:,1) a(:,5)]
c = 0.9501 0.9355
0.2311 0.9169
0.6068 0.4103
0.4860 0.8936
Demikian pula untuk perintah pengambilan baris dari matrix. Matrix d(2x5)
yang elemennya diambil dari baris 3 dan 4 matrix a. Dalam Matlab
perintahnya adalah d=a(3:4,:)
d = 0.6068 0.4565
0.4860 0.0185
0.6154
0.7919
0.1763 0.4103
0.4057 0.8936
5
JETri, Tahun Volume 1, Nomor 1, Agustus 2001, Halaman 1 - 16, ISSN 1412-0372
Perintah-perintah tersebut penting diketahui didalam membuat / menyusun
program Matlab. Perhatikan pula bahwa selama proses diatas, isi matrix a
tidak berubah, yaitu a
a = 0.9501
0.2311
0.6068
0.4860
0.8913
0.7621
0.4565
0.0185
0.8214
0.4447
0.6154
0.7919
0.9218
0.7382
0.1763
0.4057
0.9355
0.9169
0.4103
0.8936
Fungsi size() adalah untuk mengambil jumlah baris dan kolom dari suatu
matrix.
[brs kol]= size(a)
brs = 4
kol = 5
perintah [brs kol]= size(a) diatas akan dieksekusi oleh Matlab untuk
menentukan ukuran matrix a. Variabel brs akan diisi jumlah baris matrix a
dan kol akan diisi jumlah kolom matrix a. (brs=4 dan kol=5).
Matrix abcd terdiri dari sub-sub sbb:
size(b)
ans = 4 2
size(d)
ans = 2 5
[x y]=size(d)
x=2
y=5
abcd=rand(4,7)
abcd =
6
Sub a
Sub b
Sub c
Sub d
Maula Sukma Widjaja, Program Pembentukan Matriks Admitansi pada Sistem Tenaga Listrik
0.3028 0.3784 0.4966
0.5417 0.8600 0.8998
0.8180 0.3412 0.8385 0.5466
0.6602 0.5341 0.5681 0.4449
0.1509 0.8537 0.8216
0.6979 0.5936 0.6449
0.3420 0.7271 0.3704 0.6946
0.2897 0.3093 0.7027 0.6213
a=abcd(1:2,1:3) % ini adalah perintah untuk mengambil sub a
a = 0.3028 0.3784 0.4966
0.5417 0.8600 0.8998
b=abcd(1:2,4:7) % perintah untuk mendapatkan sub b
b = 0.8180 0.3412 0.8385 0.5466
0.6602 0.5341 0.5681 0.4449
perintah untuk mendapatkan sub matrix c dan d adalah:
c = abcd(3:4,1:3)
d = abcd(3:4,4:7)
c = 0.1509 0.8537 0.8216
0.6979 0.5936 0.6449
d = 0.3420 0.7271 0.3704 0.6946
0.2897 0.3093 0.7027 0.6213
Contoh operasi diatas akan kita gunakan juga dalam program Matlab untuk
reduksi jala-jala dalam sistem tenaga listrik.
3. Perogram Sederhana
Contoh : Buat program jumlah(n) = 1+2+3+…+n, menggunakan matlab.
a=jumlah(3), maka Matlab akan menghitung a=1+2+3=6.
7
JETri, Tahun Volume 1, Nomor 1, Agustus 2001, Halaman 1 - 16, ISSN 1412-0372
Jawab:
Flowchart untuk melakukan perhitungan tersebut dioperasikan di bawah ini.
Jika program dijalankan maka:
a=0
for i=1 to n
a=a+i
function a=jumlah(n)
a=0;
for i=1:n ;
a=a+i;
end;
jumlah(3)
ans =
6
Hasil a=jumlah(n)
Gambar 1. Flowchart Perhitungan
jumlah(5)
ans = 15
jumlah(10)
ans = 55
Contoh:
Buat program kali sehingga kali (5) akan dihitung = 1x2x3x4x5 = 20
Jawab:
a=1;
for i=1 : n;
a=a*i;
end;
Jika dijalankan: kali (3)
8
Maula Sukma Widjaja, Program Pembentukan Matriks Admitansi pada Sistem Tenaga Listrik
ans = 6
kali (5)
ans = 120
Misalkan matrix A adalah matrix yang elemen-elemennya adalah bilangan
satuan yang didefinisikan sebagai berikut,
A = ones (3)
jadi:
A= 1
1
1
1
1
1
1
1
1
Jika semua elemen A akan dibuat nol kecuali diagonal utamanya dan
misalkan hendak dilakukan melalui program yang ditulis dalam bahasa
Matlab, programnya adalah sebagai berikut:
for i=1:3;
for j=1:3;
if i==j;
A(i,j)=1;
else
A(i,j)=0;
end;
end;
end;
A
Jika program diatas dijalankan, maka nilai akhir A akan dicetak:
A= 1
0
0
0
1
0
0
0
1
yaitu sesuai dengan apa yang diharapkan. Pada program diatas, variabel i
dan j berjalan dari 1 s/d 3. Jika i=j, yaitu untuk A(1,1), A(2,2) dan A(3,3),
nilai A(i,j) diisi 1. Jika tidak, diisi dengan nol. Oleh karena itu nilai akhir
matrix A adalah matrix satuan seperti apa yang ingin dibuat.
9
JETri, Tahun Volume 1, Nomor 1, Agustus 2001, Halaman 1 - 16, ISSN 1412-0372
Contoh berikut misalnya ingin dibuat elemen A isinya adalah bilanganbilangan 1,2,3…9. Bentuk programnya adalah:
k=1;
for i=1:3;
for j=1:3;
A(i,j)=k;
k=k+1;
end;
end;
A
Perhatikan bahwa diatas selain variabel i dan j (untuk index matrix)
kita juga membutuhkan 1 variabel lain, k, yang mula-mula (diawal
program) di-inisialisasi dengan 1 (k=1).
Kemudian didalam program, setelah nilainya diisikan ke elemen
A(i,j) kemudian di-increment dengan 1 (k=k+1).
Bentuk hasil eksekusi program diatas menghasilkan matrix A
sebagai berikut:
A= 1
4
7
2
5
8
3
6
9
yang sesuai dengan apa yang hendak dibuat.
4. Pemasukan Data
Penulisan / pemasukan data untuk perhitungan dan pemograman
menggunakan Matlab, biasanya (lebih mudah) menggunakan Microsoft
Excel.
Data dari Microsoft Excel dapat dibaca langsung oleh Matlab. Data
yang telah dibaca Matlab kemudian diolah/ diprogram, sesuai tujuan.
Sebagai contoh, data pembentukan jaringan sebagai berikut:
10
Maula Sukma Widjaja, Program Pembentukan Matriks Admitansi pada Sistem Tenaga Listrik
0,2
1
2
3
0,1
0,1
0,1
Gambar Sistem 3 bus.
Semua Data saluran adalah reaktansi (R=0).
Tabel pembentukan jaringan gambar diatas dapat disusun menggunakan
Microsoft Excel sebagai berikut:
Tabel Pembentukan Jaringan
No. Elemen Dari Bus
Ke Bus
R(pu)
X(pu)
Kasus
1.
0
1
0
0.1
1
2.
0
2
0
0.1
1
3.
0
3
0
0.1
1
4.
1
2
0
0.2
4
5.
1
3
0
0.1
4
6.
2
3
0
0.1
4
11
JETri, Tahun Volume 1, Nomor 1, Agustus 2001, Halaman 1 - 16, ISSN 1412-0372
Misalkan data diatas dibaca oleh Matlab dengan nama variabel data01,
maka jika ingin melihat apakah data sudah dibaca oleh Matlab diketikan
sebagai berikut:
data01 = 1.0000
0
1.0000
0
0.1000
1.0000
2.0000
0
2.0000
0
0.1000
1.0000
3.0000
0
3.0000
0
0.1000
1.0000
4.0000 1.0000
2.0000
0
0.2000
4.0000
5.0000 1.0000
3.0000
0
0.1000
4.0000
6.0000 2.0000
3.0000
0
0.1000
4.0000
(data sudah disimpan dengan nama variabel data01)
Secara singkat, Langkah-langkah yang diperlukan:
1. Jalankan Microsoft Excel.
2. Jalankan Matlab dalam Microsoft Excel
3. Jalankan Microsoft Word
4. Coba lakukan transfer data (misal dari Microsoft Excel, jalankan
Matlab, buat perintah sembarang, simpan hasilnya ke Matlab.
Lakukan pemanggilan dari dalam Microsoft Word maupun dari
Matlab sendiri).
Jika dipanggil dari dalam Microsoft Word, data02.
data02 = 0.1365 0.1991 0.2844 0.9883
0.0118 0.2987 0.4692 0.5828
0.8939 0.6614 0.0648 0.4235
5. Program Matrix Admitansi
Berikut adalah program dan contoh membentuk Ybus dari jaringan sebagai
berikut:
12
Maula Sukma Widjaja, Program Pembentukan Matriks Admitansi pada Sistem Tenaga Listrik
0,2
1
2
3
0,1
0,1
0,1
Gambar Sistem 3 bus. Semua Data saluran adalah reaktansi (R=0).
Tabel pembentukan jaringan gambar diatas dapat disusun menggunakan
Microsoft Excel sbb:
Tabel Pembentukan Jaringan
No. Elemen
Dari Bus
Ke Bus
R(pu)
X(pu)
1.
0
1
0
0.1
2.
0
2
0
0.1
3.
0
3
0
0.1
4.
1
2
0
0.2
5.
1
3
0
0.1
6.
2
3
0
0.1
Dari tabel diatas kita buat matrix ydat yang isinya adalah nilai-nilai dalam
tabel diatas (matrix berukuran 6x5) sbb : ydat
ydat = 1.0000
2.0000
3.0000
4.0000
5.0000
6.0000
0
0
0
1.0000
1.0000
2.0000
1.0000
2.0000
3.0000
2.0000
3.0000
3.0000
0
0
0
0
0
0
0.1000
0.1000
0.1000
0.2000
0.1000
0.1000
13
JETri, Tahun Volume 1, Nomor 1, Agustus 2001, Halaman 1 - 16, ISSN 1412-0372
Contoh dalam Microsoft Excel diperintahkan Mablab untuk membuat
matrix sembarang, sebut data 02:
14
Maula Sukma Widjaja, Program Pembentukan Matriks Admitansi pada Sistem Tenaga Listrik
Setelah data dapat dibaca oleh Matlab, yaitu matrix ydat diatas, kita dapat
hitung (dengan membuatkan programnya dahulu, yaitu fungsi ybus(ydat))
matrix Ybus yaitu dengan perintah sebagai berikut:
Ybus=ybus(ydat)
Ybus = 0 -25.0000i
0 + 5.0000i
0 +10.0000i
0 + 5.0000i
0 -25.0000i
0 +10.0000i
0 +10.0000i
0 +10.0000i
0 -30.0000i
Fungsi ybus(ydat) yang dibuat dapat dilihat pada halaman lampiran.
Untuk dapat menyusun program diatas, ingat kembali cara pembentukan
matrix Ybus dari persamaan simpul arus dalam suatu jaringan. Untuk
jaringan dengan 3 simpul (tidak termasuk simpul nol/acuan) persamaan
umum arus (Stagg, 1981: 125) adalah:
 I 1   Y11 Y12
  
 I 2    Y21 Y22
 I  Y
 3   31 Y32
Y13 

Y23 
Y33 
 V1 
 
 V2 
V 
 3
dimana matrix Ybus adalah simetris (Yij = Yji ).
Jadi:
Ybus
 Y11 Y12 Y13 


  Y12 Y22 Y23 
Y

 13 Y23 Y33 
Dimana :
Y11  y 01  y12  y13
Y22  y 02  y12  y 23
admitansi sendiri
Y33  y 03  y13  y 23
dan
15
JETri, Tahun Volume 1, Nomor 1, Agustus 2001, Halaman 1 - 16, ISSN 1412-0372
Y12  Y21   y12
Y13  Y31   y13
admitansi bersama
Y23  Y32   y 23
Algorithma pembentukan matrix admitansi bus menggunakan Matlab
adalah sebagai berikut:
1. Tentukan nomor bus terbesar dari variabel “daribus” dan “kebus”,
simpan dalam variabel nbus, “nbus=max(ydat(:,2:3))”
2. Siapkan matrix ybus(nbus), mula-mula elemennya diisi dengan nilai nol
semuanya (inisialisasi dengan nol), “ybus=zeros(nbus)”
3. Siapkan jumlah baris data yang hendak dibaca dari excel (jumlah baris
data ydat) “[r c]=size(ydat)”
4. Siapkan variabel untuk menampung impedansi primitif dan admitansi
primitif : “zpr=ydat(:,4)+sqrt(-1)*ydat(:,5); ypr=1 ./zpr;”
5. Hitung Yii dan Yij. Dalam contoh diatas, Y11=jumlah admitansi yang
terhubung pada simpul 1. Jadi program harus dibuat untuk dapat
mengambil hanya baris-baris 1, 4 dan 5. Demikian pula dengan elemen
yang lainnya. (Y22 dibaca hanya baris 2, 4 dan 6. Y33 yang dibaca hanya
baris 3, 5 dan 6, yaitu yang memiliki indek 3)
6. Kesimpulan:
Matlab adalah suatu bahasa pemograman komputer seperti halnya bahasa
pemograman komputer lainnya (Basic, Pascal, C, dll). Tulisan ini
memperlihatkan secara ringkas penggunaan bahasa Matlab dan aplikasinya
dalam membentuk matrix admitansi dalam suatu sistem tenaga. Terlihat
bahwa dengan Matlab, program menjadi sederhana dan lebih luwes karena
dapat berkomunikasi dengan program lainnya (MS-Word maupun Excel).
Pembacaan data maupun penulisan hasil perhitungan serta publikasinya
langsung dapat dilakukan dengan word maupun excel.
Daftar Pustaka
1. The Student Edition of Matlab. 1997. The Language of Technical
Computing, Version 5, User Guide, The Math Works Inc. Published by
Prentice-Hall.
16
Download