TUGAS AKHIR - USD Repository
-
Upload
khangminh22 -
Category
Documents
-
view
0 -
download
0
Transcript of TUGAS AKHIR - USD Repository
i
KONSOL SEBAGAI PEMROGRAM PADA IMPLEMENTASI
PLC MENGGUNAKAN MIKROKONTROLER
TUGAS AKHIR
Diajukan Untuk Memenuhi Salah Satu Syarat
Memperoleh Gelar Sarjana Teknik
Program Studi Teknik Elektro
Oleh:
Nama : Jhon Sitmen Bongga
NIM : 045114062
PROGRAM STUDI TEKNIK ELEKTRO
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA
YOGYAKARTA
2009
ii
PROGRAMMER CONSOLE FOR PLCIMPLEMENTATION USING
MICROCONTROLLER
FINAL PROJECT
Presented as Partial Fulfillment of the Requirements
To Obtain the Sarjana Teknik Degree
In Electrical Engineering Study Program
By:
Name : Jhon Sitmen Bongga
Student Number: 045114062
ELECTRICAL ENGINEERING STUDY PROGRAM
DEPARTMENT OF ELECTRICAL ENGINEERING
FACULTY OF ENGINEERING
SANATA DHARMA UNIVERSITY
YOGYAKARTA
2009
vi
HALAMAN PERSEMBAHAN DAN MOTTO HIDUP
Jalani hidup dan menjadi yang terbaik
Kupersembahkan karya tulis ini kepada :
Tuhan Yesus Kristus atas kesempatan, hidup, talenta, dan rohkudus yang selama ini mendampingi langkahku
Bapak dan Ibu Tercinta serta kedua saudaraku untukpengorbanan, dukungan, semangat, doa, kasih sayang, dan
pembelajaran hidup yang telah diberikan
Seluruh teman dan sahabat
viii
Intisari
Konsol PLC atau hand held programmer PLC adalah alat yang digunakanuntuk memrogram CPU PLC dan dapat menampilkan program yang digunakanpada LCD dalam bahasa mnemonik PLC. Konsol PLC ini akan menampilkan program PLC yang terdiri dariinstruksi dan operand. Instruksi dan operand yang dikodekan dalam kode binerdelapan bit. Program yang digunakan, dimasukkan melalui keypad dan diprosesoleh mikrokontroler ATmega8535 untuk ditampilkan pada LCD dan kemudiandikirim ke CPU PLC dengan menggunakan komunikasi serial RS-232. LCDmenggunakan tipe LMB162ABC dan keypad menggunakan matriks keypad 5×5. Dari hasil percobaan, alat ini telah bekerja sesuai dengan perancangan. Halini dapat dibuktikan, dari hasil pengujian konsol PLC dengan program LD, AND,OR, OUT, NOT, CNT dan TIM. Program LD, AND, OR menggunakan operand001-008 dan program OUT menggunakan operand 101-108. Program CNTmenggunakan operand 001-010 dan program TIM menggunakan operand 001-250.
Kata kunci: Bahasa Mnemonik, Instruksi dan Operand, Konsol PLC
ix
Abstract PLC console or PLC hand held programmer is a tool that used to programPLC CPU and to show the program on LCD in PLC mnemonic language. PLC console displays instructions and operand. Instructions and operandare decoded in eight bit, binary code. Programs for PLC are entered usingkeypad and proceed by microcontroller ATmega8535. Programs are shown onLCD and sent to PLC CPU using RS-232 serial communication. LCD useLMB162ABC type and keypad use keypad matrix 5 x 5. Result of experiments show that PLC console have been work according thedesign plan. It can be proven from PLC console test result with LD, AND, OR,OUT, NOT, CNT and TIM programs. LD, AND, OR programs use operand 001-008 and OUT programs use operand 101-108. CNT programs use operand 001-010 and TIM programs use operand 001-250.
Key word ; Mnemonic Language, Instruction and Operand, PLC console
x
KATA PENGANTAR
Syukur dan terima kasih kepada Tuhan Yesus Kristus atas segala rahmat dan
karunia-Nya sehingga tugas akhir dengan judul “Konsol sebagai Pemrogram pada
Implementasi PLC Menggunakan Mikrokontroler” ini dapat diselesaikan dengan
baik.
Selama menulis tugas akhir ini, penulis menyadari bahwa ada begitu banyak
pihak yang telah memberikan bantuan dengan caranya masing-masing, sehingga
tugas akhir ini bisa diselesaikan. Oleh karena itu, penulis ingin mengucapkan
terima kasih kepada:
1. Kedua orang tua yang tercinta atas doa, kesabaran dan dukungan baik
secara moral ataupun materi.
2. Kedua saudaraku Rostiani Silta dan Chrishart Yedithya atas dukungan dan
pengertiannya.
3. Bapak Martanto, ST, MT dan Ibu Wiwien Widyastuti, ST, MT selaku
dosen pembimbing yang telah dengan sabar membimbing, memberi
semangat dan saran yang membantu penulis dalam menyelesaikan tulisan
ini.
4. Seluruh dosen teknik elektro dan laboran yang telah banyak memberikan
pengetahuan kepada penulis selama kuliah.
5. Kelompok PLC Oscar dan Edi Gunawan terimakasih atas kekompakan,
kerjasama, dan solidaritasnya.
xi
6. Sahabatku semasa kuliah Ferika Adhe, Eric Sandy dan Dandy Firdaus.
Terimah kasih atas semua bantuan dan doanya.
7. Seluruh teman teknik elektro angkatan 2004 atas segala dukungan dan
bantuan.
8. Margaretha Silviana yang selalu memberiku semangat dalam berkarya.
9. Berbagai pihak yang tidak bisa penulis sebutkan satu-persatu atas bantuan,
bimbingan, kritik dan saran.
Dengan rendah hati penulis menyadari bahwa tugas akhir ini masih jauh dari
sempurna, oleh karena itu berbagai kritik dan saran untuk perbaikan tugas akhir
ini sangat diharapkan. Akhir kata, semoga tugas akhir ini dapat bermanfaat bagi
semua pihak. Terima kasih.
Yogyakarta, Juni 2009
Penulis
xii
DAFTAR ISI
HALAMAN JUDUL ........................................................................................ i
HALAMAN PERSETUJUAN ......................................................................... iii
HALAMAN PENGESAHAN .......................................................................... iv
HALAMAN PERNYATAAN KEASLIAN KARYA ...................................... v
HALAMAN PERSEMBAHAN DAN MOTTO .............................................. vi
LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI KARYA
ILMIAH UNTUK KEPENTINGAN AKADEMIS......................................... vii
INTISARI.........................................................................................................viii
ABSTRACT ..................................................................................................... ix
KATA PENGANTAR ....................................................................................... x
DAFTAR ISI .................................................................................................... xii
DAFTAR GAMBAR...................................................................................... xvii
DAFTAR TABEL ......................................................................................... xxi
BAB I PENDAHULUAN ................................................................................. 1
1.1. Judul ........................................................................................................... 1
1.2. Latar Belakang Masalah .............................................................................. 1
1.3. Tujuan dan Manfaat penelitian ................................................................... 2
1.4. Batasan Masalah ......................................................................................... 3
1.5. Metodologi Penelitian ................................................................................. 3
1.6. Sistematika Penulisan.................................................................................. 4
xiii
BAB II DASAR TEORI ................................................................................... 5
2.1. Prinsip Kerja PLC ....................................................................................... 5
2.2. Pemrograman PLC...................................................................................... 6
2.2.1. Kode Mnemonik ...................................................................................... 8
2.2.2. Diagram Ladder ....................................................................................... 8
2.2.2.1. Normally Open...................................................................................... 9
2.2.2.2. Normally Closed ................................................................................... 9
2.2.2.3. Keluaran................................................................................................ 10
2.3. Instruksi-instruksi Logika dalam PLC ......................................................... 10
2.3.1 Instruksi LD dan LD NOT......................................................................... 11
2.3.2 Instruksi AND dan AND NOT .................................................................. 11
2.3.3 Instruksi OR dan OR NOT ........................................................................ 14
2.3.4 Intruksi END............................................................................................. 16
2.4. Mikrokontroler ATmega8535...................................................................... 17
2.4.1. Fitur dan Deskripsi PIN ATmega8535...................................................... 17
2.4.2. Peta Memory............................................................................................ 19
2.4.2.1 Flash Memory ........................................................................................ 19
2.4.2.2 SRAM.................................................................................................... 20
2.4.2.3 EEPROM............................................................................................... 21
2.4.3. Register Serba Guna................................................................................. 21
2.4.4 Register I/O dan Port I/O ......................................................................... 23
2.4.5 Interupsi.................................................................................................... 24
2.4.6 Timer dan Counter .................................................................................... 25
xiv
2.4.7 USART ..................................................................................................... 27
2.4.8 Reset ......................................................................................................... 30
2.5 LCD............................................................................................................. 31
2.6 Matriks Keypad............................................................................................ 33
2.7 Komunikasi Serial........................................................................................ 34
BAB III PERANCANGAN .............................................................................. 38
3.1. Diagram Blok.............................................................................................. 38
3.2 Rancangan Perangkat Keras ......................................................................... 40
3.2.1 Rangkaian Matriks Keypad........................................................................ 40
3.2.2 Rangkaian Mikrokontroler ATmega8535 .................................................. 42
3.2.2.1 Rangkaian Osilator................................................................................. 42
3.2.2.2 Rangkaian Reset..................................................................................... 43
3.2.3 Komunikasi Serial RS232 ......................................................................... 44
3.2.4 Komunikasi Mikrokontroler dengan LCD ................................................. 46
3.3 Pemrograman Mikrokontroler ...................................................................... 47
3.3.1 Pembacaan Keypad ................................................................................... 49
3.3.2 Pengolahan Kode Instruksi ........................................................................ 51
3.3.3 Pengolahan Kode Data .............................................................................. 54
3.3.4 Simpan Kode............................................................................................. 61
3.3.5 Tampilkan pada LCD ................................................................................ 62
3.3.6 Kirim Kode ............................................................................................... 65
xv
BAB IV HASIL DAN PEMBAHASAN........................................................... 70
4.1. Hasil Akhir Perancangan............................................................................. 70
4.2 Cara Menggunakan Konsol PLC ................................................................. 71
4.3 Pengujian Keypad dan Tampilan pada LCD ................................................. 72
4.3.1 Pengujian LD dan LD NOT....................................................................... 73
4.3.2 Pengujian AND dan AND NOT ................................................................ 75
4.3.3 Pengujian OR dan OR NOT ...................................................................... 76
4.3.4 Pengujian CNT.......................................................................................... 78
4.3.5 Pengujian TIM .......................................................................................... 80
4.3.6 Pengujian RUN, PROG dan SEND ........................................................... 81
4.3.7 Pengujian ENTER dan DEL...................................................................... 84
4.3.8 Pengujian UP dan DOWN......................................................................... 86
4.3.9 Pengujian OUT dan END.......................................................................... 87
4.4 Pengujian Komunikasi antar Mikrokontroler ................................................ 88
4.5 Pengiriman Program ke CPU PLC ............................................................... 90
4.5.1 Instruksi LD dan LD NOT......................................................................... 91
4.5.2 Instruksi OR dan OR NOT ........................................................................ 92
4.5.3 Instruksi AND dan AND NOT .................................................................. 93
4.5.4 Instruksi CNT ........................................................................................... 94
4.5.5 Instruksi TIM ............................................................................................ 94
4.5.6 Instruksi OUT ........................................................................................... 95
4.5.7 Instruksi Aplikasi ...................................................................................... 96
xvi
BAB V KESIMPULAN DAN SARAN ............................................................99
5.1. Kesimpulan ................................................................................................99
5.2. Saran..........................................................................................................99
DAFTAR PUSTAKA .......................................................................................100
LAMPIRAN .....................................................................................................101
xvii
DAFTAR GAMBAR
Gambar 2.1 Diagram Blok Bagian PLC .................................................................... 6
Gambar 2.2 Konfigurasi Kontak NO......................................................................... 9
Gambar 2.3 Konfigurasi Kontak NC ........................................................................ 10
Gambar 2.4 Konfigurasi Kontak Output.................................................................... 10
Gambar 2.5 Diagram Ladder Instruksi LD danLD NOT............................................ 11
Gambar 2.6 Diagram Ladder Instruksi AND dan AND NOT .................................... 12
Gambar 2.7 Diagram Ladder Instruksi OR dan OR NOT .......................................... 14
Gambar 2.8 Diagram Ladder Instruksi END ............................................................. 17
Gambar 2.9 Konfigurasi Pin ATmega8535................................................................ 18
Gambar 2.10 Memori Program AVR ATmega8535 .................................................. 20
Gambar 2.11 Peta Memori Data AVR ATmega8535................................................. 20
Gambar 2.12 Register Serbaguna .............................................................................. 21
Gambar 2.13 Register X,Y,Z..................................................................................... 22
Gambar 2.14 Register SFIOR.................................................................................... 23
Gambar 2.15 Register UBBRH dan UBBRL............................................................. 28
Gambar 2.16 Register UCSRC.................................................................................. 28
Gambar 2.17 Rangkaian RESET ............................................................................... 20
Gambar 2.18 Bentuk LCD 16 x 2.............................................................................. 31
Gambar 2.19 Bagian LCD 16 x 2 .............................................................................. 31
Gambar 2.20 Rangkaian Matriks Keypad .................................................................. 33
xviii
Gambar 2.21 Komunikasi Serial DB-9 ..................................................................... 35
Gambar 2.22 IC MAX232......................................................................................... 37
Gambar 3.1 Diagram Blok PLC ................................................................................ 38
Gambar 3.2 Diagram Blok Konsol PLC .................................................................... 39
Gambar 3.3 Matriks Keypad ..................................................................................... 40
Gambar 3.4 Konfigurasi Mikrokontroler, Keypad ..................................................... 42
Gambar 3.5 Rangkaian Osilator ................................................................................ 43
Gambar 3.6 Rangkaian Reset .................................................................................... 44
Gambar 3.7 Rangkaian Komunikasi Antar Mikrokontroler........................................ 45
Gambar 3.8 Komunikasi ATmega8535 ..................................................................... 46
Gambar 3.9 Flowchart Program Utama..................................................................... 48
Gambar 3.10 Proses Pembacaan Keypad ................................................................... 49
Gambar 3.11 Proses Instruksi.................................................................................... 52
Gambar 3.12 Proses Data.......................................................................................... 56
Gambar 3.13 Flowchart Simpan Kode ..................................................................... 61
Gambar 3.14 Flowchart Tampilkan pada LCD.......................................................... 63
Gambar 3.15 Flowchart Inisialisasi LCD .................................................................. 65
Gambar 3.16 Aktivasi Komunikasi Serial ................................................................. 66
Gambar 3.17 Frame Kode Instruksi dan Data........................................................... 67
Gambar 3.18 Flowchart Kirim Kode Instruksi dan Data............................................ 68
Gambar 3.19 Inisialisasi USART .............................................................................. 69
Gambar 4.1 Bentuk Fisik Konsol PLC ...................................................................... 70
xix
Gambar 4.2 Bentuk Fisik rangkaian Konsol .............................................................. 71
Gambar 4.3 Tampilan awal LCD............................................................................... 73
Gambar 4.4 LD dan LD NOT dengan data 000 ......................................................... 73
Gambar 4.5 LD dan LD NOT dengan data 002 dan 004 ............................................ 74
Gambar 4.6 AND dan AND NOT dengan data 003 dan 005...................................... 75
Gambar 4.7 AND dan AND NOT dengan data 006 dan 007...................................... 76
Gambar 4.8 OR dan OR NOT dengan data 004 dan 006............................................ 77
Gambar 4.9 OR dan OR NOT dengan data 007 dan 005............................................ 77
Gambar 4.10 CNT dengan data 001 .......................................................................... 78
Gambar 4.11 CNT dengan data 003 .......................................................................... 79
Gambar 4.12 TIM dengan data 156........................................................................... 80
Gambar 4.13 TIM dengan data 250........................................................................... 80
Gambar 4.14 Fungsi Mode RUN............................................................................... 82
Gambar 4.15 Fungsi Mode PROG............................................................................. 82
Gambar 4.16 Fungsi Mode SEND............................................................................. 83
Gambar 4.17 Fungsi ENTER dan DEL ..................................................................... 85
Gambar 4.18 Fungsi UP dan Down........................................................................... 86
Gambar 4.19 Program OUT dan END....................................................................... 88
Gambar 4.20 Kode program LD dan LD NOT pada codevisionAVR......................... 89
Gambar 4.21 Kode program RUN pada codevisionAVR ........................................... 89
Gambar 4.22 Kode Program pada EEPROM ATmega8535....................................... 90
Gambar 4.23 Isi memory Konsol untuk Program LD dan LD NOT ........................... 91
xx
Gambar 4.24 Isi memory CPU PLC untuk program LD dan LD NOT ....................... 91
Gambar 4.25 Isi memory Konsol untuk Program OR dan OR NOT ........................... 92
Gambar 4.26 Isi memory CPU PLC untuk program OR dan OR NOT....................... 92
Gambar 4.27 Isi memory Konsol untuk Program AND dan AND NOT..................... 93
Gambar 4.28 Isi memory CPU PLC untuk program AND dan AND NOT................. 93
Gambar 4.29 Isi memory Konsol untuk Program CNT .............................................. 94
Gambar 4.30 Isi memory CPU PLC untuk program CNT .......................................... 94
Gambar 4.31 Isi memory Konsol untuk Program TIM............................................... 95
Gambar 4.32 Isi memory CPU PLC untuk program TIM........................................... 95
Gambar 4.33 Isi memory Konsol untuk Program OUT .............................................. 95
Gambar 4.34 Isi memory CPU PLC untuk program OUT.......................................... 96
Gambar 4.35 Isi memory Konsol untuk Program Apilkasi ......................................... 97
Gambar 4.36 Isi memory CPU PLC untuk program Aplikasi..................................... 97
xxi
DAFTAR TABEL
Tabel 2.1 Mnemonik PLC....................................................................................8
Tabel 2.2 Mnemonik LD dan LD NOT ..............................................................11
Tabel 2.3 Mnemonik AND dan AND NOT........................................................12
Tabel 2.4 Tabel Kebenaran Gerbang AND.........................................................13
Tabel 2.5 Tabel Kebenaran Gerbang AND NOT................................................14
Tabel 2.6 Mnemonik OR dan OR NOT..............................................................15
Tabel 2.7 Tabel Kebenaran Gerbang OR NOT...................................................15
Tabel 2.8 Tabel Kebenaran Gerbang OR............................................................16
Tabel 2.9 Alamat Vektor Interupsi ATmega8535 ...............................................25
Tabel 2.10 Perhitungan UBBR dan Baudrate .....................................................29
Tabel 2.11 Pin Tampilan LCD ...........................................................................32
Tabel 3.1 Kombinasi Baris dan Kolom Matriks Keypad.....................................41
Tabel 3.2 Konfigurasi Pin LCD dan Mikrokontroller .........................................47
Tabel 3.3 Program PLC .....................................................................................48
1
BAB I
PENDAHULUAN
1.1 Judul
Konsol Sebagai Pemrogram pada Implementasi PLC Menggunakan
Mikrokontroler
1.2 Latar Belakang Masalah
Dalam bidang industri, penggunaan mesin otomatis dan pemrosesan
secara otomatis merupakan hal yang umum. Sistem pengontrolan dengan
elektromekanik yang menggunakan relay-relay mempunyai banyak kelemahan,
diantaranya kontak-kontak yang dipakai mudah aus karena panas / terbakar atau
karena hubung singkat, membutuhkan biaya yang besar saat instalasi,
pemeliharaan dan modifikasi dari sistem yang telah dibuat jika di kemudian hari
diperlukan modifikasi. Dengan menggunakan PLC (Programmable Logic
Controller) permasalahan tersebut dapat diatasi, karena sistem PLC
mengintegrasikan berbagai macam komponen yang berdiri sendiri menjadi suatu
sistem kendali terpadu dan dengan mudah merenovasi tanpa harus mengganti
semua instrumen yang ada [1].
PLC adalah kendali logika terprogram yang merupakan suatu piranti
elektronik yang dirancang untuk dapat beroperasi secara digital dengan
menggunakan memori sebagai media penyimpanan instruksi-instruksi internal
2
untuk menjalankan fungsi-fungsi logika, seperti fungsi pencacah, fungsi urutan
proses, fungsi pewaktu, fungsi aritmatika, dan fungsi yang lainnya dengan cara
memprogramnya [2].
Selain PLC perkembangan elektronika akhir-akhir ini khususnya
mikrokontroler menunjukkan bahwa semakin banyak dijumpai aplikasi-aplikasi
peralatan elektronis khususnya otomasi dan pengendalian suatu sistem yang
dikehendaki agar mampu berdiri sendiri. PLC sendiri adalah suatu sistem
elektronika yang menggunakan memori yang dapat diprogram. Kinerja PLC sama
dengan kinerja mikrokontoler yang dapat diprogram, dapat menyimpan dan
menjalankan instruksi-intsruksi logika [3], sehingga PLC dapat dirancang dengan
menggunakan mikrokontroler. Pada penelitian ini, akan dirancang sebuah alat
pemrogram PLC melalui programmer/monitor (P/M) yang sering disebut sebagai
hand held programmer atau konsol dengan menggunakan mikrokontroler sebagai
pengendali utama. Alat ini akan memprogram CPU (Cental Processing Unit )
PLC dan menampilkan instruksi-instruksi program yang digunakan pada LCD
(Liquid Crystal Display).
1.3 Tujuan dan Manfaat Penelitian
Pada pembuatan alat ini tujuan yang ingin dicapai adalah membuat
hardware yang dapat memprogram dan menampilkan instruksi-instuksi yang
digunakan untuk PLC pada LCD karakter. Adapun manfaat yang diharapkan dari
penelitian ini adalah Sebagai referensi yang dapat mendukung penelitian
3
selanjutnya yang berkaitan dengan aplikasi mikrokontroller untuk pemrograman
PLC
1.4 Batasan Masalah
Perangkat yang akan dirancang mempunyai batasan masalah sebagai
berikut:
1. Menampilkan instruksi-instruksi yang digunakan dengan LCD module
16 2× karakter
2. Menggunakan komunikasi serial untuk komunikasi data
3. Mikrokontroler yang digunakan adalah mikrokontroler ATmega8535
4. Keypad yang dirancang sesuai dengan instruksi pada pemrograman PLC
yaitu: AND, OR, LD, OUT, CNT, NOT, TIM.
5. Menggunakan 8 port input dan 8 port output
6. Menggunakan 1 CNT dan TIM
1.5 Metodologi Penelitian
Adapun metodologi penelitian yang dilakukan terdiri dari :
1. Studi literatur, yaitu dengan mempelajari berbagai informasi, baik dari
buku maupun internet sehingga dapat digunakan sebagai referensi
pendukung dalam penyusunan laporan.
2. Perencanaan rancangan dan pembuatan alat dalam bentuk perangkat
keras maupun perangkat lunak.
3. Melakukan pengamatan dan pengujian terhadap hasil perancangan agar
dapat diketahui apakah alat dapat bekerja dengan baik.
4
1.6 Sistematika Penulisan
Sistematika penulisan tugas akhir ini dibagi menjadi lima bab yang disusun
sebagai berikut :
BAB I. PENDAHULUAN
Berisi latar belakang penelitian, rumusan masalah, tujuan dan manfaat
penelitian, batasan masalah, metodologi penelitian, dan sistematika penulisan.
BAB II. DASAR TEORI
Berisi dasar teori meliputi PLC, LCD LMB162A, dan mikrokontroler
yang akan digunakan dalam perancangan.
BAB III. PERANCANGAN ALAT
Berisi perancangan alat yang meliputi diagram blok perancangan,
perancangan perangkat keras, dan pemrograman mikrokontroler.
BAB IV. HASIL PENGAMATAN DAN PEMBAHASAN
Bab ini berisi hasil pengamatan dan pembahasan dari pengujian yang
telah dilakukan.
BAB V. PENUTUP
Berisi tentang kesimpulan dan saran.
5
BAB II
DASAR TEORI
PLC (Programmable Logic Controller) adalah suatu peralatan elektronik
yang bekerja secara digital, memiliki memori yang dapat diprogram, menyimpan
perintah-perintah untuk melakukan fungsi-fungsi khusus seperti logic,
sequencing, timing, counting, dan aritmatika untuk mengontrol berbagai jenis
mesin atau proses melalui analog atau digital input / output modules [3]. PLC
banyak digunakan pada aplikasi-aplikasi industri, misalnya pada proses
pengepakan, penanganan bahan, perakitan otomatis dan lain sebagainya. Dengan
kata lain hampir semua aplikasi yang memerlukan kendali listrik atau elektronik
membutuhkan PLC
2.1. Prinsip Kerja PLC
Secara singkat prinsip kerja PLC dapat menerima data berupa sinyal
analog dan digital dari komponen input device [4]. Sinyal dari input device dapat
berupa saklar-saklar, tombol tombol tekan, peralatan pengindera dan peralatan
sejenisnya. PLC juga dapat menerima sinyal analog dari input device yang berupa
potensiometer, putaran motor dan peralatan sejenisnya. Sinyal analog ini oleh
modul masukan diubah menjadi sinyal digital. CPU (Central Processing Unit)
mengolah sinyal digital yang masuk sesuai dengan program yang telah
dimasukkan. Selanjutnya CPU mengambil keputusan – keputusan yang berupa
6
sinyal dengan logika high (1) dan low (0). Sinyal keluaran ini dapat langsung
dihubungkan ke peralatan yang akan dikontrol atau dengan bantuan kontaktor
untuk mengaktifkan peralatan yang akan dikendalikan. Bagian PLC pada
prinsipnya terdiri dari CPU (Central Processing Unit), PM (Programming
Memori), PD (Programming Device), modul input/output dan unit catu daya,
ditunjukkan pada gambar 2.1.
Gambar 2.1. Diagram Blok Bagian PLC [4].
2.2 Pemrograman PLC
Persyaratan utama yang harus dimiliki sebuah bahasa pemrograman PLC
adalah mudah dimengerti dan mudah digunakan dalam mengendalikan suatu
sistem kendali [4]. Hal ini membutuhkan tingkat bahasa yang cukup tinggi untuk
mampu memberikan instruksi yang mendekati fungsi asli instruksi seperti yang
7
diinginkan oleh pemrogram. Untuk itu terdapat dua cara pemrograman dalam PLC
yaitu:
1. Ladder diagram, artinya manusia menyusun program berdasarkan
gambar rangkaian asli yang digunakan untuk sistem kendali.
2. Bahasa mnemonik, mengubah dari ladder diagram ke bahasa mnemonik.
Penyusunan ladder diagram sebagai sebuah program dapat dilakukan
dengan menggunakan alat pemrogram khusus. Umumnya unit pemrogram yang
digunakan adalah programming konsol untuk memprogram dengan bahasa
mnemonik dan personal computer untuk memprogram dengan menggunakan
ladder diagram.
Programming konsol adalah piranti yang dibuat khusus untuk
pemrograman PLC berbeda dengan personal computer yang berupa komputer
konvensional biasa yang diberi program khusus untuk pemrograman PLC.
Programming konsol sering juga disebut hand held programmer dan
mempunyai beberapa fungsi yaitu:
1. Off, difungsikan untuk menghentikan PLC sehingga program yang dibuat
tidak dapat dijalankan
2. Run, difungsikan untuk pengendalian suatu proses pada saat program
dalam kondisi diaktifkan.
3. Monitor untuk mengetahui keadaan suatu proses yang terjadi pada PLC
4. Program yang menyatakan suatu keadaan dimana programmer/monitor
dapat digunakan untuk membuat program.
8
2.2.1 Kode Mnemonik
Kode mnemonik juga bahasa teknik yang merupakan sarana perantara
untuk memasukkan program ke dalam PLC khususnya menggunakan Personal
Computer atau konsol [5]. Kode ini memuat keterangan mengenai instruksi dan
data operand. Deskripsi suatu proses kerja dari sebuah sistem yang dikendalikan
dapat dituangkan ke dalam sebuah kode mnemonik yang memuat keterangan-
keterangan mengenai alamat dan tanggapan dari input-output, serta fungsi-fungsi
program pengontrol. Contoh tabel mnemonik dapat dilihat pada tabel 2.1
Tabel 2.1 Mnemonik PLC [5]Instruksi Operand
LD 0000AND 0001OR 0002
AND 0003
2.2.2 Diagram Ladder
Pada PLC diagram kendali dinamakan diagram ladder (tangga) [5].
Dinamakan diagram tangga dikarenakan bentuknya menyerupai tangga (tersusun
seperti tangga), seperti kita berjalan menuruni tangga mulai tangga atas dan
perlahan ke bawah. Pada penggambaran diagram tangga dikenal kontak-kontak
yang hampir sama dengan relai-relai mekanik, yaitu: Normally Open (NO),
Normally Closed (NC) dan Keluaran(output).
9
2.2.2.1 Normally Open (NO)
Normally open (NO) adalah salah satu jenis saklar yang dalam keadaan
normal berkondisi OFF (Normally Open), berupa satu kutub (berasal dari satu
sumber) dan menghantarkan arus hanya ke satu beban [5]. Penghantaran arus dan
tegangan (kondisi ON) dari suatu sumber terjadi jika saklar terhubung dan
pemutusan arus dan tegangan (kondisi OFF) terjadi saat saklar tidak terhubung
atau ketika tidak mendapat arus. Instruksi tersebut ditunjukkan pada gambar 2.2.
2.2.2.2 Normally Close (NC)
Saklar ini menandakan keadaan saklar yang normalnya pada keadaan
ON/tertutup, jadi jika saklar tersebut diaktifkan akan menjadi OFF/terbuka.
instruksi tersebut ditunjukkan pada gambar 2.3.
Gambar 2.3 Konfigurasi kontak NC [5]
Gambar 2.2 Konfigurasi kontak NO [5]
10
2.2.2.3 Keluaran (Output)
Instruksi keluaran (output) juga digunakan pada PLC. Keluarannya dapat
berupa relay yang akan mengaktifkan kontak-kontak NO dan NC [5]. instruksi
tersebut ditunjukkan pada gambar 2.4.
Gambar 2.4 Konfigurasi kontak output [5]
2.3. Instruksi-instruksi Logika dalam PLC
Instruksi-instruksi tangga atau ladder instruction adalah instruksi-instruksi
yang terkait dengan kondisi-kondisi di dalam diagram tangga [5]. Instruksi-
instruksi tangga, baik yang independen maupun kombinasi atau gabungan dengan
blok instruksi berikut atau sebelumnya, akan membentuk kondisi-kondisi
eksekusi. Pada bagian ini instruksi-instruksi yang digunakan sebagai acuan
adalah instruksi pada PLC Omron.
2.3.1 Instruksi LOAD (LD) dan LOAD NOT (LD NOT)
Instruksi LD digunakan untuk memasukkan masukan yang dikehendaki
sebagai bagian awal dari tangga [5]. Sedangkan NOT untuk menandakan kontak
NC (Normally Close). Intruksi LD dan LDNOT dibutuhkan hanya satu kondisi
11
logika saja pada awal program. Bentuk diagram ladder dan mnemonik perintah
tersebut dapat dilihat pada gambar 2.5 dan tabel 2.2.
Tabel 2.2 Mnemonik LD dan LDNOT [5]Instruksi Operand
LD 0001LD NOT 0002
2.3.2 Instruksi AND dan ANDNOT
Instruksi AND digunakan untuk memasukkan masukan yang diseri dengan
masukan sebelumnya [5]. Tentunya instruksi yang diseri harus terpenuhi
semuanya untuk mengeluarkan satu keluaran. Bentuk ladder dan mnemonik
perintah tersebut dapat dilihat pada gambar 2.6 dan tabel 2.3.
0000 0001 0002
0001
0002
Gambar 2.6 Diagram ladder instruksi AND dan AND NOT [5]
Gambar 2.5 Diagram ladder instruksi LD dan LDNOT [5]
12
Tabel 2.3 Mnemonik AND dan AND NOT [5]Instruksi Operand
LD 0000
AND 0001
AND NOT 0002
Untuk menganalisa gerbang AND dengan 2 buah masukan A dan B
dengan keluaran Q, maka terdapat kemungkinan untuk menganalisa masukannya,
seperti yang ditunjukkan pada tabel 2.4.
1. Kemungkinan pertama, masukan A = 0 dan B = 0. Dengan kata lain
tidak ada masukan, maka keluarannya Q = 0.
2. Kemungkinan kedua, masukan pada A = 1 dan B = 0. Terdapat masukan
hanya di A dan tidak ada masukan pada B, maka keluarannya Q = 0.
3. Kemungkinan ketiga, masukan pada A = 0 dan B = 1. Terdapat masukan
hanya di B dan tidak ada masukan pada A, maka keluarannya Q = 0.
4. Kemungkinan keempat, masukan pada A = 1 dan B = 1. Terdapat
masukan pada A dan B, maka keluarannya Q = 1.
Tabel 2.4. Tabel kebenaran gerbang AND [5] Masukan Keluaran
A B Q
0 0 0
1 0 0
0 1 0
1 1 1
13
Untuk menganalisa gerbang NOT AND dengan 2 buah masukan A dan B
dengan keluaran Q, maka terdapat 4 kemungkinan untuk menganalisa
masukannya, seperti yang ditunjukkan pada tabel 2.5.
1. Kemungkinan pertama, masukan A = 0 dan B = 0. Dengan kata lain
tidak ada masukan, maka keluarannya Q = 1.
2. Kemungkinan kedua, masukan pada A = 1 dan B = 0. Terdapat masukan
hanya di A dan tidak ada masukan pada B, maka keluarannya Q = 1.
3. Kemungkinan ketiga, masukan pada A = 0 dan B = 1. Terdapat masukan
hanya di B dan tidak ada masukan pada A, maka keluarannya Q = 1.
4. Kemungkinan keempat, masukan pada A = 1 dan B = 1. Terdapat
masukan pada A dan B, maka keluarannya Q = 0.
Tabel 2.5. Tabel kebenaran gerbang AND NOT [5] Masukan Keluaran
A B Q
0 0 1
1 0 1
0 1 1
1 1 0
2.3.3. Instruksi OR dan ORNOT
Instruksi OR digunakan untuk memasukkan masukan yang diparalel
dengan masukan yang sebelumnya. Beberapa instruksi memungkinkan terletak
pada garis terpisah secara paralel, maka kondisi pertama merupakan instruksi load
(LD) dan sisanya berhubungan dengan instruksi OR atau ORNOT. Instruksi dan
mnemonic instruksi tersebut ditunjukkan pada gambar 2.7 dan tabel 2.6.
14
Tabel 2.6 Mnemonik OR dan OR NOT [5]Instruksi Operand
LD 0000
OR 0001
OR NOT 0002
Untuk menganalisa gerbang OR, terdapat 4 kemungkinan untuk
menganalisa masukannya, seperti yang ditunjukkan pada tabel 2.7.
1. Kemungkinan pertama, masukan pada A = 0 dan B = 0. Dengan kata lain
tidak ada masukan, maka keluarannya Q = 0.
2. Kemungkinan kedua, masukan pada A = 1 dan B = 0. Terdapat masukan
pada A = 1 dan tidak ada masukan pada B, maka keluarannya Q = 1.
3. Kemungkinan ketiga, masukan pada A = 0 dan B = 1. Terdapat masukan
pada B dan tidak ada masukan A, maka keluarannya Q = 1.
4. Kemungkinan keempat, masukan pada A = 1 dan B = 1. Terdapat
masukan pada A dan B, maka keluarannya Q = 1.
0001
0002
0000
Gambar 2.7 Diagram ladder instruksi OR dan ORNOT [5]
15
Tabel 2.7. Tabel kebenaran gerbang ORNOT [5] Masukan Keluaran
A B Q
0 0 0
0 1 1
1 0 1
1 1 1
Untuk menganalisa gerbang OR, terdapat 4 (empat) kemungkinan dengan
menganalisa yang ada pada masukan-masukannya:
1. Kemungkinan pertama, masukan pada A = 0 dan B = 0. Dengan kata lain
tidak ada masukan, maka keluarannya Q = 1.
2. Kemungkinan kedua, masukan pada A = 1 dan B = 0. Terdapat masukan
pada A = 1 dan tidak ada masukan pada B, maka keluarannya Q = 0.
3. Kemungkinan ketiga, masukan pada A = 0 dan B = 1. Terdapat masukan
pada B dan tidak ada masukan A, maka keluarannya Q = 0.
4. Kemungkinan keempat, masukan pada A = 1 dan B = 1. Terdapat
masukan pada A dan B, maka keluarannya Q = 0.
Tabel 2.8. Tabel kebenaran gerbang OR [5] Masukan Keluaran
A B Q
0 0 1
0 1 0
1 0 0
1 1 0
16
2.3.4. Instruksi END
Instruksi terakhir yang harus dituliskan atau digambarkan dalam diagram
tangga adalah instruksi END, instruksi tersebut dapat dilihat pada gambar 2.8 [5].
CPU pada PLC akan mengerjakan semua instruksi dalam program dari awal (baris
pertama) hingga ditemui instruksi END yang pertama, sebelum kembali lagi
mengerjakan instruksi dalam program dari awal lagi, artinya instruksi-instruksi
yang ada di bawah atau setelah instruksi END akan diabaikan.
2.4. Mikrokontroler ATmega8535
Mikrokontroler ATmega8535 memiliki fitur yang cukup lengkap. Mulai
dari dari kapasitas memori program dan memori data yang cukup besar, interupsi,
timer/counter, PWM, USART, TWI, analog comparator, EEPROM internal dan
juga ADC internal semuanya ada dalam ATmega8535 [6]. Sehingga dengan fitur
yang cukup lengkap kita dapat merancang suatu sistem untuk kepentingan
komersial mulai dari sistem yang sederhana sampai dengan sistem yang relative
kompleks hanya dengan menggunakan satu IC saja, yaitu dengan IC
ATmega8535.
END
Gambar 2.8 Diagram ladder instruksi END [5]
17
2.4.1. Fitur dan Deskripsi PIN ATmega8535
Berikut ini adalah fitur-fitur yang dimiliki ATmega8535:
1) 130 macam instruksi , yang hampir semuanya dieksekusi dalam satu
siklus clock.
2) 32×8-bit register serba guna.
3) Kecepatan mencapai 16 MIPS dengan clock 16MHz.
4) 8 KByte Flash Memori, yang memiliki fasilitas in-sistem Programming.
5) 512 Byte internal EEPROM dan 512 Byte SRAM.
6) Programming Lock, fasilitas untuk mengamankan kode program.
7) 2 buah timer/counter 8-bit dan 1 buah timer/counter 16-bit.
8) 4 channel output PWM, 8 channel ADC 10-bit dan serial USART.
9) Master/Slave SPI serial interface dan serial TWI atau 12C dan ON-Chip
Analog Comparator
Gambar 2.9 Konfigurasi pin ATmega8535 [6]
18
Pada gambar 2.9 menunjukkan konfigurasi pin ATmega8535 , sehingga
pin tersebut dapat di deskripsikan sebagai berikut:
1) Power, VCC dan GND (ground)
2) PORTA (PORTA 70− ), merupakan pin IO dua arah dan berfungsi khusus
sebagai pin masukan ADC
3) PORTB (PORTB 70− ), merupakan pin IO dua arah dan fungsi khusus
sebagai pin timer/counter, komparator analog dan SPI
4) PORTC (PORTC 70− ), merupakan pin IO dua arah dan fungsi khusus
5) PORTD (PORTD 70− ), merupakan pin IO dua arah dan fungsi khusus
6) RESET adalah pin untuk me-reset mikrokontroler
7) XTAL1 dan XTAL2 pin untuk exsternal clock
8) AVCC adalah pin masukan untuk tegangan ADC
9) AREF adalah pin masukan untuk tegangan referensi eksternal ADC
2.4.2. Peta Memori
ATmega8535 memiliki dua ruang memori utama, yaitu memori data dan
memori program [7]. Selain dua memori utama, ATmega8535juga memiliki fitur
EEPROM yang dapat digunakan sebagai penyimpan data.
2.4.2.1. Flash Memori
ATmega8535 memiliki flash memory sebesar 8kB untuk memori program,
seperti yang terlihat pada gambar 2.10 [7]. Karena semua instruksi AVR
19
menggunakan 16 atau 32 bit dengan alamat dari $000 hingga $FFF. Untuk
keamanan software, memori flash dibagi menjadi dua bagian, yaitu dengan Boot
Program dan bagian Application Program. AVR tersebut nmemiliki 12 bit
Program Counter (PC) sehingga mampu mengalamati flash memori.
Gambar 2.10 Memori Program AVR ATmega8535 [7]
2.4.2.2. SRAM
ATmega8535 memiliki 608 alamat memori data yang terbagi menjadi 3
bagian, yaitu 32 buah register file, 64 buah IO register file dan 512 byte internal
SRAM.
Gambar 2.11 Peta Memori Data AVR ATmega8535 [7]
20
Tampak pada gambar 2.11 diatas bahwa alamat $0000-$001F ditempati oleh
register file. I/O register menempati alamat dari $0020-$005F. Sedangkan sisanya
sebagai internal SRAM sebesar 512 byte ($0060-$025F) [7].
2.4.2.3. EEPROM
ATmega8535 juga memliki memori data berupa EEPROM 8 bit sebesar
512 byte ($000-$1FF) yang terpisah dari memori program maupun memori data
[7]. Memori EEPROM ini hanya dapat diakses dengan menggunakan register-
register I/O yaitu register EEPROM. Untuk mengakses memori EEPROM ini
diperlakukan seperti mengakses data eksternal sehingga waktu eksekusinya relatif
lebih lama bila dibandingkan dengan mengakses data dari SRAM.
2.4.3. Register Serba Guna dan Stack Pointer
ATmega8535 memiliki 32 byte register serba guna yang terletak pada
awal alamat RAM seperti pada gambar 2.12 [7].
Gambar 2.12 Register Serbaguna [7]
21
Dari 32 byte register serba guna di atas, 6 byte terakhir juga digunakan sebagai
pointer yaitu register pointer X, register pointer Y dan register pointer Z, seperti
pada gambar 2.13.
Gambar 2.13. Register X,Y,Z [7]
Stack pointer digunakan untuk menyimpan alamat program yang sedang
dikerjakan pada saat terjadi instruksi percabangan. Stack pointer menempati
alamat memori RAM paling atas dan akan turun semakin kebawah dengan
bertambahnya data yang disimpan. Instruksi PUSH digunakan untuk menyimpan
data ke stack pointer kemudian secara otomatis stack pointer berkurang 1.
Sebaliknya instruksi POP digunakan untuk mengambil data dari stack pointer
kemudian secara otomatis stack pointer bertambah 1.
22
2.4.4. Register I/O dan Port I/O
ATmega8535 memiliki 64 byte register I/O (input /output) yang dapat
diakses sebagai bagian dari memori RAM (menggunakan instruksi LD atau ST)
atau dapat juga diakses sebagai I/O (menggunakan instruksi IN atau OUT) [7].
Untuk mengakses register I/O seperti mengakses data pada memori RAM maka
register I/O di atas menempati alamat 0020-005F, tetapi jika register I/O diakses
seperti mengakses I/O maka register I/O menempati alamat memori 0000-00#F.
Semua port keluarga AVR bersifat bit-directional (dua arah) pada saat
berfungsi sebagai port I/O digital. Bahkan setiap pin dapat di konfigurasikan baik
sebagai masukan maupun keluaran secara individu tanpa mempengaruhi pin-pin
yang lain. Hal ini dapat dilakukan dengan perintah SBI dan CBI. Pengaturan port
I/O baik sebagai input maupun output otomatis akan diikuti dengan pengaturan
pull-up resistor internal. Pengaturan pull-up resistor bisa saja dinon-aktifkan
melalui bit PUD pada register SFIOR yang tampak pada gambar 2.14. Jika bit
PUD diset ’1’ maka berarti konfigurasi pull-up port I/O non-aktif.
Gambar 2.14 Register SFIOR [7]
23
Tiga alamt memori IO dialokasikan untuk mengatur konfigurasi setiap
port I/O yaitu:
1. Data Register (PORTx)
2. Data Direction Register (DDRx)
3. Port Input Pin (PINx)
Data Direction Register (DDRx) digunakan untuk mendefinisikan port
sebagai input sebagai output. Jika DDRx diisi ‘1’ berarti sebagai output dan jika
diisi ‘0’ berarti sebagai input. Data register (PORTx) digunakan untuk
menyimpan data yang akan ditulis/dikeluarkan ke port I/O pada saat dikonfigurasi
sebagai output sedangkan Port Input Pin (PINx) digunakan untuk menyimpan
data yang terbaca dari port I/O pada saat dikonfigurasi sebagai input.
2.4.5. Interupsi
ATmega8535 menyediakan 21 macam sumber interupsi yang masing-
masing memiliki alamat program vektor interupsi seperti pada tabel 2.8 [7]. Setiap
interupsi yang aktif akan dilayani segera setelah terjadi permintaan interupsi,
tetapi jika dalam waktu bersamaan terjadi lebih dari satu interupsi maka prioritas
yang akan diselesaikan lebih dulu adalah interupsi yang memiliki nomor urut
lebih kecil sesuai tabel 2.9. Sebagai contoh jika interupsi timer 0 overflow dan
timer1 overflow terjadi bersamaan maka interupsi timer 1 yang lebih dulu yang
akan diselesaikan karena interupsi timer 1 memiliki nomor urut di atas timer 0.
24
Tabel 2.9 Alamat Vektor Interupsi ATmega8535 [7]
2.4.6. Timer dan Counter
ATmega8535 memiliki 3 modul timer yang terdiri dari 2 buah
timer/counter 8-bit dan 1 buah timer/counter 16-bit [7]. Ketiga modul
timer/counter ini dapat diatur dalam mode yang berbeda secara individu dan tidak
saling mempengaruhi satu sama lain. Selain itu semua timer/counter dapat
difungsikan sebagai sumber interupsi dan register tertentu untuk mengatur mode
dan cara kerjanya.
1.Timer/Counter 0
Timer/Counter 0 merupakan modul timer/counter 8-bit yang dapat
berfungsi sebagai pencacah tunggal, pembangkit PWM 8-bit, pembangkit
frekuensi, pencacah kejadian eksternal, pembangkit interupsi overflow dan
pembangkit interupsi output compare match.
25
1) Mode 0
Berfungsi sebagai pencacah tunggal yang dapat mencacah
dari 0×00 sampai dengan 0×FF. Mode ini disebut dengan
mode normal.
2) Mode 1
Berfungsi sebagai phase correct PWM (PCP).
3) Mode 2
Berfungsi sebagai Clear Timer on Compare Match (CTC).
4) Mode 3
Berfungsi sebagai sebagai Fast PWM. Mode ini hampir
sama dengan mode phase correct PWM.
2.Timer/Counter 1
Timer/counter 1 merupakan modul timer/counter 16-bit yang dapat
berfungsi sebagai pencacah tunggal, pembangkit PWM 16-bit, pembangkit
frekuensi, pencacah event eksternal, dan sebagai pembangkit interupsi yang
terdiri dari 4 sumber pemicu yaitu 1 interupsi overflow, 2 interupsi output
compare match dan 1 interupsi input capture.
3.Timer/Counter 2
Timer/counter 2 merupakan modul timer/counter 8-bit yang dpat
berfungsi sebagai pencacah tunggal, pembangkit PWM 8-bit, pembangkit
frekuensi, pencacah event eksternal, pembangkit interupsi overflow dan
pembangkit interupsi output compare match.
26
Mode kerja timer/counter 2 sama persis dengan mode kerja
timer/counter 0, hanya saja pada timer/counter 2 memiliki satu fitur
tambahan yaitu asynchronous mode. Perbedaan antara synchronous dan
asynchronous hanya terletak pada sumber clock saja. Jika pada mode
synchronous seperti yang digunakan pada timer/counter 0 dan timer/counter
1 memiliki sumber clock yang berasal dari kristal yang terhubung melalui
pin XTAL1 dan XTAL2 maka pada mode asynchronous memiliki sumber
clock eksternal yang terhubungmelalui pin TOSC1 dan TOSC2.
2.4.7. USART
Universal Synchronous and Asynchronous Serial Receiver and
Transmitter (USART) juga merupakan salah satu mode komunikasi serial yang
memiliki fleksibilitas tinggi, yang dapat digunakan untuk melakukan transfer data
baik antar mikrokontroler maupun dengan modul-modul eksternal termasuk PC
yang memiliki fitur UART [7].
USART memungkinkan transmisi data baik secara synchronous maupun
asynchronous sehingga dengan demikian USART pasti kompatibel dengan
UART. Pada ATmega8535, secara umum pengaturan mode komunikasi baik
synchronous maupun asynchronous adalah sama. Perbedaannya hanyalah terletak
pada sumber clock saja. Jika pada mode asynchronous masing –masing peripheral
memiliki sumber clock sendiri maka pada mode synchronous hanya ada satu
sumber clock yang digunakan secara bersama-sama. Dengan demikian secara
27
hardware untuk mode asynchronous hanya membutuhkan 2 pin yaitu TXD dan
RXD sedangkan untuk mode synchronous harus 3 pin yaitu TXD, RXD dan XCK.
Untuk mengatur mode dan prosedur komunikasi USART dilakukan
melalui register USCRA, UCSRB, UCSRC, UBRRH, UBRRL dan UDR. Secara
khusus untuk mengatur USART baud rate menggunakan register UBRRL-
UBRRH.
UBRRL dan UBRRH atau sering disebut sebagai UBRR merupakan
register yang digunakan untuk mengatur kecepatan/baudrate transmisi data pada
komunikasi USART. UBRR sebetulnya berupa register 16-bit tetapi untuk upper
bytenya yaitu register UBRRH digunakan bersama-sama dengan register UCSRC
pada gambar 2.16. Sehingga untuk mengaksesnya diperlukan pemilihan register
dengan menggunakan bit URSEL seperti pada gambar 2.15.
Gambar 2.15 Register UBBRH dan UBBRL [7]
Gambar 2.16 Register UCSRC [7]
1. Bit 15-URSEL: Register Select
Jika bit URSEL, bernilai ’1’ berarti mengakses register UCSRC dan jika
bit URSEL benilai ’0’ berarti mengakses register UBRRH.
2. Bit 14:12-Tidak digunakan
28
3. Bit 11:0 – UBRR11:0 USART Baut Rate Register
UBRR11:0 adalah register dengan lebar 12-bit yang digunakan untuk
menentukan baudrate komunikasi USART. Pengaturan baudrate dan
penentuan nilai register UBBR dapat dihitung dengan menggunakan
rumus yang terdapat pada tabel 2.10.
Tabel 2.10 Perhitungan UBRR dan Baud Rate [7]
Keterangan:
BAUD :Baudrate (bps)
Fosc :Frekuensi Osilator (Frekuensi kristal)
UBRR :Nilai register UBRR (UBRRH-UBRRL)
Pada perhitungan baudrate sering dilakukan pendekatan terhadap hasil
perhitungan rumus. Sebagai hasil pendekatan akan menyebabkan terjadinya error,
dengan error yang muncul akibatnya pendekatan ini dapat dirumuskan sebagai
berikut[6]:
1001 ×
−=BaudRate
BaudRateError chClosestMat %
Keterangan:
Error :prosentase error yang dihasilkan
29
BaudRate :BaudRate hasil perhitungan
BaudRateCloseddst Match :BaudRate Pembulatan
2.4.8 Reset
Rangkaian reset digunakan untuk mereset program yang terdapat pada
mikrokontroler [8]. Rangkain reset dapat dilihat pada gambar 2.17.1
2
VCC
GND
Gambar 2.17 Rangkaian RESET [8].
Pada gambar diatas apabila saklar tidak ditekan, pin reset pada
mikrokontroler akan mendapatkan logika rendah ‘0’. Sedangkan saat saklar
ditekan pin akan mendapatkan logika tinggi ‘1’ dan akan mereset mikrokontoler.
Lamanya waktu yang disbutuhkan untuk mereset adalah dua siklus mesin dan
memenuhi persamaan 2.1.
T = R x C ……………(2.1)
2.5 LCD (Liquid Crystal Display)
30
LCD (Liquid Crystal Display) adalah suatu penampil dari bahan cairan
kristal yang pengoperasiannya menggunakan sistem dot matriks [9]. Pada
perancangan alat ini digunakan penampil LCD 2 × 16 karakter seperti terlihat
pada gambar 2.18 dan gambar 2.19, yang artinya LCD ini memiliki 2 baris dan
16 kolom karakter. Sehingga jumlah total karakter yang dapat ditampilkan
sekaligus adalah sebanyak 32 karakter. Masing-masing karakter tersebut terbentuk
dari susunan titik yang berukuran 8 baris dan 5 kolom dot.
Pada LCD ini terdiri dari 8 jalur data, 3 jalur kendali dan fasilitas
Pengaturan kontras serta backlight. LCD ini dapat dikendalikan dengan
mikrokontroler atau mikroposesor. Deskripsi pin LCD tersebut dapat dilihat pada
tabel 2.11.
Tabel 2.11 Pin Tampilan LCD [9].
Gambar 2.18. Bentuk LCD 16 x 2 [9 ] Gambar 2.19. Bagian LCD 16 ×2 [9]
31
1. DB0 s/d DB7, merupakan jalur data yang dipakai untuk menyalurkan
kode ASCII maupun perintah pengatur kerja LCD tersebut.
2. RS (register select), merupakan pin yang dipakai untuk membedakan
jenis data yang dikirim ke LCD. Jika RS berlogika ‘0’, maka data yang
dikirim adalah perintah untuk mengatur kerja LCD tersebut. Jika RS
berlogika ‘1’, maka data yang dikirim adalah kode ASCII yang
ditampilkan.
3. R/W (read/write), merupakan pin yang digunakan untuk mengaktifkan
pengiriman dan pengambilan data ke dan dari LCD. Jika R/W berlogika
‘0’, maka akan diadakan pengiriman data ke LCD. Jika R/W berlogika
‘1’, maka akan diadakan pengambilan data dari LCD.
Nomor Pin Kontak Nomor Pin Kontak
1 VEE (0V) 9 DB2
2 VCC (5V) 10 DB3
3 Vo pengaturkontras LCD 11 DB4
4 RS 12 DB5
5 R/W 13 DB6
6 E 14 DB7
7 DB0 15 A
8 DB1 16 K
32
4. E (enable), merupakan sinyal sinkronisasi. Saat E berubah dari logika ‘1’
ke ‘0’, maka data di DB0 s/d DB7 akan diterima atau diambil dari port
mikrokontroler.
5. VCC dan GND, Sebagai terminal power supply (+5V).
2.6 Matriks keypad
Kofigurasi matriks keypad terdiri dari tombol-tombol yang tersusun atas
baris dan kolom [10]. Rangkaian matriks keypad sederhana dapat dilihat pada
gambar 2.20.
2 3
4 5 6
7
1
8 9
* 0 #
B2
B3
B4
K1 K2 K3
B1
Gambar 2.20. Rangkaian Matriks Keypad [10]
33
Penggunaan matriks keypad bertujuan untuk menghemat jumlah port yang
digunakan pada mikrokontroler. Pada gambar 2.20 adalah matriks keypad 4 x 3
yang artinya terdiri dari 4 baris dan 3 kolom. Matriks keypad ini tersusun dari 12
tombol, apabila tidak menggunakan konfigurasi matriks keypad maka dibutuhkan
12 port sedangkan dengan matriks keypad hanya menggunakan 7 port.
Pengecekan pada matriks keypad adalah dengan sistem pengecekan secara
berurutan (scanning). Sebagai contoh apabila ingin mengecek angka 1, maka
terlebih dahulu kolom K1 diberi logika ‘0’, lalu dilakukan pengecekan tiap baris.
Apabila baris B1 = ‘0’ artinya tombol 1 sedang ditekan. Pengecekan ini juga
berlaku untuk tombol yang lainnya dengan pengecekan baris dan kolom secara
bergantian [10].
2.7 Komunikasi Serial
Gambar 2.21 dapat dilihat penghubung komunikasi serial dengan DB9.
Komunikasi serial adalah pengiriman data secara serial (data dikirim satu per satu
secara berurutan) sehingga komunikasi serial jauh lebih lambat daripada
komunikasi parallel. Serial Port lebih sulit ditangani karena peralatan yang
duhubungkan ke serial port harus berkomunikasi menggunakan transmisi serial,
sedangkan data dikomputer diolah secara paralel. Oleh karena itu, data dari serial
port harus dikonversikan kebentuk paralel untuk bisa digunakan jika
menggunakan perangkat keras. Kelebihan serial port adalah jangkauan panjang
kabel yang lebih jauh dibandingkan paralel karena serial port mengirimkan logika
1 dengan kisaran tegangan – 3 volt sampai - 25 volt dan logika 0 sebagai + 3 volt
34
hingga + 25 volt, sehingga kehilangan daya karena panjangnya kabel bukan
masalah utama. Komunikasi serial port bersifat asinkron sehingga sinyal detak
tidak dikirim bersama data. Setiap word (kata) disinkronkan dengan start bit dan
satu pulsa detak (clock) internal di kedua sisi menjaga bagian data saat
pewaktuan.
Spesifikasi elektris dari serial port adalah sebagai berikut:
1. “Space” (logika 0) adalah tegangan antar +3 hingga + 25 volt.
2. “Mark” (logika 1) adalah tegangan antara – 3 hingga – 25 volt.
3. Daerah antara +3 volt hingga – 3 volt tidak didifinisikan atau tidak
terpakai.
4. Tegangan open circuit tidak boleh melebihi 25 volt.
5. Arus hubungan singkat tidak boleh melebihi 500 mA.
Gambar 2.21 Komunikasi Serial DB9
Konektor serial port terdiri atas 2 (dua) jenis yaitu konektor 25 pin (DB 25)
dan 9 pin (DB9) yang berpasangan (jantan dan betina). Bentuk dari konektor DB-
25 sama persis dengan port paralel [5]. Konfigurasi komuniksai serial dapat
dilihat pada tabel 2.12.
35
Tabel 2.12 Komunikasi Serial DB9PIN SIGNAL
1 Data Carrier Detect2 Received Data3 Transmitted Data4 Data Terminal Ready5 Signal Ground6 Data Set Ready7 Request To Send8 Clear to Send9 Ring Indicator
MAX232 adalah multichannel RS232 driver / receiver yang hanya
membutuhkan single supply sebesar 5V. MAX232 memiliki jalur komunikasi RX
dan TX namun yang digunakan hanya bagian TX (Transmiter) saja dengan
ketentuan sebagai berikut:
1. Logic Low (0) pada input dapat menghasilkan tegangan output sebesar +10V.
2. Logic High (1) pada input menghasilkan tegangan output sebesar –10V.
Dalam aplikasi ini MAX232 digunakan untuk menerima keluaran dari
microcontroller, mengolahnya dan mengirimkan sinyal. Antarmuka serial
merupakan pintu gerbang komunikasi antara mikrokontroler dengan Base
Terminal (telepon seluler). Terminal memiliki gerbang serial yang dapat
digunakan untuk berkomunikasi dengan perangkat-perangkat yang lain.
Komunikasi serial tersebut menggunakan standar komunikasi serial UART
dengan 1 start-bit, 8 data-bit, dan 1 stop-bit.
Pada antarmuka serial ini dibutuhkan sebuah IC MAX232 sebagai
pengkonversi tegangan digital yang dikeluarkan gerbang serial yang dimiliki
mikrokontroler dari tegangan standar 0-5 volt. Kaki RXD merupakan kaki yang
36
akan menerima data-data serial, sedangkan TXD berfungsi mentransmisikan data-
data serial dari mikrokontroler [5]. IC MAX232 dapat dilihat pada gambar 2.22.
Gambar 2.22 IC MAX232[6]
38
BAB III
PERANCANGAN ALAT
PLC (Programmable Logic Control) dapat diprogram dengan dua cara,
yaitu dengan menggunakan komputer dan alat pemrogram konsol. Pada
perancangan alat secara umum dibutuhkan beberapa bagian sebagai berikut, PC
(Personal Computer), Konsol dan CPU (Central Processing Unit) PLC.
Pada pembuatan dasar kerja alat ”Konsol Sebagai Pemrogram Pada
Implementasi PLC Menggunakan Mikrokontroler” ini dibutuhkan perancangan
perangkat keras (hardware) maupun perangkat lunak (software). Perancangan
peralatan yang dibuat meliputi penyusunan diagram blok, rancangan perangkat
keras dan pemrograman mikrokontroler (flow chart).
3.1 Diagram Blok
Gambar 3.1.Diagram blok sistem PLC
PCatau
KOMPUTER
KONSOL
CPU PLC
INPUT
OUTPUT
39
Gambar 3.2. Diagram blok konsol PLC
Pada prinsipnya PLC terdiri dari konsol, PC yang berfungsi sebagai alat
untuk memrogram PLC, dan CPU yang merupakan otak dari sebuah pengendalian
PLC yang digunakan sebagai pusat pemrosesan semua instruksi-instruksi atau
perintah-perintah yang digunakan PLC. Diagaram blok PLC secara umum dapat
dilihat pada gambar 3.1. Dengan melihat diagram blok konsol PLC pada gambar
3.2, mikrokontroler berfungsi sebagai pusat pengolahan instruksi dan operand
yang dibutuhkan dalam pemrograman PLC. Dalam perancangan konsol PLC,
dibutuhkan juga keypad dan LCD. Keypad yang digunakan berfungsi sebagai alat
untuk memasukkan instruksi dan operand yang dibutuhkan dalam pemrograman
PLC sedangkan penggunaan LCD berfungsi sebagai alat penampil instruksi dan
operand. Instruksi yang digunakan terdiri dari instruksi AND, OR, LD, NOT,
OUT, TIM, CNT dan END. Instruksi dan operand yang dibutuhkan diterjemahkan
dalam sebuah kode biner delapan bit. Untuk pengkodean instruksi dan operand
dapat dilihat pada lampiran kode instruksi dan operand.
001 002 003 004 005 006 007 008INPUT
OUTPUT
CPU PLC
010 020 030 040 050 060 070 080
KEYPAD µKONTROLER
LCD
40
3.2 Rancangan Perangkat Keras
Perancangan perangkat keras untuk bagian konsol PLC terdiri dari 4
bagian yaitu, rangkaian matriks keypad, rangkaian mikrokontroler, komunikasi
antar mikrokontroler, dan komunikasi mikrokontroler dengan LCD.
3.2.1 Rangkaian Matriks Keypad
Matriks keypad yang digunakan adalah matriks keypad 5 × 5 yang artinya
tersusun atas 5 baris dan 5 kolom. Keypad ini dihubungkan dengan port B (PB)
dan port A (PA) mikrokontroler ATmega8535, untuk barisnya terhubung dengan
jalur PB.0 sampai PB.4, sedangkan kolomnya terhubung dengan jalur PA.0
sampai PA.4 dan untuk konfigurasi matriks keypad dapat dilihat pada gambar 3.3.
RUN PROG SEND ENTER DEL
7 8 9 LD AND
4 5 6 OR NOT
1 2 3 OUT UP
END 0 CNT TIM DOWN
Gambar 3.3 Matriks Keypad 5 × 5
PB.2
PB.1
PB.0
PB.4
PB.3
PA.0 PA.1 PA.2 PA.3 PA.4
41
Cara kerja dari matriks keypad adalah dengan sistem scanning tombol satu
per satu. Kolom 1 sampai dengan kolom 5 (PA.4 - PA.0) berfungsi sebagai
keluaran mikrokontroler. Sedangkan baris 1 sampai dengan baris 5 (PB.0 – PB.4)
sebagai masukan mikrokontroler. Keluaran mikrokontroler akan memberikan
kondisi ‘0’ pada setiap kolom secara bergantian, sehingga apabila ada tombol
yang ditekan maka baris tersebut akan memiliki kondisi ‘0’ pula. Sebagai contoh
apabila tombol ‘OUT’ ditekan maka baris 2 (PB.1) dan kolom 3 (PA.3) akan
berkondisi ‘0’, demikian pula untuk penekanan tombol-tombol lainnya.
Kombinasi baris dan kolom matriks keypad yang digunakan ditunjukkan pada
tabel 3.1.
Tabel 3.1 Kombinasi baris dan kolom matriks keypad PA.0 PA.1 PA.2 PA.3 PA.4 PB.0 PB.1 PB.2 PB.3 PB.4
RUN 0 1 1 1 1 1 1 1 1 07 0 1 1 1 1 1 1 1 0 14 0 1 1 1 1 1 1 0 1 15 0 1 1 1 1 1 0 1 1 11 0 1 1 1 1 0 1 1 1 1
PROG 1 0 1 1 1 1 1 1 1 08 1 0 1 1 1 1 1 1 0 15 1 0 1 1 1 1 1 0 1 12 1 0 1 1 1 1 0 1 1 1 0 1 0 1 1 1 0 1 1 1 1
SEND 1 1 0 1 1 1 1 1 1 09 1 1 0 1 1 1 1 1 0 16 1 1 0 1 1 1 1 0 1 13 1 1 0 1 1 1 0 1 1 1
CNT 1 1 0 1 1 0 1 1 1 1ENTER 1 1 1 0 1 1 1 1 1 0
LD 1 1 1 0 1 1 1 1 0 1OR 1 1 1 0 1 1 1 0 1 1
OUT 1 1 1 0 1 1 0 1 1 1 TIM 1 1 1 0 1 0 1 1 1 1DEL 1 1 1 1 0 1 1 1 1 0AND 1 1 1 1 0 1 1 1 0 1NOT 1 1 1 1 0 1 1 0 1 1UP 1 1 1 1 0 1 0 1 1 1
DOWN 1 1 1 1 0 0 1 1 1 1
42
3.2.2 Rangkaian mikrokontroler ATmega8535
Mikrokontroler digunakan sebagai pengolah instruksi masukan dari
keypad kemudian ditampilkan pada LCD. Pada perancangan akan digunakan
Mikrokontroler ATmega8535. Mikrokontroler ini menghubungkan antara keypad
dan LCD. Konfigurasinya dapat dilihat pada gambar 3.4.
VCC
U1
ATmega8535
1213
10
2223242526272829
1415161718192021
12345678
4039383736353433
30
9
32
11
XTAL2XTAL1
VCC
(SCL)PC0(SDA)PC1
PC2PC3PC4PC5
(TOSC1)PC6(TOSC2)PC7
PD0/RXDPD1/TXD
PD2/INT0PD3/INT1
PD4PD5/OC1A
PD6/WRPD7/RD
PB0(XCK/TO)PB1(T1)PB2(INT2/AIN1)PB3/AIN1PB4/SSPB5/MOSIPB6/MISOPB7/SCK
PA0(ADC0)PA1(ADC1)PA2(ADC2)PA3(ADC3)PA4(ADC4)PA5(ADC5)PA6(ADC6)PA7(ADC7)
AVCC
RESET
AREF
GN
D
J112345678910111213141516
KOLOM
VCC
VCC
22pF
RS-232
1 2
VCCBARIS
VEE
22pF
K E Y P A D
8MHZ
1N4001
5K
12
KOMUNIKASI
10uF
LCD
Gambar 3.4 Konfigurasi Mikrokontroler, Keypad, LCD
3.2.2.1 Rangkaian Osilator
Osilator on-chip digunakan sebagai sumber detak (clock) untuk
mikrokontroler. Penentuan Osilator yang digunakan dapat berpengaruh dalam
penggunaan baud rate untuk kecepatan pengiriman operand dalam komunikasi
43
serial. Rangkaian osilator ini terdiri dari dua kapasitor dan sebuah kristal seperti
yang ditunjukkan pada gambar 3.5. Dalam perancangan ini resonator kristal yang
digunakan adalah kristal 4 MHz yang dapat memberikan instruksi cycle time
(waktu 1 siklus) sebesar 1 µs. Satu siklus mesin mikrokontroler ini dikerjakan
dalam 4 periode osilator. Sesuai dengan yang ada di data sheet, jika dipakai kristal
4 MHz maka kapasitor yang digunakan sebesar 22 pF.
22pF
Y2
8MHZ
XTAL1
XTAL222pF
Gambar 3.5 Rangkaian Osilator
3.2.2.2 Rangkaian Reset
Reset digunakan untuk mengembalikan keseluruhan sistem ke keadaan
awal. Rangkaian reset mikrokontroler ATmega8535 dikonfigurasi seperti gambar
3.6. Pin reset dihubungkan dengan saklar tekan, sebuah hambatan dan kapasitor.
Reset ini akan aktif bila pin RST diberi logika low selama 2 µs. Bila tombol reset
tidak ditekan maka pin RST akan mendapat masukan logika high, sehingga sistem
akan bekerja normal. Resistor dan kapasitor digunakan untuk memperoleh waktu
44
pengosongan kapasitor, sehingga waktu reset minimal 2 µs dapat dipenuhi,
rumusan waktu pengosongan kapasitor yang digunakan sesuai dengan persamaan
2.1 pada dasar teori.
CRT ×= ……………..(2.1)
Pada perancangan dipilih waktu pengosongan sebesar 100 ms dengan
asumsi waktu reset telah memenuhi, bila nilai R dipilih 10 k , maka nilai C
adalah
C×= 000.101,0
C = 10 µF
Saat tombol pushbutton ditekan, reset akan bekerja manual dan
menyebabkan pin reset berlogika low. Namun saat tombol dilepaskan, pin reset
akan berlogika high.
10K
VCC
RESET
SW10uF
Gambar 3.6 Rangkaian Reset
45
3.2.3. Komunikasi Serial RS232
Komunikasi secara serial (serial communications) merupakan cara
menghantar operand yang lebih mudah dikendalikan dibanding dengan
komunikasi parallel (parallel communications) disebabkan sistem komunikasi
parallel terlalu mahal untuk kegunaan jarak jauh. Operand yang dikirim dengan
komunikasi serial, dikirim per 1 bit saja. Pengiriman operand pada IC
mikrokontroler, fasilitas yang digunakan untuk komunikasi serial adalah UART
(Universal Asynchronous Receiver Transmitter).
Tegangan pada level RS-232 untuk level logika “1” didefinisikan -3 volt
sampai -15 volt, dan logika “0” didefinisikan +3 volt sampai +15 volt. Pada level
TTL yang didefinisikan untuk kondisi “0” volt sampai 0,4 volt dan untuk kondisi
“1” tegangannya 2,4 volt sampai 5 volt. Dalam perancangan ini untuk mengubah
level tegangan tersebut digunakan IC MAX-232 dengan 5 buah kapasitor sebesar
1uF/25volt, dengan tegangan catunya sebesar 5 volt. Dengan perangkat tersebut
diharapkan dapat digunakan untuk mengirimkan operand/karakter dari konsol
PLC ke CPU PLC dengan sempurna. Baud rate yang digunakan adalah 9600bps,
dengan frekuensi osilator 8MHz pada mikrokontroler, untuk frekuensi osilator
tidak berpengaruh terhadap baud rate 9600bps yang digunakan tetapi lebih
berpengaruh dalam kesalahan pengiriman data, pada perancanagan ini frekuensi
osilator yang digunakan sebesar 8MHz sedangkan kesalahan yang mungkin terjadi
dalam pengiriman data adalah sebesar 0.2% . Pada gambar 3.7 dapat dilihat
gambar konfigurasi komunikasi serial yang terhubung antara konsol PLC dengan
CPU PLC.
46
C4
1uF/2
5V
C31u
F/25
v
TX
C21uF/25V
GND
C11uF/25v
VCC +5v
DB9
123456789 GND
U2
MAX232_0
138
1110
134526
129147
16
15
R1INR2INT1INT2IN
C+C1-C2+C2-V+V-
R1OUTR2OUTT1OUTT2OUT
VCC
GND
RX
C5
1uF/2
5v
GND
VCC
Gambar 3.7 Konfigurasi Komunikasi RS-232
3.2.4 Komunikasi Mikrokontroler dengan LCD
KOMUNIKASI RS232
R2
5K
13
2
LCD
12
10uF
10K
1N4001
1 2
22pF
J1
12345678910111213141516
VCC
8MHz
U1
ATmega8535
1213
10
2223242526272829
1415161718192021
12345678
4039383736353433
30
9
32
11
XTAL2XTAL1
VCC
(SCL)PC0(SDA)PC1
PC2PC3PC4PC5
(TOSC1)PC6(TOSC2)PC7
PD0/RXDPD1/TXD
PD2/INT0PD3/INT1
PD4PD5/OC1A
PD6/WRPD7/RD
PB0(XCK/TO)PB1(T1)PB2(INT2/AIN1)PB3/AIN1PB4/SSPB5/MOSIPB6/MISOPB7/SCK
PA0(ADC0)PA1(ADC1)PA2(ADC2)PA3(ADC3)PA4(ADC4)PA5(ADC5)PA6(ADC6)PA7(ADC7)
AVCC
RESET
AREF
GN
D22pF
VCCVCC
VCC
Gambar 3.8 Komunikasi ATmega8535 dengan LCD
47
Komunikasi mikrokontroler ATmega8535 dengan LCD yang ada pada
gambar 3.8, tidak ada komponen tambahan karena mikrokontroler dapat memberi
data langsung ke LCD, pada LCD LMB162ABC sudah terdapat driver mengubah
data ASCII output mikrokontroler menjadi tampilan karakter. Pemasangan
potensio berfungsi untuk mengatur kontras karakter yang tampil, nilai potensio
yang digunakan adalah sebesar 5k sesuai yang ada di data sheet. Sebelum
menggunakan LCD maka terlebih dahulu dilakukan inisialisasi, konfigurasi pin
LCD dengan port mikrokontroler dapat dilihat pada tabel 3.2.
Pada perancangan ini alat penampil (LCD karakter) yang digunakan,
berfungsi unutk menampilkan program yang digunakan pada PLC yang terdiri
dari instruksi dan operand. Instruksi dan operand yang akan ditampilkan pada
pernacangan ini terdiri instruksi LD, OR, AND, NOT, OUT, CNT, TIM dan
operand yang terdiri dari tiga digit seperti operand 001, 003, 004 dan 005. Sebagai
contoh instruksi dan operand yang akan ditampilkan dapat dilihat pada tabel 3.3.
Tabel 3.2 Konfigurasi Pin LCD dan Mikrokontroler
Pin LCD PORTMikrokontroler
RS PD.4E PD.6
D0 PC.0D1 PC.1D2 PC.2D3 PC.3D4 PC.4D5 PC.5D6 PC.6D7 PC.7
48
Tabel 3.3 Program PLCInstruksi Operand
LD 001
AND 002
OUT 080
3.3 Pemrograman Mikrokontroler
Program pada mikrokontroler digunakan untuk mengolah instruksi dan
operand masukan dari matriks keypad. Pada perancangan ini terdiri dari beberapa
bagian yaitu proses pembacaan keypad, pengolahan kode (kode instruksi dan
kode operand), penyimpanan kode, dan pengiriman kode. Flowchart program
utama ditunjukkan pada gambar 3.9 Proses yang pertama kali dilakukan adalah
membaca instruksi dan operand masukan dari matriks keypad, instruksi dan
operand masukan dari keypad digunakan untuk mengeksekusi kode instruksi dan
operand yang disimpan pada flash memori yang berkapasitas 8kB. Pada proses
ini terjadi inisialisasi port mikrokontroler yang digunakan untuk keypad sehingga
dapat dilakukan proses pembacaan tombol keypad. Kode instruksi dan operand
yang akan digunakan diproses atau diolah kemudian disimpan pada EEPROM
yang dimulai dari alamat 000H, jadi EEPROM mikrokontroler yang digunakan
pada perancangan ini berfungsi untuk, menyimpan kode instruksi dan operand
yang akan digunakan untuk pemrograman. Setelah proses pengolahan kode dan
penyimpanan kode, kemudian instruksi dan operand yang telah dikodekan akan
ditampilkan pada LCD dan kode tersebut akan dikirim ke mikrokontroler
selanjutnya (CPU PLC).
49
m u la i
in is ia l i s a s i p o r t m i k ro k o n tro le r
p e m b a c a a n k e y p a d
p e n g o l a h a n k o d e i n s t ru k s i
k o d e s u d a hl e n g k a p ?
s i m p a n k o d e
ta m p i lk a n p a d a L C D
k i r i m k o d e ?
k ir i m k o d e
s e l e s a i
T
Y
T
Y
p e n g o la h a n k o d e d a ta
Gambar 3.9 Flowchart Program Utama
3.3.1 Pembacaan Keypad
Proses pembacaan keypad (dapat dilihat pada gambar 3.10) terdiri dari 2
bagian penting yaitu, pembacaan instruksi dan operand masukan. Dengan melihat
gambar matriks keypad (gambar 3.3) proses pembacaan instruksi dan operand
dibedakan menurut pembacaan kolom dan baris pada keypad.
50
m ula i
set k olom 1
ba ris 2 d itek an?
ba ris 3 d itek an?
ba ris 4 d itek an?
ba ris 5 d itek an?
ins t ruk si= D O W N
ins truk si= U P
in st ru ks i= NO T
in st ru ks i= A ND
inst ruks i= DE L
set k olom 2
ba ris 1 d itek an?
ba ris 2 d itek an?
ba ris 3 d itek an?
ba ris 4 d itek an?
ba ris 5 d itek an?
inst ruk si= T IM
in struk si = O U T
in st ru ks i= O R
ins tr uk si= LD
instruk si= E NT E R
ba ris 1 d itek an?
A B
Gambar 3.10 Proses Pembacaan Keypad
51
A B
set kolom 3
baris 1 ditekan?
baris 2 ditekan?
baris 3 ditekan?
baris 4 ditekan?
baris 5 ditekan?
set kolom 4
baris 1 ditekan?
baris 2 ditekan?
baris 3 ditekan?
baris 4 ditekan?
baris 5 ditekan?
instruksi=CNT
data=3
data=6
data=9
instruksi=SEND
data=0
data=2
data=5
data=8
instruksi=PROG
C D
Y
TY
TY
TY
T
Y
T
Y
TY
TY
TY
T
Y
T
C D
set kolom 5
baris 1 ditekan?
baris 2 ditekan?
baris 3 ditekan?
baris 4 ditekan?
baris 5 ditekan?
selesai
instruksi=END
data=1
data=4
data=7
instruksi=RUN
Gambar 3.10 Proses Pembacaan Keypad (lanjutan)
52
3.3.2 Pengolahan kode Instruksi
Instruksi-instruksi masukan yang digunakan pada perancangan ini adalah
PROG, RUN, AND, OR, CNT, TIM, OUT, NOT, LD, dan END. Pada
pengolahan kode instruksi ini terdapat 2 instruksi yang difungsikan sebagai
perintah untuk memulai pemrograman dan mengaktifkan CPU PLC, yaitu
instruksi PROG dan RUN. Semua instruksi yang digunakan telah dikodekan
dalam bentuk kode delapan bit dan disimpan pada flash memory, misalnya untuk
kode instruksi AND (0001 0000). Pada proses ini saat tombol keypad ditekan
instruksi sama dengan AND, OR, CNT dan instruksi berikutnya. Secara khusus
ada beberapa instruksi yang digabung dengan instruksi yang lainnya yaitu AND,
OR, OUT, dan LD.
Penggabungan tersebut dilakukan karena dalam memrogram PLC ada
beberapa instruksi yang digabung, sebagai contoh untuk instruksi AND LD, OR
NOT, OUT NOT, LD NOT, dan penggabungan instruksi yang lainnya. Instruksi
yang telah dimasukkan akan mengecek kode instruksi yang telah disimpan dalam
flash memory atau terjadi proses pengolahan kode instruksi dalam flash memori
dan instruksi tersebut akan ditampilkan pada LCD. Setelah proses pengecekan
kode instruksi pada Flash memory maka kode tersebut diproses atau disimpan
dalam EEPROM, dan kode yang ada pada EEPROM tersebut siap dikirim ke CPU
PLC dengan menggunakan komunikasi serial. Untuk lebih jelasnya algoritma
pembacaan instruksi masukan dapat dilihat pada gambar 3.11.
53
mulai
instruksi =RUN?
instruksi =AND?
bacakodePROG
bacakodeRUN
bacakodeAND instruksi =TIM?
instruksi =CNT?
instruksi =NOT?
bacakodeANDTIM
bacakodeANDCNT
bacakodeANDNOT//ANDTIMNOT//ANDCNTNOT
instruksi =OR? bacakodeOR instruksi =
TIM?
instruksi =CNT?
instruksi =NOT?
bacakodeORTIM
bacakodeORCNT
baca kode ORNOT//ORTIMNOT//ORCNTNOT
instruksi =PROG?
A B
Y
T
Y
T
Y
T
Y
T
Y
T
Y
T
Y
T
Y
T
Y
T
Y
T
Gambar 3.11 Pengolahan kode instruksi
54
A B
instruksi =LD? baca kode LD instruksi =
TIM?
instruksi =CNT?
instruksi =NOT
baca kode LD TIM
baca kode LD CNT
baca kode LD NOT//LD TIM NOT//LD CNT NOT
instruksi =CNT?
instruksi =TIM?
instruksi =OUT?
instruksi =END
baca kode CNT
baca kode TIM
baca kode OUT
baca kode END
instruksi =NOT baca kode OUT NOT
selesai
Y
T
Y
T
Y
T
Y
T
Y
T
Y
T
Y
T
Y
T
Y
T
Gambar 3.11 Pengolahan kode instruksi (lanjutan)
55
3.3.3 Pengolahan kode Operand
Pengolahan kode operand merupakan lanjutan dari pengolahan kode
instruksi, dalam aturan pemrograman PLC yang dirancang, operand selalu
dimasukkan setelah instruksi. Algoritma pemrograman operand dapat dilihat pada
gambar 3.12. Operand yang digunakan dalam perancangan ini, berupa operand 3
digit yang telah dikodekan dengan kode biner 8 bit. Sebagai contoh untuk
instruksi AND NOT dengan operand 001, operandnya dikodekan 0000 0001b.
Secara umum operand PLC dimasukkan melalui tombol keypad, seperti
yang telah dijelaskan sebelumnya, operand tersebut diterjemahkan dalam bentuk
kode dan kodenya disimpan dalam EEPROM. Sehingga operand yang
dimasukkan akan menyesuaikan kode operand yang ada dalam EEPROM.
Untuk pembacaan operand secara umum menggunakan pencacah 3 digit,
yang berfungsi untuk membedakan 3 buah digit operand yang diperlukan dalam
pemrograman PLC. Operand 3 digit yang digunakan pada perancangan ini,
dibedakan atas 3 karakter misalnya operand 002 terdiri dari 3 karakter, pembacan
karakter 1, 2 dan ke 3 dimulai dari sebelah kiri. Operand masukan yang
digunakan dibedakan menurut pengelompokan instruksi dan jumlah port input dan
port output PLC yang dirancang.
Untuk instruksi AND, AND NOT, OR, OR NOT, LD, LD NOT, OUT dan
OUT NOT operandnya mulai dari 000-007, operand untuk instruksi CNT dimulai
dari 000-010 dan instruksi TIM dimulai dari 000-250. Secara khusus untuk
instruksi AND TIM, AND TIM NOT, OR TIM, OR TIM NOT, LD TIM, LD TIM
56
NOT diberi operand 001 dan instruksi AND CNT, AND CNT NOT, OR CNT
NOT, LD CNT, LD CNT NOT diberi operand 002.
Untuk membedakan karakter operand yang pertama kali dilakukan adalah
mengaktifkan pencacah 3 digit dan menentukan syarat operand, misalnya untuk
operand instruksi CNT, operand karakter 1 atau X mempunyai syarat X=3,
karakter 2 atau Y diberi syarat Y<=1 dan syarat karakter 3 atau Z adalah Z<=9.
jika angka atau operand yang dimasukkan tidak memenuhi syarat, maka operand
tersebut bukan merupakan operand CNT.
Setelah penentuan syarat operand, karakter 1 dikalikan dengan 100,
karakter 2 dikalikan dengan 10 dan karakter 3 tidak diberi operasi perkalian
karena karakter 3 merupakan digit terkahir dari operand atau bernilai satuan. Hal
terakhir yang dilakukan dari proses pembacaan logika CNT tersebut adalah
masing-masing karakter (karakter 1-3) ditambahkan, hasil penambahan karakter
tersebut merupakan operand 3 digit.
Setelah penambahan karakter tersebut, operand kemudian disimpan ke
register untuk menyesuaikan kode operand yang sebelumnya telah disimpan
dalam EEPROM. Pembacaan operand instruksi yang lainnya sama dengan
pembacaan operand instruksi CNT, yang membedakan dari masing-masing
operand instruksi adalah syarat operand untuk masing-masing instruksi sesuai
dengan pengelompokan instruksi dan jumlah port input serta port output PLC
yang dirancang
57
mulai
instruksi =AND//ANDNOTOR//ORNOTLD//LDNOT
OUT//OUT NOT
pencacah 3 digita=0
baca keypad (angka)kar I=x,kar II=y,kar III=z
a=a+1
a=1 x=0 tampilkan x(x) * 100=kar I
a=a-1
a=2 y=0tampilkany
(y) * 10=kar II
a=a-1
A
A
a=3 z < 8 tampilkan z(z)=kar III
a=0 a=a-1
A A
A
A
A
B
Y
T
Y Y
T T
Y Y
T T
Y Y
T T
C
Gambar 3.12 Pengolahan kode operand
58
B
instruksi =AND TIM//AND TIM NOTOR TIM//OR TIM NOTLD TIM//LD TIM NOT
pencacah 3 digiti=0
baca keypad (angka)kar I=x,kar II=y,kar III=z
i=i+1
i=1
i=2
x=0
y=0
i=i-1
i=i-1
D
D
tampilkan xx * 100=kar I
tampilkan yy * 10=kar II
D
D
i=3 z=1
i=0 i=i-1
D D
tampilkan zz =kar III C
D
E
Y
T
Y
T
Y
T
Y
T
Y
T
Y
T
Y
T
Gambar 3.12 Pebgolahan kode operand (lanjutan)
59
E
instruksi =AND CNT//AND CNT NOTOR CNT//OR CNT NOTLD CNT//LD CNT NOT
pencacah 3 digitj=0
baca keypad (angka)kar I=x,kar II=y,kar III=z
j=j+1
j=1
j=2
x=0
y=0
j=j-1
j=j-1
F
F
tampilkan xx * 100=kar I
tampilkan yy * 10=kar II
F
F
j=3 z=2
j=0 j=j-1
F F
tampilkan zz =kar III C
F
G
Y
T
Y
T
Y
T
Y
T
Y
T
Y
T
Y
T
Gambar 3.12 Pengolahan kode operand (lanjutan)
60
instruksi =CNTpencacah 3 digit
k=0
baca keypad (angka)kar I=x,kar II=y,kar III=z
k=k+1
k=1
k=2
x=0
y <= 1
k=k-1
k=k-1
H
H
tampilkan xx * 100=kar I
tampilkan yy * 10=kar II
H
H
k=3 z <= 9
k=0 k=k-1
H H
tampilkan zz =kar III C
H
G
P
Y
T
Y
T
Y
T
Y
T
Y
T
Y
T
Y
T
Gambar 3.12 Pengolahan kode operand (lanjutan)
61
P
instruksi =TIM
pencacah 3 digitn=0
baca keypad (angka)kar I=x,kar II=y,kar III=z
n=n+1
M
n=1 x < 3 tampilkan xx * 100=kar I
n=n-1
M
M
n=2 x=1 y <= 9
x=2 y < 6
tampilkan yy * 10=kar II
n=n-1 M
M
n=3 x=1y <= 9 z <= 9
x=2y < 6 z=0
tampilkan zz =kar III
n=0
n=n-1M
M
selesai
data=kar I + kar II + kar III
baca kode data
C
Y
T
Y
T
Y
T
Y
T
Y
T
Y
T
Y
T
Y
T
Y
T
Y
T
Y
T
Gambar 3.12 Pengolahan kode operand (lanjutan)
62
3.3.4 Simpan Kode
Setelah pengolahan kode instruksi dan operand masukan, dilakukan proses
penyimpanan kode instruksi dan operand dalam EEPROM. Kode yang tersimpan
dalam EEPROM dialamatkan mulai dari alamat 000H. Penyimpanan kode
dilakukan dengan menambahkan alamat yang digunakan (penambahan alamat
hanya ditambah satu untuk setiap penambahan), misalnya 000H ditambah satu
jadi 001H dan penambahan selanjutnya. Proses penyimpanan kode instruksi dan
operand berlangsung sampai semua kode yang dikehendaki selasai diproses atau
disimpan pada EEPROM. Flowchart penyimpanan kode dapat dilihat pada
gambar 3.13.
m u la i
a l a m a t a w a l E E P R O M = 0a la m a t= a la m a t a w a l E E P R O M
in s tru ks i= E N T E R ?
a la m a t + +
s im p a n k o d e in str u ks ip a d a a l a m a t d i E E P R O M
si m p a n k o d e d a tap a d a a l a m a t d i E E P R O M
a la m a t + +
s e l e s a i
T
Y
Gambar 3.13 Flowchart Simpan kode
63
3.3.5 Tampilkan pada LCD
Penggunaan LCD adalah sebagai penampil. Untuk dapat menampilkan
instruksi dan operand, LCD terlebih dahulu harus diberi insialisasi. Proses
inisialisasi LCD terdiri dari tiga instruksi, function set, display ON/OFF control
dan entry mode set.
Awal proses inisialisasi adalah dengan memberikan logika rendah pada
port RS (Register Select) dan R/W (Read/Write) kemudian memberikan intruksi
tentang panjang operand yang akan digunakan. Instruksi ini disebut function set
yang bertujuan agar LCD mengetahui batas instruksi yang dikirimkan berikutnya.
Pada perancangan ini digunakan panjang operand sebesar 8 bit dengan cara
memberikan operand 03FH pada LCD.
Kemudian LCD diberi instruksi display ON/OFF control yang berfungsi
mengaktifkan display dan cursor dengan memberikan operand 00DH pada LCD.
Instruksi berikutnya adalah entry mode set yang berfungsi untuk pergerakan
cursor, operand 04H untuk geser kiri dan 006H untuk geser kanan.
Untuk menampilkan karakter ke LCD terlebih dahulu RS diberi logika
tinggi (RS = “1”) dan R/W diberi logika rendah (R/W = “0”). Flowchart
inisialisasi LCD dapat dilihat pada gambar 3.15. Setelah proses inisialisasi, LCD
dapat digunakan untuk menampilkan instruksi dan operand. Pada gambar 3.14,
dapat dilahat proses untuk menampilkan instruksi dan operand pada LCD. Untuk
menampilkan instruksi dan operand terlebih dahulu dilakukan pembacaan kode
instruksi dan operand pada EEPROM. Setelah kode pada EEPROM dibaca maka
instruksi dan operand dapat ditampilkan pada LCD, untuk semua instruksi dan
64
operand yang ditampilkan dapat dilihat kembali dengan menggunakan fasilitas
UP, DOWN pada keypad. Jika terjadi kesalahan dalam pemrograman PLC atau
kesalahan dalam penulisan instruksi dan operand, instruksi dan operand tersebut
dapat dihapus dengan fasilitas DEL pada keypad. Pada perncangan ini jika konsol
dimatikan dan dihidupkan kembali, maka instruksi dan operand yang lama akan
tetap ditampilkan pada LCD. Hal ini disebabkan oleh kode yang disimpan pada
EEPROM tidak akan terhapus meskipun catu daya konsol mati.
m ulai
in isial isasi LC D
baca kode di EEPROMpada a lam at +0 (kode instruksi),
alam at +1 (kode data)
tam pi lkan instruksi dan da tapada baris 2 LCD
instruksi= UP?
baca kode di EEPROMpada alam at -4 (kode instruksi),
alam at -3 (kode data)
T
Y
A B
Gambar 3.14 Flowchart Tampilkan pada LCD
65
baca kode di EEPROMpada alamat -2 (kode instruksi),
pada alamat -1 (kode data)
tampilkan instruksi dan datapada baris 1 LCD
tampilkan instruksi dan datapada baris 2 LCD
instruksi=DOWN?
AB
baca kode di EEPROMpada alamat +0 (kode instruksi),
alamat +1 (kode data)
tampilkan instruksi dan datapada baris 1 LCD
baca kode di EEPROMpada alamat +2 (kode instruksi),
alamat +3 (kode data)
tampilkan insruksi dan datapada baris 2 LCD
instruksi=DEL? hapus baris 2 pada LCD
selesai
Y
T
Gambar 3.14 Flowchart Tampilkan pada LCD (lanjutan)
66
M U L AI
K IR IM D A T A 0 3F HF U N C T IO N S E T
K IR IM D A T A 0D HD IS P L A Y O N /O F F
C O N T R O L
K IR IM D A T A004H a tau 006H
E N T R Y S E T M O D E
A
A
S E T P O R T R S(R S = 1)
C LE A R P O R T R /WR /W = 0
T A M P ILK A N K A R A K T E RIN S T R U K S I D A N D A T A
S E L E S A I
Gambar 3.15 Flowchart Inisialisasi LCD
3.3.6 Kirim Kode
Proses yang terakhir dari perancangan ini adalah pengiriman kode
instruksi dan operand ke CPU PLC,menggunakan komunikasi serial dengan
baudrate 9600. ebelum pengiriman kode terlebih dahulu dilakukan inisialisasi
USART, Dalam proses inisialisasi ada beberapa buah register yang perlu
ditentukan nilainya yaitu : UCSRA, UCSRB, UCSRC, UBRRH, UBRRL. Pada
proses pengiriman operand menggunakan mode 8 bit, mode 8 bit ini diatur pada
UCSRB terletak pada UCSZ2 dikondisikan 1, sedangkan UCSRC terletak pada
UCSZ1 kondisi 0 dan UCSZ0 kondisi 0. Untuk mode penerimaan terletak pada
UCSRA terletak pada RXC dan TXC dikondisikan 1. Seperti terlihat pada gambar
3.16.
67
UCSRA
UCSRB
UCSRC
Kondisi defaultUCSRA
0 0 1 0 0 0 0 0UCSRB
0 0 0 0 0 0 0 0UCSRC
1 0 0 0 0 1 1 0
Pengaturan saat mengaktifkan USARTUCSRA
1 1 0 0 1 0 0 1UCSRB
1 1 0 1 0 0 0 0UCSRC
0 1 1 0 0 0 0 0
Gambar 3.16 Aktivasi komunikasi serial
68
Dalam proses pengiriman kode ada tiga perintah yang sangat berperan
penting yaitu PROG, RUN, dan SEND. Perintah PROG untuk memrogram PLC,
perintah RUN unruk menjalankan PLC, dan perintah SEND untuk mengirim kode
instruksi dan operand. Pengiriman kode ke mikrokontroler CPU PLC diperlukan
sebuah sinyal ACK untuk mengetahui kondisi CPU PLC, apakah dalam keadaan
sibuk atau tidak.
Jika CPU PLC dalam keadaan tidak sibuk maka kode instruksi dan
operand dapat dikirimkan. Setelah kode instruksi dan operand diterima oleh CPU
PLC, maka kode selanjutnya siap dikirimkan. Untuk contoh pengiriman kode
dapat dilihat pada gambar 3.17, sistem pengiriman kode dikirim dengan
menggunakan operand delapan bit. Proses pengiriman kode akan berlangsung
sampai semua kode yang dibutuhkan selesai dikirimkan.
Gambar 3.17 Frame Kode Instruksi dan Operand
Untuk mengakhiri proses pengiriman kode instruksi dan operand, ditandai
dengan kode instruksi END yang bernilai 0FFH atau 1111 1111b. Flowchart
pengiriman kode dan inisialisasi USART dapat dilihat pada gambar 3.18 dan
gambar 3.19
Instruksi LD 0 0 1 1 0 0 0 0
Operand LD 0 0 0 0 0 0 1 0
Instruksi AND 0 0 0 1 0 0 0 0
Operand AND 0 0 0 0 0 0 1 1
Instruksi END 1 1 1 1 1 1 1 1
69
mulai
inisialisasi USART
instruksi=PROG?
kirim kode PROG
terima kode ACK? PLC belum siap di program
PLC siap diprogram
instruksi=RUN?
kirim kode RUN
terima kode ACK PLC tidak siap dijalankan
PLC siap dijalankan
instruksi=SEND?
alamat awal EEPROM=0alamat awal=alamat awal EEPROM
T
Y
T
Y
T
Y
Y
T
T
Y
baca alamat kodepada EEPROM
kirim kode
alamat ++
kode instruksi=END?
selesai
T
Y
A
A
B
B
Gambar 3.18 Flowchart Kirim Kode Instruksi dan Operand
70
m u la i
s e t b a u d ra te = 9 6 0 0
s e t f o rm a t f r a m e1 s ta rt b i t , 8 d a ta b it , 1 s to p b it ,
d a n n o p a r i ty b i t
a k t i f k a n R X , T X ,in te ru p s i R X c o m p la te
s e le s a i
Gambar 3.19 Inisialisasi USART
71
BAB IV
HASIL DAN PEMBAHASAN
Pada bab ini akan ditunjukkan beberapa pengujian dan pengamatan yang
telah diambil, beserta pembahasannya untuk mengetahui kesesuaian alat yang
dibuat dengan alat yang telah dirancang. Pengujian akan meliputi hasil kerja alat
secara keseluruhan.
4.1 Hasil Akhir Perancangan
Dari perakitan perangkat keras dan pemrograman perangkat lunak telah
dihasilkan suatu peralatan yang berfungsi untuk proses pemrograman CPU PLC,
seperti ditunjukkan pada gambar 4.1. Rangkaian konsol secara keseluruhan dapat
dilihat pada gambar 4.2.
Gambar 4.1 Bentuk fisik konsol PLC
(1) Display unit yang berupa LCD.
(2) Matriks Keypad
1 2
72
Gambar 4.2 Bentuk fisik rangkaian konsol per bagian
(1) Rangkaian mikrokontroler ATmega8535
(2) Rangkaian RS-232
(3) Port komunikasi konsol PLC
Sesuai dengan perancangan, konsol PLC terdiri dari 4 bagian:
1. Matriks Keypad berfungsi untuk masukan instruksi dan operand.
2. Display Unit berupa LCD untuk menampilkan instruksi dan operand.
3. Mikrokontroler ATmega8535 berfungsi untuk mengolah instruksi dan
operand.
4. Komunikasi serial RS232 berfungsi sebagai media komunikasi konsol
PLC dengan CPU PLC.
4.2 Cara menggunakan konsol PLC
Dalam menggunakan konsol PLC, hal yang pertama kali dilakukan adalah
menyalakan power supply, kemudian menekan saklar on/off pada konsol. Untuk
memrogram konsol PLC, ada beberapa mode operasi pemrograman yang harus
diperhatikan. Mode operasi tersebut terdiri dari mode RUN, PROG, SEND,
ENTER, DEL, UP, dan DOWN.
1
3
2
73
RUN dan PROG merupakan mode operasi yang sangat penting dalam
memulai pemrograman konsol PLC. Mode RUN berfungsi mengaktifkan CPU
PLC untuk menjalankan program yang masih ada pada memory EEPROM CPU
PLC. Sedangkan mode PROG merupakan mode operasi yang berfungsi untuk
mengirim perintah ke CPU PLC agar CPU PLC dapat menerima program yang
akan dikirim oleh konsol PLC. Peggunaan mode PROG dapat digunakan setelah
menulis program pada konsol PLC atau sebelum menulis program pada konsol
PLC. Setelah konsol PLC selesai diprogram, maka program tersebut dapat dikirm
ke CPU PLC dengan menekan mode SEND pada keypad.
Saat penulisan program PLC, mode operasi ENTER berfungsi untuk
memindahkan baris pada tampilan LCD sedangkan mode operasi DEL berfungsi
untuk menghapus baris pada tampilan LCD. Pada tampilan LCD, program yang
ditampilkan hanya terdiri dari dua baris program, sehingga untuk melihat program
secara keseluruhan pada tampilan LCD dapat menggunakan mode operasi UP dan
DOWN pada keypad.
4.3 Pengujian Keypad dan Tampilan pada LCD
Pengujian keypad dan tampilan LCD dapat dilakukan dengan
menganalisis keypad dan LCD yang digunakan, dalam menganalisis keypad dan
LCD yang paling penting adalah keypad dan LCD dapat berfungsi dengan baik.
Sehingga untuk menguji keypad dan LCD dilakukan pengujian program yang
digunakan dalam pemrograman konsol PLC. Program yang ditampilkan pada
LCD tidak semuanya dapat ditampilkan khususnya mode operasi RUN, PROG,
74
SEND, ENTER, DEL, UP, dan DOWN. Ketika konsol belum deprogram, LCD
akan menampilkan instruksi END yang merupakan tampilan awal konsol saat
dinyalakan. Hal ini dapat dilihat pada gambar 4.3.
Gambar 4.3 Tampilan awal LCD
4.3.1 Pengujian LD dan LD NOT
Program LD dan LD NOT dapat ditampilkan pada LCD dengan menekan
tombol LD dan LD NOT pada keypad. Pada proses ini diambil dua contoh
program LD dan LD NOT dengan operand yang berbeda. Untuk membuktikan
program tersebut dapat dilihat pada gambar 4.4 dan gambar 4.5.
instruksi pada keypad tampilan instruksi pada LCD
operand pada keypad tampilan operand pada LCD
Gambar 4.4 LD dan LD NOT dengan operand 001
75
instruksi pada keypad tampilan instruksi padaLCD
operand pada keypad tampilan operand pada LCD
Gambar 4.5 LD dan LD NOT dengan operand 002 dan 004
Dari gambar 4.4 dan gambar 4.5, program LD dan LD NOT dapat
dimasukkan melalui keypad dan dapat ditampilkan pada LCD. Cara menampilkan
instruksi LD dan LD NOT pada LCD adalah dengan menekan tombol LD dan
NOT pada keypad, jika tombol LD dan NOT ditekan dua kali, LCD tidak akan
menampilkan instruksi tersebut secara berulang. Untuk operand LD dan LD NOT
mempunyai batasan operand mulai dari operand 001 sampai 008, jika operand
yang dimasukkan tidak sesuai dengan operand yang ditentukan maka LCD tidak
akan menampilkan operand tersebut. Dengan demikian keypad dan LCD dapat
berfungsi dengan baik, secara khusus untuk program LD dan LD NOT dengan
operand 002, 001 dan 004.
76
4.3.2 Pengujian AND dan AND NOT
Program AND dan AND NOT dapat ditampilkan pada LCD dengan
menekan tombol AND dan AND NOT pada keypad. Pada proses ini diambil dua
contoh program AND dan AND NOT dengan operand yang berbeda. Untuk
membuktikan program tersebut dapat dilihat pada gambar 4.6 dan gambar 4.7.
instruksi pada keypad tampilan instruksi padaLCD
operand pada keypad tampilan operand pada LCD
Gambar 4.6 AND dan AND NOT dengan operand 003 dan 005
Dari gambar 4.6 dan gambar 4.7, instruksi AND dan AND NOT dapat
dimasukkan melalui keypad dan dapat ditampilkan pada LCD. Cara menampilkan
instruksi AND dan AND NOT pada LCD adalah dengan menekan tombol AND
dan NOT pada keypad, jika tombol AND dan NOT ditekan dua kali LCD tidak
akan menampilkan instruksi tersebut secara berulang. Untuk operand AND dan
AND NOT mempunyai batasan operand mulai dari operand 001 sampai 008, jika
77
operand yang dimasukkan tidak sesuai dengan operand yang ditentukan maka
LCD tidak akan menampilkan operand tersebut. Dengan demikian keypad dan
LCD dapat berfungsi dengan baik, secara khusus untuk program AND dan AND
NOT dengan operand 003, 005, 006 dan 007.
instruksi pada keypad tampilan instruksi padaLCD
operand pada keypad tampilan operand pada LCD
Gambar 4.7 AND dan AND NOT dengan operand 006 dan 007
. 4.3.3 Pengujian OR dan OR NOT
Program OR dan OR NOT dapat ditampilkan pada LCD dengan menekan
tombol OR dan OR NOT pada keypad. Pada proses ini diambil dua contoh
program OR dan OR NOT dengan operand yang berbeda. Untuk membuktikan
program tersebut dapat dilihat pada gambar 4.8 dan gambar 4.9.
78
instruksi pada keypad tampilan instruksi padaLCD
operand pada keypad tampilan operand pada LCD
Gambar 4.8 OR dan OR NOT dengan operand 004 dan 006
instruksi pada keypad tampilan instruksi padaLCD
operand pada keypad tampilan operand pada LCD
Gamabar 4.9 OR dan OR NOT dengan operand 007 dan 005
Dari gambar 4.8 dan gambar 4.9, instruksi OR dan OR NOT dapat
dimasukkan melalui keypad dan dapat ditampilkan pada LCD. Cara menampilkan
instruksi OR dan OR NOT pada LCD adalah dengan menekan tombol OR dan
79
NOT pada keypad, jika tombol OR dan NOT ditekan dua kali LCD tidak akan
menampilkan instruksi tersebut secara berulang. Untuk operand OR dan OR NOT
mempunyai batasan operand mulai dari operand 001 sampai 008, jika operand
yang dimasukkan tidak sesuai dengan operand yang ditentukan maka LCD tidak
akan menampilkan operand tersebut. Dengan demikian keypad dan LCD dapat
berfungsi dengan baik, secara khusus untuk program OR dan OR NOT dengan
operand 004, 005, 006 dan 007.
. 4.3.4 Pengujian CNT
Program CNT dapat ditampilkan pada LCD dengan menekan tombol CNT
pada keypad. Pada proses ini diambil dua contoh program CNT dengan operand
yang berbeda. Untuk membuktikan program tersebut dapat dilihat pada gambar
4.10 dan gambar 4.11.
instruksi pada keypad tampilan instruksi padaLCD
operand pada keypad tampilan operand pada LCD
Gambar 4.10 CNT saat mencacah satu kali
80
instruksi pada keypad tampilan instruksi padaLCD
operand pada keypad tampilan operand pada LCD
Gambar 4.11 CNT saat mencacah tiga kali
Dari gambar 4.10 dan gambar 4.11, instruksi CNT dapat dimasukkan
melalui keypad dan dapat ditampilkan pada LCD. Cara menampilkan instruksi
CNT pada LCD adalah dengan menekan tombol CNT pada keypad, jika tombol
CNT ditekan dua kali LCD tidak akan menampilkan instruksi tersebut secara
berulang. Untuk operand CNT mempunyai batasan operand mulai dari operand
001 sampai 010, jika operand yang dimasukkan tidak sesuai dengan operand yang
ditentukan maka LCD tidak akan menampilkan operand tersebut. Dengan
demikian keypad dan LCD dapat berfungsi dengan baik, secara khusus untuk
program CNT dengan operand 001 dan 003.
81
. 4.3.5 Pengujian TIM
instruksi pada keypad tampilan instruksi padaLCD
operand pada keypad tampilan operand pada LCD
Gambar 4.12 TIM dengan operand 156
instruksi pada keypad tampilan instruksi padaLCD
operand pada keypad tampilan operand pada LCD
Gambar 4.13 TIM dengan operand 250
82
Program TIM dapat ditampilkan pada LCD dengan menekan tombol TIM
pada keypad. Pada proses ini diambil dua contoh program TIM dengan operand
yang berbeda. Untuk membuktikan program tersebut dapat dilihat pada gambar
4.12 dan gambar 4.13. Instruksi TIM dapat dimasukkan melalui keypad dan dapat
ditampilkan pada LCD. Cara menampilkan instruksi TIM pada LCD adalah
dengan menekan tombol TIM pada keypad, jika tombol TIM ditekan dua kali
LCD tidak akan menampilkan instruksi tersebut secara berulang. Untuk operand
TIM mempunyai batasan operand mulai dari operand 001 sampai 250, jika
operand yang dimasukkan tidak sesuai dengan operand yang ditentukan maka
LCD tidak akan menampilkan operand tersebut. Dengan demikian keypad dan
LCD dapat berfungsi dengan baik, secara khusus untuk program TIM dengan
operand 156 dan 250.
4.3.6 Pengujian RUN, PROG dan SEND
RUN, PROG dan SEND merupakan mode operasi untuk komunikasi
konsol dengan CPU PLC. Secara umum mode tersebut tidak ditampilkan pada
LCD, tetapi yang ditampilkan pada LCD ketika mode operasi RUN, PROG dan
SEND ditekan adalah sebuah tulisan yang berfungsi sebagai penanda informasi
dari mode operasi RUN, PROG dan SEND untuk mengetahui kondisi mode
operasi tersebut. Untuk menguji keypad dan LCD pada mode RUN, PROG dan
SEND, dapat dilihat dengan memperhatikan gambar 4.14, gambar 4.15 dan
gambar 4.16.
83
(a) Mode RUN berhasil (b) Mode RUN tidak berhasil
(c) Mode RUN pada keypad
Gambar 4.14 Fungsi Mode RUN
(a) Mode PROG berhasil (b) Mode PROG tidak berhasil
(c) Mode PROG pada keypad
Gambar 4.15 Fungsi Mode PROG
84
Fungsi mode operasi PROG hampir sama dengan mode operasi RUN, jika
tombol PROG (gambar 4.15) ditekan LCD akan menampilkan “Programming
PLC success” , hal tersebut menandakan CPU PLC siap menerima program yang
dikirim dari konsol dan konsol dalam kondisi siap diprogram, dapat dilihat pada
gambar 4.15 (a). Ketika tombol PROG ditekan dan LCD menampilkan
“Programming PLC failed”, hal ini menandakan komunikasi konsol dengan CPU
PLC tidak terhubung, seperti pada gambar 4.15 (b). Kondisi mode PROG tersebut
dapat dikatakan keypad dan LCD berfungsi dengan baik, sehingga dapat memberi
informasi tentang kondisi CPU PLC.
(a) Mode SEND berhasil (b) Mode SEND tidak berhasil
(c) Mode SEND pada keypad
Gambar 4.16 Fungsi Mode SEND
85
Pengujian mode SEND untuk fungsi keypad dan LCD dapat dilihat pada
gambar 4.16. Saat tombol SEND ditekan (gambar 4.16 (C)) maka konsol akan
mengirim program ke CPU PLC, jika pengiriman program berhasil LCD akan
menampilkan “Sending operand success” (gambar 4.16 (a)), dan jika pengiriman
program tidak berhasil atau terdapat masalah dalam komunikasi maka LCD akan
menampilkan “Sending operand failed” (gambar 4.16 (b)).
4.3.7 Pengujian ENTER dan DEL
Untuk menguji keypad dan tampilan LCD, khususnya mode operasi
ENTER dan DEL, dapat dilakukan dengan mengamati gambar 4.17. Kedua mode
operasi tersebut mempunyai fungsi yang berbeda. Tampilan program pada gambar
4.17 (b) merupakan program awal yang ditampilkan (LD 002) sebelum tombol
ENTER ditekan (gambar 4.17 (a)). Setelah mode ENTER ditekan maka secara
otomatis baris kedua pada LCD akan pindah ke baris ketiga LCD, sehingga baris
ketiga LCD dapat digunakan untuk menampilkan program yang lain, seperti
program AND NOT 001 pada gambar 4.17 (c). Saat memrogram dan program
tersebut belum selesai diprogram kemudian tombol ENTER ditekan maka baris
pada LCD tidak akan berpindah ke baris selanjutnya atau mode operasi ENTER
tidak berfungsi. DEL merupakan mode yang digunakan untuk menghapus satu
baris penuh pada LCD. Sebagai contoh program yang ditampilkan baris ketiga
LCD pada gambar 4.17 (c), akan diganti dengan program yang lain, maka baris
ketiga dapat dikosongkan dengan menekan tombol DEL, dapat dilihat pada
gambar 4.17 (d), baris ketiga yang dikosongkan tersebut harus di isi dengan
program sebab jika tidak mode operasi ENTER tidak akan berfungsi. Saat
86
memrogram konsol, misalnya saat memrogram LD 002 pada gambar 4.17 (c)
kemudian ditekan ENTER dan program LD 002 akan dihapus dengan mode
operasi DEL, secara otomatis program LD 002 tidak bisa dihapus lagi. Dari
pengamatan gambar 4.17, maka keypad dan LCD dapat berfungsi dengan baik.
(a) Mode ENTER dan DEL pada keypad
baris pertama LCD
baris kedua LCD baris ketiga LCD
(b) Sebelum tombol ENTER ditekan (c) Setelah tombol ENTER ditekan
baris kedua LCD baris ketiga LCD
(d) Setelah tombol DEL ditekan
Gambar 4.17 Fungsi ENTER dan DEL
87
4.3.8 Pengujian UP dan DOWN
Pengujian mode operasi UP dan DOWN pada keypad dan tampilan LCD
dapat dibuktikan dengan mengamati baris kedua, ketiga dan keempat pada
tampilan LCD (gambar 4.18). Fungsi mode UP dan DOWN adalah untuk melihat
kembali program yang telah ditampilkan pada LCD. Sebagai contoh program
yang telah ditampilkan pada gambar 4.18 (a), ketika tombol DOWN ditekan
(gambar 4.18 (c)) baris kedua pada LCD akan pindah ke baris ketiga LCD
sehingga yang ditampilkan adalah program yang ada pada baris ketiga dan
keempat gambar 4.18 (b). Jika sebaliknya tombol UP ditekan (gambar 4.18 (c))
maka tampilan pada LCD akan kembali ke keadaan semula sebelum tombol
DOWN ditekan (gambar 4.18 (a)). Jadi fungsi mode operasi UP dan DOWN
secara umum adalah untuk melihat kembali program yang telah diprogram pada
konsol. Dari pengamatan gambar 4.18, maka keypad dan LCD dapat berfungsi
dengan baik, khususnya untuk program UP dan DOWN
baris kedua LCD baris ketiga LCD
baris keempat LCD
(a) Sebelum tombol DOWN ditekan (b) Setelah setelah DOWN ditekan
Gambar 4.18 Fungsi UP dan DOWN
88
(c) Mode UP dan DOWN pada keypad
Gambar 4.18 Fungsi UP dan DOWN (lanjutan)
4.3.9 Pengujian OUT dan END
Program OUT dan END dapat dimasukkan melalui keypad dan
ditampilkan pada LCD. Program OUT dan END dapat ditampilkan ke LCD
dengan menekan tombol OUT dan END pada keypad. Pengujian program OUT
dan END dapat dibuktikan dengan melihat gambar .19. Pada gambar 4.19
program OUT dengan operand 101 dan program END dapat dimasukkan melalui
keypad dan ditampilkan pada LCD. Cara menampilkan instruksi OUT dan END
pada LCD adalah dengan menekan tombol OUT dan END pada keypad, jika
tombol OUT dan END ditekan dua kali LCD tidak akan menampilkan instruksi
tersebut secara berulang. Untuk operand OUT mempunyai batasan operand mulai
dari operand 101 sampai 108 sedangkan END tidak mempunyai operand karena
instruksi END merupakan instruksi paling akhir dari pemrograman konsol PLC
sehingga tidak mempunyai operand. Jika operand yang dimasukkan tidak sesuai
89
dengan operand yang ditentukan maka LCD tidak akan menampilkan operand
tersebut Dengan demikaian keypad dan LCD dapat berfungsi dengan baik, secara
khusus untuk program OUT dengan operand 101 dan program END.
instruksi pada keypad instruksi pada LCD
operand pada keypad operand pada LCD
Gambar 4.19 Program OUT dan END
4.4 Pengujian komunikasi antar mikrokontroler
Proses ini akan membahas tentang pengujian komunikasi antar
mikrokontroler ATmega8535 (konsol) dengan ATmega32 (CPU PLC), untuk
menguji komunikasi tersebut diperlukan bantuan perangkat lunak codevisionAVR.
Sebelum melakukan komunikasi yang pertama kali dilakukan, mengatur baudrate
sebesar 9600 bps. Berikut ini contoh program yang digunakan untuk menguji
komunikasi antar mikrokontroler.
90
Contoh program LD dan LD NOT
LD 000;instruksi LD=0000 1101b, operand 000=0000 0000b
LD NOT 000 ;instruksi LD NOT=0001 0000b, operand 000=0000 0000b
Kode instruksi PROG kode program LD dan LD NOT
Gambar 4.20 Kode program LD dan LD NOT pada codevisionAVR
Gambar 4.21 Kode program RUN pada codevisionAVR
Sebelum berkomunikasi dengan CPU PLC, hal yang pertama kali
dilakukan adalah memilih mode operasi RUN atau PROG. Pada gambar 4.19
CPU PLC dalam keadaan siap diprogram, yang menandakan CPU PLC siap
diprogram karena konsol mengirimkan kode instruksi PROG (17h). Jika pengguna
konsol memilih mode operasi RUN maka kode yang dikirim oleh konsol adalah
18h, kode tersebut memerintahkan CPU PLC untuk menjalankan program yang
masih disimpan pada memory EEPROM CPU PLC , kode RUN tersebut dapat
dilihat pada gambar 4.21. Secara khusus untuk komunikasi dengan terminal
codevisionAVR, semua kode program dapat ditampilkan pada codevisionAVR.
91
Kode program LD dan LD NOT pada gambar 4.20 dapat dibandingkan
dengan kode program LD dan LD NOT yang masih ada pada memory
EEPROM konsol, pada gambar 4.22. Perbedaan antara kode program yang belum
dikirim dengan kode program yang sudah dikirim, terletak pada kode instruksi
PROG (17h). Untuk semua jenis program yang digunakan dalam pemrograman
konsol dapat diuji dengan menggunakan terminal dan codevisionAVR, seperti
pada contoh program LD dan LD NOT di atas.
kode program LD dan LD NOT
Gambar 4.22 LD dan LD NOT pada EEPROM ATmega8535
4.5 Pengiriman Program ke CPU PLC
Program yang dikirim ke CPU PLC terdiri dari instruksi dan operand yang
telah dikodekan. Pengiriman program dari konsol ke CPU PLC menggunakan
komunikasi antar mikrokontroler, yaitu komunikasi mikrokontroler ATmega8535
(konsol) dengan mikrokontroler ATmega32 (CPU PLC). Komunikasi antar
mikrokontroler yang digunakan adalah komunikasi secara asinkron yang berarti
transmiter dan receiver mempunyai sumber clock masing-masing. Sebelum
memulai komunikasi terlebih dahulu baudrate diatur sebesar 9600 bps. Saat
memrogram konsol, program yang telah dikodekan disimpan dalam memory
EEPROM konsol, kemudian program tersebut dikirim ke memory EEPROM CPU
PLC.
92
4.5.1 Instruksi LD dan LD NOT
Pengiriman program antar mikrokontroler dapat dibuktikan dengan
membandingkan kode program pada memory EEPROM konsol dengan CPU PLC,
khususnya program LD dan LD NOT. Sebagai contoh kode program berikut akan
dikirim dari konsol ke CPU PLC, kode program tersebut dapat dilihat pada
gambar 4.23 dan gambar 4.24.
Contoh program LD dan LD NOT
LD 006;instruksi LD=0000 1101b (ODh), operand 000=0000 0110b (06h)
LD NOT 006; instruksi LD NOT=0001 0000b (10h), operand 000=0000 0110b
(06h)
Gambar 4.23 Isi memory Konsol untuk Program LD dan LD NOT
Gambar 4.24 Isi memory CPU PLC untuk program LD dan LD NOT
Pada gambar 4.23 dan gambar 4.24 merupakan bukti, bahwa kode dari
contoh program di atas dapat dikirim melalui komunikasi antar mikrokontroler.
Kode program yang dikirim dari konsol ke CPU PLC dapat terkirim dengan baik
tanpa ada kesalahan dalam pengiriman.
93
4.5.2 Instruksi OR dan OR NOT
Program yang dikirim dengan menggunakan komunikasi antar
mikrokontroler dapat dibuktikan dengan mengamati kode program pada memory
EEPROM konsol dengan CPU PLC, khususnya program OR dan OR NOT.
Sebagai contoh kode program berikut akan dikirim dari konsol ke CPU PLC, kode
program tersebut dapat dilihat pada gambar 4.25 dan gambar 4.26.
Contoh program OR dan OR NOT
OR 006;instruksi OR=0000 0111b (07h), operand 000=0000 0110b(06h)
OR NOT 006;instruksi OR NOT=0000 1010b (0Ah), operand 000=0000
0110b (06h)
Gambar 4.25 Isi memory Konsol untuk Program OR dan OR NOT
Gambar 4.26 Isi memory CPU PLC untuk program OR dan OR NOT
Gambar 4.25 dan gambar 4.26 merupakan bukti bahwa kode dari contoh
program di atas dapat dikirim melalui komunikasi antar mikrokontroler. Kode
program yang dikirim dari konsol ke CPU PLC dapat terkirim dengan baik tanpa
ada kesalahan dalam pengiriman.
94
4.5.3 Instruksi AND dan AND NOT
Program yang dikirim dengan menggunakan komunikasi antar
mikrokontroler dapat dibuktikan dengan mengamati kode program pada memory
EEPROM konsol dengan CPU PLC, khususnya program AND dan AND NOT.
Sebagai contoh kode program berikut akan dikirim dari konsol ke CPU PLC, kode
program tersebut dapat dilihat pada gambar 4.27 dan gambar 4.28.
Contoh program AND dan AND NOT
AND 003;instruksi AND=0000 0001b (01h), operand 000=0000 0011b(03h)
AND NOT 003;instruksi AND NOT=0000 0100b (04h), operand 000=0000
0010b (03h)
Gambar 4.27 Isi memory Konsol untuk Program AND dan AND NOT
Gambar 4.28 Isi memory CPU PLC untuk program AND dan AND NOT
Dari gambar 4.27 dan gambar 4.28 merupakan bukti, bahwa kode dari
contoh program di atas dapat dikirim melalui komunikasi antar mikrokontroler.
Kode program yang dikirim dari konsol ke CPU PLC dapat terkirim dengan baik
tanpa ada kesalahan dalam pengiriman.
95
4.5.4 Instruksi CNT
Pada bagian ini program CNT akan dikrim dari memory EEPROM konsol
ke memory EEPROM CPU PLC dengan menggunakan komunikasi antar
mikrokontroler, untuk menguji pengiriman tersebut, sebagai contoh program CNT
010 dengan kode instruksi CNT=0001 0011b (13h) dan kode operand 010=0000
1010b (0Ah) akan dikirim dari konsol ke CPU PLC, kode program tersebut dapat
dilihat pada gambar 4.29 dan gambar 4.30.
Gambar 4.29 Isi memory Konsol untuk Program CNT
Gambar 4.30 Isi memory CPU PLC untuk program CNT
Gambar 4.29 dan gambar 4.30 merupakan bukti bahwa kode dari contoh
program di atas dapat dikirim melalui komunikasi antar mikrokontroler. Kode
program yang dikirim dari konsol ke CPU PLC dapat terkirim dengan baik tanpa
ada kesalahan dalam pengiriman.
4.5.5 Instruksi TIM
Pada proses ini program TIM akan dikrim dari memory EEPROM konsol
ke memory EEPROM CPU PLC dengan menggunakan komunikasi antar
mikrokontroler, untuk menguji pengiriman tersebut, sebagai contoh program TIM
96
156 dengan kode instruksi TIM=0001 0100b (14h) dan kode operand 156=1001
1100b (9Ch) akan dikirim dari konsol ke CPU PLC, kode program tersebut dapat
dilihat pada gambar 4.31 dan gambar 4.32.
Gambar 4.31 Isi memory Konsol untuk Program TIM
Gambar 4.32 Isi memory CPU PLC untuk program TIM
Gambar 4.31 dan gambar 4.32 merupakan bukti bahwa kode dari contoh
program di atas dapat dikirim melalui komunikasi antar mikrokontroler. Kode
program yang dikirim dari konsol ke CPU PLC dapat terkirim dengan baik tanpa
ada kesalahan dalam pengiriman.
4.5.6 Instruksi OUT
Pada bagian ini program OUT akan dikrim dari memory EEPROM konsol
ke memory EEPROM CPU PLC dengan menggunakan komunikasi antar
mikrokontroler, untuk menguji pengiriman kode tersebut, sebagai contoh program
OUT 101 dengan kode instruksi OUT= 0001 0101b (15h) dan kode operand
101=0110 0101b (65h) akan dikirim dari konsol ke CPU PLC.
Gambar 4.33 Isi memory Konsol untuk Program OUT
97
Gambar 4.34 Isi memory CPU PLC untuk program OUT
Dari gambar 4.33 dan gambar 4.34 merupakan bukti, bahwa kode dari
contoh program di atas dapat dikirim melalui komunikasi antar mikrokontroler.
Kode program yang dikirim dari konsol ke CPU PLC dapat terkirim dengan baik
tanpa ada kesalahan dalam pengiriman.
4.5.7 Program Aplikasi
Pada proses ini akan dibahas aplikasi pemrograman PLC, yang akan
dikirim dari konsol ke CPU PLC. Seperti yang telah dibahas pada proses
sebelumnya, kode program disimpan pada memory EEPROM konsol dan dikirim
ke memory EEPROM CPU PLC. Sebagai contoh potongan program berikut
merupakan aplikasi program PLC pada conveyor yang mencacah masukan
dengan sebuah sensor sebanyak sembilan kali, kemudian menggerakkan motor
pada conveyor.
Contoh program AND dan AND NOT
LD 001;kode instruksi=0000 1101b (0Dh),kode operand=0000 0000b (00h)
LD 002;kode instruksi=0000 0100b (04h), kode operand=0000 0001b (01h)
CNT 009;kode instruksi=0001 0011b (13h), kode operand=0000 0011b (03h)
LD CNT 001;kode instruksi=00010010b (12h), kode operand=0000 0001b (01h)
OUT 105;kode instruksi=0000 0001b (15h), kode operand=0110 1001b (69h)
END ;kode instruksi=1111 1111b (FFh)
98
Gambar 4.35 Isi memory Konsol untuk Program Apilkasi
Gambar 4.36 Isi memory CPU PLC untuk program Aplikasi
Gambar 4.35 dan gambar 4.36 merupakan bukti bahwa kode dari contoh
program aplikasi di atas dapat dikirim melalui komunikasi antar mikrokontroler.
Kode program yang dikirim dari konsol ke CPU PLC dapat terkirim dengan baik
tanpa ada kesalahan dalam pengiriman.
99
BAB V
KESIMPULAN DAN SARAN
Dari pembahasan dan pengujian alat yang telah dibuat berdasarkan hasil
rancangan, maka pada bab ini dapat diambil kesimpulan dan beberapa saran.
5.1 KESIMPULAN
1. Konsol PLC dapat bekerja dengan baik, dapat menampilkan instruksi dan
operand pada LCD konsol dan dapat mengirim kode instruksi dan operand ke
CPU PLC.
2. Sistem komunikasi serial RS-232 dapat digunakan pada dua buah
mikrokontroler ATmega8535, dengan menggunakan transmisi data asinkron.
3. Menampilkan program PLC ke LCD ini sudah dapat bekerja dengan baik,
dimana LCD dapat menampilkan instruksi dan data yang digunakan dalam
pemrograman PLC
5.2 SARAN
Konsol PLC ini dapat dikembangkan lagi dengan menambahkan fungsi-fungsi
pemrograman PLC yang lain, seperti fasilitas untuk menghapus memory konsol PLC,
komunikasi dua arah antara konsol dengan CPU PLC dan fungsi-fungsi pemrograman
yang lain sehingga fungsi konsol lebih lengkap dalam memrogram CPU PLC.
100
DAFTAR PUSTAKA
[1] Anang Yulianto, “Belajar PLC”, PT Gramedia, jakarta, April 2006.
[2] Suhendar, “PLC dalam Dasar-dasar Sistem Kendali Motor Listrik Induksi”.
Graha Ilmu, Yogyakarta, Mei 2005.
[3] Agfianto Eko Putra, “PLC(Konsep, Pemrograman dan aplikasi)”. Gaya
Media, Yogyakarta, juli 2004.
[4] http/www.iddhien.com/ Pengenalan Pada PLC (Programable Logic Controller)
[5] M. Budiyanto, A. Wijaya, “Pengenalan Dasar-Dasar PLC”. Gaya Media
Yogyakarta.
[6]] http/www.te.ugm.ac.id/bsutopo/pengenalan PLC/hasruddin.doc
[7] Agus Bejo, “C & AVR”. Graha Ilmu, Yogyakarta, November 2007.
[8] M.Ary Heryanto, Wisnu Adi P, “Pemrograman bahasa C untuk
mikrokontrolerATmega8535”. ANDI, Yogyakarta, 2008.
[9] http://www.infomekatronika.com/index.php?option=com
content&task=view&id=15&Itemid=1/LCD CHARAKTER
[10] www.delta-electronic.com/ AKSES KEYPAD 4X3 OLEH DST-51 DENGAN
BAHASA C
L1
Kode Instruksi
Instruksi Kode Instruksi (biner) Kode Instruksi(hexadecimal)
PROG 0001 0111 17
RUN 0001 1000 18
END 1111 1111 FF
AND 0000 0001 01
AND TIM 0000 0010 02
AND TIM NOT 0000 0011 03
AND NOT 0000 0100 04
AND CNT 0000 0101 05
AND CNT NOT 0000 0110 06
OR 0000 0111 07
OR TIM 0000 1000 08
OR TIM NOT 0000 1001 09
OR NOT 0000 1010 0A
OR CNT 0000 1011 0B
OR CNT NOT 0000 1100 0C
LD 0000 1101 0D
LD TIM 0000 1110 0E
LD TIM NOT 0000 1111 0F
LD NOT 0001 0000 10
LD CNT 0001 0001 11
LD CNT NOT 0001 0010 12
CNT 0001 0011 13
OUT 0001 0101 15
OUT NOT 0001 0110 16
TIM 0001 0100 14
L2
Kode Operand untuk instruksi LD, OR dan AND
Instruksi Kode Instruksi (biner) Kode Instruksi(hexadecimal)
001 0000 0001 01
002 0000 0010 02
003 0000 0011 03
004 0000 0100 04
005 0000 0101 05
006 0000 0110 06
007 0000 0111 07
008 0000 1000 08
Kode Operand untuk Instruksi CNT
Instruksi Kode Instruksi (biner) Kode Instruksi(hexadecimal)
001 0000 0001 01
002 0000 0010 02
003 0000 0011 03
004 0000 0100 04
005 0000 0101 05
006 0000 0110 06
007 0000 0111 07
008 0000 1000 08
009 0000 1001 09
010 0000 1010 0A
L3
Kode Operand untuk Instruksi TIM
Operand Kode Operand (biner) Kode Operand(hexadecimal)
001 0000 0001 01
002 0000 0010 02
003 0000 0011 03
004 0000 0100 04
005 0000 0101 05
006 0000 0110 06
007 0000 0111 07
008 0000 1000 08
009 0000 1001 09
010 0000 1010 0A
011 0000 1011 0B
012 0000 1100 0C
013 0000 1101 0D
014 0000 1110 0E
015 0000 1111 0F
016 0001 0000 10
017 0001 0001 11
018 0001 0010 12
019 0001 0011 13
020 0001 0100 14
021 0001 0101 15
022 0001 0110 16
023 0001 0111 17
024 0001 1000 18
025 0001 1001 19
L4
Operand Kode Operand (biner) Kode Operand(hexadecimal)
027 0001 1011 1B
028 0001 1100 1C
029 0001 1101 1D
030 0001 1110 1E
031 0001 1111 1F
032 0010 0000 20
033 0010 0001 21
034 0010 0010 22
035 0010 0011 23
243 1111 0011 F3
244 1111 0100 F4
245 1111 0101 F5
246 1111 0110 F6
247 1111 0111 F7
248 1111 1000 F8
249 1111 1001 F9
250 1111 1010 FA
L5
Kode Operand untuk Instruksi OUT
Operand Kode Operand (biner) Kode Operand(hexadecimal)
101 0110 0101 65
102 0110 0110 66
103 0110 0111 67
104 0110 1000 68
105 0110 1001 69
106 0110 1010 6A
107 0110 1011 6B
108 0110 1100 6C
L11
Lampiran 13 Listing Program Konsol PLC// File Name : 'console.c'// Title : ATmega 8535 based PLC console// Author : Jhon Sitmen - Copyright (C) 2008 - 2009// Created : 2009-03-09// Revision : 2009-04-12// Version : 0.9 BETA// Compiler : WinAVR-20090306rc1-install// Target MCU : Atmel AVR ATMEGA8535#include <avr/io.h>#include <avr/eeprom.h>#include <avr/pgmspace.h>#include <avr/interrupt.h>#include <util/delay.h>#include <inttypes.h>#include "lcd_lib.h"// data biner yang dikirim#definePROG_ 0b00010111#defineRUN_ 0b00011000#defineEND_ 0b11111111#defineAND_ 0b00000001#defineANDTIM_ 0b00000010#defineANDTIMNOT_ 0b00000011#defineANDNOT_ 0b00000100#defineANDCNT_ 0b00000101#defineANDCNTNOT_ 0b00000110#defineOR_ 0b00000111#defineORTIM_ 0b00001000#defineORTIMNOT_ 0b00001001#defineORNOT_ 0b00001010#defineORCNT_ 0b00001011#defineORCNTNOT_ 0b00001100#defineLD_ 0b00001101#defineLDTIM_ 0b00001110#defineLDTIMNOT_ 0b00001111#defineLDNOT_ 0b00010000#defineLDCNT_ 0b00010010#defineLDCNTNOT_ 0b00010001#defineCNT_ 0b00010011#defineOUT_ 0b00010101#defineOUTNOT_ 0b00010110#defineTIM_ 0b00010100// konfigurasi keypad#define COL PORTA#define COLDDR DDRA#define COL1 4
L12
#defineCOL2 3#define COL3 2#defineCOL4 1#define COL5 0#defineROW PORTB#define ROWDDR DDRB#define ROWPIN PINB#define ROW1 0#defineROW2 1#define ROW3 2#defineROW4 3#define ROW5 4// data keypad#define_LD 1#define_AND 2#define_OR 3#define_OUT 4#define_CNT 5#define_TIM 6#define _NOT 7#define_END 8#define_DEL 9#define _ENTER 10#define_RUN 11#define_PROG 12#define_SEND 13#define_UP 14#define_DOWN 15// mendefinisikan indikator#defineIND PORTD#defineINDDDR DDRD#define IND1 7#define IND2 3#define IND3 2// mendefinisikan baud rate#define USART_BAUD 9600ul#define USART_UBBR_VALUE ((F_CPU/(USART_BAUD<<4))-1)// konstanta pengosongan baris LCDconst char spasi[] PROGMEM=" ";// variabel global instruksiuint8_t instruksi;uint8_t instruksi1;uint8_t instruksi2;uint8_t instruksi3;// variabel global datauint8_t data;
L13
uint8_t data1;uint8_t data2;uint8_t data3;// variabel global errorhandlinguint8_t salah=0;uint8_t clrstatus;// variabel posisi cursoruint8_t posisi;// variabel global alamatuint16_t alamat;// variabel global acknowledge USARTvolatile unsigned char ack;// subrutin scanning keypadvoid keypad(void){ // inisialisasi nilai awal variabel instruksi, data, posisi instruksi=0; data=10; // looping keypad matriks while(1) { // kolom pertama COL=0xff; COL&=~(1<<COL1); _delay_ms(1); if (bit_is_clear(ROWPIN,ROW1)) { instruksi = _DOWN; break; } if (bit_is_clear(ROWPIN,ROW2)) { instruksi = _UP; break; } if (bit_is_clear(ROWPIN,ROW3)) { instruksi = _NOT; break; } if (bit_is_clear(ROWPIN,ROW4)) { instruksi = _AND; break; } if (bit_is_clear(ROWPIN,ROW5)) { instruksi = _DEL; break; } // kolom kedua COL=0xff; COL&=~(1<<COL2); _delay_ms(1); if (bit_is_clear(ROWPIN,ROW1)) { instruksi = _TIM; break; }
L14
if (bit_is_clear(ROWPIN,ROW2)) { instruksi = _OUT; break; } if (bit_is_clear(ROWPIN,ROW3)) { instruksi = _OR; break; } if (bit_is_clear(ROWPIN,ROW4)) { instruksi = _LD; break; } if (bit_is_clear(ROWPIN,ROW5)) { instruksi = _ENTER; break; } // kolom ketiga COL=0xff; COL&=~(1<<COL3); _delay_ms(1); if (bit_is_clear(ROWPIN,ROW1)) { instruksi = _CNT; break; } if (bit_is_clear(ROWPIN,ROW2)) { data=3; break; } if (bit_is_clear(ROWPIN,ROW3)) { data=6; break; } if (bit_is_clear(ROWPIN,ROW4)) { data=9; break; } if (bit_is_clear(ROWPIN,ROW5)) { instruksi = _SEND; break; } // kolom keempat COL=0xff; COL&=~(1<<COL4); _delay_ms(1); if (bit_is_clear(ROWPIN,ROW1)) { data=0; break; } if (bit_is_clear(ROWPIN,ROW2)) { data=2; break; } if (bit_is_clear(ROWPIN,ROW3)) { data=5; break; }
L15
if (bit_is_clear(ROWPIN,ROW4)) { data=8; break; } if (bit_is_clear(ROWPIN,ROW5)) { instruksi=_PROG; break; } // kolom kelima COL=0xff; COL&=~(1<<COL5); _delay_ms(1); if (bit_is_clear(ROWPIN,ROW1)) { instruksi=_END; break; } if (bit_is_clear(ROWPIN,ROW2)) { data=1; break; } if (bit_is_clear(ROWPIN,ROW3)) { data=4; break; } if (bit_is_clear(ROWPIN,ROW4)) { data=7; break; } if (bit_is_clear(ROWPIN,ROW5)) { instruksi=_RUN; break; } } // tunda untuk menghilangkan efek bouncing keypad _delay_ms(200);}// subrutin simpan data ke eepromvoid simpan(void){ unsigned char download; // instruksi LD parent if (instruksi1==_LD && instruksi2==_TIM && instruksi3==_NOT) download=LDTIMNOT_; else if (instruksi1==_LD && instruksi2==_TIM) download=LDTIM_; else if (instruksi1==_LD && instruksi2==_CNT && instruksi3==_NOT) download=LDCNTNOT_; else if (instruksi1==_LD && instruksi2==_CNT) download=LDCNT_; else if (instruksi1==_LD && instruksi2==_NOT) download=LDNOT_; else if (instruksi1==_LD)
L16
download=LD_;
// instruksi AND parent else if (instruksi1==_AND && instruksi2==_TIM && instruksi3==_NOT) download=ANDTIMNOT_; else if (instruksi1==_AND && instruksi2==_TIM) download=ANDTIM_; else if (instruksi1==_AND && instruksi2==_CNT && instruksi3==_NOT) download=ANDCNTNOT_; else if (instruksi1==_AND && instruksi2==_CNT) download=ANDCNT_; else if (instruksi1==_AND && instruksi2==_NOT) download=ANDNOT_; else if (instruksi1==_AND) download=AND_; // instruksi OR parent else if (instruksi1==_OR && instruksi2==_TIM && instruksi3==_NOT) download=ORTIMNOT_; else if (instruksi1==_OR && instruksi2==_TIM) download=ORTIM_; else if (instruksi1==_OR && instruksi2==_CNT && instruksi3==_NOT) download=ORCNTNOT_; else if (instruksi1==_OR && instruksi2==_CNT) download=ORCNT_; else if (instruksi1==_OR && instruksi2==_NOT) download=ORNOT_; else if (instruksi1==_OR) download=OR_; // instruksi OUT parent else if (instruksi1==_OUT && instruksi2==_NOT) download=OUTNOT_; else if (instruksi1==_OUT) download=OUT_; // instruksi CNT else if (instruksi1==_CNT) download=CNT_; // instruksi TIM else if (instruksi1==_TIM) download=TIM_; // instruksi END else if (instruksi1==_END) { download=END_; data1=2; data2=5; data3=5; }
L17
// tulis instruksi ke eeprom eeprom_write_byte((unsigned char *)alamat,download); alamat++; // perhitungan data download=(data1*100)+(data2*10)+data3; // tulis data ke eeprom eeprom_write_byte((unsigned char *)alamat,download); alamat++;}void bacaeeprom(void){ unsigned char upload_instruksi,upload_data; // baca eeprom upload_instruksi=eeprom_read_byte((unsigned char *)alamat); alamat++; upload_data=eeprom_read_byte((unsigned char *)alamat); alamat--; // baca LD parent if (upload_instruksi==LDTIMNOT_) { instruksi1=_LD; instruksi2=_TIM; instruksi3=_NOT; } else if (upload_instruksi==LDTIM_) { instruksi1=_LD; instruksi2=_TIM; instruksi3=0; } else if (upload_instruksi==LDCNTNOT_) { instruksi1=_LD; instruksi2=_CNT; instruksi3=_NOT; } else if (upload_instruksi==LDCNT_) { instruksi1=_LD; instruksi2=_CNT; instruksi3=0; } else if (upload_instruksi==LDNOT_) { instruksi1=_LD; instruksi2=_NOT; instruksi3=0; } else if (upload_instruksi==LD_) { instruksi1=_LD; instruksi2=0; instruksi3=0;} // instruksi AND parent else if (upload_instruksi==ANDTIMNOT_)
L18
{ instruksi1=_AND; instruksi2=_TIM; instruksi3=_NOT; } else if (upload_instruksi==ANDTIM_) { instruksi1=_AND; instruksi2=_TIM; instruksi3=0; } else if (upload_instruksi==ANDCNTNOT_) { instruksi1=_AND; instruksi2=_CNT; instruksi3=_NOT; } else if (upload_instruksi==ANDCNT_) { instruksi1=_AND; instruksi2=_CNT; instruksi3=0; } else if (upload_instruksi==ANDNOT_) { instruksi1=_AND; instruksi2=_NOT; instruksi3=0; } else if (upload_instruksi==AND_) { instruksi1=_AND; instruksi2=0; instruksi3=0; } // instruksi OR parent else if (upload_instruksi==ORTIMNOT_) { instruksi1=_OR; instruksi2=_TIM; instruksi3=_NOT; } else if (upload_instruksi==ORTIM_) { instruksi1=_OR; instruksi2=_TIM; instruksi3=0; } else if (upload_instruksi==ORCNTNOT_) { instruksi1=_OR; instruksi2=_CNT; instruksi3=_NOT; } else if (upload_instruksi==ORCNT_) { instruksi1=_OR; instruksi2=_CNT; instruksi3=0; } else if (upload_instruksi==ORNOT_) { instruksi1=_OR; instruksi2=_NOT; instruksi3=0; }
L19
else if (upload_instruksi==OR_) { instruksi1=_OR; instruksi2=0; instruksi3=0; } // instruksi OUT parent else if (upload_instruksi==OUTNOT_) { instruksi1=_OUT; instruksi2=_NOT; instruksi3=0; } else if (upload_instruksi==OUT_) { instruksi1=_OUT; instruksi2=0; instruksi3=0; } // instruksi CNT else if (upload_instruksi==CNT_) { instruksi1=_CNT; instruksi2=0; instruksi3=0; } // instruksi TIM else if (upload_instruksi==TIM_) { instruksi1=_TIM; instruksi2=0; instruksi3=0; } // instruksi END else if (upload_instruksi==END_) { instruksi1=_END; instruksi2=0; instruksi3=0; } // baca data data1=(unsigned char) (upload_data/100); data2=(unsigned char) ((upload_data - (data1*100))/10); data3=(unsigned char) (upload_data - (data1*100) - (data2*10)); if (upload_data==0xff) { data1=10; data2=10; data3=10;}}// subrutin penampilan data ke LCDvoid lcd1(void){ if (data==0) CopyStringtoLCD_cc((unsigned char *)PSTR("0")); if (data==1) CopyStringtoLCD_cc((unsigned char *)PSTR("1")); if (data==2)
L20
CopyStringtoLCD_cc((unsigned char *)PSTR("2")); if (data==3) CopyStringtoLCD_cc((unsigned char *)PSTR("3")); if (data==4) CopyStringtoLCD_cc((unsigned char *)PSTR("4")); if (data==5) CopyStringtoLCD_cc((unsigned char *)PSTR("5")); if (data==6) CopyStringtoLCD_cc((unsigned char *)PSTR("6")); if (data==7) CopyStringtoLCD_cc((unsigned char *)PSTR("7")); if (data==8) CopyStringtoLCD_cc((unsigned char *)PSTR("8")); if (data==9) CopyStringtoLCD_cc((unsigned char *)PSTR("9"));}// subrutin penampilan instruksi dan data ke LCDvoid lcd(void){ // cek kesalahan perintah if (salah==1) { if (instruksi==_ENTER) return; goto liwat;} // bersihkan baris kedua if (instruksi1!=0) CopyStringtoLCD((unsigned char*)spasi,0,1); // cek instruksi DEL if (instruksi==_DEL) { goto liwat; } // instruksi 1 if (instruksi1==_LD) CopyStringtoLCD((unsigned char *)PSTR("LD "),0,posisi); if (instruksi1==_OUT) CopyStringtoLCD((unsigned char *)PSTR("OUT"),0,posisi); if (instruksi1==_AND) CopyStringtoLCD((unsigned char *)PSTR("AND"),0,posisi); if (instruksi1==_OR) CopyStringtoLCD((unsigned char *)PSTR("OR "),0,posisi); if (instruksi1==_END) { CopyStringtoLCD((unsigned char *)PSTR("END"),0,posisi); goto liwat; } // instruksi 1 atau 2 if (instruksi1==_CNT) CopyStringtoLCD((unsigned char *)PSTR("CNT"),0,posisi); if (instruksi2==_CNT) CopyStringtoLCD((unsigned char *)PSTR("CNT"),4,posisi);
L21
if (instruksi1==_TIM) CopyStringtoLCD((unsigned char *)PSTR("TIM"),0,posisi); if (instruksi2==_TIM) CopyStringtoLCD((unsigned char *)PSTR("TIM"),4,posisi); // instruksi 2 atau 3 if (instruksi2==_NOT) CopyStringtoLCD((unsigned char *)PSTR("NOT"),4,posisi); if (instruksi3==_NOT) CopyStringtoLCD((unsigned char *)PSTR("NOT"),8,posisi); // data 1 atau 2 atau 3 if (instruksi3>0) { if (data1<10) { LCDGotoXY(12,posisi); data=data1; lcd1(); } if (data2<10) { LCDGotoXY(13,posisi); data=data2; lcd1(); } if (data3<10) { LCDGotoXY(14,posisi); data=data3; lcd1(); } } if (instruksi2>0 && instruksi3==0) { if (data1<10) { LCDGotoXY(8,posisi); data=data1; lcd1(); } if (data2<10) { LCDGotoXY(9,posisi); data=data2; lcd1(); } if (data3<10) { LCDGotoXY(10,posisi); data=data3; lcd1(); } } if (instruksi1>0 && instruksi2==0) { if (data1<10) { LCDGotoXY(4,posisi); data=data1; lcd1(); } if (data2<10) { LCDGotoXY(5,posisi); data=data2;
L22
lcd1(); }
if (data3<10) { LCDGotoXY(6,posisi); data=data3; lcd1(); } }liwat: salah=0;}// subrutin penanganan instruksi dab datavoid algoritma(void){ // cek instruksi DOWN if (instruksi==_DOWN) { LCDclr(); bacaeeprom(); posisi=0; lcd(); alamat+=2; bacaeeprom(); posisi=1; goto lewat; } // cek instruksi UP if (instruksi==_UP) { if (alamat<4) { clrstatus=1; goto lewat; } LCDclr(); alamat-=4; bacaeeprom(); posisi=0; lcd(); alamat+=2; bacaeeprom(); posisi=1; goto lewat; } // cek instruksi ENTER if (instruksi==_ENTER) { if (data3<10||instruksi1==_END) { simpan(); LCDclr(); alamat-=2; bacaeeprom(); posisi=0; }
L23
else salah=1; goto lewat; }// bypass algoritma instruksi jika user sudah input data if (data1!=10) goto data;// cek instruksi LD, AND, OUT, ORif (instruksi==_OR || instruksi==_LD || instruksi==_AND || instruksi==_OUT ||instruksi==_END){if (instruksi1==_OR || instruksi1==_LD || instruksi1==_AND || instruksi1==_OUT ||instruksi1==_CNT || instruksi1==_TIM || instruksi1==_END) salah=1; else instruksi1=instruksi; goto lewat; }// cek instruksi CNT, TIMif (instruksi==_CNT || instruksi==_TIM){if (instruksi1==_CNT || instruksi1==_TIM || instruksi2==_CNT || instruksi2==_TIM ||instruksi2==_NOT) salah=1; else if (instruksi1==_OR || instruksi1==_LD || instruksi1==_AND) instruksi2=instruksi; else instruksi1=instruksi; goto lewat; }
// cek instruksi NOTif (instruksi==_NOT){if (instruksi1==0 || instruksi2==_NOT || instruksi3==_NOT || instruksi1==_TIM ||instruksi1==_CNT) salah=1; else if (instruksi2==_CNT || instruksi2==_TIM) instruksi3=_NOT; else instruksi2=_NOT; goto lewat; }data: if (data==10) goto lewat;// cek data untuk instruksi OR, LD, AND, OUT, TIM, CNTif (instruksi1==_OR || instruksi1==_LD || instruksi1==_AND || instruksi1==_OUT ||instruksi2==_TIM || instruksi2==_CNT) { if (data1==10) { if (data==0) data1=data;
L24
else salah=1; } else if (data2==10) { if (data==0) data2=data; else salah=1; } else if (data3==10) { if (instruksi2==_TIM || instruksi2==_CNT) { if (data==1) data3=data; else salah=1; } else if (instruksi1==_OR || instruksi1==_LD || instruksi1==_AND ||instruksi1==_OUT) { if (data>=0 && data<=7) data3=data; else salah=1; } } else salah=1; goto lewat; }// cek data untuk instruksi CNT if (instruksi1==_CNT) { if (data1==10) { if (data==0) data1=data; else salah=1; } else if (data2==10) { if (data<=1) data2=data; else salah=1; } else if (data3==10) { if (data2==0) { if (data>0) data3=data; else salah=1;} else if (data2==1) { if (data==0) data3=data; else salah=1;}
L25
}
else salah=1;
goto lewat; } // cek data untuk instruksi TIM if (instruksi1==_TIM) {if (data1==10) { if (data<=2) data1=data; else salah=1;} else if (data2==10) { if (data1==2) { if (data<=5) data2=data; else salah=1;} else if (data1<2) { if (data<=9) data2=data; else salah=1; } } else if (data3==10) {if (data1==2 && data2==5) { if (data==0) data3=data; else salah=1; } else data3=data; } else salah=1; goto lewat; }lewat: asm("nop");}// subrutin inisialisasi baud rate usartvoid usartinit(void){ // set baud rate UBRRH = (uint8_t)(USART_UBBR_VALUE>>8); UBRRL = (uint8_t)USART_UBBR_VALUE; // set frame format dengan 8 bit data, no parity, 1 stop bit UCSRC |= (1<<URSEL)|(0<<USBS)|(1<<UCSZ1)|(1<<UCSZ0);
L26
// enable interupsi RX, receiver dan transmitter UCSRB |= (1<<RXCIE)|(1<<RXEN)|(1<<TXEN); sei();}// subrutin pengiriman data 8 bit melalui usartvoid usartsend(uint8_t u8data){ // tunggu jika sedang ada pengiriman data while((UCSRA&(1<<UDRE)) == 0); // kirimkan data UDR = u8data;}// subrutin penerimaan data 8 bit melalui usartunsigned char usartreceive(void){ // tunggu sampai data 8 bit diterima while((UCSRA&(1<<RXC)) == 0); // return nilai data yang diterima return UDR;}// subrutin kirim data ke PLCvoid kirim (void){ unsigned char data_kirim; alamat=0; do { data_kirim=eeprom_read_byte((unsigned char *)alamat); usartsend(data_kirim); alamat++;} while (data_kirim!=0xff);}// subrutin interupsi RX completeISR(USART_RX_vect){ unsigned char data; data=UDR; if (data=='!') ack=1;}// fungsi utamaint main(void){ unsigned char runstatus=0,progstatus=0; // inisialisasi keypad dengan COL output dan ROW input COLDDR=0xff; ROWDDR=0x00; ROW=0xff; //inisialisasi usart usartinit(); // inisialisasi LCD _delay_ms(500); LCDinit();clear: // tampilan awal LCD
L27
LCDclr(); CopyStringtoLCD((unsigned char *)PSTR(" PLC CONSOLE"),2,0); clrstatus=0; alamat=0; bacaeeprom(); posisi=1; lcd(); goto del;enter: alamat+=2; bacaeeprom(); posisi=1; lcd();del: // pemberian nilai awal instruksi dan data instruksi1=0; instruksi2=0; instruksi3=0; data1=10; data2=10; data3=10;repeat: // memanggil subrutin keypad dan algoritma keypad(); algoritma(); // memanggil subrutin LCD lcd(); if (instruksi==_RUN) { LCDclr(); CopyStringtoLCD((unsigned char*)PSTR("Running PLC"),2,0); for(unsigned char i=0;i<3;i++) { usartsend(RUN_); _delay_ms(100); if (ack==1) { CopyStringtoLCD((unsigned char*)PSTR("Success"),4,1); runstatus=1; progstatus=0; ack=0; _delay_ms(1000); goto clear; } } CopyStringtoLCD((unsigned char*)PSTR("Failed"),5,1); _delay_ms(1000); goto clear;}
L28
if (instruksi==_PROG) { LCDclr(); CopyStringtoLCD((unsigned char*)PSTR("Programming PLC"),0,0); for(unsigned char i=0;i<3;i++) { usartsend(PROG_); _delay_ms(300); if (ack==1) { CopyStringtoLCD((unsigned char*)PSTR("Success"),4,1); progstatus=1; runstatus=0; ack=0; _delay_ms(1000); goto clear; } } CopyStringtoLCD((unsigned char*)PSTR("Failed"),5,1); _delay_ms(1000); goto clear; } if (instruksi==_SEND&&progstatus==1) { LCDclr(); CopyStringtoLCD((unsigned char*)PSTR("Sending Data"),2,0); for(unsigned char i=0;i<3;i++) { kirim(); _delay_ms(100); if (ack==1) { CopyStringtoLCD((unsigned char*)PSTR("Success"),4,1); ack=0; _delay_ms(1000); goto clear; } } CopyStringtoLCD((unsigned char*)PSTR("Failed"),5,1); _delay_ms(1000); goto clear; } // penguian instruksi ENTER if (instruksi==_ENTER) {if (salah==1) { salah=0; goto repeat; } goto enter; }
L29
// menguji batas terendah alamat if (clrstatus==1) { clrstatus=0; goto clear; }// pengujian instruksi DEL if (instruksi==_DEL||instruksi==_UP||instruksi==_DOWN) goto del; goto repeat; return 0;}
L6
Instruksi LD dan LD NOT (komunikasi antar mikrokontroler)
Instruksi Kode Instruksi Data Kode dataLD 0000 1101 001 0000 0001
LD NOT 0001 0000 001 0000 0001
EEPROM ATMEGA8535
EEPROM ATMEGA 32
Instruksi Data OR dan OR NOT (komunikasi antar mikrokontroler)
Instruksi Kode Instruksi Data Kode dataOR 0000 0111 001 0000 0001
OR NOT 0000 1010 001 0000 0001
EEPROM ATMEGA8535
EEPROM ATMEGA32
Instruksi AND dan AND NOT (komunikasi antar mikrokontroler)
Instruksi Kode Instruksi Data Kode dataAND 0000 0001 001 0000 0001
AND NOT 0000 0100 001 0000 0001
EEPROM ATMEGA8535
EEPROM ATMEGA32
Instruksi CNT (komunikasi antar mikrokontroler)
L7
Instruksi Kode Instruksi Data Kode DataCNT 0001 0011 001 0000 0001
EEPROM ATMEGA8535
EEPROM ATMEGA32
Instruksi Kode Instruksi Data Kode DataCNT 0001 0011 002 0000 0010
EEPROM ATMEGA8535
EEPROM ATMEGA32
Instruksi TIM (komunikasi antar mikrokontroler)
Instruksi Kode Instruksi Data Kode dataTIM 0001 0100 010 0000 1010
EEPROM ATMEGA8535
EEPROM ATMEGA32
Instruksi LD dan LD NOT (komunikasi dengan terminal codevisionAVR)
L8
Instruksi Kode Instruksi Data Kode dataLD 0000 1101 001 0000 0001
LD NOT 0001 0000 001 0000 0001
TAMPILAN PADA CODEVISION
Instruksi OR dan OR NOT (komunikasi dengan terminal codevisionAVR)
Instruksi Kode Instruksi Data Kode dataOR 0000 0111 001 0000 0001
OR NOT 0000 1010 001 0000 0001
TAMPILAN PADA CODEVISION
Instruksi AND dan AND NOT (komunikasi dengan terminal codevisionAVR)Instruksi Kode Instruksi Data Kode data
AND 0000 0001 001 0000 0001AND NOT 0000 0100 001 0000 0001
TAMPILAN PADA CODEVISION
Instruksi TIM (komunikasi dengan terminal codevisionAVR)Instruksi Kode Instruksi Data Kode data
TIM 0001 0100 010 0000 1010
TAMPILAN PADA CODEVISION
Instruksi CNT (komunikasi dengan terminal codevisionAVR)Instruksi Kode Instruksi Data Kode Data
CNT 0001 0011 001 0000 0001TAMPILAN PADA CODEVISION
L37
Lampiran 14 Gambar Rangkaian Secara Keseluruhan
VCC
12
K E Y P A D
8MHZ 1OK
J1
12345678910111213141516
5K
13
2
VCC
22pF
22pF
10uF
VCC
LCD
U1
ATmega8535
1213
10
2223242526272829
1415161718192021
12345678
4039383736353433
30
9
32
11
XTAL2XTAL1
VCC
(SCL)PC0(SDA)PC1
PC2PC3PC4PC5
(TOSC1)PC6(TOSC2)PC7
PD0/RXDPD1/TXD
PD2/INT0PD3/INT1
PD4PD5/OC1A
PD6/WRPD7/RD
PB0(XCK/TO)PB1(T1)PB2(INT2/AIN1)PB3/AIN1PB4/SSPB5/MOSIPB6/MISOPB7/SCK
PA0(ADC0)PA1(ADC1)PA2(ADC2)PA3(ADC3)PA4(ADC4)PA5(ADC5)PA6(ADC6)PA7(ADC7)
AVCC
RESET
AREF
GN
D
PORT DOWNLOAD
21 3 4
1 2
KOMUNIKASI RS232
VCC (5V)