Anda di halaman 1dari 15

Minggu:

Sistem Kendali
02

Unismuh Makassar Program Port Berbasis Semester : V 01/10/


Jurusan Teknik Elektro Waktu : 2 Jam 2013
MATLAB Untuk
PC-Link SERIAL PPI

1. PENDAHULUAN
Program komputer atau Software yang digunakan untuk program membaca atau
menulis Port 1, Port 2, Port A, B, dan C pada PC-Link SERIAL PPI antara lain adalah
Borland Delphi atau Turbo Pascal. Akan tetapi sejalan dengan perkembangan sistem
operasi komputer dimana komputer tidak lagi menggunakan operasi sistem DOS maka
program seperti Turbo Pascal tidak dapat lagi digunakan/di install dikomputer. Agar
mudah dipelajari maka pada uraian kali ini akan digunakan Software MATLAB sebagai
pengganti program Delphi atau Pascal. MATLAB sangat cocok dengan operasi sistem
Windows 7 atau Windows 8 baik 32 bit maupun 64 bit, sistem operasi Windows 7 atau
Windows 8 umumnya digunakan pada PC/Laptop sekarang ini.

2. MODUL PC-Link SERIAL PPI

Modul PC-Link SERIAL PPI dengan tampilan Led diperlihatkan pada gambar di bawah

7 5
4

6
1: PC-Link SERIAL PPI, 2: Terminal Untuk sumber DC (9-12 V)
3: Kabel Penghubung Serial/COM port komputer ke modul PPI
4: Adaptor DC 9 Volt, 5: Konverter kabel USB ke serial ( jika program ditulis
pada Laptop, umumnya Laptop tidak mempunyai Com Port)
6: Modul penampil Led, 7: Led

Komputer
Laptop

USB
Sumber DC
Kabel COM/Serial
Konverter
USB ke
serial

+9 V Kabel DB9/
Serial
GND

Port
Port
A,B, C
1&2

Ke Pin
Port
5V
VCC

Tampilan
Led
HUBUNGAN SERIAL PPI DENGAN KOMPUTER
SERIAL PPI dapat dihubungkan dengan COM port komputer atau dengan kontroler lain
yang juga memiliki interface UART RS-232. Perhatikan hubungan jalur komunikasinya.

PERANGKAT LUNAK SERIAL PPI


Waktu yang dibutuhkan SERIAL PPI mulai menyala hingga siap dioperasikan (Start-up
Time) = 25 ms.
SPESIFIKASI UART RS-232
Secara default, komunikasi UART RS-232 bekerja pada Baud Rate 9600 bps, 8 Data Bit,
No Parity Bit, 1 Stop Bit, No Flow Control. Pilihan baud rate yang lain adalah19200 bps,
38400 bps, 57600 bps, 115200 bps.

3. MATLAB
Matlab adalah salah satu bahasa pemrograman yang dilengkapi dengan banyak
fasilitas dan sangat mudah dipelajari. Software ini dapat menangani operasi perhitungan
bilangan nyata, bilangan kompleks, manipulasi matriks, tampilan grafik, operasi
Input/Output dengan komunikasi serial dan juga dilengkapi dengan program-program
paket yang disebut sebagai Simulink dan Toolbox untuk keperluan simulasi. Perintah atau
Syntax dalam Matlab memiliki kemiripan dengan bahasa matematik biasa sehingga hal ini
sangat membantu para pemakai (MATLAB singkatan dari MATrix LABoratory). Sebagai
contoh jika ingin ditentukan jumlah suatu array, katakanlah array A = [ 2 3 4 1], maka
dalam Matlab cukup ditulis perintah sum (A) dan setelah dijalankan maka pada layar akan
muncul jawaban ans = 10 ( dimana arti perintah sum adalah jumlan dan ans adalah
jawab (answer)).
Array A

Array A

Instruksi

Jawaban

Gambar 2.1 Contoh instruksi pada Matlab


