sistem kendali program matlab untuk kendali traffic light pada pc-link serial ppi

17
Minggu: 03 Sistem Kendali Unismuh Makassar Program MATLAB Untuk Kendali Traffic Light Pada PC-Link SERIAL PPI Semester : V 01/10/ 2013 Jurusan Teknik Elektro Waktu : 2 Jam 1. PENDAHULUAN Pada bagian ini akan dibahas contoh program komputer MATLAB untuk kendali lampu lalu lintas dengan alat PC-Link SERIAL PPI. Umumnya traffic light ditempatkan pada pada jalan- jalan persimpangan empat yang ramai lalu lintasnya, dalam hal ini tiang-tiang sebelah utara dan selatan jalan umumnya ditempatkan lampu tanda merah, hijau, dan kuning. Demikian juga jalan sebelah timur dan barat ditempatkan lampu lampu tanda merah, hijau, dan kuning. Lampu rambu-rambu lalu lintas tersebut diatur nyalanya secara bergantian, yakni jika lampu pada sisi utara-selatan jalan berwarna merah, maka lampu pada sisi timur–barat harus hijau dan sebaliknya. Dengan bantuan program maka pengaturan untuk memilih lampu-lampu yang harus nyala dan padam dapat dilakukan. Program timer untuk mengatur durasi atau waktu hidup lampu merah, hijau, dan kuning ditulis berbentuk subprogram atau m-file. 2. PROGRAM KOMPUTER UNTUK TRAFFIC LIGHT Gambar 3.1 U B T S mu hu ku mb hb kb kt ht mt ks hs ms

Upload: unismuh

Post on 17-Jan-2023

0 views

Category:

Documents


0 download

TRANSCRIPT

Minggu:

03 Sistem Kendali

Unismuh Makassar Program MATLAB Untuk Kendali Traffic Light Pada

PC-Link SERIAL PPI

Semester : V 01/10/2013 Jurusan Teknik Elektro Waktu : 2 Jam

1. PENDAHULUAN

Pada bagian ini akan dibahas contoh program komputer MATLAB untuk kendali lampu

lalu lintas dengan alat PC-Link SERIAL PPI. Umumnya traffic light ditempatkan pada

pada jalan- jalan persimpangan empat yang ramai lalu lintasnya, dalam hal ini tiang-tiang

sebelah utara dan selatan jalan umumnya ditempatkan lampu tanda merah, hijau, dan

kuning. Demikian juga jalan sebelah timur dan barat ditempatkan lampu lampu tanda

merah, hijau, dan kuning. Lampu rambu-rambu lalu lintas tersebut diatur nyalanya secara

bergantian, yakni jika lampu pada sisi utara-selatan jalan berwarna merah, maka lampu

pada sisi timur–barat harus hijau dan sebaliknya. Dengan bantuan program maka

pengaturan untuk memilih lampu-lampu yang harus nyala dan padam dapat dilakukan.

Program timer untuk mengatur durasi atau waktu hidup lampu merah, hijau, dan kuning

ditulis berbentuk subprogram atau m-file.

2. PROGRAM KOMPUTER UNTUK TRAFFIC LIGHT

Gambar 3.1

U

BT

S

mu

hu

ku

mb hb kbkt ht mt

ks

hs

ms

Perhatikan gambar 3.1 dan 3.2 lampu–lampu yang dipasang pada tiang sebelah utara jalan,

yaitu lampu merah, hijau dan kuning disimbolkan masing-masing dengan mu, hu, dan ku.

lampu pada sisi sebelah selatan, yakni merah (ms), hijau (hs), dan kuning (ks). Lampu

pada sisi sebelah timur, lampu merah (mt), hijau (ht), dan kuning (kt), dan akhirnya lampu

pada sisi sebelah barat, lampu merah (mb), hijau (hb), dan kuning (kb). Pin yang

digunakan pada Port 1 dan 2 modul PPI beserta nilai decimal yang dimasukkan dalam

program diberikan pada tabel di bawah. Diagram waktu pengaturan dari masing-masing

lampu diperlihatkan pada gambar 3.3

Utara

BaratTimur

Selatan

mu

ks

ku

mt

ht

kt

mb

hb

kb

hu

hs ms

+VCC 5 Volt

P1.5P1.4P1.6

P2.3P2.2P2.4

