TUGAS AKHIR - USD Repository

149
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

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

L9

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)