Pada Matlab disediakan jendela khusus untuk menulis program, file ini disebut sebagai file
naskah (sript file atau m-file). Dengan mengklik file new pada gambar di atas maka
terbuka suatu file baru yang siap digunakan untuk menulis program. Selanjutnya setelah
program ditulis kemudian file naskah ini dijalankan dan disimpan ( prosedur menulis,
menyunting, menyimpan dan memanggil kembali file naskah serupa jika menangani file
pada Microsoft office ).

perintah dalam Matlab dan fungsi matematik dasar diberikan masing-masing pada Tabel
2.1 dan 2.2

Tabel 2.1

Perintah Keterangan
clc Membersihkan layar
who Melihat variabel yang digunakan dalam suatu program
clear Menghapus variabel pada program
help Fasilitas on line help
lookfor Fungsinya mirip dengan help

Tabel 2.2

Fungsi Keterangan
abs Nilai absolut atau magnitude suatu bilangan kompleks
acos Invers cos
acosh Invers cos hiperbolik
angle Sudut bilangan kompleks dalam radian
asin Invers sin
asinh Invers sin hiperbolik
atan Invers tan
atanh Invers tan hiperbolik
conj Conjugate bilangan kompleks
cos Cos
cosh Cos hiperbolik
exp e pangkat
imag Bagian khayal bilangan kompleks
real Bagian nyata bilangan kompleks
log Log basis e
log10 Log basis 10
sin Sin
sinh Sin hiperbolik
sqrt akar
tan Tangen
tanh Tangan hiperbolik
bin2dec Konversi bilangan biner ke desimal
dec2bin Konversi bilangan desimal ke biner
dec2hex Konversi bilangan desimal ke hexadesimal
ARRAY DAN MATRIKS
Array dalam matematik dikenal sebagai vektor ( baris dan kolom ). Dalam Matlab operasi
antara array dengan matriks dibedakan. Pada array : Operasi penjumlahan, pengurangan,
perkalian, pembagian, dan perpangkatan antara sesama array atau antara array dengan
skalar dibuat elemen per elemen. Sedangkan pada matriks aturannya sesuai dengan aturan
aljabar matriks. Misal suatu array A dengan elemen 1, 2, 3, dan 4 dalam satu baris (berupa
vektor baris) jika ditulis dalam bahasa Matlab adalah A = [ 1 2 3 4], atau A = 1: 4, atau A
= linspace (1,4,4). Notasi dan karakter yang banyak digunakan untuk penulisan array dan
matriks adalah :

: ; () [] spasi

Jika ditulis array A = [1 2 3 4] dimana antara elemen 1 dengan 2 dan seterusnya diantarai
dengan spasi, maka matlab mengartikan sebagai vektor baris. Penulisan A = 1 : 4, adalah
penulisan singkat dimana array A mempunyai empat elemen, dengan nilai elemen pertama
1, elemen kedua 2 dan seterusnya. Penulisan A =linspace (1,4,4) diartikan bahwa elemen
pertama dari A adalah 1, elemen ke empat 4, dan jumlah elemen 4. Jika dituliskan A = [1;
2; 3; 4] maka Matlab mengartikan A adalah suatu vektor kolom. Notasi yang digunakan
untuk operasi perhitungan pada array dam matriks diperlihatkan pada tabel 2.3

Tabel 2.3

Notasi Keterangan
+ Penjumlahan
- Pengurangan
*, .* Perkalian (* untuk matriks) (.* untuk array)
./ Pembagian ( A dibagi B)
.\ Pembagian ( B dibagi A)
‘ Transpose dengan conjugate
.’ Transpose tanpa conjugate
Fundamental dari Matlab adalah matriks oleh sebab itu banyak disediakan perintah atau
fungsi tambahan untuk memanipulasi matriks. Misalkan A = [1 2 3 4], dan B =[5 6 7 8],
jika dituliskan perintah A * B, maka Matlab akan memberi jawaban (Error using ==> *
Inner matrix dimensions must agree ) yang berarti perkalian A dengan B tidak dibenarkan
karena A dan B tidak bisa diperkalikan menurut kaidah aljabar matriks. Jika dituliskan A
.* B maka jawabannya adalah ( ans = 5 12 21 32 ), pada kasus ini penggunaan
notasi .* akan meyebabkan Matlab mengartikan A, dan B masing-masing sebagai array
dan perkaliannya dilakukan elemen per elemen. Berbagai perintah yang berkaitan dengan
matriks dicantumkan pada tabel 2.4