P1.3

P1.2

P1.1

P2.1

P2.0

P1.7

Gambar 3.2

Lampu (Led)

Pin /Port Logika Desimal Waktu hidup

Keterangan Lampu

mu bit 5 port 1,P1.5

0 1

74 75

tm Merah sebelah utara ON OFF

hu bit 4 port 1, P1.4

0 1

72 73

th Hijau ON OFF

ku bit 6 port 1, P1.6

0 1

76 75

tk Kuning ON OFF

ms bit 3

port 2, P2.3

0 1

86 87

tm Merah seb selatan ON

OFF hs bit 2

port 2, P2.2

0 1

84 85

th Hijau ON OFF

ks % bit 4 port 2, P2.4

0 1

88 89

tk Kuning ON OFF

mt bit 3

port 1, P1.3

0 1

70 71

tm Merah sebelah timur ON OFF

ht bit 2 port 1, P1.2

0 1

68 69

th Hijau ON OFF

kt bit 1 port 1, P1.1

0 1

66 67

tk Kuning ON OFF

mb bit 1

port 2, P2.1

0 1

82 83

tm Merah sebelah timur ON OFF

hb bit 0 port 2,P2.0

0 1

80 81

th Hijau ON OFF

kb bit 7 port 1, P1.7

0 1

78 79

tk Kuning ON OFF

Gambar 3.3

Contoh 3.1

Buatlah Program lampu lalu lintas dengan code MATLAB untuk rangkaian Led gambar

3.2 yang dihubungkan ke Port 1 dan 2 PPI Card. Dalam program, waktu pengaturan dari

masing-masing lampu sesuai gambar 3.3, gunakan waktu nyala lampu hijau 4 detik,

kuning 1 detik, dan merah (4+1=5) detik. Serial Port yang digunakan disesuiakan dengan

COM komputer yang dipakai.

Solusi

Untuk mengetahui nomor Port Serial komputer, buka Device Manager seperti gambar di

bawah. Pada Device Manager terlihat bahwa peralatan converter USB to Serial dikenali

sebagai COM 17. Selanjutnya MATLAB mengenali Port serial COM 17 sebagai jalur

komunikasi dengan PPI Card.

Utara-Selatan

Timur-Barat

Waktutm th tk

tm: Waktu lampu merah nyala

th: Waktu lampu hijau nyalatk: Waktu lampu kuning nyala

tm: th + tk

PROGRAM

% Pengaturan Lampu Lalu Lintas menggunakan MATLAB R2010a

% MODUL yang digunakan MODUL PPI 8255 Port serial

% Konveter USB to Serial

% Pin Yang terpakai untuk Port 1 dan 2 lihat file pdf data pin

% @copyright Abdul Hafid teknik ELEKTRO UNISMUH Makassar 2013

% Materi SISTEM KENDALI Semester V, Akses Bit Set/ Reset pada modul

% -------------------------- I---------------------------------

clear all

% inisialisasi serial com.

clc

%==============================================================

s = serial('COM17'); % 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);

%==============================================================

disp(get(s,'Name'));

prop(1)=(get(s,'BaudRate'));

prop(2)=(get(s,'DataBits'));

prop(3)=(get(s, 'StopBit'));

prop(4)=(get(s, 'InputBufferSize'));

disp (' Baud rate Data bit Stop bit Input buffer size')

disp([num2str(prop)]);

%============buka serial port=====================================

fopen(s); %opens the serial port

% Command untuk bit set/reset akan menulis /output salah satu bit dari

% dari PORT 1 dan 2 nyala, padam

% ubah baud rate jika perlu,sesuaikan dengn setting port pada control

% panel

%----------------------- setting tunda waktu--------------------------------------------------

% t_m = delay waktu untuk lampu merah pada rambu lampu lalu lintas

% t_h = delay waktu untuk lampu hijau pada traffic light

% t_k = delay waktu untuk lampu kuning pada traffic light

% t_m = t_h + t_k

t_k = 1; % Lampu Kuning 1 detik

t_h = 4; % Lampu Hijau 4 detik

t_m = t_h+t_k; % Lampu Merah 5 detik

disp(' Waktu Nyala Lampu Merah (detik)')

t_m

% -------------------------- II------------------------------------------------------------------------

% Lampu traffic Timur Barat (BT)

