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