Tabel 2.4

Perintah Keterangan
det Determinan matriks
inv Invers matriks
size Ukuran matriks (baris kolom)
length Panjang /maksimum (kolom atau baris)
ones Matriks dengan semua elemen bernilai satu
zeros Matriks dengan semua elemen bernilai nol
eye Matriks identitas

PERINTAH BERULANG ( LOOP ) DAN PENGAMBILAN KEPUTUSAN


Operator relasi dan logika yang digunakan dalam Matlab dicantumkan pada tabel 2.5.

for loop

Perintah berulang mempunyai format sebagai berikut :

for n = array
……….. perintah
end
Misalkann diberi nilai n = 1: 3, maka proses pengulangan dilakukan 3 kali. Pada
pengulangan pertama nilai n = 1, kemudian ditingkatkan menjadi 2 ( dari 1+1 ) dan pada
pengulangan terakhir nilai n menjadi 3. Jika ditulis n = 5:-1:1, maka proses pengulangan
dilakukan lima kali, dimana pada pengulangan pertama nilai n = 5 dan terus menurun pada
pengulangan berikutnya.

Tabel 2.5

Operator Keterangan
< Kurang dari
<= Kurang dari atau sama dengan
> Lebih besar
>= Lebih besar atau sama dengan
== Sama dengan
~= Tidak sama dengan
& Dan (and )
| Atau ( or)
~ Tidak (not)

while loop

Format penulisan
while ekspresi
………. Perintah
end
Jika ekspresi yang terletak pada sebelah kanan dari while benar atau dipenuhi maka
komputer akan mengeksekusi perintah yang terdapat antara while dan end, kemudian
proses diulang kembali. Jika ekspresi yang terletak pada sebelah kanan while salah atau
tidak dipenuhi maka eksekusi dilanjutkan pada perintah perintah yang terletak dibawah
baris end. Contoh potongan program berikut :

……………..
n=0
while n < 2
n= n + 1
end
…………………….
Pada potongan program di atas, proses pengulangan dilakukan dua kali, pada pengulangan
pertama mula-mula nilai n = 0 dan diubah menjadi 1 ( dengan n = n +1), dan pada proses
pengulangan kedua nilai n =1 dan diubah mejadi 2. Proses pengulangan ke tiga tidak
dilakukan karena ekpresi sudah tidak memenuhi.

If end , if else end, if elseif ….. else end

Format penulisan
if ekspresi
……….. perintah
end
Jika ekspresi yang terletak pada sebelah kanan if memenuhi maka komputer akan
mengesekusi perintah yang terletak pada baris antara if dan end. Sebaliknya jika ekspresi
tidak memenuhi eksekusi dilanjutkan pada perintah perintah dibawah baris end.
if ekspresi
……….. perintah
else
…… perintah
end
Jika ekspresi yang terletak pada sebelah kanan if memenuhi maka komputer akan
mengesekusi perintah yang terletak pada baris antara if dan else. Sebaliknya jika ekspresi
tidak memenuhi eksekusi dilanjutkan pada perintah perintah yang terletak pada baris
antara else dan end.
if ekspresi
……… perintah
elseif ekspresi
…… perintah
else
…… perintah
end
Jika ekspresi yang berada pada baris sebelah kanan if memenuhi maka komputer akan
mengesekusi perintah yang terletak pada baris antara if dan elseif, dan selanjutnya
mengesekusi perintah – perintah yang berada pada baris di bawah end. Sebaliknya jika
ekspresi yang terletak pada sebelah kanan if tidak memenuhi eksekusi dilanjutkan ke
elseif, jika ekspresi yang terletak pada sebelah kanan elseif memenuhi maka perintah
perintah yang berada pada baris antara elseif dan else yang dieksekusi, dan jika tidak,
maka perintah yang berada pada baris antara else dan end yang dieksekusi.