% Merah pin yang digunakan pin 3 port 1 dan pin 0 port 2

% Hijau pin yang digunakan pin 2 port 1 dan pin 1 port 2

% Kuning pin yang digunakan pin 1 port 1 dan pin 7 port 1

%

% Lampu traffic Utara Selatan (US)

% Merah pin yang digunakan pin 5 port 1 dan pin 3 port 2

% Hijau pin yang digunakan pin 4 port 1 dan pin 2 port 2

% Kuning pin yang digunakan pin 6 port 1 dan pin 4 port 2

%------------------ START -------------------------------------------------------------------

% -------------------------- III--------------------------------- ------------------------------

% H1 =====K1==== M1 pada traffic Timur Barat Hijau, kuning Merah

% M2======H2=====K2 pada traffic utara selatan

for x=1:20

%--------------- H1, M2== ON, K1, M1, H2, K2 ===OFF=================

fwrite(s,68 ); % bit 2 port 1 ON T-B Hijau H1

fwrite(s,80 ); % bit 0 port 2 ON T-B Hijau

%----------------------------------------------------------

fwrite(s,74 ); % bit 5 port 1 ON U-S Merah M2

fwrite(s,86 ); % bit 3 port 2 ON U-S Merah

%-----------------------------------------------------------

fwrite(s,67 ); % bit 1 port 1 OFF T-B Kuning K1

fwrite(s,79 ); % bit 7 port 1 OFF T-B Kuning

%----------------------------------------------------------

fwrite(s,71 ); % bit 3 port 1 OFF T-B Merah M1

fwrite(s,83 ); % bit 1 port 2 OFF T-B Merah

%----------------------------------------------------------

fwrite(s,73 ); % bit 4 port 1 OFF U-S Hijau

fwrite(s,85 ); % bit 2 port 2 OFF U-S Hijau H2

%----------------------------------------------------------

fwrite(s,77 ); % bit 6 port 1 OFF U-S Kuning

fwrite(s,89 ); % bit 4 port 2 Off U-S Kuning K2

%------------- Time ---------------------------------------

tunda(t_h); % delay hijau, lampu kuning star, lampu hijau off

% dan lampu merah pada tiang yang sama masih off, lampu

%--------------- K1, M2== ON, H1, M1, H2, K2 ===OFF

%-----------------------------------------------------------

fwrite(s,66 ); % bit 1 port 1 ON T-B Kuning K1

fwrite(s,78 ); % bit 7 port 1 ON T-B Kuning

%----------------------------------------------------------

fwrite(s,74 ); % bit 5 port 1 ON U-S Merah M2

fwrite(s,86 ); % bit 3 port 2 ON U-S Merah

%------------------------------------------------

fwrite(s,69 ); % bit 2 port 1 OFF T-B Hijau H1

fwrite(s,81 ); % bit 0 port 2 OFF T-B Hijau

%----------------------------------------------------------

fwrite(s,71 ); % bit 3 port 1 OFF T-B Merah M1

fwrite(s,83 ); % bit 1 port 2 OFF T-B Merah

%----------------------------------------------------------

fwrite(s,73 ); % bit 4 port 1 OFF U-S Hijau

fwrite(s,85 ); % bit 2 port 2 OFF U-S Hijau H2

%----------------------------------------------------------

fwrite(s,77 ); % bit 6 port 1 OFF U-S Kuning

fwrite(s,89 ); % bit 4 port 2 Off U-S Kuning K2

%------------- Time ---------------------------------------

tunda (t_k); % delay kuning, lampu merah star

%--------------- M1, H2== ON, H1, K1, M2, K2 ===OFF

% selang t_h, delay hijau

%----------------------------------------------------------

fwrite(s,70 ); % bit 3 port 1 ON T-B Merah M1

fwrite(s,82 ); % bit 1 port 2 ON T-B Merah

%----------------------------------------------------------

fwrite(s,72 ); % bit 4 port 1 ON U-S Hijau

fwrite(s,84 ); % bit 2 port 2 ON U-S Hijau H2

%------------------------------------------------

fwrite(s,69 ); % bit 2 port 1 OFF T-B Hijau H1

fwrite(s,81 ); % bit 0 port 2 OFF T-B Hijau

%-----------------------------------------------------------

fwrite(s,67 ); % bit 1 port 1 OFF T-B Kuning K1