Contoh 2.1
Konversikan bilangan biner A=11110000 ke bilangan desimal dan heksadesimal

Solusi
Program

% Konversi bilangan biner ke desimal dan heksadesimal


clc
A='11110000'
%----------------------------------
A_desimal=bin2dec(A)
A_biner =dec2bin(A_desimal)
A_hex=dec2hex(A_desimal)

Hasil
A=
11110000
A_desimal =
240
A_biner =
11110000
A_hex =
F0
4. SUBPROGRAM
Nama file sama
dengan nama
function

Gambar 2.2 Contoh m-file pada Matlab

Matlab menyediakan fasilitas untuk membuat file-file yang berfungsi sebagai subprogram
atau subroutin, file tersebut kemudian disebut sebagai fungsi m-file. Fungsi m-file ini
dirancang sendiri oleh pengguna dengan tujuan untuk membantu program utama. Dimana
subprogram ini dapat dipanggil oleh program utama jika diperlukan. Untuk menulis
fungsi m-file syaratnya adalah :
 Menggunakan instruksi function
 Nama file harus sama dengan nama fungsi

Mekanisme program utama memanggil subprogram (fungsi m-file) adalah dengan


menuliskan nama file subprogram pada program utama dan mengisikan variabel variabel
yang diminta oleh subprogram. Setelah proses eksekusi dari subprogram selesai maka
subprogram akan mengirimkan nilai variabel yang diminta oleh program utama.
Mekanisme program utama memanggil subprogram diperlihatkan pada gambar di bawah

Folder

*)

file file

pr. utama fungsi


**)
m-file

*) Program utama mengisikan nilai variabel yang diminta


oleh fungsi m-file
** ) Fungsi m-file memberi nilai variabel yang diminta program utama
pada akhir eksekusi
.Mekanisme program utama memanggil subprogram

Contoh sebuah file dengan instruksi function diperlihatkan pada gambar diatas

5. KOMUNIKASI SERIAL PADA MATLAB

- Menetapkan objek ke serial Port, contoh instruksi


s = serial('COM17'); % assigns the object s to serial port.
Nomor Port yang dicantumkan pada s disesuaikan dengan peranti komputer yang
dihubungkan ke alat. Umumnya serial Port yang dipakai dapat dilihat pada Device
Manager.
- Setting Input Buffer Size, Flow Control, Baut Rate, Parity, Data Bits, Stop bit, dan
Time Out, seperti contoh berikut

set(s, 'InputBufferSize', 128); %number of bytes in inout buffer


set(s, 'FlowControl', 'none');
set(s, 'BaudRate', 9600);
set(s, 'Parity', 'none');
set(s, 'DataBits', 8);
set(s, 'StopBit', 1);
set(s, 'Timeout',100);
- Membuka serial Port, contoh instruksi
fopen(s); % opens the serial port
- Menulis data pada Port, contoh instruksi
fwrite(s,64 ); % bit 0 port 1 logika 1
- Menutup komunikasi Serial Port, contoh instruksi
fclose(s);% tutup Serial Port
- Menghapus objek ke serial Port, contoh instruksi
delete(s); %

Contoh 2.2

a P1.0 P2.6
5V P2.5 P2.7
VCC b
Off
c
d 5 detik 5 detik