fwrite(s,79 ); % bit 7 port 1 OFF T-B Kuning

%----------------------------------------------------------

fwrite(s,75 ); % bit 5 port 1 OFF U-S Merah M2

fwrite(s,87 ); % bit 3 port 2 OFF U-S Merah

%----------------------------------------------------------

fwrite(s,77 ); % bit 6 port 1 OFF U-S Kuning

fwrite(s,89 ); % bit 4 port 2 Off U-S Kuning K2

tunda (t_h); % delay hijau

%--------------- M1, K2== ON, H1, K1, M2, H2 ===OFF ================================

% selang t_k, delay kuning

%----------------------------------------------------------

fwrite(s,70 ); % bit 3 port 1 ON T-B Merah M1

fwrite(s,82 ); % bit 1 port 2 ON T-B Merah

%----------------------------------------------------------

fwrite(s,76 ); % bit 6 port 1 ON U-S Kuning

fwrite(s,88 ); % bit 4 port 2 ON U-S Kuning K2

%------------------------------------------------

fwrite(s,69 ); % bit 2 port 1 OFF T-B Hijau H1

fwrite(s,81 ); % bit 0 port 2 OFF T-B Hijau

%-----------------------------------------------------------

fwrite(s,67 ); % bit 1 port 1 OFF T-B Kuning K1

fwrite(s,79 ); % bit 7 port 1 OFF T-B Kuning

%----------------------------------------------------------

fwrite(s,75 ); % bit 5 port 1 OFF U-S Merah M2

fwrite(s,87 ); % bit 3 port 2 OFF U-S Merah

%----------------------------------------------------------

fwrite(s,73 ); % bit 4 port 1 OFF U-S Hijau

fwrite(s,85 ); % bit 2 port 2 OFF U-S Hijau H2

tunda (t_k)

end

%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

%--------------- OFF pin--------------------------------------------------------------------

%===========PORT 1==========================================

fwrite(s,65 ); % bit 0

fwrite(s,67 ); % bit 1

fwrite(s,69 ); % bit 2

fwrite(s,71 ); % bit 3

fwrite(s,73 ); % bit 4

fwrite(s,75 ); % bit 5

fwrite(s,77 ); % bit 6

fwrite(s,79 ); % bit 7

%=========================PORT 2======================

fwrite(s,81 ); % bit 0

fwrite(s,83 ); % bit 1

fwrite(s,85 ); % bit 2

fwrite(s,87 ); % bit 3

fwrite(s,89 ); % bit 4

fwrite(s,91 ); % bit 5

fwrite(s,93 ); % bit 6

fwrite(s,95 ); % bit 7

tunda (0.1)

fclose(s);

delete(s)

Fungsi m-file untuk timer

function tunda(seconds)

% function pause the program

% seconds = delay time in seconds

tic;

while toc < seconds

end

end

Hasil Program pada modul

3. GUI MATLAB

A graphical user interface (GUI) adalah antar muka berupa gambar ( pictorial interface)

untuk sebuah program. Elemen dasar yang dibutuhkan untuk membuat program berbasis

GUI yaitu

Figure, komponen dalam GUI harus ditata dalan sebuah figure, dalam hal ini

figure adalah sebuah jendela pada layar yang nantinya diisi dengan komponen lain

seperti Static Text, Pushbutton, dan sebagainya. Dengan mengetikkan guide (the

GUI design environment) pada MATLAB maka muncul jendela seperti pada

gambar di bawah

Komponen Pushbutton, Static Text, Edit Text, List box, Sliders, dan sebagainya (lihat

gambar di atas) adalah komponen yang disediakan pada figure. Komponen komponen

tersebut jika ingin diintegrasikan dalam program maka dipindahkan dengan cara

mendrag/menekan mouse dari posisi komponen tersebut ditempatkan ke suatu posisi

dalam jendela figure yang dinginkan dengan jalan mendrop/melepas tekanan jari tangan

yang menekan mouse.

Push button

SliderRadio button

Check BoxEdit Text

Static Text

Pop-up Menu

ListboxToggle Button

TableAxes

Panel

ActiveX control

Button Group

Callback, jika user mengklik sebuah button maka even tersebut menyebabkan

MATLAB code mengimplentasikan fungsi dari button yang dieksekusi. Jadi