Perhatikan gambar diatas, terminal Led a dihubungkan dengan pin P1.0 pada Port 1 modul
PPI, demikian juga terminal Led b, c dan d dihubungkan dengan pin P2.5, P2..6, dan P2.7
pada Port 2, dan terminal VCC dihubungkan sumber ouput VCC modul PPI. Sebuah Laptop
yang berisi software Matlab dihubungkan ke modul PPI melalui kabel konverter USB to
serial, dalam hal ini Laptop tersebut mendeteksi kehadiran Port serial dengan code COM
32. Tuliskan sebuah program Matlab untuk mengatur nyala Led pada rangkaian diatas
dengan pola led a, b, c, dan d nyala serentak selama 5 detik kemudian padam serentak
juga selama 5 detik, siklus nyala padam dari led tersebut terus berulang sampai 10 kali.
Setting Input Buffer Size: 128, Flow Control: none, 'Baud Rate: 9600, 'Parity: none, Data
Bits: 8, Stop Bit: 1, 'Time out: 100.

Solusi
Nilai biner dan desimal untuk mengakses bit 0 Port 1 dan bit 5, 6, dan 7 Port 2 ditunjukkan
pada tabel berikut. Sebuah fungsi m file ditulis untuk menangani masalah delay atau waktu
tunda yang dibutuhkan agar led nyala selama 5 detik, dengan juga sebaliknya. Fungsi
tersebut diberi nama tunda ( lihat penjelasan sebelumnya).
Pin Keluaran Biner Desimal Kondisisi Led

P1.0 Port 1 0 01000000 64 nyala


P2.5 Port 2 0 01011010 90 nyala
P2.6 Port 2 0 01011100 92 nyala
P2.7 Port 2 0 01011110 94 nyala

P1.0 Port 1 1 01000001 65 padam


P2.5 Port 2 1 01011011 91 padam
P2.6 Port 2 1 01011101 93 padam
P2.7 Port 2 1 01011111 95 padam

Program

%=================Program Contoh 2.2 ============= ========


clear all; % Hapus semua data dan variabel
clc; % Bersihkan layar
%============== inisialisasi serial com 32 ======================
s = serial('COM32'); %assigns the object s to serial port
set(s, 'InputBufferSize', 128); %number of bytes in inout buffer
set(s, 'FlowControl', 'none');
set(s, 'BaudRate', 9600);
set(s, 'Parity', 'none');
set(s, 'DataBits', 8);
set(s, 'StopBit', 1);
set(s, 'Timeout',100);
%====================================================
%------------------------------------------ Tampilan ----------------------------------------
disp(get(s,'Name'));
prop(1)=(get(s,'BaudRate'));
prop(2)=(get(s,'DataBits'));
prop(3)=(get(s, 'StopBit'));
prop(4)=(get(s, 'InputBufferSize'));
prop
disp([num2str(prop)]);
%============Buka Serial Port=============================
fopen(s); % Opens the serial port
% Command untuk bit set/reset akan menulis /output salah satu bit dari
% Panggil fungsi tunda
t=5; % 5 seconds
%===========Akses P1.0 PORT 1 & P2.5, P2.6, dan P2.7 PORT 2 ========
for k=1:10
fwrite(s,64 ); % bit 0 port 1 logika 0 semua LED ON/nyala
fwrite(s,90 ); % bit 5 port 2
fwrite(s,92 ); % bit 6 port 2
fwrite(s,94 ); % bit 7 port 2
tunda (t)
%====================================================
fwrite(s,65 ); % bit 0 port 1 Logika 1 semua LED-OFF/Padam
fwrite(s,91 ); % bit 5 port 2
fwrite(s,93 ); % bit 6 port 2
fwrite(s,95 ); % bit 7 port 2
tunda (t)
end
%++++++++++++++++++++++++++++++++++++++++++++++++++++
fclose(s); % Tutup
delete(s)
%--------------------------------------------AKHIR PROGRAM-----------------------------

Soal
1. Buatlah program sederhana untuk mengubah bilangan decimal 64 ke biner
(gunakan instruksi dec2bin (64), dan dec2bin (64,8))
2. Sama dengan contoh 2.2, akan tetapi jika semua pin pada Port 1 logika 0, maka
pin Port 2 logika 1, demikian juga sebaliknya. Gunakan Serial Port Com 17 dan
tunda waktu 1 detik.

Anda mungkin juga menyukai