sebuah kode dieksekusi sebagai respons dari sebuah even disebut callback.

Contoh 3.2

Buatlah program lampu lalu lintas berbasis GUI MATLAB untuk contoh 3.1 dengan

tampilan sebagai berikut

Solusi

Komponen text 1 sampai text 8 adalah komponen Static Text yang berisi teks

seperti yang diperlihatkan pada gambar diatas. Untuk proses pengisian teks (

string) caranya klik 2 kali text tersebut maka muncul jendela property inspector

pada layar, kemudian pada inspector tuliskan teks yang dinginkan pada kolom

String seperti gambar di bawah

Komponen edit1 sampai edit4 adalah komponen Edit Text, klik 2 kali komponen

edit maka muncul jendela property inspector, kemudian pada kolom String

kosongkan seperti gambar di bawah

Komponen Push button1 dan Push button 2 adalah komponen button, klik 2 kali

komponen button maka muncul jendela property inspector, kemudian pada kolom

String Push button 1 beri nama Run dan pada kolom Tag isi dengan Btn_hitung.

Tuliskan teks yang

diinginkan

Kosongkan tulisan

Pada Push button 2 isi dengan nama Edit pada kolom String dan Btn_exit pada

kolom Tag

Pada m-file editor isikan di bawah baris function edit1_Callback(hObject,

eventdata, handles)

function edit1_Callback(hObject, eventdata, handles)

% hObject handle to edit1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

tunda_kuning=str2num(get(handles.edit1, 'String'));

handles.tunda_kuning=tunda_kuning;

guidata(hObject, handles);

Pada m-file editor isikan di bawah baris function edit2_Callback(hObject,

eventdata, handles)

function edit2_Callback(hObject, eventdata, handles) % hObject handle to edit2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) tunda_hijau=str2num(get(handles.edit2, 'String')); handles.tunda_hijau=tunda_hijau; guidata(hObject, handles)

Pada m-file editor isikan di bawah baris function Btn_hitung_Callback(hObject,

eventdata, handles)

Isikan Run dan

Btn_hitung

function Btn_hitung_Callback(hObject, eventdata, handles) % hObject handle to Btn_hitung (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) %kode ini diekskusi jika kita menekan tombol hitung tunda_kuning=handles.tunda_kuning; tunda_hijau=handles.tunda_hijau; tunda_merah=tunda_kuning+tunda_hijau; siklus_run_alat=handles.siklus_run_alat; set(handles.edit3, 'string', tunda_merah);

dan seterusnya seperti pada program contoh 3.1

Pada m-file editor isikan di bawah baris function Btn_exit_Callback(hObject,

eventdata, handles)

function btn_exit_Callback(hObject, eventdata, handles) % hObject handle to btn_exit (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) %untuk keluar dari apalikasi delete(handles.figure1)

Pada m-file editor isikan di bawah baris function edit4_Callback(hObject,

eventdata, handles)

function edit4_Callback(hObject, eventdata, handles) % hObject handle to edit4 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) siklus_run_alat =str2num(get(handles.edit4, 'String')); handles.siklus_run_alat=siklus_run_alat; guidata(hObject, handles)

Untuk menjalankan program diatas, caranya klik tool dan run pada menu bar seperti

gambar di atas, selanjunya isikan nilai waktu nyala lampu kuning yang direncanakan pada

edit1 text, nilai waktu nyala lampu hijau yang direncanakan pada edit2 text, dan nilai

siklus alat bekerja pada edit 4 text. Sementara kolom edit3 text akan terisi dengan

sendirinya setelah program selesai, lihat gambar berikut. Setelah proses pengisian pada

kolom edit 1, edit 2, dan edit 4 selesai selanjutnya klik tombol Push button 1(Run).

Program MATLAB yang ditulis dengan fasilitas GUI jauh lebih menarik dibanding

program yang ditulis dalam bentuk script.

Hasil Program dengan GUI pada modul sama dengan contoh 3.1

Soal

1. Buatlah program traffic light seperti contoh 3.1 dalam bentuk Script file, dimana

waktu nyala dari lampu kuning, hijau, dan merah diatur sesuai kebutuhan.

Gunakan nilai COM sesuai komputer anda.

2. Sama dengan soal 1, akan tetapi program berbasis GUI MATLAB