214
TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan untuk memenuhi salah satu syarat untuk memperoleh gelar Sarjana Teknik pada Program Studi Teknik Elektro Fakultas Sains dan Teknologi Universitas Sanata Dharma Disusun oleh: EDI GUNAWAN 045114070 PROGRAM STUDI TEKNIK ELEKTRO FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS SANATA DHARMA YOGYAKARTA 2009 i

repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

Page 1: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

TUGAS AKHIR

IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC

CONTROL) MENGGUNAKAN MIKROKONTROLLER

ATMEGA32

Diajukan untuk memenuhi salah satu syarat

untuk memperoleh gelar Sarjana Teknik pada

Program Studi Teknik Elektro

Fakultas Sains dan Teknologi Universitas Sanata Dharma

Disusun oleh:

EDI GUNAWAN

045114070

PROGRAM STUDI TEKNIK ELEKTRO

FAKULTAS SAINS DAN TEKNOLOGI

UNIVERSITAS SANATA DHARMA

YOGYAKARTA

2009

i

Page 2: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

FINAL PROJECT

IMPLEMENTATION CPU PLC (PROGRAMMABLE LOGIC

CONTROL) USED MICROCONTROLLER ATMEGA32

In partial fulfilment of the requirements

For the degree of Sarjana Teknik Electrical Engineering Study Program Electrical Engineering Departement

Science and Technology Faculty Sanata Dharma University

By :

EDI GUNAWAN 045114070

ELECTRICAL ENGINEERING STUDY PROGRAM ELECTRICAL ENGINEERING DEPARTEMENT

SCIENCE AND TECHNOLOGY FACULTY SANATA DHARMA UNIVERSITY

YOGYAKARTA 2009

ii

Page 3: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan
Page 4: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan
Page 5: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan
Page 6: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

HALAMAN PERSEMBAHAN DAN MOTTO HIDUP

Karya ini ku persembahkan kepada :

Ku ucapkan syukur kepada Tuhan Yang Maha Esa.

Kedua orang tuaku yang sudah memberikan kepercayaan untuk

melanjutkan studi di Yogyakarta.

Mbak Rinawati yang selalu memberikan semangat untuk segera

menyelesaikan skripsi ini dan aku mensyukuri keberadaan mu di sisi ku.

Teman-teman yang sudah membantu.

Hidup itu tidak semudah membalikkan telapak tangan.

Ada kemauan pasti ada jalan

Terus berjuang tiada henti.

vi

Page 7: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan
Page 8: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

INTISARI

CPU PLC (controll processing unit PLC) adalah alat yang digunakan untuk menyimpan, menjalankan program PLC yang dikirim oleh konsol atau PC. Pada CPU PLC data kiriman akan diolah dan dieksekusi hingga didapatkan output dari CPU PLC.

CPU PLC ini bekerja setelah mendapatkan kode kiriman dan, kode kiriman berupa intruksi-intruksi PLC. Kode kiriman akan dieksekusi dan dibandingkan dengan kode yang tersimpan di dalam CPU PLC. Pengkodean intruksi-intruksi logika PLC dalam bentuk biner dan heksa. Kode kiriman yang diterima akan diproses oleh CPU PLC dan CPU PLC dari memori mikrokontroler ATmega32.

Dari hasil penelitian dan percobaan, CPU PLC ini telah bekerja sesuai dengan perancangan. Hal ini dapat dibuktikan dari hasil pengujian kode kiriman dari konsol atapun dari PC berupa bahasa mnemonic LD 001 AND 002 OUT 101, LD 001 OR 002 ANDNOT 003 OUT 101, LD 001 TIM #100 LD TIM 001 OUT 101, LD 001 OR 002 OUT 101, LD 001 CNT #05 LD CNT 001 OUT 101, LD 005 OUT NOT 105. Program TIM mencacah 100 detik dan program CNT mencacah dari luar sebanyak 5 kali. Untuk semua modul input dan output dapat berfungsi sesuai dengan perancangan. Kegagalan komunikasi dikarenakan penerimaan data komunikasi masih belum sempurna, sehingga CPU PLC mengalami kegagalan pengiriman data.

Kata kunci: Bahasa Mnemonik, CPU PLC, Intruksi-intruksi PLC.

viii

Page 9: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

ABSTRACT

CPU PLC (controll processing of unit PLC) is device used for save, running program sent by console or PC. From the CPU PLC sent code will be processed and executed is until get by output from CPU PLC.

This CPU PLC work after getting of consignment code, and consignment code in the form of instrucsion-instrucsion PLC. Consignment code will be executed and compared file code save in CPU PLC. Code Intruksion-Intruksion logic PLC form of binary and heksa. Consignment code accepted will be processed CPU PLC and CPU PLC from memory microcontroller ATMEGA32.

From result of research and this attempt, CPU PLC have worked as according to plane. This matter can be provable from result of examination of consignment code from console and PC form of programe and mnemonic language LD 001 AND 002 OUT 101, LD 001 OR 002 AND NOT 003 OUT 101, LD 001 TIM # 100 LD TIM 001 OUT 101, LD 001 OR 002 OUT 101, LD 001 CNT # 05 LD CNT 001 OUT 101, LD 005 OUT NOT 105. Programe of count TIM start 100 second and programe the CNT count from outside as much 5 rivers. For all module of input and output can function agree with of scheme. Communications failure because of acceptance of communications date not yet complete, so that CPU PLC experience of the failure of date delivery. Keyword: Mnemonic Language, CPU PLC, Instrucsion-Instrucsion PLC.

ix

Page 10: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

KATA PENGANTAR

Puji dan syukur penulis panjatkan kepada Tuhan Yang Maha Esa atas berkat

dan rahmat-Nya sehingga penulis dapat menyelesaikan karya tulis berjudul

“Implementasi CPU PLC (POGRAMMABLE LOGIC CONTROL) Menggunakan

mikrokontroler ATMEGA32”.

Karya tulis ini merupakan salah satu syarat untuk memperoleh gelar Sarjana

Teknik pada Program Studi Teknik Elektro Universitas Sanata Dharma. Penulisan

skripsi ini didasarkan pada hasil-hasil yang penulis dapatkan selama tahap

perancangan, pembuatan dan pengujian alat.

Penulisan skripsi ini tidak terlepas dari bantuan berbagai pihak. Untuk itu,

penulis mengucapkan terima kasih kepada:

1. Yosef Agung Cahyanta, S.T.,M.T.. Selaku Dekan Fakultas Sains dan

Teknologi Universitas Sanata Dharma Yogyakarta.

2. B. Wuri Harini, S.T.,M.T.. selaku Ketua Jurusan Teknik Elektro

Universitas Sanata Dharma Yogyakarta.

3. Bapak Martanto, S.T., M.T., selaku dosen pembimbing I karya tulis

yang telah meluangkan waktu, tenaga, dan pikirannya untuk

membimbing penulis.

4. Ibu Wiwien Widyastuti, S.T., M.T., selaku dosen pembimbing II karya

tulis yang telah meluangkan waktu, tenaga, dan pikirannya untuk

membimbing penulis.

5. Segenap karyawan sekretariat Fakultas Sains dan Teknologi.

6. Segenap dosen dan laboran Teknik Elektro Universitas Sanata

Dharma.

x

Page 11: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan
Page 12: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

DAFTAR ISI

Halaman Sampul (Bahasa Indonesia) ............................................................. i

Halaman Sampul (Bahasa Inggris) ................................................................. ii

Halaman Pengesahan oleh Pembimbing ......................................................... iii

Halaman Pengesahan oleh Penguji ................................................................. iv

Halaman Pernyataan Keaslian Karya ............................................................ v

Halaman Persembahan dan Moto Hidup ....................................................... vi

Halaman Pernyataan Persetujuan Publikasi Karya Ilmiah Untuk .............

Kepentingan Akademis..................................................................................... vii

Intisari ................................................................................................................ viii

Abstract ............................................................................................................... ix

Kata Pengantar ................................................................................................. x

Daftar Isi ........................................................................................................... xii

Daftar Gambar ................................................................................................. xviii

Daftar Tabel ...................................................................................................... xxv

Daftar Lampiran .............................................................................................. xxvi

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 .......................................................................................... 2

1.5 Metodologi Penelitian .................................................................................. 3

1.6 Sistematika Penulisan .................................................................................. 4

xii

Page 13: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

xiii

BAB II DASAR TEORI ................................................................................... 5

2.1 PLC .............................................................................................................. 5

2.1.1 Diagram Ladder ..................................................................................... 8

2.1.1.1 Normally Open ................................................................................. 8

2.1.1.2 Normally Close ................................................................................ 9

2.1.1.3 Keluaran (Output) ............................................................................ 9

2.1.2 Instruksi-instruksi Logika dalam PLC .................................................. 9

2.1.2.1 Instruksi LOAD (LD) dan LOAD Not (LDNOT) ........................... 10

2.1.2.2 Instruksi AND dan AND NOT ........................................................ 10

2.1.2.3 Instruksi OR dan ORNOT ................................................................ 12

2.1.2.4 Instruksi END .................................................................................. 14

2.2 Mnemonic .................................................................................................... 15

2.3 Mikrokontroller ATmega32 ......................................................................... 16

2.3.1 Fitur ATmega32 ..................................................................................... 17

2.3.2 Organisasi Memori ................................................................................. 20

2.3.2.1 Memori Program .............................................................................. 21

2.3.2.2 Memori Data .................................................................................... 21

2.3.2.3 EEPROM ......................................................................................... 22

2.3.2.3.1 Register EEARH and EEARL ................................................... 22

2.3.2.3.2 Register EEDR ........................................................................... 23

2.3.2.3.3 Register EECR ........................................................................... 23

2.3.3 Register Serbaguna ................................................................................ 24

2.3.4 Stack Pointer .......................................................................................... 26

Page 14: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

xiv

2.3.5 Register I/O dan Port I/O ....................................................................... 26

2.3.6 Timer/Counter ........................................................................................ 29

2.3.6.1 TIMSK (Timer/Counter Interrupt Mask Register) ........................... 30

2.3.6.2 TIFR ................................................................................................. 31

2.3.6.3 Special Function Register I/O .......................................................... 31

2.3.7 SPI (Serial Peripheral Interface) ............................................................ 32

2.3.8 USART ................................................................................................... 33

2.4 Komunikasi Serial ........................................................................................ 37

2.5 Relay ............................................................................................................ 40

2.6 Driver Relay.................................................................................................. 41

BAB III PERANCANGAN PENELITIAN .................................................... 42

3.1 Diagram Blok Perancangan CPU PLC ........................................................ 42

3.2 Perancangan Perangkat Keras ...................................................................... 43

3.2.1 Rangkaian Mikrokontroller .................................................................... 43

3.2.1.1 Konstruksi Rangkaian Mikrokontroller ........................................... 43

3.2.1.2 Rangkaian Reset ............................................................................... 44

3.2.1.3 Rangkaian Osilator ........................................................................... 44

3.2.1.4 Indikator LED .................................................................................. 45

3.2.1.4.1 Indikator Error ............................................................................ 46

3.2.1.4.2 Indikator Komunikasi Serial RS-232 ......................................... 46

3.2.1.4.3 Indikator Supplay CPU PLC ...................................................... 47

3.2.1.4.4 Indikator Input ............................................................................ 48

3.2.1.4.5 Indikator Output dan Relay ........................................................ 49

Page 15: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

xv

3.2.2 Komunikasi Serial RS-232 ..................................................................... 52

3.3 Perancangan Perangkat Lunak ..................................................................... 53

3.3.1 Komunikasi Serial .................................................................................. 53

3.3.2 Diagram Alir Utama pada Mikrokontroller ........................................... 55

3.3.2.1 Subrutin Pembacaan Isi Alamat Memori PLC ................................. 57

3.3.2.2 Subrutin Pemilihan Kode ................................................................. 58

3.3.2.3 Subrutin Logika LD ......................................................................... 62

3.3.2.4 Subrutin Logika LDNOT ................................................................. 63

3.3.2.5 Subrutin Logika AND ...................................................................... 65

3.3.2.6 Subrutin Logika ANDNOT .............................................................. 66

3.3.2.7 Subrutin Logika OR ......................................................................... 67

3.3.2.8 Subrutin Logika ORNOT ................................................................. 68

3.3.2.9 Subrutin Logika Timer ..................................................................... 69

3.3.2.10 Subrutin Logika LD TIM ............................................................... 73

3.3.2.11 Subrutin Logika LD TIM NOT ...................................................... 74

3.3.2.12 Subrutin Logika AND TIM ............................................................ 75

3.3.2.13 Subrutin Logika AND TIM NOT .................................................. 76

3.3.2.14 Subrutin Logika OR TIM ............................................................... 78

3.3.2.15 Subrutin Logika OR TIM NOT ..................................................... 79

3.3.2.16 Subrutin Logika OUT .................................................................... 80

3.3.2.17 Subrutin Logika OUTNOT ............................................................ 81

3.3.2.18 Subrutin Logika Counter ................................................................ 83

3.3.2.19 Subrutin Logika LD CNT .............................................................. 85

Page 16: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

xvi

3.3.2.20 Subrutin Logika LD CNT NOT ..................................................... 87

3.3.2.21 Subrutin Logika AND CNT ........................................................... 88

3.3.2.22 Subrutin Logika AND CNT NOT .................................................. 89

3.3.2.23 Subrutin Logika OR CNT .............................................................. 90

3.3.2.24 Subrutin Logika OR CNT NOT ..................................................... 91

BAB IV HASIL PENGAMATAN dan PEMBAHASAN............................... 93

4.1 Model CPU PLC ........................................................................................... 93

4.2 Prinsip dan Cara Kerja CPU PLC ................................................................. 94

4.3 Analisa Perangkat Lunak .............................................................................. 96

4.3.1 Inisialisasi................................................................................................ 96

4.3.2 Komunikasi ............................................................................................. 96

4.3.3 Pembacaan kode Kiriman Pada memori CPU PLC ................................ 98

4.3.4 Pembandingan Kode Kiriman dengan Kode Yang Disimpan.................

Pada Memori CPU PLC ......................................................................... 99

4.4 Analisa Perangkat Keras(komunkasi console dengan CPU PLC) ................ 100

4.4.1 Logika LD dan Logika AND .................................................................. 100

4.4.2 Logika LD dan Logika OR ..................................................................... 104

4.4.3 Logika Counter........................................................................................ 107

4.4.4 Logika Timer........................................................................................... 112

4.4.5 Logika ON-OFF...................................................................................... 117

4.4.6 Logika LD NOT dan Logika OR NOT................................................... 119

4.4.7 Logika LD dan logika OUT .................................................................... 121

4.5 Analisa Perangkat Keras(komunikasi PC dengan CPU PLC) ...................... 129

Page 17: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

xvii

4.6 Analisa Data Error Saat Komunikasi ............................................................ 130

4.7 Logika OUT NOT ........................................................................................ 131

BAB V KESIMPULAN dan SARAN .............................................................. 133

5.1 Kesimpulan ................................................................................................... 133

5.2 Saran.............................................................................................................. 133

Page 18: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

DAFTAR GAMBAR

Gambar 2.1 Sistem Layout dan Hubungan PLC ................................................ 6

Gambar 2.2 Konfigurasi Simbol NO ................................................................. 9

Gambar 2.3 Konfigurasi Simbol NC .................................................................. 9

Gambar 2.4 Konfigurasi Simbol Output ............................................................ 9

Gambar 2.5 Diagram Ladder Instruksi LD dan LDNOT ................................... 10

Gambar 2.6 Diagram Ladder Instruksi AND dan ANDNOT ............................ 10

Gambar 2.7 Diagram Ladder Instruksi OR dan ORNOT .................................. 13

Gambar 2.8 Diagram Ladder Instruksi END ..................................................... 15

Gambar 2.9 Konfigurasi Pin ATmega32 ........................................................... 18

Gambar 2.10 Arsitektur ATmega32 ................................................................... 19

Gambar 2.11 Organisasi Memori ATmega32 .................................................... 20

Gambar 2.12 Peta Memori data AVR ATmega32 ............................................. 21

Gambar 2.13 Register EEARH dan EEARL ...................................................... 22

Gambar 2.14 Register EEDR ............................................................................. 23

Gambar 2.15 Register EECR ............................................................................. 23

Gambar 2.16 Register Serbaguna dari ATmega32 ............................................ 25

Gambar 2.17 Register Serbaguna ....................................................................... 25

Gambar 2.18 Stack Pointer ................................................................................ 26

Gambar 2.19 Register I/O dan Port I/O ............................................................. 27

Gambar 2.20 Register SFIOR ............................................................................ 27

Gambar 2.21 Port A,B,C,D ................................................................................ 28

Gambar 2.22 Lanjutan gambar Port A,B,C,D sebagai register I/O..................... 29

xviii

Page 19: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

xix

Gambar 2.23 TIMSK (Timer/Counter Interupt Mask Register) ........................ 30

Gambar 2.24 TIFR ............................................................................................. 31

Gambar 2.25 Special Function Register I/O ...................................................... 31

Gambar 2.26 SPI (Serial Pheripheral Interface) ................................................ 33

Gambar 2.27 USART ......................................................................................... 34

Gambar 2.28 UBRRH dan UBRRL ................................................................... 35

Gambar 2.29 UCSRC ......................................................................................... 35

Gambar 2.30 Komunikasi Serial DB9 ............................................................... 38

Gambar 2.31 IC MAX232 ................................................................................. 39

Gambar 2.32 Relay ............................................................................................. 40

Gambar 2.33 IC ULN2803 Driver Relay............................................................ 41

Gambar 3.1 Diagram Blok Sistem CPU PLC .................................................... 42

Gambar 3.2 Konfigurasi Rangkaian Reset ......................................................... 44

Gambar 3.3 Konfigurasi Rangkaian Osilator ..................................................... 44

Gambar 3.4 Indikator Error CPU PLC ............................................................... 46

Gambar 3.5 Indikator Komunikasi Serial RS-232 dengan CPU PLC ............... 47

Gambar 3.6 Indikator Supply CPU PLC ............................................................ 47

Gambar 3.7 Indikator Input ................................................................................ 49

Gambar 3.8 Indikator Output dan Relay ............................................................ 51

Gambar 3.9 Konfigurasi Komunikasi RS-232 ................................................... 53

Gambar 3.10 Subrutin Komunikasi Serial ......................................................... 54

Gambar 3.11 Aktivasi Komunikasi Serial ......................................................... 55

Gambar 3.12 Diagram Alir Utama Mikrokontroller .......................................... 57

Page 20: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

xx

Gambar 3.13 Diagram alir Pembacaan Isi Alamat Memori PLC ...................... 58

Gambar 3.14 Subrutin Pemilihan Kode ............................................................. 59

Gambar 3.15 Lanjutan Subrutin Pemilihan Kode .............................................. 60

Gambar 3.16 Lanjutan Subrutin Pemilihan Kode ............................................... 61

Gambar 3.17 Lanjutan Subrutin Pemilihan Kode .............................................. 62

Gambar 3.18 Diagram Alir Subrutin LD ........................................................... 63

Gambar 3.19 Diagram alir Subrutin LD NOT ................................................... 64

Gambar 3.20 Diagram alir Subrutin AND ......................................................... 65

Gambar 3.21 Diagram Alir Subrutin ANDNOT ................................................ 66

Gambar 3.22 Diagram Alir Subrutin OR ........................................................... 67

Gambar 3.23 Diagram Alir Subrutin ORNOT ................................................... 69

Gambar 3.24 Aktivasi Timer .............................................................................. 70

Gambar 3.25 Subrutin Timer ............................................................................. 72

Gambar 3.26 Logika LD TIM ............................................................................ 73

Gambar 3.27 Logika LD TIM NOT ................................................................... 74

Gambar 3.28 Logika AND TIM ......................................................................... 75

Gambar 3.29 Logika AND TIM NOT ............................................................... 77

Gambar 3.30 Logika OR TIM ............................................................................ 78

Gambar 3.31 Logika OR TIM NOT .................................................................. 79

Gambar 3.32 Diagram alir Logika OUT ............................................................ 81

Gambar 3.33 Diagram alir Logika OUT NOT ................................................... 82

Gambar 3.34 Logika Counter ............................................................................. 83

Gambar 3.35 Proses CNT .................................................................................. 84

Page 21: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

xxi

Gambar 3.36 Logika LD CNT ........................................................................... 86

Gambar 3.37 Logika LD CNT NOT .................................................................. 87

Gambar 3.38 Logika AND CNT ........................................................................ 88

Gambar 3.39 Logika AND CNT NOT ............................................................... 89

Gambar 3.40 Logika OR CNT ........................................................................... 91

Gambar 3.41 Logika OR CNT NOT .................................................................. 92

Gambar 4.1 Model CPU PLC ............................................................................. 93

Gambar 4.2 Potongan Program Komunikasi ...................................................... 96

Gambar 4.3 Program Menyimpan Pada Memori CPU PLC............................... 97

Gambar 4.4 Hasil komunikasi disimpan pada memori CPU PLC...................... 97

Gambar 4.5 Program pembacaan memori .......................................................... 98

Gambar 4.6 kode yang terbaca pada memori CPU PLC..................................... 99

Gambar 4.7 potongan program kode yang akan dibandingkan........................... 99

Gambar 4.8 diagram ladder 1.............................................................................. 100

Gambar 4.9 logika LD 001 aktif dan logika AND 002 tidak aktif ..................... 101

Gambar 4.10 logika LD 001 tidak aktif dan logika AND 002 aktif ................... 101

Gambar 4.11 program eksekusi logika LD ......................................................... 102

Gambar 4.12 hasil eksekusi yang tersimpan di memori CPU PLC .................... 102

Gambar 4.13 program logika AND 002.............................................................. 103

Gambar 4.14 program logika OUT 101 .............................................................. 103

Gambar 4.15 hasil diagram ladder 1 ................................................................... 104

Gambar 4.16 diagram ladder 2............................................................................ 104

Gambar 4.17 logika-logika yang dituliskan tidak mendapat input ..................... 105

Page 22: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

xxii

Gambar 4.18 hasil diagram ladder 2 logika LD ................................................. 106

Gambar 4.19 hasil diagram ladder 2 logika OR ................................................. 107

Gambar 4.20 diagram ladder 3 logika counter ................................................... 107

Gambar 4.21 pembacaan logika LD untuk logika counter ................................. 109

Gambar 4.22 alur kerja logika counter................................................................ 109

Gambar 4.23 logika LD CNT untuk memanggil hasil eksekusi CNT ................ 110

Gambar 4.24 hasil dari logika counter ................................................................ 111

Gambar 4.25 logika CNT tidak mendapat input ................................................. 111

Gambar 4.26 hasil diagram ladder 3 dari logika counter.................................... 111

Gambar 4.27 diagram ladder 4 logika timer....................................................... 112

Gambar 4.28 hasil diagram ladder 4 dari logika timer 100ms............................ 112

Gambar 4.29 hasil pengujian TIM 50ms............................................................. 114

Gambar 4.30 hasil pengujian TIM 150ms........................................................... 114

Gambar 4.31 hasil pengujian TIM 200ms........................................................... 115

Gambar 4.32 hasil pengujian TIM 250ms........................................................... 115

Gambar 4.33 hasil pengujian TIM 50ms............................................................. 115

Gambar 4.34 hasil pengujian TIM 150ms........................................................... 115

Gambar 4.35 hasil pengujian TIM 200ms........................................................... 116

Gambar 4.36 hasil pengujian TIM 250ms........................................................... 116

Gambar 4.37 diagram ladder 5 logika ON OFF.................................................. 117

Gambar 4.38 logika ON-OFF untuk logika LD 01 ............................................. 118

Gambar 4.39 logika ON-OFF untuk logika OR 02............................................. 118

Gambar 4.40 logika ON-OFF untuk logika LD 01 dan OR 02........................... 119

Page 23: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

xxiii

Gambar 4.41 diagram ladder 6 logika LD NOT 004 ..........................................

dan logika OR NOT 005 ................................................................ 119

Gambar 4.42 Logika LD NOT 004 tidak aktif ..................................................

dan logika OR NOT 005 aktif........................................................ 120

Gambar 4.43 hasil logika LD NOT 004 tidak aktif ...........................................

dan logika OR NOT 005 aktif ....................................................... 120

Gambar 4.44 logika LD NOT 004 aktif .............................................................

dan logika OR NOT 005 tidak aktif .............................................. 120

Gambar 4.45 hasil logika LD NOT 004 aktif .....................................................

dan logika OR NOT 005 tidak aktif .............................................. 120

Gambar 4.46 logika LD NOT 004 aktif dan logika OR NOT 005 aktif ............ 120

Gambar 4.47 hasil logika LD NOT 004 aktif ....................................................

dan logika OR NOT 005 aktif ....................................................... 121

Gambar 4.48 diagram ladder 7 logika LD dan logika OUT ............................... 121

Gambar 4.49 hasil dari diagram ladder 7 logika LD 001 dan OUT 101............. 122

Gambar 4.50 hasil dari diagram ladder 7 logika LD 002 dan OUT 102............. 123

Gambar 4.51 hasil dari diagram ladder 7 logika LD 003 dan OUT 103............. 123

Gambar 4.52 hasil dari diagram ladder 7 logika LD 004 dan OUT 104............. 123

Gambar 4.53 hasil dari diagram ladder 7 logika LD 005 dan OUT 105............. 123

Gambar 4.54 hasil dari diagram ladder 7 logika LD 006 dan OUT 106............. 124

Gambar 4.55 hasil dari diagram ladder 7 logika LD 007 dan OUT 107............. 124

Gambar 4.56 hasil dari diagram ladder 7 logika LD 008 dan OUT 108............. 124

Gambar 4.57 logika LD 001 aktif dan logika OUT 101 aktif............................. 125

Page 24: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

xxiv

Gambar 4.58 logika LD 002 aktif dan logika OUT 102 aktif............................. 125

Gambar 4.59 logika LD 003 aktif dan logika OUT 103 aktif............................. 126

Gambar 4.60 logika LD 004 aktif dan logika OUT 104 aktif............................. 126

Gambar 4.61 logika LD 005 aktif dan logika OUT 105 aktif............................. 127

Gambar 4.62 logika LD 006 aktif dan logika OUT 106 aktif............................. 127

Gambar 4.63 logika LD 007 aktif dan logika OUT 107 aktif............................. 128

Gambar 4.64 logika LD 008 aktif dan logika OUT 108 aktif............................. 128

Gambar 4.65 hasil komunikasi antara PC dengan CPU PLC ............................. 129

Gambar 4.66 Diagram ladder 8 logika LD 001 dan logika OUT 101................. 129

Gambar 4.67 diagram ladder 8 logika LD 001 aktif ..........................................

dan logika OUT 101 aktif .............................................................. 129

Gambar 4.68 hasil pengujian CPU PLC ............................................................. 130

Gambar 4.69 Data error saat komunikasi............................................................ 130

Gambar 4.70 diagram ladder logika 9 OUT NOT .............................................. 131

Gambar 4.71 diagram ladder logika OUT NOT mendapat input LD 005 .......... 131

Gambar 4.72 hasil diagram ladder 9 logika OUT NOT...................................... 131

Gambar 4.73 hasil dari gambar 4.71 ................................................................... 132

Page 25: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

DAFTAR TABEL

Tabel 2.1 Tabel Kebenaran Gerbang AND ........................................................ 11

Tabel 2.2 Tabel Kebenaran Gerbang ANDNOT ................................................ 12

Tabel 2.3 Tabel Kebenaran Gerbang OR ........................................................... 13

Tabel 2.4 Tabel Kebenaran Gerbang ORNOT ................................................... 14

Tabel 2.5 Mnemonic PLC .................................................................................. 15

Tabel 2.6 Pengaturan prescaler ........................................................................... 31

Tabel 2.7 Pengaturan Baud Rate ........................................................................ 36

Tabel 2.8 Komunikasi Serial DB9 ..................................................................... 38

Tabel 4.1 Hasil Pengujian CPU PLC dari diagram ladder 1 .............................. 100

Tabel 4.2 Hasil Pengujian CPU PLC dari diagram ladder 2 .............................. 105

Tabel 4.3 Hasil Pengujian CPU PLC dari diagram ladder 5 .............................. 116

Tabel 4.4 Hasil Pengujian CPU PLC dari diagram ladder 6 .............................. 119

Tabel 4.5 Hasil Pengujian CPU PLC dari diagram ladder 7 .............................. 121

Tabel 4.6 Perbandingan PLC umum dengan CPU PLC ..................................... 131

Tabel 4.7 hasil logika OUT NOT........................................................................ 131

xxv

Page 26: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

Daftar lampiran

Lampiran 1

1. Kode intruksi dan data ............................................................................ 134

2. Listing Program....................................................................................... 139

xxvi

Page 27: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

BAB I

PENDAHULUAN

1.1 Judul

Implementasi CPU PLC menggunakan mikrokontroler ATmega32.

1.2 Latar Belakang Masalah

Pada masa kini, perkembangan teknologi sangat pesat. Hal ini berdampak

pada pola hidup manusia yang menuntut segala sesuatunya bergerak cepat,

praktis, dan serba instan. Dalam industri sistem pengontrolannya masih dengan

elektromekanik yang menggunakan relay-relay, yang masih mempunyai banyak

kelemahan, diantaranya kontak-kontak yang dipakai mudah aus karena

panas/terbakar atau karena hubung singkat, serta membutuhkan biaya yang cukup

besar untuk instalasi, pemeliharaan dan modifikasi dari sistem yang telah dibuat

jika di kemudian hari diperlukan modifikasi. Dengan menggunakan PLC hal-hal

ini 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 (Programmable Logic Controller) adalah suatu sistem elektronika

yang dirancang untuk industri, yang menggunakan memori yang dapat diprogram

sebagai penyimpanan internal dari instruksi-instruksi untuk menjalankan fungsi-

fungsi logika, sequence, waktu, pencacah, dan aritmatika untuk mengontrol

berbagai jenis mesin atau proses melalui input dan output digital atau analog[1].

1

Page 28: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

2

Seiring perkembangan teknologi yang semakin maju terutama pada

peralatan elektronika baik PLC ataupun mikrokontroler, penulis berencana akan

merancang PLC dengan menggunakan mikrokontroler. Pada mikrokontroler

tersebut akan dibuat master program dari fungsi-fungsi logika PLC. Alat ini sering

disebut dengan CPU. Master program fungsi-fungsi logika PLC tersebut akan

disimpan dalam EEPROM mikrokontroler ATmega32, dan CPU itu akan bekerja

sebagai PLC jika CPU itu diprogram sebagai fungsi-fungsi logika PLC. Alat yang

digunakan untuk memprogram CPU itu adalah Konsol dan PC.

1.3 Tujuan dan Manfaat Penelitian

Tujuan dari pembuatan alat ini adalah merancang dan membuat sebuah

PLC baik perangkat keras dan perangkat lunak dengan menggunakan kontrol dari

komputer maupun konsol yang dihubungkan ke mikrokontroler sebagai CPU.

Dalam mikrokontroler akan dibuat master program yang sesuai dengan fungsi-

fungsi logika PLC yang di implementasikan pada mikrokontroler ATmega32.

Penelitian ini dapat memberikan manfaat:

1. Sebagai dasar untuk mengembangkan aplikasi selanjutnya.

2. Sebagai referensi yang dapat mendukung penelitian selanjutnya

yang berkaitan aplikasi mikrokontroler, komunikasi serial dan

PLC.

1.4 Batasan Masalah

Alat ini mempunyai batasan masalah seperti:

1. Mikrokontroler yang digunakan Atmega 32.

Page 29: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

3

2. Dalam mikrokontroler akan dibuat program yang berfungsi

menerima, membaca dan akan mengeksekusi fungsi-fungsi logika

dari Konsol dan PC (Personal Computer) yang telah dituliskan.

3. 8 Port Input dan 8 Port Output yang digunakan dalam CPU PLC.

4. Proses komunikasi data menggunakan komunikasi serial dan

komunikasinya hanya satu arah.

5. Fungsi-fungsi logika PLC meliputi: LD, LDNOT, AND,

ANDNOT, OR, ORNOT, TIMER, COUNTER, OUT, OUT NOT,

END.

6. Hanya 1 macam timer saja yang digunakan dalam CPU PLC.

7. Hanya 1 counter saja yang digunakan dalam CPU PLC.

1.5 Metodologi Penelitian

Agar dapat melakukan perancangan alat dengan baik, maka penulis

membutuhkan masukan serta referensi yang didapatkan dengan metode :

1. Studi kepustakaan yang mencakup literatur-literatur, gambar-

gambar, dan manual.

2. Mencari informasi dari berbagai media termasuk dari dunia maya

(internet).

3. Membuat perencanaan dan merancang perangkat keras dan

perangkat lunak.

4. Melakukan pengamatan dan pengujian dengan alat yang sudah

dirancang terlebih dahulu untuk mengetahui alat sudah bekerja

sesuai dengan rancangan atau belum.

Page 30: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

4

1.6 Sistematika Penulisan

Sistematika penulisan tugas akhir ini terbagi menjadi lima bab yang

disusun sebagai berikut:

BAB I. PENDAHULUAN

Berisi latar belakang masalah, tujuan dan manfaat penelitian,

batasan masalah, metodologi penelitian, dan sistematika penulisan.

BAB II. DASAR TEORI

Berisi dasar teori komponen-komponen yang akan digunakan

dalam penelitian.

BAB III. RANCANGAN PENELITIAN

Berisi diagram blok dan penjelasan cara kerja secara singkat

rancangan perangkat keras dan perangkat lunak.

BAB IV. HASIL PENELITIAN DAN PEMBAHASAN

Berisi pengamatan kerja dari perangkat keras dan perangkat lunak

yang telah dibuat.

BAB V. PENUTUP

Berisi kesimpulan dan saran untuk perbaikan alat dan penelitian

selanjutnya.

Page 31: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

BAB II

DASAR TEORI

Kemajuan teknologi yang berkembang pesat dewasa ini, mengakibatkan

penulis ingin membuat “PLC yang diimplementasikan menggunakan

Mikrokontroller ATmega32”. Dalam perancangan dan pembuatan PLC ini,

harus mengetahui terlebih dahulu prinsip kerja dasar dan piranti atau komponen

yang akan digunakan.

2.1 PLC

PLC atau kendali logika terprogram merupakan suatu piranti elektronik yang

dirancang untuk dapat beroperasi secara digital dengan menggunakan memori

sebagai media penyimpanan intruksi-intruksi internal untuk menjalankan fungsi-

fungsi logika, seperti fungsi pencacah, fungsi urutan proses, fungsi pewaktu,

fungsi aritmatika, dan fungsi yang lainnya dengan cara memprogramnya.

Program-program dibuat kemudian dikirim ke PLC melalui programmer/monitor.

Pembuatan program dapat digunakan komputer sehingga dapat mempercepat hasil

pekerjaan. Fungsi lain pada PLC dapat digunakan untuk memonitor jalannya

proses pengendalian yang sedang berlangsung, sehingga dapat dengan mudah

dikenali urutan kerja proses pengendalian yang terjadi pada saat itu. Seperti

halnya komputer, PLC juga mempunyai kelengkapan yaitu CPU (Central

Processing Unit), memori (RAM dan ROM), programmer/monitor dan modul I/O

(input/output)[2].

5

Page 32: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

6

Dalam sistem PLC ini terdapat 4 (empat) komponen bagian utama, keempat

komponen bagian utama tersebut adalah:

1. Central Processing unit (CPU), merupakan otak dari PLC yang terdiri

dari 3 bagian, yaitu:

a. Mikroprosesor merupakan otak dari PLC yang difungsikan untuk

operasi matematika dan opersi logika.

b. Memori, merupakan daerah CPU yang digunakan untuk melakukan

proses penyimpanan dan pengiriman data pada PLC.

c. Catu daya, berfungsi untuk mengubah sumber masukan tegangan

bolak-balik menjadi tegangan searah.

2. Programmer/monitor

3. Input/Output Modules

Secara blok diagram, hubungan bagian utama dari PLC secara umum dapat

di lihat pada gambar 2.1.

Programmer/Monitor

Mikroprosesor

memori

Catu Daya

Modul keluaran

Modul masukkan

Gambar 2.1 Sistem layout dan hubungan PLC[2]

Page 33: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

7

PLC memiliki beberapa kelebihan dibanding dengan sistem kontrol relay

konvensional antara lain :

1. Fleksibel (keluwesan)

2. Deteksi dan koreksi kesalahan lebih mudah

3. Harga relatif murah

4. Pengamatan visual

5. Kecepatan operasi yang tinggi

6. Implementasi proyek lebih singkat

7. Lebih sederhana dan mudah dalam penggunaannya, memodifikasi lebih

mudah tanpa tambahan biaya

8. Dokumentasi mudah

Syarat-syarat yang harus dimiliki oleh sebuah PLC :

1. Hardware harus mudah diprogram ulang.

2. Semua komponen mampu beroperasi tanpa alat bantu dan memenuhi

persyaratan lingkungan.

3. Sistem yang dipakai mudah dirawat dan diperbaiki, beberapa indikator

dan alat bantu harus tersedia sebagai bagian dari sistem untuk

memudahkan pelacakan kerusakan.

4. Hardware hanya membutuhkan ruang dan daya yang kecil dibandingkan

dengan sistem elektromekanis.

5. PLC mampu berkomunikasi dengan pusat untuk pemantauan proses

operasi.

Page 34: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

8

6. Sistem kontrol menerima catu daya AC standar melalui push-button dan

limit switch yang ada pada sistem[2].

7. Sinyal output PLC mampu menjalankan motor stater dan solenoid valve

yang bekerja dengan catu daya AC, setiap output mampu memutuskan

atau mengalirkan arus sebesar 2A.

8. Hardware memiliki konfigurasi yang dapat dikembangkan dengan

minimal perubahan pada sistem maupun downtime.

9. Struktur memory PLC mudah dikembangkan.

2.1.1 Diagram Ladder

Pada PLC diagram kontrol dinamakan dengan diagram ladder (tangga).

Dinamakan diagram tangga dikarenakan bentuknya menyerupai tangga (bersusun

seperti tangga), seperti berjalan menuruni tangga mulai tangga atas dan perlahan

kebawah. Pada penggambaran diagram tangga dikenal simbol-simbol yang hampir

sama dengan relai-relai mekanik, yaitu: Normally Open (NO), Normally Close

(NC), Keluaran(output).[2]

2.1.1.1 Normally Open

NO merupakan salah satu jenis saklar yang dalam keadaan normal

berkondisi OFF , berupa satu kutub (berasal dari satu sumber) dan menghantarkan

arus hanya ke satu beban. 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,

gambar konfigurasi simbol NO dapat dilihat pada gambar 2.2.

Page 35: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

9

Gambar 2.2 konfigurasi simbol NO[2]

2.1.1.2 Normally Close

Saklar ini menandakan keadaan saklar yang normalnya pada keadaan

ON/tertutup, jadi jika saklar tersebut diaktifkan akan menjadi OFF/terbuka.

Gambar konfigurasi simbol NC dapat dilihat pada gambar 2.3.

2.1.1.3 Keluaran (Output)

Keluaran dapat berupa relai yang akan mengaktifkan kontak-kontak NO

dan NC. Gambar konfigurasi simbol output dapat dilihat pada gambar 2.4.

Gambar 2.3 konfigurasi simbol NC[2]

Gambar 2.4 konfigurasi simbol output[2]

2.1.2 Instruksi-instruksi Logika dalam PLC

Instruksi-instruksi tangga atau ladder instruction adalah instruksi-instruksi

yang terkait dengan kondisi-kondisi di dalam diagram tangga. Instruksi-instruksi

tangga, baik yang independen maupun kombinasi atau gabungan dengan blok

instruksi berikut atau sebelumnya, akan membentuk kondisi-kondisi eksekusi.

Page 36: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

10

2.1.2.1 Instruksi LOAD (LD) dan LOAD Not (LDNOT)

Instruksi LD digunakan untuk memasukkan masukan yang awal dari

tangga. Sedangkan NOT untuk menandakan kontak NC. Intruksi LD dan LDNOT

dibutuhkan hanya satu kondisi logika saja pada awal program. Bentuk diagram

ladder perintah tersebut dapat dilihat pada gambar 2.5.

LD

LDNOT

Gambar 2.5 Diagram ladder instruksi LD dan LDNOT[2]

2.1.2.2 Instruksi AND dan ANDNOT

Instruksi AND digunakan untuk memasukkan masukan yang di seri

dengan masukkan yang sebelumnya. Tentunya instruksi yang di seri harus

terpenuhi semuanya untuk mengeluarkan satu keluaran. Dalam bentuk ladder

perintah tersebut dapat dilihat pada gambar 2.6.

LD AND ANDNOT

Gambar 2.6 Diagram ladder instruksi AND dan NOT AND[2]

Page 37: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

11

Untuk menganalisa gerbang AND dengan 2 buah masukan A dan B

dengan keluaran Q, maka terdapat 4 (empat) kemungkinan dan dapat dilihat pada

tabel 2.1.

a. Kemungkinan pertama, masukan A = 0 dan B = 0. Dengan kata lain

tidak ada masukan, maka keluarannya Q = 0.

b. Kemungkinan kedua, masukan pada A = 1 dan B = 0. Terdapat

masukan hanya di A dan tidak ada masukan pada B, maka

keluarannya Q = 0.

c. Kemungkinan ketiga, masukan pada A = 0 dan B = 1. Terdapat

masukan hanya di B dan tidak ada masukan pada A, maka

keluarannya Q = 0.

d. Kemungkinan keempat, masukan pada A = 1 dan B = 1. Terdapat

masukan pada A dan B, maka keluarannya Q = 1.

Tabel 2.1. Tabel kebenaran gerbang AND A B Q

0 0 0

1 0 0

0 1 0

1 1 1

Untuk menganalisa gerbang ANDNOT dengan 2 buah masukan A dan B

dengan keluaran Q, maka terdapat 4 (empat) kemungkinan dan dapat dilihat pada

tabel 2.2.

a. Kemungkinan pertama, masukan A = 0 dan B = 0. Dengan kata lain

tidak ada masukan, maka keluarannya Q = 1.

Page 38: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

12

b. Kemungkinan kedua, masukan pada A = 1 dan B = 0. Terdapat

masukan hanya di A dan tidak ada masukan pada B, maka

keluarannya Q = 1.

c. Kemungkinan ketiga, masukan pada A = 0 dan B = 1. Terdapat

masukan hanya di B dan tidak ada masukan pada A, maka

keluarannya Q = 1.

d. Kemungkinan keempat, masukan pada A = 1 dan B = 1. Terdapat

masukan pada A dan B, maka keluarannya Q = 0.

Tabel 2.2. Tabel kebenaran gerbang ANDNOT

A B Q

0 0 1

1 0 1

0 1 1

1 1 0

2.1.2.3 Instruksi OR dan ORNOT

Instruksi OR digunakan untuk memasukkan masukan yang diparalelkan

dengan masukkan 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, gambar

diagram ladder dapat dilihat pada gambar 2.7.

Page 39: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

13

LD

OR

ORNOT

Gambar 2.7 Diagram ladder instruksi OR dan ORNOT[2]

Untuk menganalisa gerbang OR, terdapat 4 (empat) kemungkinan dan

dapat dilihat pada tabel 2.3.

a. Kemungkinan pertama, masukan pada A = 0 dan B = 0. Dengan kata

lain tidak ada masukan, maka keluarannya Q = 0.

b. Kemungkinan kedua, masukan pada A = 1 dan B = 0. Terdapat

masukan pada A = 1 dan tidak ada masukan pada B, maka

keluarannya Q = 1.

c. Kemungkinan ketiga, masukan pada A = 0 dan B = 1. Terdapat

masukan pada B dan tidak ada masukan A, maka keluarannya Q = 1.

d. Kemungkinan keempat, masukan pada A = 1 dan B = 1. Terdapat

masukan pada A dan B, maka keluarannya Q = 1.

Tabel 2.3. Tabel kebenaran gerbang OR A B Q

0 0 0

0 1 1

1 0 1

1 1 1

Page 40: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

14

Untuk menganalisa gerbang ORNOT, terdapat 4 (empat) kemungkinan

dan dapat dilihat pada tabel 2.4.

e. Kemungkinan pertama, masukan pada A = 0 dan B = 0. Dengan kata

lain tidak ada masukan, maka keluarannya Q = 1.

f. Kemungkinan kedua, masukan pada A = 1 dan B = 0. Terdapat

masukan pada A = 1 dan tidak ada masukan pada B, maka

keluarannya Q = 0.

g. Kemungkinan ketiga, masukan pada A = 0 dan B = 1. Terdapat

masukan pada B dan tidak ada masukan A, maka keluarannya Q = 0.

h. Kemungkinan keempat, masukan pada A = 1 dan B = 1. Terdapat

masukan pada A dan B, maka keluarannya Q = 0.

Tabel 2.4. Tabel kebenaran gerbang ORNOT

A B Q

0 0 1

0 1 0

1 0 0

1 1 0

2.1.2.4 Instruksi END

Instruksi terakhir yang harus dituliskan atau digambarkan dalam diagram

tangga adalah instruksi END. 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

Page 41: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

15

diabaikan[2]. Gambar diagram ladder instruksi END dapat dilihat pada gambar

2.8.

END

Gambar 2.8 Diagram ladder instruksi END[2]

2.2 Mnemonic

Secara umum bahasa pemrograman yang digunakan pada PLC ada dua,

yakni bahasa kode dan bahasa gambar. Bahasa kode sering kita jumpai dengan

istilah kode mnemonic atau STL (statement list). Sedangkan bahasa gambar sering

kita jumpai dengan istilah ladder diagram atau diagram tangga.

Untuk berkomunikasi dengan PLC atau memprogram PLC digunakan suatu

alat yang disebut programmer/monitor. Dengan menggunakan

programmer/monitor ini dapat dimasukkan program ke dalam PLC dan juga dapat

memonitor proses yang dilakukan oleh PLC. Programmer/monitor sering juga

disebut hand held programmer dan mempunyai beberapa fungsi yaitu:

1. Off, difungsikan untuk mematikan 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.

Page 42: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

16

Kode mnemonik juga bahasa teknik yang merupakan sarana perantara untuk

memasukkan program ke dalam PLC khususnya menggunakan Personal

Computer atau konsole. Kode ini memuat keterangan mengenai instruksi dan data

operand. Deskripsi suatu proses kerja dari sebuah sistem yang dikontrol dapat

dituangkan ke dalam sebuah kode mnemonic yang memuat keterangan-keterangan

mengenai alamat dan tanggapan dari input-output, serta fungsi-fungsi program

pengontrol. Contoh tabel mnemonic dapat dilihat pada table 2.5 mnemonic PLC.

Tabel 2.5 Mnemonic PLC LD 00

AND 01

OUT 102

END

2.3 Mikrokontroller ATmega32

Mikrokontroler ATmega32 memiliki fitur yang cukup lengkap. Mulai dari

dari kapasitas memori program dan memori data yang cukup besar, interupsi,

timer/counter, PWM, RTC, USART, TWI, SPI, analog comparator, EEPROM

internal dan juga ADC internal semuanya ada dalam ATmega32. 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

ATmega32[3].

Page 43: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

17

2.3.1 Fitur ATmega32

Berikut ini adalah fitur-fitur yang dimiliki oleh ATmega32:

a. 130 macam instruksi , yang hampir semuanya dieksekusi dalam satu

siklus clock.

b. 328-bit register serba guna.

c. Kecepatan mencapai 16 MIPS dengan clock 16MHz.

d. 32 KByte Flash Memori, yang memiliki fasilitas in-system

Programming.

e. 1024 Byte internal EEPROM dan 2 KByte SRAM.

f. Programming Lock, fasilitas untuk mengamankan kode program.

g. 2 buah timer/counter 8-bit dan 1 buah timer/counter 16-bit.

h. 4 channel output PWM

i. 8 channel ADC 10-bit dan serial USART.

1. 8 singgle-ended channel

2. 7 differential channel hanya pada kemasan TQFP

3. 2 differential channel dengan programmable gain 1x, 10x, atau

200x.

j. Master/Slave SPI serial interface dan serial TWI

k. Tegangan :

1. 2.7-5.5V untuk ATmega32L

2. 4.5-5.5V untuk ATmega32

Page 44: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

18

Gambar 2.9 Konfigurasi pin ATmega32[4]

Pada gambar 2.9 menunjukkan konfigurasi pin ATmega32 , sehingga pin

tersebut dapat di deskripsikan sebagai berikut:

a. Power, VCC dan GND (ground)

b. PORTA (PORTA 70 ), merupakan pin IO dua arah dan berfungsi khusus

sebagai pin masukan ADC

c. PORTB (PORTB 70 ), merupakan pin IO dua arah dan fungsi khusus

sebagai pin timer/counter, komparator analog dan SPI

d. PORTC (PORTC 70 ), merupakan pin IO dua arah dan fungsi khusus

e. PORTD (PORTD 70 ), merupakan pin IO dua arah dan fungsi khusus

f. RESET adalah pin untuk me-reset mikrokontroler

g. XTAL1 dan XTAL2 pin untuk external clock

Page 45: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

19

h. AVCC adalah pin masukan untuk tegangan ADC

i. AREF adalah pin masukan untuk tegangan referensi eksternal ADC[3].

Gambar 2.10 Arsitektur ATmega32[4]

Pada gambar 2.10 Mikrokontroler ATmega32 memiliki Hardvard, yaitu

memisahkan memori untuk kode program dan memori untuk data sehingga dapat

memaksimalkan unjuk kerja dan paralelisme. Instruksi-instruksi dalam memori

program dieksekusi dalam satu alur tunggal, dimana pada saat satu instruksi

dikerjakan instruksi berikutnya sudah diambil (pre-fetched) dari memori program.

Konsep inilah yang memungkinkan instruksi-instruksi dapat dieksekusi dalam

setiap satu siklus clock[3].

32 x 8-bit register serba guna digunakan untuk mendukung operasi pada

Arithmetic Logic Unit (ALU) yang dapat dilakukan dalam satu siklus. 6 dari

register serbaguna ini dapat digunakan sebagai 3 buah register pointer 16-bit pada

Page 46: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

20

mode pengalamatan tak langsung untuk mengambil data pada ruang memori data.

Ketiga register pointer 16-bit ini disebut dengan register X (gabungan R26 dan

R27), register Y (gabungan R28 dan R29), dan register Z (gabungan R30 dan

R31).

Hampir semua instruksi AVR memiliki format 16-bit (word). Setiap alamat

memori program terdiri dari instruksi 16-bit atau 32-bit. Selain register serbaguna

diatas, terdapat register lain yang terpetakan dengan teknik memory mapped I/O

selebar 64 byte. Beberapa register ini digunakan untuk fungsi khusus antara lain

sebagai register kontrol Timer/Counter, Interupsi, ADC, UASRT, SPI, EEPROM

dan fungsi I/O lainnya. Register-register ini menempati memori pada alamat

0x20h-0x5Fh[3].

2.3.2 Organisasi Memori

Gambar 2.11. Organisasi memori ATmega32.[4]

Page 47: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

21

Mikrokontroler ATmega32 memiliki 3 jenis memori yaitu memori

program, memori data dan memori EEPROM[3]. Ketiganya memiliki ruang

sendiri dan terpisah seperti terlihat pada gambar 2.11

2.3.2.1 Memori Program

ATmega32 memiliki kapasitas memori program sebesar 32 Kbyte yang

terpetakan dari alamat 0000h-3fffh dimana masing-masing alamat memiliki lebar

data 16 bit. Sehingga organisasi memori program seperti ini sering dituliskan

dengan 16K x 16 bit. Memori program ini terbagi menjadi 2 bagian yaitu bagian

program boot dan bagian program aplikasi. Jika kita tidak menggunakan fitur

Boot Loader Flash maka semua kapasitas memori programdiatas dapat digunakan

untuk program aplikasi. Tetapi jika kita menggunakan fitur Boot Loader Flash

maka pembagian ukuran kedua bagian ini ditentukan oleh BOOTSZ fuse[3].

2.3.2.2 Memori Data

Gambar 2.12 Peta Memori Data AVR ATmega32[4]

Page 48: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

22

ATmega32 memiliki 2144 alamat memori data yang terbagi menjadi 3

bagian, yaitu 32 buah register file, 64 buah IO register file dan 2048byte internal

SRAM. Peta Memori Data AVR ATmega32 dapat dilihat pada gambar 2.12.

Tampak pada peta memoti data diatas bahwa alamat $0000-$001F ditempati oleh

register file. I/O register menempati alamat dari $0020-$005F. Sedangkan sisanya

sebagai internal SRAM sebesar 2048 byte ($0060-$085F)[3].

2.3.2.3 EEPROM

ATmega32 juga memliki memori data berupa EEPROM 8 bit sebesar

1024 byte yang terpisah dari memori program maupun memori data. 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[3].

2.3.2.3.1 Register EEARH and EEARL

Gambar 2.13 Register EEARH dan EEARL[4]

Register EEARH dan EEARL digunakan untuk menyimpan alamat

memori EEPROM yang akan diakses. Dengan kapasitas EEPROM sebesar 1024

Kbyte maka dibutuhkan 9-bit alamat (EEAR8...EEAR0)[3]. Gambar register

EEARH dan EEARL dapat dilihat pada gambar 2.13.

Page 49: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

23

2.3.2.3.2 Register EEDR

Gambar 2.14 Register EEDR[4]

Bits 7..0 – EEDR7.0: data EEPROM

Pada proses penulisan EEPROM, register ini berisi data yang akan

dituliskan pada alamat EEPROM yang ditunjuk dalam register EEAR, sedangkan

pada opersi pembacaan EEPROM, register ini berisi data yang dibaca dari alamat

EEPROM yang ditunjuk dalam EEAR[3]. Gambar register EEDR dapat dilihat

pada gambar 2.14.

2.3.2.3.3 Register EECR

Gambar 2.15 Register EECR[4].

Gambar 2.15 merupakan register EECR. Register EECR merupakan

register yang mengontrol proses akses terhadap EEPROM. Bit yang digunakan

dalam register ini adalah bit EEMWE, EEWE, dan EERE yang masing-masing

menempati bit 0, bit 1, bit 2, dalam register tersebut.

Bits 7..4 – Res: Reserved Bits

Pada bit 7..4 ini akan selalu dibaca 0 (tidak digunakan)

Bit 3 – EERIE: EEPROM Ready Interrupt Enable

Page 50: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

24

Bit EERIE digunakan untuk mengaktifkan interupsi EEPROM jika

bernilai ’1’ maka aktif dan jika bernilai ’0’ maka tidak aktif.

Bit 2 – EEMWE: EEPROM Master Write Enable

Bit EEMWE digunakan untuk mengaktifkan operasi tulis. Jika bit

EEMWE bernilai ’1’ maka pada saat bit EEWE diset ’1’ akan

menyebabkan data pada register EEDR dituliskan ke memori

EEPROM dengan alamat sesuai isi register EEAR dalam 4 siklus

clock. Tetapi jika bit EEMWE bernilai ’0’ maka pada saat bit EEWE

diset ’1’ tidak akan berpengaruh terhadap operasi tulis[3].

Bit 1 – EEWE:EEPROM Write Enable

Bit EEWE digunakan untuk memulai proses menulis data ke

EEPROM. Jika alamat dan data yang akan ditulis sudah ditentukan

maka data tersebut akan dituliskan ke EEPROM segera setelah bit

EEWE ini diset ’1’. Setelah proses menulis data selesai maka secara

otomatis bit EEWE akan bernilai ’0’.

Bit 0 – EERE: EEPROM Read Enable

Bit EEWE digunakan untuk memulai proses membaca data dari

EEPROM. Jika alamat dan data yang akan dibaca sudah ditentukan

maka data tersebut akan segera dibaca setelah bit EERE ini diset

’1’[3].

2.3.3 Register serbaguna

ATmega32 memiliki 32 byte register serbaguna yang terletak pada awal

alamat RAM seperti terlihat pada gambar 2.16.

Page 51: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

25

Gambar 2.16. Register Serbaguna dari ATmega32[4]

Dari 32 byte register serbaguna diatas, 6 byte terakhir juga digunakan

sebagai register pointer yaitu register pointer X, register pointer Y dan register

pointer Z[3].

Gambar 2.17 Gambar register serbaguna[4]

Page 52: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

26

2.3.4 Stack Pointer

Gambar 2.18 Gambar stack pointer[4]

Stack pointer digunakan untuk menyimpan data sementara (data variabel)

atau untuk menyimpan alamat program yang sedang dikerjakan pada saat terjadi

instruksi percabangan atau interupsi. 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[3]. Gambar stack pointer dapat dilihat pada

gambar 2.18.

2.3.5 Register I/O dan Port I/O

ATmega32 memiliki 64 byte register I/O 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). Jika register I/O

diakses 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-003F. Gambar register I/O

dan port I/O dapat dilihat pada gambar 2.19.

Page 53: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

27

Gambar 2.19 gambar register I/O dan port I/O[4]

Semua port keluarga AVR bersifat bi-directional (dua arah) pada saat

berfungsi sebagai port I/O digital. Bahkan setiap pin dapat dikonfigurasikan baik

sebagai input maupun output secara individu tanpa mempengaruhi pin-pin yang

lain. Hal ini dapat dilakukan dengan perintah SBI dan CBI. Pengaturan pull-up

resistor internal. Meskipun demikian pengaturan pull-up resistor bisa saja dinon-

aktifkan melalui bit PUD pada register SFIOR. Jika bit PUD diset ’1’ maka berarti

konfigurasi pull-up port I/O non-aktif[3]. Register SFIOR dapat dilihat pada

gambar 2.20.

Gambar 2.20 gambar register SFIOR[4]

Tiga alamat memori I/O 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 atau sebagai output. Jika DDRx diisi ’1’ berarti sebagai output dan

jika diisi ’0’ berarti sebagai input. Data Register (PORTx) digunakan untuk

Page 54: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

28

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. Gambar port A,

B, C, D sebagai port I/O dapat dilihat pada gambar 2.21 dan gambar 2.22.

Gambar 2.21 Gambar port A, B, C, D sebagai register I/O[4]

Page 55: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

29

Gambar 2.22 lanjutan gambar port A,B , C, D sebagai register I/O[4]

2.3.6 Timer/Counter

ATmega32 memiliki 3 modul timer yang terdiri dari 2 buah timer/counter

8-bit dan 1 buah timer/counter 16-bit. 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 juga dapat difungsikan sebagai sumber

interupsi. Masing-masing timer/counter ini memiliki register tertentu yang

digunakan untuk mengatur mode dan cara kerjanya tetapi ada 2 register yang

digunakan secara bersama-sama yaitu register TIMSK dan register TIFR. Gambar

TIMSK dan TIFR dapat dilihat pada gambar 2.23 dan gambar 2.24.

Page 56: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

30

2.3.6.1 TIMSK (Timer/Counter Interrupt Mask Register)

Gambar 2.23 TIMSK (Timer/Counter Interupt Mask Register)[4]

Bit 7 – OCIE2: Timer/Counter 2 Output compare Match Interupsi

Enable. OCIE2 digunakan untuk mengaktifkan interupsi Output

Compare Match Timer/Counter 2.

Bit 6 – TOIE2: Timer/Counter 2 Overflow Interrupt Enable. TICIE0

digunakan untuk mengaktifkan interupsi Overflow Timer/Counter 2.

Bit 5 – TICIE1: Timer/Counter 1 Input Capture Interrupt Enable.

TICIE1 digunakan untuk mengaktifkan interupsi Input capture

Timer/Counter 1.

Bit 4 – OCIE1A: Timer/Counter 1 Output Compare A Match Interrupt

Enable. OCIE1A digunakan untuk mengaktifkan interupsi Output

Compare A Match Timer/Counter 1.

Bit 3 – OCIE1B : Timer/Counter 1 Output Compare B match interrupt

Enable. OCIE1B digunakan untuk mengaktifkan interrupsi Output

Compare B Match Timer/Counter 1.

Bit 2 – TOIE1: Timer/Counter 1 Overflow Interrupt Enable. TOIE0

digunakan untuk mengaktifkan interupsi Overflow Timer/Counter 1.

Bit 1 – OCIE0: Timer/Counter 0 Output Compare Match Interrupt

Enable. OCIE0 digunakan untuk mengaktifkan interupsi Output

Compare Match Timer/Counter 0.

Page 57: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

31

Bit 0 – TOIE0: Timer/Counter 0 Overflow Interrupt Enable. TOIE0

digunakan untuk mengaktifkan interupsi Overflow Timer/Counter 0.

2.3.6.2 TIFR

Gambar 2.24 TIFR[4]

TIFR merupakan register yang digunakan untuk mengetahui apakah

terjadi permintaan interupsi timer/counter atau tidak. Jika bernilai ’1’ berarti

terdapat permintaan interupsi, dan jika layanan interupsi diaktifkan maka program

akan melompat ke alamat vektor interupsi yang sesuai. Untuk mengatur semua

timer dibutuhkan prescaler, pengaturan prescaler dapat dilihat pada tabel 2.6

Tabel 2.6 pengaturan prescaler CS12 CS11 CS10 Description

0 0 0 No clock source (timer/counter stopped) 0 0 1 ClkIO/1 (No prescaling) 0 1 0 ClkIO/8 (No prescaling) 0 1 1 ClkIO/64 (No prescaling) 1 0 0 ClkIO/256 (No prescaling) 1 0 1 ClkIO/1024 (No prescaling) 1 1 0 Ekternal clock source on T1 pin. Clock on falling edge 1 1 1 Ekternal clock source on T1 pin. Clock on rising edge

2.3.6.3 Special Function Register I/O

Gambar 2.25 Special Function Register I/O[4]

Bit 1 – PSR10: Prescalar Reset Timer/Counter 1/0

Page 58: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

32

Bit PSR10 digunakan untuk mereset skala clock pada timer/counter 1

dan timer/counter 0. jika bit PSR10 diset ’1’ maka akan mereset skala

clock timer/counter 1 dan timer/counter 0 menjadi 0.

Bit 1 – PSR2: Prescalar Reset Timer/Counter 2

Bit PSR2 digunakan untuk mereset skala clock pada timer/counter 2. jika

bit PSR2 diset ’1’ maka akan mereset skala clock timer/counter 2

menjadi 0. gambar special function register I/O dapat dilihat pada

gambar 2.25.

2.3.7 SPI (Serial Peripheral Interface)

Serial Peripheral Interface (SPI) merupakan salah satu mode komunikasi

serial syncrhronous kecepatan tinggi yang dimiliki oleh ATmega32. Komunikasi

SPI membutuhkan 3 jalur yaitu MOSI, MISO dan SCK. Melalui komunikasi SPI

ini data dapat saling dikirimkan baik antar mikrokontroler maupun antara

mikrokontroler dengan peripheral lain di luar mikrokontroler. Gambar SPI dapat

dilihat pada gambar 2.26.

1. MOSI : Master Output Slave Input Artinya jika dikonfigurasi sebagai

master maka pin MOSI ini sebagai output tetapi jika dikonfigurasi

sebagai slave maka pin MOSI ini sebagai input.

2. MISO : Master Input Slave Output Artinya berkebalikan dengan MOSI

di atas, jika dikonfigurasi sebagai master maka pin MISO ini sebagai

input tetapi jika dikonfigurasi sebagai slave maka pin MISO ini

sebagai output.

Page 59: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

33

3. CLK : Clock Jika dikonfigurasi sebagai master maka pin CLK berlaku

sebagai output (pembangkit clock) tetapi jika dikonfigurasi sebagai

slave maka pin CLK berlaku sebagai input (menerima sumber clock

dari master)[3].

Gambar 2.26 SPI (Serial Pheripheral Interface)[4]

2.3.8 USART

Universal Synchronous and Asynchronous Serial Receiver and

Transmitter (USART) juga merupakan salah satu mode komunikasi serial yang

memiliki fleksibilitas tinngi, yang dapat digunakan untuk melakukan transfer data

baik antar mikrokontroler maupun dengan modul-modul eksternal termasuk PC

yang memiliki fitur UART.

Page 60: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

34

Gambar 2.27 USART[4]

USART memungkinkan transmisi data baik secara synchronous maupun

asynchronous sehingga dengan demikian USART pasti kompatibel dengan

UART. Pada Atmega32, 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

hardware untuk mode asynchronous hanya membutuhkan 2 pin yaitu TXD dan

RXD sedangkan untuk mode synchronous harus 3 pin yaitu TXD, RXD dan XCK.

Gambar USART dapat dilihat pada gambar 2.27.

Page 61: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

35

Pada gambar 2.28 dan gambar 2.29 dapat dilihat 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.

Sehingga untuk mengaksesnya diperlukan pemilihan register dengan

menggunakan bit URSEL[3].

Gambar 2.28 UBRRH dan UBRRL[4]

Gambar 2.29 UCSRC[4]

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

3. Bit 11:0 – UBRR11:0 USART Baut Rate Register

Page 62: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

36

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 rumus pada

tabel 2.7.

Tabel 2.7 Pengaturan Baud Rate[3]

Keterangan:

BAUD : Baudrate (bps)

Fosc : Frekuensi Osilator (Frekuensi kristal)

UBRR : Nilai register UBRR (UBRRH-UBRRL)

Pada tabel 2.7 pengaturan Baud Rate dapat dilihat perhitungan baudrate

sering dilakukan pendekatan terhadap hasil perhitungan rumus. Sebagai hasil

pendekatan akan menyebabkan terjadinya error, error yang muncul akibatnya

pendekatan ini dirumuskan:

%1001

BaudRate

BaudRateError chClosestMat

Keterangan:

Error :prosentase error yang dihasilkan

BaudRate :BaudRate hasil perhitungan

Page 63: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

37

BaudRateClosest Match :BaudRate Pembulatan

2.4 Komunikasi Serial

Gambar 2.30 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

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.

Page 64: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

38

5. Arus hubungan singkat tidak boleh melebihi 500 mA.

Gambar 2.30 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.8.

Tabel 2.8 Komunikasi Serial DB9

PIN SIGNAL 1 Data Carrier Detect 2 Received Data 3 Transmitted Data 4 Data Terminal Ready 5 Signal Ground 6 Data Set Ready 7 Request To Send 8 Clear to Send 9 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:

Page 65: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

39

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 akan menerima data-data serial, sedangkan TXD

berfungsi mentransmisikan data-data serial dari mikrokontroler [5]. IC MAX232

dapat dilihat pada gambar 2.31.

Gambar 2.31 IC MAX232[6]

Page 66: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

40

2.5 Relay

Relay adalah suatu komponen elektronika yang akan bekerja bila ada arus

yang melalui kumparannya. Sebuah relay terdiri dari kumparan yang dililitkan

pada inti besi dan kontak-kontak penghubung. Apabila kumparan yang melilit inti

besi dilalui arus listrik maka akan menimbulkan induksi medan magnet, dan

induksi ini akan menarik kontak-kontak penghubung relay. Diagram relay

ditunjukkan pada gambar 2.32 berikut ini.

Gambar 2.32 Relay

Kontak penghubung relay terdiri dari dua bagian, yaitu :

1. Kontak NC (Normally Close)

Kontak penghubung dalam kondisi menutup atau terhubung bila relay

tidak mendapat masukan tegangan pada kumparannya. Tetapi bila

diberi tegangan yang mencukupi pada kumparannya maka kontak

penghubung menjadi terbuka.

2. Kontak NO (Normally Open)

Kontak penghubung dalam kondisi terbuka bila relay tidak mendapat

tegangan pada kumparannya. Tetapi bila diberi tegangan yang

mencukupi pada kumparannya maka kontak penghubung menjadi

tertutup.

Page 67: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

41

2.6 Driver Relay

Relay merupakan suatu modul output yang terdiri dari 8 relay. Relay sering

digunakan baik pada industri, otomotif, ataupun peraltan elektronik lainnya. Realy

berfungsi untuk menghubungkan atau memutus aliran arus listrik yang dikontrol

dengan memberikan tegangan dan arus tertentu pada koilnya dengan memberikan

tegangan dan arus tertentu pada koilnya. Pada IC ULN2803 ini terdapat transistor

darlington yang digunakan untuk menguatkan arus dari mikrokontroler yang

terhubung dengan relay[7], gambar IC ULN 2803 sebagai driver relay dapat

dilihat pada gambar 2.33.

Gambar 2.33 IC ULN2803 Driver Relay[7]

Page 68: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

BAB III

PERANCANGAN PENELITIAN

3.1 Diagram Blok Perancangan CPU PLC

CPU PLC dapat diprogram menggunakan 2 alat pemrogram yaitu PC dan

konsol. Untuk komunikasi konsol dengan CPU PLC menggunakan komunikasi

serial RS-232 dan juga PC dengan CPU PLC menggunakan komunikasi serial RS-

232. Dalam pembuatan CPU PLC ini diperlukan perancangan perangkat keras

maupun perangkat lunak. Penulis disini merancang pada bagian CPU PLC,

komunikasi RS232, input, output. Input terdiri dari 8 saklar on/off dan indikator

led. Output terdiri dari 8 port output yang masing-masing port terhubung dengan

IC driver relay dan output dari IC tersebut terhubung dengan indikator led dan

relay. Perancangan peralatan yang dibuat meliputi penyusunan diagram blok,

rancangan perangkat keras dan bagan alir program (flow chart). Diagram blok

Sistem PLC dapat ditunjukkan pada gambar 3.1.

`

CPU PLC Mikrokontroler

ATmega32

RS 232 untuk komunikasi

INPUT dan

INPUT CNT, TIM

OUTPUT

PC atau KOMPUTER

CONSOLE

Gambar 3.1 Diagram blok sistem CPU PLC

42

Page 69: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

43

3.2 Perancangan Perangkat Keras

Perancangan perangkat keras untuk alat ini menggunakan mikrokontroler

ATmega32. Dan komunikasi antar CPU PLC dengan konsol atau PC

menggunakan komunikasi serial RS-232.

3.2.1 Rangkaian Mikrokontroler

3.2.1.1 Konstruksi Rangkaian Mikrokontroler

Pada perancangan rangkaian CPU PLC yang menggunakan

mikrokontroler ATmega32 ini digunakan untuk menerima data yang masuk,

melalui TX dan RX, yang dikirim lewat PC (personal computer) atau konsol. Di

dalam rangkaian CPU PLC itu akan diolah datanya dan menjalankan subrutinnya

sesuai perintah dari konsol atau PC (personal computer). Dalam pengiriman dan

penerimaan data mikrokontroler menggunakan komunikasi serial RS-232. Untuk

rangkaian utama sistem CPU PLC dapat dilihat pada lampiran. Dari PC data

dikirim melalui konektor DB9 secara serial dan dihubungkan dengan IC max232,

dari IC dihubungkan ke mikrokontroler. Prosesor yang digunakan IC ATmega32

dengan kapasitas memori 32Kbyte terdiri dari 1Kbyte EEPROM dan 2Kbyte

SRAM. Supply untuk mikro sebesar 5 volt. Dalam rangkaian mikro terdapat

indikator-indikator, macam indikator adalah indikator error dihubungkan dengan

pin PD6, indikator RUN dihubungkan dengan pin PD4, indikator supply

dihubungkan dengan pin VCC. Kristal yang digunakan sebesar 4MHz dengan

kapasitor 22pF. Input dan output dihubungkan dengan konektor 10 kaki dengan 2

kaki VCC dan ground dan yang lainnya sebagai penghubung hardware yang

lainnya.

Page 70: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

44

3.2.1.2 Rangkaian Reset

Gambar rangkaian reset dapat dilihat pada gambar 3.2. Reset digunakan

untuk mengembalikan keseluruhan sistem (program) ke awal. Reset terjadi

dengan adanya logika 1 selama minimal 2 cycle (2μ detik) pada kaki reset (pin 9)

berdasarkan datasheet. Pada perancangan, waktu pengosongan dipilih sebesar 10

ms dengan asumsi waktu reset telah lebih dari 2 µs. Bila nilai hambatannya (R)

dipilih 10 kΩ, maka nilai C adalah:

CRT

0,1 = 10.000 x C

C = 10 µF

C4

10uF

SW1

SW PUSHBUTTON

RESET PIN 9

GND

VCC R

10k

Gambar 3.2 Konfigurasi Rangkaian Reset

Saat tombol push button ditekan rangkaian reset akan memberikan

masukan ke mikrokontroler dengan logika low, sedangkan saat tombol reset

dilepas akan berlogika high.

3.2.1.3 Rangkaian Osilator

C2

22pF

C122pF

GND

Y1

4MHzXTAL1

XTAL2

Gambar 3.3 Konfigurasi Rangkaian Osilator

Page 71: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

45

Osilator on-chip digunakan sebagai sumber detak (clock) ke

mikrokontroler. Penentuan Osilator yang digunakan dapat berpengaruh dalam

penggunaan baud rate untuk kecepatan data dalam komunikasi serial RS-232.

Dalam perancangan, kristal yang digunakan adalah kristal 7.2 MHz, karena

dengan kristal ini detak limpahan yang diperoleh berupa bilangan bulat. Gambar

rangkaian osilator dapat dilihat pada gambar 3.3. Untuk perancangan ini, baud

rate kecepatan serial yang digunakan adalah 9600bps dan frekuensi osilator yang

digunakan 7.2MHz, maka dapat diperoleh dengan perhitungan sebagai berikut

dengan menggunakan rumus yang ada pada tabel 2.6:

a. Untuk U2X = 0

46

1960016

7200000

UBRR

UBRR

b. Untuk U2X = 1

93

196008

7200000

UBRR

UBRR

Nilai UBRR di atas akan digunakan pada pemrograman mikrokontroler

sebagai inisialisasi komunikasi serial.

3.2.1.4 Indikator LED

Indikator LED berperan penting dalam CPU PLC. Seperti halnya CPU

PLC yang lainnya juga membutuhkan indikator/penanda. Indikator-indikator yang

dibutuhkan CPU PLC berupa indikator Error, indikator untuk komunikasi serial,

indikator supply DC untuk CPU PLC, indikator input/output.

Page 72: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

46

3.2.1.4.1 Indikator Error

Indikator Error digunakan untuk mendeteksi bila ada data instruksi-

instruksi yang tidak cocok dengan data yang dituliskan di dalam memori CPU

PLC. Pada gambar 3.4 yang menunjukkan rangkaian LED yang digunakan

sebagai indikator error. Untuk menghidupkan LED pada indikator ini, pin PD7

harus bernilai low yang menyatakan error. VCC bernilai sebesar 5V yang

digunakan untuk menghidupkan LED.

VCC

R1330

D1

LED

PD7

Gambar 3.4 Indikator Error CPU PLC

I = 13mA (LED sudah memenuhi arus minimal yang diperlukan agar LED

menyala).

33076.33010.13

7.05

0

32

2

2

I

VVCCR

IVVCC

VIVCC

LED

RLED

LEDR

3.2.1.4.2 Indikator Komunikasi Serial RS-232

Indikator Komunikasi serial digunakan untuk mendeteksi bila ada

program dari Konsol atau PC yang dikirim ke CPU PLC. Pada gambar 3.5 yang

menunjukkan rangkaian indikator komunikasi serial RS-232. Rangkaian indikator

Page 73: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

47

ini terhubung dengan output dari rangkaian RS-232 yang berlogika high atau low,

logika tersebut digunakan untuk mengirim data ke mikrokontroler.

I = 13mA (LED sudah memenuhi arus minimal yang diperlukan agar LED

menyala).

33076.33010.13

7.05

0

32

2

2

I

VVCCR

IVVCC

VIVCC

LED

RLED

LEDR

R1

RESISTOR

D1

LED

RX MAX MIKRO

GND

TX MAX232

Gambar 3.5 Indikator Komunikasi Serial RS-232 dengan CPU PLC

3.2.1.4.3 Indikator Supply CPU PLC

Indikator Supply CPU PLC digunakan untuk mendeteksi CPU PLC

sudah keadaan ON. Pada gambar 3.6 yang menunjukkan rangkaian indikator

supply, indikator ini mendapatkan VCC 5V dan terhubung ke pin VCC pada

mikrokontroler.

Gambar 3.6 Indikator Supplay CPU PLC

Page 74: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

48

I = 13mA (LED sudah memenuhi arus minimal yang diperlukan agar LED

menyala).

33076.33010.13

7.05

0

32

2

2

I

VVCCR

IVVCC

VIVCC

LED

RLED

LEDR

3.2.1.4.4 Indikator Input

Input pada CPU PLC terdiri dari 8 port input, 8 port terhubung dengan

saklar on/off dan indikator led. Jika saklar keadaan on mikro akan aktif dan

memberi inputan data. Indikator Input digunakan untuk memberi tanda ke CPU

PLC, ketika CPU PLC membutuhkan masukkan sesuai dengan program yang

dikirim oleh konsol atau PC. Indikator itu dihubungkan ke pin PA0-7. dan VCC

yang digunakan 5V untuk menghidupkan LED dan saklar on/off yang

dihubungkan ke pin PA0-7 dengan logika high. Pada gambar 3.7 adalah gambar

indikator input.

I = 13mA (LED sudah memenuhi arus minimal yang diperlukan agar LED

menyala).

33076.33010.13

7.05

0

32

2

2

I

VVCCR

IVVCC

VIVCC

LED

RLED

LEDR

Page 75: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

49

Gambar 3.7 Indikator Input

3.2.1.4.5 Indikator Output dan Relay

Indikator Output digunakan untuk memberikan tanda keadaan port

output aktif tinggi dan aktif rendah yang nanti akan dihubungkan dengan relay.

Indikator itu dihubungkan ke pin PC0-7

I = 13mA (LED sudah memenuhi arus minimal yang diperlukan agar LED

menyala).

33076.33010.13

7.05

0

32

2

2

I

VVCCR

IVVCC

VIVCC

LED

RLED

LEDR

Page 76: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

50

Port output dari CPU PLC menggunakan 8 port output, tiap port output

akan dihubungkan dengan IC driver relay. IC yang digunakan yaitu IC

ULN2803A. IC disini adalah sekumpulan transistor Darlington Array dengan

konfigurasi darlington sehingga mempunyai β (penguatan arus) yang besar. IC ini

mampu menguatkan arus dari keluaran mikro untuk mengaktifkan relay. Pada

gambar 3.8 adalah gambar indikator output yang terhubung dengan relay dan

driver relay.

Gambar 3.8 Indikator OUTPUT

Page 77: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

51

Page 78: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

52

3.2.2 Komunikasi Serial RS-232

Komunikasi secara serial (serial communications) merupakan cara

menghantar data yang lebih mudah dikendalikan berbanding dengan komunikasi

parallel (parallel communications) disebabkan sistem komunikasi parallel terlalu

mahal untuk kegunaan jarak jauh. Data yang bernilai 8 bit dikirim secara satu bit

demi satu bit ke mikrokontroler. Pengiriman data pada IC mikrokontroler fasilitas

yang digunakan untuk komunikasi serial adalah UART (Universal Asynchronous

Receiver Transmitter). Komunikasi serial juga boleh disifatkan sebagai simpleks

(simplex), dupleks setengah (half duplex), dan dupleks penuh (full duplex). Port

serial yang terdapat pada PC (personal computer) biasanya berfungsi sebagai port

dupleks penuh. Tegangan pada level RS-232 menjadi 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

data/karakter dari komputer ke mikrokontroler dengan sempurna. Baud rate yang

digunakan adalah 9600 Bps, dengan frekuensi osilator 7.2MHz pada

mikrokontroler. Pada gambar 3.9 adalah gambar konfigurasi komunikasi serial

yang terhubung antara CPU PLC dengan PC.

Page 79: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

53

C4

1uF

/25V

C3

1uF

/25v

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

/25v

GND

VCC

Gambar 3.9 Konfigurasi Komunikasi RS-232

3.3 Perancangan Perangkat Lunak

Mikrokontroler adalah bentuk minimum dari komputer pada sebuah IC yang

berfungsi sebagi unit pengontrol suatu aplikasi tertentu. Mikrokontroler terdiri

dari perangkat keras dan perangkat lunak. Oleh karena itu agar mikrokontroler

dapat dipakai sebagai unit pengontrol tentunya harus diprogram terlebih dahulu.

3.3.1 Komunikasi Serial

Komunikasi data secara serial pada perangkat lunak mikrokontroller

ATmega32 dimulai dengan inisialisasi penggunaan port serial dengan menentukan

mode operasi port serial, pengaturan baudrate, mode komunikasi serial. Dalam

penerimaan data dan pengiriman data secara serial melibatkan USART (Universal

Synchronous and Ashincrounous Serial Receiver and Transmitter), USART

merupakan komunikasi yang memiliki fleksibilitas tinggi, yang dapat digunakan

untuk melakukan transfer data baik antar mikrokontroler maupun dengan modul-

Page 80: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

54

modul eksternal termasuk PC yang memiliki fitur UART. Untuk mengatur mode

dan prosedur komunikasi USART dilakukan melalui register UCSRA, UCSRB,

UCSRC, UBRRH, UBRRL, dan UDR. Pada gambar 3.10 adalah subrutin

komunikasi serial.

Inisialisasi USART (USART keadaan default)

Ada data

masuk ?

Tampung di UDR dan kirim ke memori PLC (memori EEPROM)

Data selesai kirim ?

Tidak

Baca data di memori CPU PLC

Ya

Ya

Tidak

End

Start

Gambar 3.10 Subrutin komunikasi serial

Inisialisasi USART

Dalam proses inisialisasi ada beberapa buah register yang perlu ditentukan

nilainya yaitu : UCSRA, UCSRB, UCSRC, UBRRH, UBRRL. Pada proses

Page 81: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

55

penerimaan data menggunakan mode 8 bit, mode 8 bit ini diatur pada UCSRB

terletak pada UCSZ2 dikondisikan 0, sedangkan UCSRC terletak pada UCSZ1

kondisi 1 dan UCSZ0 kondisi 1. Untuk mode penerimaan terletak pada UCSRA

terletak pada RXC dan TXC dikondisikan 1. Seperti terlihat pada gambar 3.11.

UCSRA

UCSRB

UCSRC

Kondisi default UCSRA

0 0 1 0 0 0 0 0 UCSRB

0 0 0 0 0 0 0 0 UCSRC

1 0 0 0 0 1 1 0 Pengaturan saat mengaktifkan USART UCSRA

1 1 0 0 1 0 0 1 UCSRB

1 1 0 1 0 0 0 0 UCSRC

0 1 1 0 0 1 1 0 Gambar 3.11 Aktivasi komunikasi serial

3.3.2 Diagram alir Utama pada Mikrokontroler

Pemograman mikrokontroler untuk CPU PLC ini digunakan untuk

membaca masukkan kode baik dari Konsol atau dari PC. Kode yang dikirim

Page 82: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

56

adalah logika-logika PLC. Logika-logika itu akan dikerjakan sesuai dengan apa

yang dituliskan. Kode kiriman itu akan dibandingkan dengan kode yang telah

tersimpan di dalam memori utama CPU PLC. Mekanisme kerja diagram alir CPU

PLC sebagai berikut:

Saat Konsol atau PC/Komputer mengirim program berupa kode ke CPU

PLC, CPU PLC mengaktifkan baudrate, port RXC. Kode akan dikirim per bit

sehingga CPU PLC bekerja menerima bit kiriman itu dengan memberi tanda pada

tiap kiriman yaitu bit paritas pada mikrokontrolernya dan diakhiri stop paritas

juga. Sehingga mikrokontroler dapat mengetahui bahwa ada kiriman data yang

harus dikerjakan, komunikasi ini terletak pada USART pada mikrokontroler.

Setelah CPU PLC melakukan komunikasi, CPU PLC akan membaca kode

kiriman. CPU PLC membaca kiriman RUN, CPU PLC akan melakukan eksekusi

kode kiriman. Saat mikrokontroler membaca kiriman kode, kode akan

dibandingkan dengan kode yang telah dituliskan di dalam memori mikrokontroler

tersebut. Setelah kodenya sama CPU PLC mengerjakan sesuai intruksi yang

terpilih. Saat CPU PLC membaca kode END, CPU PLC akan kembali membaca

dari awal lagi. Data hasil komunikasi akan disimpan di memori CPU PLC,

disimpan di memori EEPROM mulai dari alamat 0. Pembacaan kode kiriman

dimulai dari alamat 0 juga. Pada gambar 3.12 adalah subrutin diagram alir utama.

Page 83: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

57

Cek kode = program

Ya

Tidak Jalankan program yang sudah tersimpan di memori CPU PLC

Jalankan subrutin komunikasi serial

Kirim ke memori PLC dan simpan

Masuk ke subrutin pemilihan kode

Masuk ke subrutin pembacaan isi alamat memori PLC

Jalankan program yang sudah dibaca dan dieksekusi

End

Inisialisasi memori PLC Inisialisasi memori utama CPU PLC

Start

Gambar 3.12 diagram alir utama mikrokontroler

3.3.2.1 Subrutin Pembacaan Isi Alamat Memori PLC

Pembacaan memori dilakukan berurutan dari alamat terendah sampai

alamat yang paling tinggi. Isi kode tiap-tiap alamat di memori PLC adalah 8bit.

Dari kode tersebut akan dibaca dan akan dibandingkan dengan memori utama

CPU PLC. Saat kode dikirim oleh konsol dan PC, kode akan di alamatkan pada

Page 84: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

58

memori PLC. Memori PLC ini digunakan untuk menampung kode kiriman,

sehingga alamat memori PLC perlu di inisialisasikan terlebih dahulu supaya

pembacaan memorinya mudah dikenali. Setiap ada kode baru dikirim, kode

tersebut akan selalu dialamatkan dengan alamat yang sama juga (kode baru akan

menumpuk kode yang lama). Kode yang telah dikirim akan dibaca oleh memori

utama CPU PLC akan dibandingkan kodenya dengan memori utama CPU PLC.

Gambar 3.13 adalah diagram alir pembacaan isi alamat memori PLC.

Ada instruksi END ?

Ya

Tidak

Start

Inisialisasi Alamat Memori PLC

Alamat = Alamat + 1

Baca isi Alamat memori PLC

Jalankan subrutin pemilihan kode

Gambar 3.13 Diagram Alir Pembacaan Isi Alamat Memori PLC

3.3.2.2 Subrutin Pemilihan kode

Gambar 3.14, gambar 3.15, gambar 3.16, gambar 3.17 dapat ditunjukkan

diagram alir subrutin pemilihan kode. Subrutin pemilihan kode ini dilakukan pada

Page 85: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

59

mode RUN. Mekanisme kerja pemilihan kode yang sesuai dengan kiriman sebagai

berikut:

1. Membaca memori utama CPU PLC

2. Pilih kode yang sesuai dengan kode kiriman baik dari PC atau dari

console

3. Memilih apakah kodenya sesuai dengan kode yang dituliskan di

memori utama, jika kodenya sama maka jalankan program sesuai

kodenya. Jika kodenya tidak sama maka cocokkan dengan kode yang

lainnya sampai dengan kode terakhir berupa kode END maka

program akan memerintahkan kembali membaca memori utama

(selalu berulang terus).

END

Baca memori utama CPU PLC

Kode = LD NOT

Kode = LD

Kode = AND NOT

ENDEND

H

Pilih kode yang sesuai

YA

Jalankan subrutin LD

NOT

YA

Jalankan subrutin LD

YA

Jalankan subrutin

AND NOT

Tidak Tidak A

Tidak

Start

Gambar 3.14 Subrutin pemilihan kode

Page 86: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

60

Kode = AND

A

END

Kode = OR NOT

Kode = OR

Jalankan subrutin AND

Tidak Tidak B Tidak

YA

ENDEND

YA

Jalankan subrutin OR

NOT

YA

Jalankan subrutin OR

Kode = AND TIM

END

Kode = AND TIM NOT

Jalankan subrutin AND TIM

Jalankan subrutin AND TIM NOT

C

Kode = Timer

END

Kode = LDTIM

END

Kode = LD TIM

Not

END

Jalankan subrutin Timer

B

YA YA YA

Jalankan subrutin LD TIM NOT

Jalankan subrutin LDTIM

Tidak

C Tidak Tidak

Tidak D Tidak

YA YA

END

Gambar 3.15 lanjutan Subrutin pemilihan kode

Page 87: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

61

Kode = OR TIM

END

Kode = OR TIM NOT

END

D

Jalankan subrutin OR TIM NOT

Jalankan subrutin OR TIM

Tidak Kode = Counter E

Jalankan subrutin counter

YA

END

Tidak

YA YA

Kode = LD CNT

END

Kode = LD CNT NOT

E

Jalankan subrutin LD CNT NOT

Jalankan subrutin LD CNT

Tidak F Tidak

YA YA

END

Kode = AND CNT

END

Jalankan subrutin AND CNT

Tidak Kode = AND CNT NOT

Jalankan subrutin AND CNT NOT

Tidak G

YA

END

F

YA

Gambar 3.16 Lanjutan subrutin pemilihan kode

Page 88: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

62

Kode = OR CNT

END

Jalankan subrutin OR CNT

YA

Tidak

G

Kode = OR CNT NOT

END

YA

Tidak Tidak H

YA

Jalankan subrutin END program

Jalankan subrutin OR CNT NOT

END

Kode = END

program

Gambar 3.17 Lanjutan subrutin pemilihan kode

3.3.2.3 Subrutin Logika LD

Pada pemograman untuk logika LD pada PLC merupakan awal dari

sebuah program yang dituliskan oleh Konsol atau PC. Program LD sendiri adalah

program yang menghubungkan logika-logika PLC dengan logika-logika PLC

yang lainnya, dengan keadaan awal OFF dan akan ON jika diberi masukkan. Saat

Konsol atau PC mengirim kode ke memori PLC, saat itu pula memori utama akan

siap membaca kiriman untuk dibandingkan dengan memori utama. Gambar 3.18

adalah diagram alir subrutin logika LD.

Sistem kerja logika LD adalah saat PLC diberi inputan data logika LD

ini berfungsi sebagai awal dari program PLC. Saat baca data dari port input data

itu akan disimpan pada alamat penyimpan 1. Setelah data tersimpan di alamat

penyimpan 1 data tersebut akan digeser sesuai port input. Setelah data digeser data

Page 89: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

63

tersebut akan disimpan di alamat penyimpan 2. Setelah selesai menyimpan logika

ini diperintahkan untuk kembali membaca memori PLC.

Baca port input dan baca data (isi port)

Simpan hasil geser ke alamat penyimpan 2

Jalankan operasi geser sesuai dengan alamat port

input

Simpan data ke alamat penyimpan 1(data=Port

Input)

YA

Tidak Simpan data ke alamat penyimpan 1(data=0x00)

Simpan ke alamat penyimpan 2

Kembali

Ada input ?

Alamat = alamat + 1

Kembali

Start

Gambar 3.18 Diagram alir Subrutin LD

3.3.2.4 Subrutin Logika LDNOT

Pemograman pada mikrokontroler dengan logika LDNOT hamper sama

dengan logika LD, bedanya dengan logika LD disini adalah LDNOT sebelum

diberi masukkan sudah aktif terlebih dahulu dan jika diberi masukkan logika

Page 90: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

64

tersebut akan off. Proses pengiriman dan pembacaan sama dengan program LD.

Sistem kerja dari LDNOT adalah data dari port input akan dibaca dan akan di

NOT kan terlebih dahulu. Setelah di NOT kan data tersebut akan disimpan pada

alamat penyimpan 1. Setelah disimpan data tersebut akan digeser sesuai dengan

alamat port input, ketika mikro menjalankan operasi geser data tersebut akan

disimpan di alamat penyimpan 2. Setelah data tersimpan logika ini akan

diperintahkan untuk kembali membaca memori PLC dan melakukan subrutin

yang lainnya. Gambar 3.19 adalah diagram subrutin logika LDNOT.

Start

Baca port input dan baca data (isi port)

Simpan ke alamat penyimpan 2

Simpan data ke alamat penyimpan 1(data=0x00)

YA

Tidak Simpan data ke alamat penyimpan 1(data=0xFF)

Simpan ke alamat penyimpan 2

Kembali

Ada input ?

Alamat = alamat + 1

Kembali

Gambar 3.19 Diagram alir Subrutin LDNOT

Page 91: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

65

3.3.2.5 Subrutin Logika AND

Pemrograman untuk logika AND, logika AND akan aktif jika kedua

masukkan aktif atau berlogika 1, dan jika salah satu kedua masukkan tidak aktif

atau berlogika 0, logika AND tidak akan aktif. Sistem kerja dari logika AND

adalah baca port input terlebih dahulu setelah terbaca datanya disimpan dialama

penyimpan 1 dan geser datanya, setelah digeser data tersebut di AND kan dengan

Simpan hasil AND ke alamat penyimpan 2

Gambar 3.20 Diagram alir Subrutin AND

Jalankan operasi geser sesuai dengan alamat port input

Baca port input dan baca data (isi port)

Alamat penyimpan 2 di AND kan dengan hasil operasi geser

Simpan data ke alamat penyimpan 1(data=Port Input)

Alamat = alamat + 1

Simpan hasil AND ke alamat penyimpan 2

Jalankan operasi geser sesuai dengan alamat port input

Alamat penyimpan 2 di AND kan dengan hasil operasi geser

Simpan data ke alamat penyimpan 1(data=0x00)

Kembali

Tidak

YA

Ada Input?

Kembali

Start

Page 92: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

66

data port input dan simpan di alamat penyimpan 2. Gambar 3.20 adalah diagram

alir subrutin logika AND.

3.3.2.6 Subrutin Logika ANDNOT

Simpan hasil AND ke alamat penyimpan 2

Jalankan operasi geser sesuai dengan alamat port input

Baca port input dan baca data (isi port)

Alamat penyimpan 2 di AND kan dengan hasil operasi geser

Simpan data yang di NOT kan ke alamat penyimpan 1(data=0x00)

Alamat = alamat + 1

Simpan hasil AND ke alamat penyimpan 2

Jalankan operasi geser sesuai dengan alamat port input

Alamat penyimpan 2 di AND kan dengan hasil operasi geser

Simpan data ke alamat penyimpan 1(data=0xFF)

Kembali

Tidak

YA

Ada Input?

Kembali

Start

Gambar 3.21 Diagram alir Subrutin ANDNOT

Pemrograman logika ANDNOT sama dengan logika NAND, jika salah

satu aktif atau berlogika 1 maka keadaan akan aktif. Keadaan awal logika

ANDNOT disini sudah aktif dan jika mendapat masukkan logika ini akan off.

Page 93: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

67

Sistem kerja dari logika ANDNOT adalah data port input akan dibaca dan akan

NOT kan terlebih dahulu, setelah di NOT kan data disimpan di alamat penyimpan

1. Setelah disimpan data tersebut akan digeser dan akan di AND kan dengan data

input, dan akan disimpan pada alamat penyimpan 2. Gambar 3.21 adalah diagram

alir subrutin logika ANDNOT.

3.3.2.7 Subrutin OR

Simpan hasil OR ke alamat penyimpan 2

Gambar 3.22 Diagram alir Subrutin OR

Jalankan operasi geser sesuai dengan alamat port input

Baca port input dan baca data (isi port)

Alamat penyimpan 2 di OR kan dengan hasil operasi geser

Simpan data ke alamat penyimpan 1(data=Port Input)

Alamat = alamat + 1

Simpan hasil OR ke alamat penyimpan 2

Jalankan operasi geser sesuai dengan alamat port input

Alamat penyimpan 2 di OR kan dengan hasil operasi geser

Simpan data ke alamat penyimpan 1(data=0x00)

Kembali

Tidak

YA

Ada Input?

Kembali

Start

Page 94: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

68

Logika ini akan aktif jika salah satu inputan diberi masukan. Sistem kerja

dari logika OR adalah data dari port input akan dibaca dan akan disimpan di

alaamat penyimpan 1. setelah tersimpan data tersebut akan digeser sesuai dengan

alamat port input, setelah tersimpan data tersebut akan di OR kan dengan data port

input dan akan disimpan di alamat penyimpan 2. Setelah tersimpan mikro akan

memerintahkan untuk membaca kembali isi memori PLC. Gambar 3.22 adalah

diagram alir subrutin logika OR.

3.3.2.8 Subrutin OR NOT

Logika ORNOT adalah logika dari kebalikannya logika OR, logika

ORNOT ini sudah aktif terlebih dahulu. Jika logika ORNOT mendapat masukan

logika ini tidak akan aktif. Pada mikrokontroler logika ORNOT merupakan hasil

dari logika OR di NOT kan ( 1 di NOT kan menjadi 0 ). Gambar 3.23 adalah

diagram alir subrutin logika ORNOT.

Sistem kerja dari logika ORNOT adalah baca data dari port input, data

tersebut akan di NOT kan terlebih dahulu sesuai data inputnya.setelah di NOT kan

data itu akan digeser sesuai dengan port inputnya. Dan data itu akan disimpan di

alamat penyimpan 1. Setelah data tersimpan data tersebut akan di ORNOT kan

dengan data input. Setelah di ORNOT kan data tersebut disimpan di alamat

penyimpan 2. Setelah data tersimpan pada program mikronya akan

memerintahkan untuk membaca kembali memori PLC.

Page 95: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

69

Simpan hasil OR ke alamat penyimpan 2

Jalankan operasi geser sesuai dengan alamat port input

Baca port input dan baca data (isi port)

Alamat penyimpan 2 di OR kan dengan hasil operasi geser

Simpan data yang di NOT kan ke alamat penyimpan 1(data=0x00)

Alamat = alamat + 1

Simpan hasil OR ke alamat penyimpan 2

Jalankan operasi geser sesuai dengan alamat port input

Alamat penyimpan 2 di OR kan dengan hasil operasi geser

Simpan data ke alamat penyimpan 1(data=0xFF)

Kembali

Tidak

YA

Ada Input?

Kembali

Start

Gambar 3.23 Diagram alir Subrutin ORNOT

3.3.2.9 Subrutin Logika Timer

Logika timer, pada pemrograman mikrokontroler menggunakan

frekuensi 7.2MHz untuk 1 clocknya.

TCCR1B

Page 96: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

70

TIMSK

TIFR

Kondisi timer yang digunakan TCCR1B

0 0 0 0 0 1 0 1 TIMSK

0 0 0 0 0 1 0 0 TIFR

0 0 0 0 0 1 0 0 Gambar 3.24 aktivasi timer1

Pada perancangan timer, kristal yang digunakan sebesar 7.2MHz sehingga untuk

mengaktifkan timer satu detik sama dengan 7200000 siklus. Untuk mengatur

prescaler dapat dilihat pada tabel 2.6, jika prescaler yang di inginkan adalah 64,

akan di dapatkan sebagai berikut:

11250064

72000001 ms

Oleh karena timer count up dan overflow jika melewati $FFFF ke $0000, maka

register TCNT1 diisi dengan 112500.

//inisialisasi timer void timer1_ctc_init(void)//inisialisasi timer n=dataku;//data timer yang diinginkan TCCR1A |=(0<<WGM11)|(0<<WGM10); TCCR1B |=(1<<WGM12)|(1<<CS11)|(1<<CS10);//1:64 OCR1A =(n)*(112500);//tundaan 1 detik f=7.2Mhz TIMSK |=_BV(TOIE1); TIFR &= (1<<OCF0); for(;;) if(TCNT1==OCR1A)//jika cacah timer=data yang dituliskan pada timer

Page 97: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

71

rina1[4]=TCNT1;nilai TCNT1 disimpan di rina1 alamat++; dataku=eeprom_read_byte((uint8_t*)alamat); TIFR=(1<<OCF1A);mereset kembali timer cek();

Sistem kerja dari timer adalah timer di dalam mikrokontroler akan

terlebih dahulu diatur prescalernya. Untuk timer disini diatur dengan prescaler 64

supaya timer bekerja dengan baik. Saat timer telah aktif dan mencapai overflow

timer akan mereset sendiri atau membuat diri timer sendiri menjadi nol. Jika timer

yang di inginkan 5 ms maka timer di dalam mikro akan mengalikan dengan timer

1 ms dan akan menyimpan hasil perkalian. Inisialisasi timer meliputi TCCR1A,

TCCR1B, OCR1A, TIMSK, TIFR. TCCR1A dan TCCR1B digunakan untuk

mengatur mode timer yang menggunakan mode CTC, register OCR1A digunakan

untuk mengatur waktu tunda selama 1 ms, register TIMSK digunakan untuk

mengatur timer 1. Register TIFR digunakan untuk mengetahui apakah terjadi

permintaan interupsi timer atau tidak. Pertama TIFR diset 0 dan saat timer aktif

TIFR berubah menjadi 1. Untuk mengaktifkan timer kembali menggunakan

register TIFR yang di OR kan dengan register OCF1A, register OCF1A bernilai 1.

CPU PLC mengatur OCF1A 1 ms dengan mode 3 yaitu clock timer 1 sama

dengan 1/64 frekuensi kristal yang digunakan CPU PLC, frekuensi yang

digunakan 7,2 MHz.. Setelah tersimpan timer akan aktif dengan timer value yang

telah di simpan. Timer disini akan selalu mengecek apakah timer sudah terpenuhi

semuanya sesuai timer yang diinginkan, Gambar 3.25 adalah diagram alir subrutin

timer.

Page 98: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

72

Start

Inisialisasi timer (pengaturan prescaler)

Inisialisasi konstanta pengali untuk timer 1 detik

Baca data input

Jalankan operasi perkalian antara data input dengan data yang telah di set

Simpan data hasil perkalian

Aktifkan timer mikro dengan timer value yang sesuai dengan data hasil perkalian

Jalankan proses timer

Timer selesai ?

Status = 1

Status = 0

Ya

Tidak

Kembali

Gambar 3.25 subrutin timer

Page 99: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

73

3.3.2.10 Subrutin Logika LD TIM

Baca status timer

simpan data ke alamat penyimpan 1

Baca data #11111111b

Status =1 Tidak

Ya

Baca data #00000000b

Jalankan operasi geser

Simpan ke alamat penyimpan 2

Kembali

Start

Gambar 3.26 logika LD TIM

Sistem kerja logika LD TIM adalah saat logika timer selesai logika LD

TIM akan bekerja membaca status timer, jika status timer = 1 data akan dibaca

#11111111b dan akan disimpan dialamat penyimpan 1. Jika sudah tersimpan data

tersebut akan digeser sebanyak 0 kali dan hasil geser tersebut akan disimpan di

alamat penyimpan 2. Setelah tersimpan program di dalam mikro memerintahkan

untuk membaca kembali. Digeser 0 kali dikarenakan data yang akan keluar dan

Page 100: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

74

akan disimpan adalah data #11111111b, jadi data berapapun yang digeser data

tersebut akan sama. Gambar 3.26 adalah diagram alir subrutin logika LD TIM.

3.3.2.11 Subrutin Logika LD TIM NOT

Baca status timer

simpan data ke alamat penyimpan 1

Baca data #00000000b

Status =1 Tidak

Ya

Baca data #11111111b

Jalankan operasi geser

Simpan ke alamat penyimpan 2

Kembali

Start

Gambar 3.27 logika LD TIM NOT

Sistem kerja logika LD TIM NOT adalah saat logika timer selesai logika

LD TIM NOT akan bekerja membaca status timer, jika status timer = 1 data akan

dibaca #00000000b dan akan disimpan dialamat penyimpan 1. Jika sudah

tersimpan data tersebut akan digeser sebanyak 0 kali dan hasil geser tersebut akan

disimpan di alamat penyimpan 2. Setelah tersimpan program di dalam mikro

Page 101: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

75

memerintahkan untuk membaca kembali. Digeser 0 kali dikarenakan data yang

akan keluar dan akan disimpan adalah data #00000000b, jadi data berapapun yang

digeser data tersebut akan sama. Gambar 3.27 adalah diagram alir subrutin logika

LD TIM NOT.

3.3.2.12 Subrutin Logika AND TIM

Baca status timer

Jalankan operasi geser

simpan data ke alamat penyimpan 1

Baca data #11111111b

Status =1 Tidak

Ya

Data timer yang telah digeser di AND kan dengan data timer yang tersimpan di

alamat penyimpan 2

Baca data #00000000b

Simpan ke alamat penyimpan 2

Kembali

Start

Gambar 3.28 Logika AND TIM

Page 102: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

76

Sistem kerja logika AND TIM adalah saat logika timer selesai logika

AND TIM akan bekerja membaca status timer, jika status timer = 1 data akan

dibaca #11111111b dan akan disimpan dialamat penyimpan 1. Jika sudah

tersimpan data tersebut akan digeser sebanyak 0 kali dan hasil geser tersebut akan

di AND kan dengan data dialamat penyimpan 2 dan akan disimpan di alamat

penyimpan 2. Setelah tersimpan program di dalam mikro memerintahkan untuk

membaca kembali memori PLC. Digeser 0 kali dikarenakan data yang akan keluar

dan akan disimpan adalah data #11111111b, jadi data berapapun yang digeser

data tersebut akan sama. Gambar 3.28 adalah diagram alir subrutin logika AND

TIM.

3.3.2.13 Subrutin Logika AND TIM NOT

Sistem kerja logika AND TIM NOT adalah saat logika timer selesai

logika AND TIM NOT akan bekerja membaca status timer, jika status timer = 1

data akan dibaca #00000000b dan akan disimpan dialamat penyimpan 1. Jika

sudah tersimpan data tersebut akan digeser sebanyak 0 kali dan hasil geser

tersebut akan di AND kan dengan data dialamat penyimpan 2 dan akan disimpan

di alamat penyimpan 2. Setelah tersimpan program di dalam mikro

memerintahkan untuk membaca kembali. Digeser 0 kali dikarenakan data yang

akan keluar dan akan disimpan adalah data #00000000b, jadi data berapapun yang

digeser data tersebut akan sama. Gambar 3.29 adalah diagram alir subrutin logika

AND TIM NOT.

Page 103: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

77

Baca status timer

Jalankan operasi geser

simpan data ke alamat penyimpan 1

Baca data #00000000b

Status =1 Tidak

Ya

Data timer yang telah digeser di AND kan dengan data timer yang tersimpan di

alamat penyimpan 2

Baca data #11111111b

Simpan ke alamat penyimpan 2

Kembali

Start

Gambar 3.29 Logika AND TIM NOT

Page 104: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

78

3.3.2.14 Subrutin Logika OR TIM

Baca status timer

Jalankan operasi geser

simpan data ke alamat penyimpan 1

Baca data #11111111b

Status =1 Tidak

Ya

Baca data #00000000b

Data timer yang telah digeser di OR kan dengan data timer yang tersimpan di alamat penyimpan 2

Simpan ke alamat penyimpan 2

Kembali

Start

`

Gambar 3.30 Logika OR TIM

Sistem kerja logika OR TIM adalah saat logika timer selesai logika OR

TIM akan bekerja membaca status timer, jika status timer = 1 data akan dibaca

#11111111b dan akan disimpan dialamat penyimpan 1. Jika sudah tersimpan data

tersebut akan digeser sebanyak 0 kali dan hasil geser tersebut akan di OR kan

dengan data di alamat penyimpan 2 dan akan disimpan di alamat penyimpan 2.

Setelah tersimpan program di dalam mikro memerintahkan untuk membaca

Page 105: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

79

kembali memori PLC. Digeser 0 kali dikarenakan data yang akan keluar dan akan

disimpan adalah data #11111111b, jadi data berapapun yang digeser data tersebut

akan sama. Gambar 3.30 adalah diagram alir subrutin logika OR TIM.

3.3.2.15 Subrutin Logika OR TIM NOT

Baca status timer

Jalankan operasi geser

simpan data ke alamat penyimpan 1

Baca data #00000000b

Status =1 Tidak

Ya

Baca data #11111111b

Data timer yang telah digeser di OR kan dengan data timer yang tersimpan di alamat penyimpan 2

Simpan ke alamat penyimpan 2

Kembali

Start

Gambar 3.31 Logika OR TIM NOT

Sistem kerja logika OR TIM NOT adalah saat logika timer selesai logika

OR TIM NOT akan bekerja membaca status timer, jika status timer = 1 data akan

dibaca #00000000b dan akan disimpan dialamat penyimpan 1. Jika sudah

Page 106: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

80

tersimpan data tersebut akan digeser sebanyak 0 kali dan hasil geser tersebut akan

di OR kan dengan data di alamat penyimpan 2 dan akan disimpan di alamat

penyimpan 2. Setelah tersimpan program di dalam mikro memerintahkan untuk

membaca kembali. Digeser 0 kali dikarenakan data yang akan keluar dan akan

disimpan adalah data #00000000b, jadi data berapapun yang digeser data tersebut

akan sama. Gambar 3.31 adalah diagram alir subrutin logika OR TIM NOT.

3.3.2.16 Subrutin Logika OUT

Logika OUT dalam PLC cara yang paling mudah untuk mengeluarkan

hasil kombinasi kondisi eksekusi dengan menyambung langsung dengan keluaran

melalui intstruksi OUTPUT (OUT) ataupun OUTPUT NOT (OUTNOT). Kedua

instruksi ini digunakan untuk mengontrol bit operan yang bersangkutan berkaitan

dengan kondisi eksekusi (apakah ON atau OFF). Dengan menggunakan instruksi

OUT, maka bit operan akan menjadi ON jika kondisi eksekusinya juga ON.

Sistem kerja dari logika OUT adalah saat logika OUT bekerja saat logika

–logika yang diinginkan telah bekerja dan disimpan dialamat penyimpan 2. Data

dialamat penyimpan 2 dibaca dan dicek terlebih dahulu apa datanya lebih dari

0x00 jika ya data di OR kan dengan 0xFF dan disimpan di variabel temp, dan

kembali lagi di AND kan dengan port output yang diinginkan dan kembali lagi

disimpan di variabel temp, setelah disimpan data di OR kan dengan port output

yang diinginkan dan kembali lagi membaca memori CPU PLC. Gambar 3.32

adalah diagram alir subrutin logika OUT.

Page 107: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

81

Baca hasil data sementara pada alamat penyimpan 2

Simpan data di variabel temp

Data di OR kan 0xFF

Simpan lagi di variabel temp

Data dari variabel temp di AND kan dengan port output yang diinginkan

Data dari variabel temp di OR kan dengan Port output yang diinginkan

Cek data lebih dari

0x00 ?

YA

Tidak

Data dari variabel temp di OR kan dengan Port output yang diinginkan

Data dari variabel temp di AND kan dengan 0x00

Simpan lagi di variabel temp

Data 0x00 di OR kan 0xFF

Simpan data di variabel temp

Kembali

Start

Gambar 3.32 Diagram alir Logika OUT

3.3.2.17 Subrutin Logika OUTNOT

Pada pemrograman mikrokontroler logika OUTNOT, dengan logika

telah aktif terlebih dahulu, jika mendapat masukkan logika OUTNOT tidak akan

Page 108: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

82

aktif. Logika ini akan dihubungkan ke aplikasi yang digunakan sesuai dengan

program yang telah dituliskan oleh Konsol atau PC. Gambar 3.33 adalah diagram

alir subrutin logika OUTNOT.

Start

Baca hasil data sementara pada

alamat penyimpan 2

Data di OR kan 0x00

Simpan data di variabel temp

Simpan lagi di variabel temp

Data dari variabel temp di AND kan dengan port output yang diinginkan

Data dari variabel temp di OR kan dengan Port output yang diinginkan

Cek data lebih dari

0x00 ?

YA

Tidak

Data dari variabel temp di OR kan dengan Port output yang diinginkan

Data dari variabel temp di AND kan dengan 0x00

Simpan lagi di variabel temp

Data 0x00 di OR kan 0x00

Simpan data di variabel temp

Kembali

Gambar 3.33 Diagram alir Logika OUT NOT

Page 109: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

83

3.3.2.18 Subrutin Logika Counter

Logika Counter pada pemrograman mikrokontroler digunakan untuk

mencacah dan diberi masukkan. Logika Counter dalam PLC sama dengan logika

dalam mikrokontroler, logika Counter aktif setelah mencacah. Gambar 3.34 dan

gambar 3.35 adalah diagram alir subrutin logika Counter dan logika proses CNT.

Inisialisasi Register counter Rc = 0

Inisialisasi port input

Baca data CNT

Simpan Rc = data CNT

CNT Selesai ?

Masuk ke subrutin proses CNT

Status = 1 Status = 0

Tidak

YA

End

Start

Gambar 3.34 Logika Counter

Page 110: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

84

Baca port input

Geser sesuai port

Baca logika

Port input berubah ?

Ya

Ada kode Load

setelah kode CNT

Baca kode data

Dec Rc

Tidak

Tidak Program Error

Ya

Start

kembali

Gambar 3.35 Proses CNT

Logika counter disini bekerja sebagai pencacah, logika counter akan

aktif jika diberi masukan pada port input. Kerja dari logika counter saat aktif naik

Page 111: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

85

dan aktif turun, jika logika aktif naik maka conter mencacah 1 dan seterusnya, dan

jika counter berlogika aktif turun counter tidak mencacah. Register counter disini

digunakan untuk menyimpan data dari port input. Setelah tersimpan di register

counter mikro akan membaca perubahan kondisi apakah kondisi naik/mendapat

input atau kondisi turun/tidak mendapat input. Dan mikro akan mengurangi data

sesuai data counter yang diinginkan jika port input mendapat masukan. Setelah

mengurangi mikro akan mengecek apakah isi register counter sudah sama dengan

nol, jika sama dengan nol simpan hasil counter dan menjalankan proses counter.

Setelah menjalankan proses counter, counter akan mengecek statusnya. Apakah

status counter status = 1 atau status = 0 counter akan selalu menempatkan data

terakhir dieksekusi supaya jalannya program tidak terganggu. Dan jika sudah

terpenuhi maka counter akan melanjutkan ke logika counter yang diinginkan oleh

PLC. Dalam logika counter ini harus terdapat logika LD setelah menuliskan

logika counter, dituliskan logika LD dikarenakan data input dari logika counter ini

adalah data input dari port yang bias mengaktifkan counter sendiri yang didalam

mikrokontroler.

3.3.2.19 Subrutin Logika LD CNT

Sistem kerja dari logika LD CNT adalah saat logika counter selesai

logika LD CNT akan bekerja membaca status counter, jika status counter = 1 data

akan dibaca #11111111b dan akan disimpan di alamat penyimpan 1. jika sudah

tersimpan data akan digeser sebanyak 0 kali dan hasil geser data akan disimpan di

alamat penyimpan 2, setelah tersimpan dialamat penyimpan 2 mikro akan

memerintahkan kembali membaca instruksi selanjutnya. Digeser 0 kali

Page 112: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

86

dikarenakan data yang akan keluar dan akan disimpan adalah data #11111111b,

jadi data berapapun yang digeser data tersebut akan sama. Gambar 3.36 adalah

diagram alir subrutin logika LD CNT

Baca status counter

Jalankan operasi geser

simpan data ke alamat penyimpan 1

Baca data #11111111b

Ya

Status =1 Tidak

Baca data #00000000b

Simpan ke alamat penyimpan 2

Kembali

Start

Gambar 3.36 Logika LD CNT

Page 113: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

87

3.3.2.20 Subrutin Logika LD CNT NOT

Sistem kerja dari logika LD CNT NOT adalah saat logika counter

selesai logika LD CNT NOT akan bekerja membaca status counter, jika status

counter = 1 data akan dibaca #00000000b dan akan disimpan di alamat

penyimpan 1. Jika sudah tersimpan data akan digeser, hasil geser data akan di

simpan di alamat penyimpan 2. jika sudah tersimpan mikro akan memerintahkan

untuk kembali membaca instruksi selanjutnya. Digeser 0 kali dikarenakan data

Baca status Counter

Jalankan operasi geser

simpan data ke alamat penyimpan 1

Baca data #00000000b

Ya

Status =1 Tidak

Baca data #11111111b

Simpan ke alamat penyimpan 2

Kembali

Start

Gambar 3.37 logika LD CNT NOT

Page 114: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

88

yang akan keluar dan akan disimpan adalah data #00000000b, jadi data berapapun

yang digeser data tersebut akan sama. Gambar 3.37 adalah diagram alir subrutin

logika LD CNT NOT.

3.3.2.21 Subrutin Logika AND CNT

Baca status counter

Jalankan operasi geser

simpan data ke alamat penyimpan 1

Baca data #11111111b

Status =1 Tidak

Ya

Data counter yang telah digeser di AND kan dengan data counter yang tersimpan

di alamat penyimpan 2

Baca data #00000000b

Simpan ke alamat penyimpan 2

Kembali

Start

Gambar 3.38 Logika AND CNT

Sistem kerja logika AND CNT adalah saat logika counter selesai logika

AND CNT akan bekerja membaca status counter, jika status counter = 1 data akan

Page 115: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

89

dibaca #11111111b dan akan disimpan di alamat penyimpan 1. Jika sudah

tersimpan di lakukan penggeseran data dan hasil geser tersebut akan di AND kan

dengan data di alamat penyimpan 2 dan akan disimpan di alamat penyimpan 2.

Gambar 3.38 adalah diagram alir subrutin logika AND CNT.

3.3.2.22 Subrutin Logika AND CNT NOT

Baca status counter

Jalankan operasi geser

Kembali

simpan data ke alamat penyimpan 1

Baca data #00000000b

Status =1 Tidak

Ya

Data counter yang telah digeser di AND kan dengan data counter yang tersimpan di alamat penyimpan 2

Baca data #11111111b

Simpan ke alamat penyimpan 2

Start

Gambar 3.39 Logika AND CNT NOT

Page 116: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

90

Sistem kerja logika AND CNT NOT adalah saat logika counter selesai

logika AND CNT NOT akan bekerja membaca status counter, jika status counter

= 1 data akan dibaca #00000000b dan akan disimpan di alamat penyimpan 1. Jika

sudah tersimpan dilakukan penggeseran data, hasil penggeseran data di AND kan

dengan data di alamat penyimpan 2. hasil AND akan disimpan dialamat

penyimpan 2. Setelah disimpan mikro akan memerintahkan kembali membaca

instruksi selanjutnya. Digeser 0 kali dikarenakan data yang akan keluar dan akan

disimpan adalah data #00000000b, jadi data berapapun yang digeser data tersebut

akan sama. Gambar 3.39 adalah diagram alir subrutin logika AND CNT NOT.

3.3.2.23 Subrutin Logika OR CNT

Sistem kerja logika OR CNT adalah saat counter selesai logika OR CNT

akan bekerja membaca status counter, jika status counter = 1 data akan dibaca

#11111111b dan akan disimpan di alamat penyimpan 1. Jika sudah tersimpan data

akan digeser dan hasil geser akan di OR kan dengan data di alamat penyimpan 2

dan disimpan di alamat penyimpan 2. Setelah tersimpan mikro akan

memerintahkan membaca kembali instruksi di memori PLC. Digeser 0 kali

dikarenakan data yang akan keluar dan akan disimpan adalah data #11111111b,

jadi data berapapun yang digeser data tersebut akan sama. Gambar 3.40 adalah

diagram alir subrutin logika OR CNT.

Page 117: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

91

Baca status counter

Jalankan operasi geser

simpan data ke alamat penyimpan 1

Baca data #11111111b

Status =1 Tidak

Ya

Data counter yang telah digeser di OR kan dengan data counter yang tersimpan di alamat penyimpan 2

Baca data #00000000b

Simpan ke alamat penyimpan 2

Kembali

Start

Gambar 3.40 Logika OR CNT

3.3.2.24 Subrutin Logika OR CNT NOT

Sistem kerja logika OR CNT NOT adalah saat logika counter selesai

logika OR CNT NOT akan bekerja membaca status counter, jika status counter =

1 data akan dibaca #00000000b dan akan disimpan di alamat penyimpan 1. Jika

sudah tersimpan, dilakukan penggeseran data dan hasil penggeseran akan di OR

kan dengan data di alamat penyimpan 2 dan hasil OR tersebut di simpan di alamat

Page 118: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

92

penyimpan 2, setelah tersimpan mikro akan memerintahkan kembali membaca

instruksi selanjutnya di memori PLC. Digeser 0 kali dikarenakan data yang akan

keluar dan akan disimpan adalah data #00000000b, jadi data berapapun yang

digeser data tersebut akan sama. Gambar 3.41 adalah diagram alir subrutin logika

OR CNT NOT.

Kembali

Simpan ke alamat penyimpan 2

Baca status counter

Jalankan operasi geser

Data counter yang telah digeser di OR kan dengan data counter yang tersimpan di alamat penyimpan 2

simpan data ke alamat penyimpan 1

Baca data #00000000b

Status =1 Tidak

Ya

Baca data #11111111b

Start

Gambar 3.41 Logika OR CNT NOT

Page 119: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

BAB IV

HASIL PENGAMATAN DAN PEMBAHASAN

Pada bab IV ini penulis akan menjelaskan hasil pengamatan dari peralatan

yang dibuat oleh penulis. Dari pengujian ini akan didapatkan data-data maupun

bukti-bukti hasil akhir dari kenyataan, apakah perangkat keras dan lunak yang

telah dibuat bisa bekerja sesuai dengan perancangan atau tidak. Berdasarkan data

dan bukti-bukti tersebut dapat dilakukan analisa terhadap proses kerja yang

nantinya dapat digunakan untuk menarik kesimpulan dari apa yang telah disajikan

dalam tugas akhir ini.

4.1 Model CPU PLC

Gambar 4.1 Model CPU PLC

1 2 3 4

Keterangan gambar:

1. Rangkaian CPU PLC menggunakan ATMEGA32

2. Rangkaian komunikasi

3. Rangkaian INPUT CPU PLC

4. Rangkaian OUTPUT CPU PLC

93

Page 120: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

94

CPU PLC di atas menggunakan mikro ATmega32. Port A sebagai port

input, port C sebagai port output. Port input menggunakan logika high, logika

high dilogikakan 1. Demikian juga pada port output. Untuk komunikasi data dari

CPU PLC ke console ataupun dari CPU PLC ke PC menggunakan IC max232

yang menggunakan komunikasi asinkron, dengan piranti kabel serial. Cara

penggunaan CPU PLC disini adalah:

a) Hubungkan kabel serial.

b) Hidupkan supply tegangan 12V.

c) Kirim data ke CPU PLC baik menggunakan console ataupun PC. Jika data

dikirim, CPU PLC akan mengirimkan tanda “!” ke alat pengirim data.

Tanda “!” tersebut adalah tanda pengiriman sukses.

d) Beri input sesuai data kiriman atau diagram ladder, jika tidak diberi input,

CPU PLC tidak akan berfungsi. Jika CPU PLC diberi input, CPU PLC

akan mengerjakan fungsi-fungsi dari diagram ladder yang telah dituliskan

dengan mnemonic.

e) Hasil eksekusi dapat dilihat pada port output. Setelah terlihat hasilnya,

CPU PLC akan mengulang membaca data kiriman.

4.2 Prinsip dan cara kerja CPU PLC

CPU PLC ini menggunakan IC mikrokontroler ATMEGA32, untuk

mengaktifkan IC ATMEGA32 membutuhkan tegangan ±5Volt. CPU PLC akan

bekerja jika mendapat data dari console atau PC. Data yang didapat oleh CPU

PLC adalah kode-kode logika PLC. Data komunikasi akan disimpan di memori

EEPROM. Setelah CPU PLC mendapat kode RUN, CPU PLC akan mulai bekerja.

Page 121: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

95

Pertama yang akan dikerjakan CPU PLC adalah membaca data kiriman baik dari

console ataupun PC. Pembacaan ini dimulai di alamat 0x00 pada memori

EEPROM (sebagai memori CPU PLC). Setelah data dibaca, data tersebut akan

dibandingkan dengan data yang dituliskan oleh penulis dan diletakkan pada

memori flash. Jika data kiriman sama dengan data yang ada pada memori flash,

maka data tersebut akan dijalankan atau dieksekusi. Setelah data pertama dibaca

dan dibandingkan, CPU PLC akan meminta kembali membaca data kiriman pada

memori CPU PLC. Setelah terbaca, data tersebut akan kembali dibandingkan

dengan data yang ada pada memori flash. CPU PLC akan membaca port input

terlebih dahulu. Jika port input aktif maka data akan disimpan di memori CPU

PLC di alamat lain, dan data tersebut juga sebagai data yang akan dieksekusi

untuk logika-logika PLC. Jika port input tidak aktif maka datanya adalah 0 (nol).

Setelah menyimpan data, CPU PLC memerintahkan kembali untuk membaca data

kiriman. Jika menemukan kode logika out, yang pertama dilakukan CPU PLC

adalah membaca data yang tersimpan hasil eksekusi logika-logika sebelum logika

out. Setelah membaca, data akan dieksekusi sesuai output yang

diinginkan(misalkan data yang akan dioutputkan berada di port C.0). Jika logika

out telah dijalankan, CPU PLC akan memerintah kembali untuk membaca data

kiriman, jika logika terakhir dari data kiriman tersebut adalah logika END, CPU

PLC akan kembali membaca data kiriman dari awal dan mengosongkan memori

penyimpan 1 dan 2 yang digunakan untuk menyimpan data hasil eksekusi.

Page 122: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

96

4.3 Analisa perangkat lunak

Pada gambar diagram alir 3.12 dijelaskan proses utama dari CPU PLC. Pada

proses CPU PLC ada berbagai proses yang harus dikerjakan dahulu sebelum

melakukan proses utama.

4.3.1 Inisialisasi

Pada proses inisialisasi, mendefinisikan variabel, alamat memori CPU

PLC dan komunikasi. Proses inisialisasi digunakan untuk mempermudah kerja

dari CPU PLC. Jika alamat memori CPU PLC tidak dipetakan dahulu, CPU PLC

akan kesulitan membaca dan mengeksekusi. Kode-kode logika juga akan

dipetakan dahulu, supaya data hasil komunikasi sesuai dengan kode yang dibuat

oleh konsol ataupun PC.

4.3.2 Komunikasi

Proses komunikasi berdasarkan diagram ladder 3.10 dapat dilihat pada

potongan program gambar 4.2

Inisialisasi komunikasi

Gambar 4.2 potongan program komunikasi

Page 123: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

97

Saat proses komunikasi, CPU PLC mengaktifkan UBRRH, UBRRL,

UCSRC, UCSRB. UBRRH dan UBRRL berfungsi untuk mengatur baudrate,

baudrate berfungsi sebagai pengatur kecepatan pengiriman data. UCSRC

digunakan untuk mengatur mode pengiriman data. Pengiriman data ke CPU PLC

menggunakan mode 2 yaitu komunikasi asinkron dan sinkron. UCSRB digunakan

untuk membuat enable pada RXCIE, RXEN, TXEN sehingga komunikasi aktif.

Komunikasi aktif dapat dilihat pada gambar 4.2. Pada bagian UCSRA, RXC nya

akan aktif jika ada data masuk dan diterima oleh UDR. Dari UDR data dikirim ke

memori CPU PLC. Data yang dikirim ke memori CPU PLC disimpan mulai dari

alamat 0x00, yang terletak di memori EEPROM. Proses penyimpanan data

komunikasi dapat dilihat pada gambar 4.3 dan gambar 4.4. Proses penyimpanan

dilakukan jika eepromstatus=1, data akan terus disimpan sampai data terakhir.

Data terakhir yang disimpan adalah data END.

Gambar 4.3 program menyimpan pada memori CPU PLC (memori EEPROM)

Disimpan di memori CPU PLC

Gambar 4.4 hasil komunikasi disimpan pada memori CPU PLC

Page 124: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

98

4.3.3 Pembacaan kode kiriman pada memori CPU PLC

Proses pembacaan memori CPU PLC dimulai dari alamat 0x00 yang

terletak di memori EEPROM ATMEGA32. Proses pembacaan dapat dilihat dari

potongan program gambar 4.5. Pembacaan kode kiriman dilakukan per 8 bit,

pembacaan dikerjakan pada memori CPU PLC yang akan dibandingkan dengan

kode yang ada pada CPU PLC. Pembacaan kode dilakukan peralamat mulai dari

alamat 0x00 sampai alamat terakhir pengiriman yaitu alamat yang isinya kode

END. Pembacaan kode pada EEPROM terletak pada EEDR, data yang terbaca

akan di letakkan pada EEDR, setelah data terbaca EEPROM akan kembali ke

EEDR.

Gambar 4.5 Program pembacaan memori

Inisialisasi pembacaan memori CPU PLC

Page 125: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

99

Data yang terbaca di memori CPU PLC

Gambar 4.6 kode yang terbaca pada memori CPU PLC

4.3.4 Pembandingan kode kiriman dengan kode yang

disimpan pada memori CPU PLC

Kode yang dituliskan

kode yang akan dibandingkan

Gambar 4.7 Potongan program kode yang akan dibandingkan

Page 126: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

100

Kode yang terbaca akan dibandingkan dengan kode yang dituliskan

oleh CPU PLC. Pembacaan kode dilakukan saat CPU PLC mendapatkan kode

RUN, pembacaan dilakukan pada alamat memori CPU PLC, yang pembacaanya

dilakukan pada register EEDR mulai dari alamat 0x00. Jika kode yang terbaca

sama, maka CPU PLC akan mengerjakan sampai kode yang terbaca END. Kode

END terbaca maka CPU PLC akan kembali membaca data kiriman mulai dari

alamat 0x00.

4.4 Analisa perangkat keras (komunikasi console dengan CPU

PLC)

4.4.1 Logika LD dan logika AND

Gambar 4.8 gambar diagram ladder 1

002

001 OUT 101

Dari gambar 4.8 diagram ladder 1 dapat dituliskan mnemoniknya LD 001 AND 002 OUT 101 END

Tabel 4.1 Hasil pengujian CPU PLC dari diagram ladder 1 LD 001 AND 002 OUT 101 Hasil Pengujian

Aktif Tidak aktif Tidak Aktif Gambar 4.9 Tidak Aktif Aktif Tidak Aktif Gambar 4.10

Aktif Aktif Aktif Gambar 4.15

Diagram ladder 1 gambar 4.8 dapat di ujikan pada CPU PLC, hasil

pengujiannya sebagai berikut:

Page 127: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

101

1. Jika logika-logika yang dituliskan mnemonik diatas tidak mendapatkan

input, maka output dari hasil eksekusi tidak akan menyala(output tidak

aktif).

2. Jika logika LD 001 mendapat input dan logika AND 002 tidak

mendapatkan input maka output tidak menyala(tidak aktif). Saat logika

LD 001 aktif dan logika AND 002 tidak aktif sehingga outputnya tidak

aktif dapat dilihat pada gambar 4.9.

LD 001 aktif AND 002 tidak aktif Output tidak aktif

Gambar 4.9 logika LD 001 aktif dan logika AND 002 tidak aktif

3. Jika logika LD 001 tidak mendapatkan input dan logika AND 002

mendapat input sehingga output tidak menyala(tidak aktif). Logika LD

001 tidak aktif dan logika AND 002 tidak aktif dapat di lihat pada

gambar 4.10.

Gambar 4.10 logika LD 001 tidak aktif dan logika AND 002 aktif

Page 128: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

102

4. Jika logika LD 001 mendapat input dan logika AND 002 mendapat input

sehingga output menyala(aktif). Logika LD 001 aktif dan logika AND

002 aktif dapat dilihat pada gambar 4.15.

Masukan untuk CPU PLC Eksekusi logika LD

Gambar 4.11 program eksekusi logika LD

Data yang akan disimpan di memori CPU PLC

Alamat penyimpan 1 dan 2 di memori CPU PLC

Gambar 4.12 hasil eksekusi yang tersimpan di memori CPU PLC

Page 129: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

103

Gambar 4.13 Program logika AND 002

Eksekusi logika AND 02

Kode logika OUT yang terpilih

Hasil eksekusi pada logika OUT

Gambar 4.14 Program logika 0UT 101

Saat logika LD 001 aktif data akan disimpan di alamat penyimpan 1 dan 2.

Logika LD 001 aktif dapat dilihat pada gambar 4.11. Setelah data tersimpan, CPU

PLC akan kembali membaca data kiriman. Data yang terbaca adalah logika AND

Page 130: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

104

002. Logika AND 002 aktif data akan disimpan dan akan di AND kan. Data yang

di AND kan akan disimpan di alamat penyimpan 2. CPU PLC akan kembali

membaca data kiriman. Data yang terbaca adalah logika OUT. Logika OUT yang

dikerjakan terlebih dahulu adalah membaca data yang disimpan di alamat

penyimpan 2. Setelah data terbaca, logika OUT akan meng OR kan data yang

terbaca satu persatu. Alur kerja logika OUT dapat dilihat pada gambar 4.14. Hasil

eksekusi diagram ladder 1 dapat dilihat pada gambar 4.8.

Gambar 4.15 hasil diagram ladder 1

OUT 101

LD 001 AND 002

4.4.2 Logika LD dan logika OR

002

001 OUT 101

Gambar 4.16 diagram ladder 2

Dari gambar 4.16 diagram ladder 2 dapat dituliskan mnemoniknya sebagai berikut: LD 001 OR 002 OUT 101 END

Page 131: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

105

Tabel 4.2 Hasil pengujian CPU PLC dari diagram ladder 2 LD 001 OR 002 OUT 101 Hasil Pengujian

Aktif Tidak aktif Aktif Gambar 4.18 Tidak Aktif Aktif Aktif Gambar 4.19 Tidak Aktif Tidak Aktif Tidak Aktif Gambar 4.17

Diagram ladder 2 dari gambar 4.16 dapat diujikan pada CPU PLC, hasil

pengujiannya sebagai berikut:

1. Jika logika-logika yang dituliskan diatas tidak mendapat input, maka

logika out tidak aktif. Hasil dari eksekusi dapat dilihat pada gambar 4.17.

Saat CPU PLC tidak mendapatkan input maka CPU PLC hanya

menyimpan data nol. Data nol tersebut akan dieksekusi sampai logika

END. Pada logika OUT data nol berarti port output CPU PLC tidak aktif

atau logika nol.

Gambar 4.17 logika-logika yang dituliskan tidak mendapat input

2. Jika logika LD 001 mendapat input, logika OUT akan menyala atau

aktif. Logika LD 001 aktif pada port A.0, data input dari logika LD

disimpan di alamat penyimpan 1 dan 2. Setelah data disimpan, data akan

dibaca oleh logika OUT, dari logika OUT tersebut akan dieksekusi dan

akan dioutkan sesuai dengan port yang diinginkan oleh mnemonik dan

Page 132: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

106

sesuai dengan data kiriman port output tersebut adalah port C.0. Logika

LD aktif logika OR tidak aktif hasilnya dapat dilihat pada gambar 4.18

LD 01

Gambar 4.18 hasil diagram ladder 2 logika LD

OUT 101

3. Jika logika OR 002 mendapat input, logika OUT akan menyala atau

aktif. Logika OR 002 aktif pada port A.1, data input dari logika OR akan

disimpan dialamat penyimpan 2. Logika OR akan terlebih dahulu

membaca data yang disimpan di alamat penyimpan 2. Setelah data

terbaca, data akan di OR kan dan disimpan dialamat penyimpan 2.

Setelah tersimpan logika OUT akan membaca hasil simpanan. Logika

OUT akan mengeksekusi dan akan mengoutkan sesuai dengan data

kiriman dan penulisan mnemonik. Port output terletak di port C.0. Jika

logika OR aktif logika LD tidak aktif hasilnya dapat dilihat pada gambar

4.19.

Jika salah satu logika LD atau OR mendapat input, logika OUT akan aktif.

Jika logika LD aktif logika OR tidak aktif hasilnya dapat dilihat pada gambar

4.18. Jika logika OR aktif logika LD tidak aktif hasilnya dapat dilihat pada

gambar 4.19. Data hasil eksekusi logika LD akan disimpan di alamat penyimpan 1

Page 133: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

107

dan 2 Data akan disimpan di memori EEPROM, saat data disimpan di EEPROM

register EECR akan aktif. CPU PLC akan kembali membaca data yang tersimpan

di EEPROM. Data yang terbaca akan dieksekusi kembali. Data logika OR akan

disimpan di alamat penyimpan 1 dan 2. Data yang disimpan di alamat penyimpan

2 akan di eksekusi oleh logika OUT. Pada logika OUT, data yang disimpan di

alamat penyimpan 2 akan di OR kan. Setelah di OR kan data akan di outkan pada

port C. Logika OUT yang dituliskan atau di gambarkan oleh diagram ladder 2

adalah OUT 101. Port C.0 adalah OUT 101.

OR 02 Gambar 4.19 hasil diagram ladder 2 logika OR

OUT 101

4.4.3 Logika counter

001

CNT 001

CNT 001

#05

OUT 101

Gambar 4.20 Diagram ladder 3 logika counter

Page 134: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

108

Dari gambar 4.20 diagram ladder 3 dapat dituliskan mnemoniknya sebagai

berikut:

LD 001 CNT 001 #05 LD CNT 001 OUT 101 END

Untuk logika CNT, inputnya berada pada port B.0. Logika CNT diberi input

tersendiri dikarenakan pemograman CNT nya tidak di sediakan pada modul

inputnya, sehingga diberikan input pada port B.0. Dari diagram ladder 3 gambar

4.20 dapat diujikan pada CPU PLC dengan hasil pengujian sebagai berikut:

Saat logika LD 001 mendapat input logika CNT akan mulai mencacah, data

yang dicacah adalah data kiriman setelah kode CNT misalkan data yang dicacah

sesuai dengan diagram ladder 3 adalah #05. CPU PLC akan mencacah mulai dari

5 sampai dengan 0. Data akan dicacah jika port B.0 ditekan, dan jika port B.0

tidak ditekan maka data tidak akan dicacah. Jika data sudah dicacah CPU PLC

akan kembali membaca data kiriman. Data yang telah dicacah, akan dipanggil

kembali saat CPU PLC membaca LD CNT 001. Logika LD CNT 001 akan

mengeksekusi data dari CNT yang telah dicacah. Data hasil eksekusi LD CNT

001 akan disimpan di alamat penyimpan 2. Setelah tersimpan, CPU PLC akan

membaca logika OUT. Logika OUT akan mengeksekusi data, dan akan di out kan

sesuai dengan data kiriman dan diagram ladder 3. Data akan dioutkan di port C.0.

Port C.0 adalah logika OUT 101.

Page 135: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

109

Data yang disimpan di memori EEPROM

Data pertama yang dibaca logika LD

Gambar 4.21 pembacaan logika LD untuk logika counter

Logika counter Input logika counter Banyaknya mencacah

pada logika counter

Gambar 4.22 alur kerja logika counter

Page 136: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

110

LD CNT memanggil data hasil mencacah

Gambar 4.23 logika LD CNT untuk memanggil hasil eksekusi CNT

Hasil dari logika counter

Gambar 4.24 hasil dari logika counter

Page 137: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

111

Gambar 4.25 logika CNT tidak mendapat input

Saat logika CNT tidak mendapat input logika CNT tidak akan berfungsi

dan tidak akan mencacah. CPU PLC akan menunggu sampai logika CNT tersebut

aktif. Setelah logika CNT mendapat input CPU PLC akan memulai mencacah

sampai selesai. Data hasil pencacahan akan disimpan. Data yang tersimpan akan

di baca kembali saat CPU PLC membaca logika LD CNT.

Gambar 4.26 hasil diagram ladder 3 dari logika counter

LD 01 Input counter OUT 101

Logika counter bekerja sesuai dengan data yang dikirim, data kiriman akan

dikurangkan sampai dengan 0. Jika data hasil mencacah sudah disimpan, data

dipanggil kembali saat CPU PLC membaca kode logika LD CNT. Dari logika LD

CNT data hasil pencacahan akan dieksekusi dan akan dihasilkan data yang

berlogika 1. Setelah data disimpan CPU PLC akan membaca logika OUT, dari

logika OUT tersebut data yang disimpan oleh logika LD CNT akan dioutkan

Page 138: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

112

sesuai dengan data kiriman dan gambar diagram ladder 3. Data akan di outkan di

port C.0. Port C.0 adalah OUT 101.

4.4.4 Logika timer

Gambar 4.27 diagram ladder 4 logika timer

001

TIM 001

TIM 001

#100

OUT 101

Gambar 4.28 hasil diagram ladder 4 dari logika timer 100ms

Input timer LD 001

OUT 101

Dari gambar 4.27 diagram ladder 4 dapat dituliskan mnemonik sebagai

berikut:

LD 001 TIM 001 #100ms LD TIM 001 OUT 101 END

Untuk logika TIM, inputnya berada pada port B.1. Logika TIM diberi input

tersendiri dikarenakan pemograman TIM nya tidak di sediakan pada modul

Page 139: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

113

inputnya, sehingga diberikan input pada port B.1. Dari diagram ladder 4 gambar

4.27 dapat diujikan pada CPU PLC dengan hasil pengujian sebagai berikut:

Logika timer bekerja menggunakan timer 1 yang sudah terdapat di dalam

mikro. Logika timer akan aktif jika LD 001 mendapat input. Saat CPU PLC

membaca logika LD 001 CPU PLC akan menyimpan data hasil eksekusi logika

LD. Saat CPU PLC membaca logika TIM, CPU PLC akan memulai

menginisialisasikan timer 1. Inisialisasi timer 1 dapat dilihat pada gambar 4.30,

inisialisasi timer meliputi TCCR1A, TCCR1B, OCR1A, TIMSK, TIFR. TCCR1A

dan TCCR1B digunakan untuk mengatur mode timer yang menggunakan mode

CTC, register OCR1A digunakan untuk mengatur waktu tunda selama 1 ms,

register TIMSK digunakan untuk mengatur timer 1. Register TIFR digunakan

untuk mengetahui apakah terjadi permintaan interupsi timer atau tidak. Pertama

TIFR diset 0 dan saat timer aktif TIFR berubah menjadi 1. Untuk mengaktifkan

timer kembali menggunakan register TIFR yang di OR kan dengan register

OCF1A, register OCF1A bernilai 1. CPU PLC mengatur OCF1A 1 ms dengan

mode 3 yaitu clock timer 1 sama dengan 1/64 frekuensi kristal yang digunakan

CPU PLC, frekuensi yang digunakan 7,2 MHz. Setelah mengatur inisialisasi timer

CPU PLC akan menjalankan timer sesuai dengan permintaan data kiriman. Jika

permintaan timer telah dipenuhi data timer akan disimpan dan akan kembali

dipanggil, jika CPU PLC membaca kode LD TIM 001. Saat CPU PLC memanggil

data timer yang disimpan, timer akan dikembalikan ke keadaan 1 ms. Logika LD

TIM dipanggil oleh CPU PLC data yang tersimpan akan di eksekusi dan akan

disimpan di alamat penyimpan 2. Data yang tersimpan di alamat penyimpan 2

Page 140: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

114

akan di panggil kembali saat CPU PLC memanggil logika OUT. Setelah CPU

PLC memanggil logika OUT data yang tersimpan di alamat penyimpan 2 akan di

OR kan dan menghasilkan data yang akan di outkan sesuai dengan data kiriman

dari diagram ladder 4. Data akan di outkan pada port C.0. Port C.0 adalah logika

OUT 101. Setelah data dioutkan CPU PLC kembali membaca data kiriman dari

awal. Untuk PLC secara umum, timer yang digunakan lebih dari 1 timer dan

mencacah mulai dari 0 – 225 detik, sedangkan pada PLC yang penulis buat hanya

1 dan mencacahnya mulai dari 0-250 ms. Sehingga timernya sangat terbatas dan

jika menggunakan timer pada PLC yang penulis rancang waktu mencacahnya

tidak terlihat. Hasil pengujian timer mulai dari 50-250ms dapat dilihat pada

gambar

Gambar 4.29 hasil pengujian TIM 50ms

aktif TIM 001

002

OUT 102 aktif

aktif

TIM 001

#50

aktif OUT 104

004

TIM 001 aktif

aktif

TIM 001

#150

Gambar 4.30 hasil pengujian TIM 150ms

Page 141: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

115

Gambar 4.31 hasil pengujian TIM 150ms

TIM 001

006 aktif #200

TIM 001 aktif

aktif OUT 106

Gambar 4.32 hasil pengujian TIM 150ms

TIM 001

008 aktif #250

TIM 001 aktif

aktif OUT 108

Gambar 4.33 hasil pengujian TIM 50ms

Gambar 4.34 hasil pengujian TIM 150ms

Page 142: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

116

Gambar 4.35 Hasil pengujian TIM 200ms

Gambar 4.36 hasil pengujian TIM 250ms

Timer yang digunakan CPU PLC pada pengujian disini sangat terbatas

dikarenakan CPU PLC hanya menggunakan 1 macam timer saja yaitu TIM 001.

Dan mampu mencacah mulai dari 0-250, jika diminta lebih dari 250ms CPU PLC

akan error dan tidak mampu mengerjakan timer tersebut. Dari console dan PC

sendiri timer sudah dibatasi yaitu mencacah mulai dari 0-250ms saja tidak lebih,

jika diminta lebih consol dan PC tidak akan menuliskannya pada display console

dan PC. Hasil pengujian timer mulai dari 0-250ms pada CPU PLC berjalan sesuai

dengan perancangan, timer aktif jika mendapat input pada port B.1. Jika port B.1

belum diberi input timer tidak akan aktif dan hanya menunggu input. Setelah port

B.1 diberi input timer akan aktif dan menghasilkan data, data tersebut akan di

OUT kan sesuai port output yang diinginkan.

Page 143: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

117

4.4.5 Logika ON-OFF

003 001 101

002

Gambar 4.37 diagram ladder 5 logika ON-OFF

Dari gambar 4.37 diagram ladder 5 dapat dituliskan mnemoniknya sebagai berikut: LD 001 OR 002 AND NOT 003 OUT 101 END

Tabel 4.3 Hasil pengujian CPU PLC dari diagram ladder 5 LD 001 OR 002 AND NOT 003 OUT 101 Hasil Pengujian

Aktif Tidak aktif Aktif Aktif Gambar 4.38 Tidak Aktif Aktif Aktif Aktif Gambar 4.39

Aktif Aktif Aktif Aktif Gambar 4.40 Dari diagram ladder 5 gambar 4.37 dapat diujikan pada CPU PLC, hasil

pengujian CPU PLC adalah sebagai brikut:

1. Saat logika LD 001 mendapat input logika AND NOT aktif dan terhubung

langsung dengan logika OUT, sehingga logika OUT aktif. Gambar 4.38

memperlihatkan saat logika LD 001 aktif dan logika OUT 101 aktif. Saat

logika LD 001 aktif data eksekusi yang disimpan di alamat penyimpan 2

akan di AND NOT kan dengan data AND NOT, setelah di AND NOT kan

data akan di simpan dan akan dibaca oleh logika OUT. Logika OUT akan

mengeksekusi dan akan dioutkan pada port C.0.

2. Saat logika OR 002 mendapat input, logika AND NOT aktif dan

terhubung langsung dengan logika OUT, sehingga logika OUT aktif dan

Page 144: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

118

menyala. Gambar 4.39 menjelaskan logika OR 002 mendapat input dan

LD 001 tidak mendapat input sehingga logika OUT akan menyala atau

aktif. Saat logika OR 002 aktif data yang disimpan dan dieksekusi oleh

logika OR akan dibaca oleh logika AND NOT dan akan dieksekusi.

Setelah dieksekusi, data akan disimpan dan akan dibaca oleh logika OUT.

Dari logika OUT, data akan di OUT kan pada port yang diinginkan oleh

diagram ladder 5 dan dituliskan oleh mnemonik. Port yang diinginkan

adalah port C.0.

3. Saat logika LD 001 aktif, logika OR 002 aktif dan logika AND NOT 003

aktif, out pun akan menyala dan aktif. Gambar 4.40 menjelaskan logika

LD 001 aktif, logika OR 002 aktif dan logika AND NOT 003 aktif, output

akan menyala dan aktif.

Input LD 01

Gambar 4.38 logika ON-OFF untuk logika LD 01

OUT 101

Gambar 4.39 logika ON-OFF untuk logika OR 02

Input OR 02

OUT 101

Page 145: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

119

Input LD 01 dan OR 02

OUT 101

Gambar 4.40 logika ON-OFF untuk logika LD 01 dan OR 02

4.4.6 Logika LD NOT dan logika ORNOT

101

005

004

Gambar 4.41 diagram ladder 6 logika LD NOT 004 dan logika OR NOT 005

Dari gambar 4.41 diagram ladder 6 dapat dituliskan mnemoniknya sebagai

berikut:

LD NOT 004 OR NOT 005 OUT 101 END

Data yang dikirim baik melalui PC atau console ke CPU PLC, hasil

pengujiannya dapat dilihat pada tabel 4.4.

Tabel 4.4 Hasil Pengujian CPU PLC dari diagram ladder 6 LD NOT OR NOT OUTPUT Hasil dapat dilihat pada gambar

Tidak Aktif Aktif Aktif Gambar 4.43 Aktif Tidak Aktif Aktif Gambar 4.45 Aktif Aktif Aktif Gambar 4.47

Page 146: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

120

Gambar 4.42 logika LD NOT 004 tidak aktif dan logika OR NOT 005 aktif

Tidak aktif 004

OUT101 aktif 005 aktif

Gambar 4.43 hasil logika LD NOT 004 tidak aktif dan logika OR NOT 005 aktif

Gambar 4.44 logika LD NOT 004 aktif dan logika OR NOT 005 tidak aktif

aktif 004

OUT101 aktif 005 Tidak aktif

Gambar 4.45 hasil logika LD NOT 004 aktif dan logika OR NOT 005 tidak aktif

004

OUT101

aktif

aktif aktif 005

Gambar 4.46 logika LD NOT 004 aktif dan logika OR NOT 005 aktif

Page 147: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

121

Gambar 4.47 hasil logika LD NOT 004 aktif dan logika OR NOT 005 aktif

4.4.7 Logika LD dan OUT

Gambar 4.48 diagram ladder 7 logika LD dan Logika OUT

106

105

104

107

108

103

102

101

003

001

006

007

004

008

005

002

Dari gambar 4.48 diagram ladder 7 dapat dituliskan mnemoniknya sebagai berikut: LD 001 OUT 101 LD 002 OUT 102 LD 003 OUT 103 LD 004 OUT 104 LD 005

Page 148: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

122

OUT 105 LD 006 OUT 106 LD 007 OUT 107 LD 008 OUT 108 END

Data yang dikirim baik melalui PC atau console ke CPU PLC, hasil

pengujiannya dapat dilihat pada tabel 4.5.

Tabel 4.5 Hasil Pengujian CPU PLC dari diagram ladder 7 LD OUTPUT Hasil dapat dilihat pada gambar Alamat( IN-OUT)

Aktif Aktif Gambar 4.49 dan gambar 4.57 001-101 Aktif Aktif Gambar 4.50 dan gambar 4.58 002-102 Aktif Aktif Gambar 4.51 dan gambar 4.59 003-103 Aktif Aktif Gambar 4.52 dan gambar 4.60 004-104 Aktif Aktif Gambar 4.53 dan gambar 4.61 005-105 Aktif Aktif Gambar 4.54 dan gambar 4.62 006-106 Aktif Aktif Gambar 4.55 dan gambar 4.63 007-107 Aktif Aktif Gambar 4.56 dan gambar 4.64 008-108

Hasil pengujian CPU PLC diagram ladder 7 saat logika LD aktif logika

OUT akan aktif. Jika LD aktif OUT aktif dikarenakan gambar diagram laddernya

terhubung langsung seperti halnya 1 saklar yang terhubung dengan 1 lampu. Jika

saklar ditekan lampu akan menyala, lampu menyala dikarenakan ada arus yang

masuk ke lampu.

Gambar 4.49 hasil dari diagram ladder 7 logika LD 001 dan OUT 101

Page 149: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

123

Gambar 4.50 hasil dari diagram ladder 7 logika LD 002 dan OUT 102

Gambar 4.51 hasil dari diagram ladder 7 logika LD 003 dan OUT 103

Gambar 4.52 hasil dari diagram ladder 7 logika LD 004 dan OUT 104

Gambar 4.53 hasil dari diagram ladder 7 logika LD 005 dan OUT 105

Page 150: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

124

Gambar 4.54 hasil dari diagram ladder 7 logika LD 006 dan OUT 106

Gambar 4.55 hasil dari diagram ladder 7 logika LD 007 dan OUT 107

Gambar 4.56 hasil dari diagram ladder 7 logika LD 008 dan OUT 108

Page 151: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

125

Gambar 4.57 logika LD 001 aktif dan Logika OUT 101 aktif

aktif

108

107

104

105

106

103

102

101

003

001 aktif

005

008

004

007

006

002

aktif aktif

Gambar 4.58 logika LD 002 aktif dan Logika OUT 102 aktif

108

107

103

106

105

104

102

101 001

008

002

006

007

004

003

005

Page 152: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

126

Gambar 4.59 logika LD 003 aktif dan Logika OUT 103 aktif

108

107

103 aktif

106

105

aktif

104

102

101

003

001

005

008

004

006

007

002

001

Gambar 4.60 logika LD 004 aktif dan Logika OUT 104 aktif

108

107

101

aktif

103

106

104

105

102

008

007

002

006

003

004

005

aktif

Page 153: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

127

aktif

Gambar 4.61 logika LD 005 aktif dan Logika OUT 105 aktif

108

107

103

106

104

105

102

101

003

001

005 aktif

008

004

006

007

002

102

101 001

006

007

004

008

005

003 103

106

107

aktif

108

Gambar 4.62 logika LD 006 aktif dan Logika OUT 106 aktif

aktif

104

105

002

Page 154: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

128

aktif

Gambar 4.63 logika LD 007 aktif dan Logika OUT 107 aktif

108

107 aktif

103

106

104

105

102

101

003

001

005

008

004

006

007

002

aktif aktif

Gambar 4.64 logika LD 008 aktif dan Logika OUT 108 aktif

108

107

103

106

104

105

102

101

003

001

005

008

004

006

007

002

Page 155: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

129

4.5 Analisa Perangkat Keras (komunikasi PC dengan CPU PLC)

Gambar 4.65 hasil komunikasi antara PC dengan CPU PLC

Dari gambar 4.65 dapat dituliskan mnemonic dan gambar diagram ladder

sebagai berikut:

Kode PROG Data CPU PLC yang akan dikerjakan Kode RUN

Gambar 4.66 diagram ladder 8 logika LD 001 dan Logika OUT 101

001 101

Mnemonic dapat dituliskan sebagai berikut: LD 001 OUT 101 END

Hasil pengujian CPU PLC dapat dijelaskan sebagai berikut:

Saat logika LD mendapat input atau akaif logika OUT akan menyala, hasil pada

pengujian CPU PLC dapat dilihat pada gambar 4.66.

001

101 aktif

aktif

Gambar 4.67 diagram ladder 8 logika LD 001 aktif dan Logika OUT 101 aktif

Page 156: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

130

Gambar 4.68 hasil pengujian CPU PLC

CPU PLC menerima data kiriman dari PC per paket. Jika data dikirim per

kode CPU PLC tidak akan menerima. Data yang dikirim dari PC harus sudah

dikodekan terlebih dahulu, jika belum dikodekan CPU PLC tidak akan bisa

menjalankan logika-logika yang dikirim. Logika-logika yang dikirim berupa

logika PLC yang sudah berbentuk mnemonic.

4.6 Analisa Data Error Saat komunikasi

Gambar 4.69 Data error saat komunikasi

Data error saat komunikasi

Saat CPU PLC mengalami kegagalan pengiriman data, CPU PLC tidak akan

bekerja sesuai keinginan. Contoh pengiriman data yang gagal dapat dilihat pada

gambar 4.69. CPU PLC akan bekerja kembali saat CPU PLC kembali menerima

data kiriman dan mereset kembali CPU PLC.

Table 4.6 perbandingan PLC umum dengan CPU PLC NO Perbandingannya CPU PLC PLC secara umum 1 Timer 1 timer saja Lebih dari 1 macam

timer 2 Counter 1 counter saja Lebih dari 1 macam

counter 3 Operasi logika Operasi logikanya Operasi logikanya lebih

Page 157: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

131

terbatas dari CPU PLC 4 Output Hanya display saja Display dan mampu

mengaktifkan peralatan lain

5 Komunikasi Kadang mengalami masalah

Tidak ada masalah dalam komunikasi

4.7 Logika OUT NOT

Gambar 4.70 diagram ladder 9 logika OUT NOT

005 105

Tidak aktif aktif

Mnemonic diagram ladder 9

LD 005 OUT NOT 105 END

Tabel 4.7 hasil logika OUT NOT LD 005 OUT 105 Hasil Pengujian

Tidak Aktif Aktif Gambar 4.72 Aktif Tidak Aktif Gambar 4.73

105 tidak aktif

005 aktif

Gambar 4.71 diagram ladder logika OUT NOT mendapat input LD 005

Gambar 4.72 hasil diagram ladder 9 logika OUTNOT

Gambar 4.71 adalah diagram ladder logika OUT NOT tidak aktif, dikarenakan

logika LD 001 mendapat input atau aktif. Logika OUT NOT adalah logika yang

Page 158: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

132

belum mendapat input akan aktif terlebih dahulu, jika mendapat input logika OUT

NOT tidak akan aktif.

Gambar 4.73 hasil dari gambar 4.71

Page 159: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

BAB V

KESIMPULAN DAN SARAN

5.1 Kesimpulan

1. Sistem komunikasi antara konsol dengan CPU PLC dan juga komunikasi

antara PC dengan CPU PLC bekerja sesuai perancangan.

2. CPU PLC modul input dan output bekerja sesuai dengan perancangan.

3. Logika LD, LD NOT, AND, AND NOT, OR, OR NOT, TIM, CNT, OUT,

OUT NOT, END berjalan sesuai dengan perancangan.

4. Untuk logika CNT, TIM mendapat input dari luar modul input.

5.2 Saran

1. Dengan menambah rangkaian pada output CPU PLC, sehingga output CPU

PLC mampu mengangkat beban yang lebih dari tegangan yang dikeluarkan

oleh mikro.

2. Memperbanyak Timer dan Counter, karena Timer dan Counter pada CPU

PLC hanya satu yang digunakan. Dan menambahkan timer dan counter pada

modul input.

3. Mengurangi overflow pada SRAM, dan mengurangi kegagalan komunikasi.

4. Saat CPU PLC dihidupkan, yang dikerjakan pertama kali adalah mengecek

data-data, seharus CPU PLC langsung membaca data yang tersimpan di

memori CPU PLC. Mengurangi error waktu komunikasi.

133

Page 160: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

REFERENSI

[1] ______, Programmable Logic Controller, Festo Didactic

[2] M.Budiyanto dan A.Wijaya. Pengenalan Dasar-Dasar PLC

(Programmable Logic Controller). Yogyakarta: Penerbit Gava Media

[3] Agus Bejo. C dan AVR Rahasia Kemudahan Bahasa C dalam

Mikrokontroler ATmega8535. Yogyakarta: Penerbit Graha Ilmu

[4] Datasheet ATmega32. www.atmel.com/literature

[5] RS232 Tutorial on Data Interface and cable. [email protected].

[6] +5V-Powered, Multichannel RS-232 Drivers/Receivers.

www.maxim-ic.com/packages.

[7] Datasheet ULN2803 driver relay. www.driver_relay.com

133

Page 161: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

Lampiran 1

1. Kode intruksi dan data......................134

2. Listing Program.................................139

Page 162: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

KODE INSTRUKSI CPU PLC

INSTRUKSI KODE

PROG 0001 0111

RUN 0001 1000

END 1111 1111

INSTRUKSI KODE PORT INPUT KODE

AND 0000 0001 001 0000 0001

AND 0000 0001 002 0000 0010

AND 0000 0001 003 0000 0011

AND 0000 0001 004 0000 0100

AND 0000 0001 005 0000 0101

AND 0000 0001 006 0000 0110

AND 0000 0001 007 0000 0111 AND 0000 0001 008 0000 1000

INSTRUKSI KODE OPERAND

TIM KODE

AND TIM 0000 0010 001 0000 0001

INSTRUKSI KODE OPERAND

TIM KODE

AND TIM NOT 0000 0011 001 0000 0001

INSTRUKSI KODE PORT INPUT KODE

AND NOT 0000 0100 001 0000 0001

AND NOT 0000 0100 002 0000 0010

AND NOT 0000 0100 003 0000 0010

AND NOT 0000 0100 004 0000 0100

AND NOT 0000 0100 005 0000 0101

AND NOT 0000 0100 006 0000 0110

AND NOT 0000 0100 007 0000 0111 AND NOT 0000 0100 008 0000 1000

134

Page 163: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

135

INSTRUKSI KODE OPERAND

CNT KODE

AND CNT 0000 0101 001 0000 0001

INSTRUKSI KODE OPERAND

CNT KODE

AND CNT NOT 0000 0110 001 0000 0001

INSTRUKSI KODE PORT INPUT KODE

OR 0000 0111 001 0000 0001

OR 0000 0111 002 0000 0010

OR 0000 0111 003 0000 0011

OR 0000 0111 004 0000 0100

OR 0000 0111 005 0000 0101

OR 0000 0111 006 0000 0110

OR 0000 0111 007 0000 0111 OR 0000 0111 008 0000 1000

INSTRUKSI KODE OPERAN TIM KODE

OR TIM 0000 1000 001 0000 0001

INSTRUKSI KODE OPERAND

TIM KODE

OR TIM NOT 0000 1001 001 0000 0001

INSTRUKSI KODE PORT INPUT KODE

OR NOT 0000 1010 001 0000 0001

OR NOT 0000 1010 002 0000 0010

OR NOT 0000 1010 003 0000 0011

OR NOT 0000 1010 004 0000 0100

OR NOT 0000 1010 005 0000 0101

OR NOT 0000 1010 006 0000 0110

OR NOT 0000 1010 007 0000 0111 OR NOT 0000 1010 008 0000 1000

Page 164: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

136

INSTRUKSI KODE OPERAND

CNT KODE

OR CNT 0000 1011 001 0000 0001

INSTRUKSI KODE OPERAND

CNT KODE

OR CNT NOT 0000 1100 001 0000 0001

INSTRUKSI KODE PORT INPUT KODE

LD 0000 1101 001 0000 0001

LD 0000 1101 002 0000 0010

LD 0000 1101 003 0000 0011

LD 0000 1101 004 0000 0100

LD 0000 1101 005 0000 0101

LD 0000 1101 006 0000 0110

LD 0000 1101 007 0000 0111 LD 0000 1101 008 0000 1000

INSTRUKSI KODE OPERAND

TIM KODE

LD TIM 0000 1110 001 0000 0001

INSTRUKSI KODE OPERAND

TIM KODE

LD TIM NOT 0000 1111 001 0000 0001

INSTRUKSI KODE PORT INPUT KODE

LD NOT 0001 0000 001 0000 0001

LD NOT 0001 0000 002 0000 0010

LD NOT 0001 0000 003 0000 0011

LD NOT 0001 0000 004 0000 0100

LD NOT 0001 0000 005 0000 0101

LD NOT 0001 0000 006 0000 0110

LD NOT 0001 0000 007 0000 0111 LD NOT 0001 0000 008 0000 1000

Page 165: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

137

INSTRUKSI KODE OPERAND CNT KODE LD CNT 0001 0001 001 0000 0001

INSTRUKSI KODE OPERAND CNT KODE LD CNT NOT 0001 0010 001 0000 0001

INSTRUKSI KODE OPERAND

CNT BANYAKNYA MENCACAH

KODE

CNT 0001 0011 001 001 0000 0001 CNT 0001 0011 001 002 0000 0010 CNT 0001 0011 001 003 0000 0011 CNT 0001 0011 001 004 0000 0100 CNT 0001 0011 001 005 0000 0101 CNT 0001 0011 001 006 0000 0110 CNT 0001 0011 001 007 0000 0111 CNT 0001 0011 001 008 0000 1000 CNT 0001 0011 001 009 0000 1001 CNT 0001 0011 001 010 0000 1010

INSTRUKSI KODE PORT

OUTPUT KODE

OUT 0001 0101 101 0110 0101

OUT 0001 0101 102 0110 0110

OUT 0001 0101 103 0110 0111

OUT 0001 0101 104 0110 1000

OUT 0001 0101 105 0110 1001

OUT 0001 0101 106 0110 1010

OUT 0001 0101 107 0110 1011 OUT 0001 0101 108 0110 1100

INSTRUKSI KODE PORT

OUTPUT KODE

OUT NOT 0001 0110 101 0110 0101

OUT NOT 0001 0110 102 0110 0110

OUT NOT 0001 0110 103 0110 0111

OUT NOT 0001 0110 104 0110 1000

OUT NOT 0001 0110 105 0110 1001

OUT NOT 0001 0110 106 0110 1010

OUT NOT 0001 0110 107 0110 1011 OUT NOT 0001 0110 108 0110 1100

Page 166: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

138

INSTRUKSI KODE OPERAND

TIM BANYAKNYA MENCACAH

KODE

TIM 0001 0100 001 1 0000 0001

TIM 0001 0100 001 2 0000 0010

TIM 0001 0100 001 3 0000 0011

TIM 0001 0100 001 4 0000 0100

TIM 0001 0100 001 5 0000 0101

TIM 0001 0100 001 6 0000 0110 TIM 0001 0100 001 7 0000 0111

TIM 0001 0100 001 250 1111 1010

Page 167: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

//***************************************************************** // File Name : 'CPU PLC.c' // Title : ATmega 32 based CPU PLC for Console and PC // Author : Edi Gunawan - Copyright (C) 2008 - 2009 // Created : 2009-05-20 // Revision : 2009-06-12 // Version : 0.5 sukoi // Target MCU : Atmel AVR ATMEGA32 //***************************************************************** #include <avr/io.h> #include <avr/iom32.h> #include <stdio.h> #include <inttypes.h> #define BAUD 9600 #define F_CPU 7200000UL #include <util/setbaud.h> #include <avr/eeprom.h> #include <util/delay.h> #include <avr/interrupt.h> #include <stdint.h> //deklarasi program utama void USART_init(void); void USART_receive(void); void USART_transmit(unsigned char); int cek (void); void baca1(void); void baca2(void); void simpan(void); volatile unsigned char buffer[512]; volatile unsigned char runstatus=0,progstatus=0; volatile unsigned char eepromstatus=0; volatile unsigned char clrstatus=0; volatile unsigned char stopstatus=0; volatile unsigned char cekstatus=0; // data biner yang DITERIMA #definePROG_ 0b00010111 #defineRUN_ 0b00011000 #defineEND_ 0b11111111 #defineAND_ 0b00000001 #defineANDNOT_ 0b00000100 #defineANDTIM_ 0b00000010 #defineANDTIMNOT_ 0b00000011

139

Page 168: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

140

#defineANDCNT_ 0b00000101 #defineANDCNTNOT_ 0b00000110 #defineOR_ 0b00000111 #defineORNOT_ 0b00001010 #defineORTIM_ 0b00001000 #defineORTIMNOT_ 0b00001001 #defineORCNT_ 0b00001011 #defineORCNTNOT_ 0b00001100 #defineLD_ 0b00001101 #defineLDNOT_ 0b00010000 #defineLDTIM_ 0b00001110 #defineLDTIMNOT_ 0b00001111 #defineLDCNT_ 0b00010010 #defineLDCNTNOT_ 0b00010001 #defineCNT_ 0b00010011 #defineOUT_ 0b00010101 #defineOUTNOT_ 0b00010110 #defineTIM_ 0b00010100 #define USART_BAUD 9600ul #define USART_UBBR_VALUE ((F_CPU/(USART_BAUD<<4))-1) //definisi yang digunakan int edi[10]=0,510,530,550,570,590,610,630,650,670;//alamat penyimpan 1 int gunawan[10]=0,690,710,730,750,770,790,810,830;//alamat penyimpan 2 int rina1[10]=0,850,870,890,910,930,940,960,980,1000;//alamat penyimpan CNT int data_terima;//data di UDR int alamat;//alamat memori CPU PLC int dataku;//pembacaan alamat di memori PLC int data;//data-data input int data1;//data-data input int data2;//data-data input int dataku1;//pembacaan data dialamat penyimpan 1 int dataku2;//pembacaan data dialamat penyimpan 2 int dataku3;//pembacaan data dialamat penyimpan 2 int dataku6;//pembacaan data dialamat penyimpan 2 int hijau;//alamat penyimpan 1 int kuning;//alamat penyimpan 1 int coklat;//alamat penyimpan 2 int merah;//alamat penyimpan 2 int n;//data timer dan counter int temp;//alamat penyimpan counter int i;//alamat eeprom

Page 169: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

141

/***************************************************************** Functions from UART_Test *****************************************************************/ void USART_init(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); // enable interupsi RX, receiver dan transmitter UCSRB |= (1<<RXCIE)|(1<<RXEN)|(1<<TXEN); sei(); void USART_transmit(unsigned char data) /* TUNGGU DATA PADA BUFFER TRANSMITER KOSONG */ while ( ( UCSRA & (1<<UDRE))==0); /* KIRIM DATA KE UDR UNTUK DIKIRIM KE PC */ UDR = data; void USART_receive( void ) /*TUNGGU DATA MASUK KE RECEIVER*/ while ( (UCSRA & (1<<RXC))==0); /* TERIMA DATA DARI PC DAN KONSOLE */ data_terima=UDR;//data dari UDR di tampung di data terima /***************************************************************** Functions from UART_Test *****************************************************************/ //inisialisasi timer void timer1_ctc_init(void)//inisialisasi timer n=dataku; TCCR1A |=(0<<WGM11)|(0<<WGM10); TCCR1B |=(1<<WGM12)|(1<<CS11)|(1<<CS10);//1:64 OCR1A =(n)*(112500);//tundaan 1 detik f=7.2Mhz TIMSK |=_BV(TOIE1); TIFR &= (1<<OCF0); sei(); for(;;) if(TCNT1==OCR1A)//jika cacah timer=data yang dituliskan pada timer rina1[4]=TCNT1;

Page 170: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

142

TIFR=(1<<OCF1A); alamat++; dataku=eeprom_read_byte((uint8_t*)alamat); cek(); void cnt(void) loop_until_bit_is_set(PINB,PIN0); while(bit_is_set(PINB,PIN0)) if(n>0) n--; loop_until_bit_is_set(PINB,PIN0); if(n==0) data=0xFF; eeprom_write_byte((uint8_t*)edi[9],data); coklat=edi[9]; coklat++; eeprom_write_byte((uint8_t*)gunawan[4],data); merah=gunawan[4]; merah++; baca2(); while(bit_is_set(PINB,PIN2)) n=dataku; cnt(); //interrupt dari luar digunakan untuk komunikasi ISR (USART_RXC_vect)//interupsi luar data_terima=UDR; if(progstatus==1 && data_terima!=PROG_ && data_terima!=RUN_) sei(); PORTD=0x20; buffer[alamat]=data_terima; alamat++; if (UDR==0xff)

Page 171: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

143

USART_transmit('!'); eepromstatus=1; if (eepromstatus==1) for (i=0;buffer[i]!=0xff;i++) eeprom_write_byte((unsigned char *)i,buffer[i]); eeprom_write_byte((unsigned char *)(i),0xff); eepromstatus=0; if(data_terima==RUN_) sei(); PORTD=0x40; USART_transmit('!'); runstatus=1; progstatus=0; cekstatus=1; baca1(); if(data_terima==PROG_) sei(); PORTD=0x80; PORTC=0x00; USART_transmit('!'); runstatus=0; progstatus=1; cekstatus=0; alamat=0; //inisialisasi untuk membaca1 EEPROM void baca1(void)//mengecek logika yang sesuai if(cekstatus==1) PORTD=0x40; PORTC=0x00; asm("cli"); alamat=0;

Page 172: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

144

dataku=eeprom_read_byte((uint8_t*)alamat); _delay_us(100); asm("sei"); cek(); if (cekstatus==0) PORTD=0x40; PORTC=0x00; asm("cli"); alamat=0; dataku=eeprom_read_byte((uint8_t*)alamat); _delay_us(100); asm("sei"); cek(); //inisialisasi untuk membaca1 EEPROM void baca2(void)//mengecek logika yang sesuai asm("cli"); alamat++; dataku=eeprom_read_byte((uint8_t*)alamat); _delay_us(100); asm("sei"); cek(); //deklarasi umum int main(void) DDRA = 0x00;//input PLC PORTA = 0x00;//input PLC DDRB = 0x00;//input timer PORTB = 0x00;//input timer DDRC = 0xFF;//output PLC PORTC = 0x00;//output PLC DDRD = 0xFF;//output timer PORTD = 0x00;//output timer GICR = 0x20; GIFR = 0x20; USART_init(); while(1)

Page 173: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

145

cekstatus=1; _delay_us(100); baca1(); ; return 0; //mengecek kode intruksi int cek(void) cekstatus=1; while(1) //logika LD if(dataku==LD_)//kode_intruksi = logika LD alamat++; dataku=eeprom_read_byte((uint8_t*)alamat); if(dataku==0b00000001)//kode data LD=001 if(bit_is_clear(PINA,PIN0)) data=0x00; eeprom_write_byte((uint8_t*)edi[9],data); coklat=edi[9]; coklat++; eeprom_write_byte((uint8_t*)gunawan[4],data); merah=gunawan[4]; merah++; goto lewat; else if(bit_is_set (PINA,PINA0)) data=PINA; eeprom_write_byte((uint8_t*)edi[9],data); coklat=edi[9]; coklat++; eeprom_write_byte((uint8_t*)gunawan[4],data); merah=gunawan[4]; merah++; goto lewat; if(dataku==0b00000010)//LD=002

Page 174: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

146

if(bit_is_clear(PINA,PIN1)) data=0x00; eeprom_write_byte((uint8_t*)edi[9],data); coklat=edi[9]; coklat++; eeprom_write_byte((uint8_t*)gunawan[4],data); merah=gunawan[4]; merah++; goto lewat; else if(bit_is_set (PINA,PINA1)) data=PINA; eeprom_write_byte((uint8_t*)edi[9],data); coklat=edi[9]; coklat++; eeprom_write_byte((uint8_t*)gunawan[4],data); merah=gunawan[4]; merah++; goto lewat; if(dataku==0b00000011)//LD=003 if(bit_is_clear(PINA,PIN2)) data=0x00; eeprom_write_byte((uint8_t*)edi[9],data); coklat=edi[9]; coklat++; eeprom_write_byte((uint8_t*)gunawan[4],data); merah=gunawan[4]; merah++; goto lewat; else if(bit_is_set (PINA,PINA2)) data=PINA; eeprom_write_byte((uint8_t*)edi[9],data); coklat=edi[9]; coklat++; eeprom_write_byte((uint8_t*)gunawan[4],data); merah=gunawan[4]; merah++; goto lewat;

Page 175: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

147

if(dataku==0b00000100)//LD=004 if(bit_is_clear(PINA,PIN3)) data=0x00; eeprom_write_byte((uint8_t*)edi[9],data); coklat=edi[9]; coklat++; eeprom_write_byte((uint8_t*)gunawan[4],data); merah=gunawan[4]; merah++; goto lewat; else if(bit_is_set (PINA,PINA3)) data=PINA; eeprom_write_byte((uint8_t*)edi[9],data); coklat=edi[9]; coklat++; eeprom_write_byte((uint8_t*)gunawan[4],data); merah=gunawan[4]; merah++; goto lewat; if(dataku==0b00000101)//LD=005 if(bit_is_clear(PINA,PIN4)) data=0x00; eeprom_write_byte((uint8_t*)edi[9],data); coklat=edi[9]; coklat++; eeprom_write_byte((uint8_t*)gunawan[4],data); merah=gunawan[4]; merah++; goto lewat; else if(bit_is_set (PINA,PINA4)) data=PINA; eeprom_write_byte((uint8_t*)edi[9],data); coklat=edi[9]; coklat++;

Page 176: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

148

eeprom_write_byte((uint8_t*)gunawan[4],data); merah=gunawan[4]; merah++; goto lewat; if(dataku==0b00000110)//LD=006 if(bit_is_clear(PINA,PIN5)) data=0x00; eeprom_write_byte((uint8_t*)edi[9],data); coklat=edi[9]; coklat++; eeprom_write_byte((uint8_t*)gunawan[4],data); merah=gunawan[4]; merah++; goto lewat; else if(bit_is_set (PINA,PINA5)) data=PINA; eeprom_write_byte((uint8_t*)edi[9],data); coklat=edi[9]; coklat++; eeprom_write_byte((uint8_t*)gunawan[4],data); merah=gunawan[4]; merah++; goto lewat; if(dataku==0b00000111)//LD=007 if(bit_is_clear(PINA,PIN6)) data=0x00; eeprom_write_byte((uint8_t*)edi[9],data); coklat=edi[9]; coklat++; eeprom_write_byte((uint8_t*)gunawan[4],data); merah=gunawan[4]; merah++; goto lewat; else if(bit_is_set (PINA,PINA6))

Page 177: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

149

data=PINA; eeprom_write_byte((uint8_t*)edi[9],data); coklat=edi[9]; coklat++; eeprom_write_byte((uint8_t*)gunawan[4],data); merah=gunawan[4]; merah++; goto lewat; if(dataku==0b00001000)//LD=008 if(bit_is_clear(PINA,PIN7)) data=0x00; eeprom_write_byte((uint8_t*)edi[9],data); coklat=edi[9]; coklat++; eeprom_write_byte((uint8_t*)gunawan[4],data); merah=gunawan[4]; merah++; goto lewat; else if(bit_is_set (PINA,PINA7)) data=PINA; eeprom_write_byte((uint8_t*)edi[9],data); coklat=edi[9]; coklat++; eeprom_write_byte((uint8_t*)gunawan[4],data); merah=gunawan[4]; merah++; goto lewat; //logika LDNOT else if(dataku==LDNOT_)//kode_intruksi = logika LDNOT alamat++; dataku=eeprom_read_byte((uint8_t*)alamat); if(dataku==0b00000001)//kode data LDNOT=001 if(bit_is_clear(PINA,PIN0))

Page 178: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

150

data=0xFF; eeprom_write_byte((uint8_t*)edi[9],data); coklat=edi[9]; coklat++; eeprom_write_byte((uint8_t*)gunawan[4],data); merah=gunawan[4]; merah++; goto lewat; else if(bit_is_set (PINA,PINA0)) data=0x00; eeprom_write_byte((uint8_t*)edi[9],data); coklat=edi[9]; coklat++; eeprom_write_byte((uint8_t*)gunawan[4],data); merah=gunawan[4]; merah++; goto lewat; if(dataku==0b00000010)//LDNOT=002 if(bit_is_clear(PINA,PIN1)) data=0xFF; eeprom_write_byte((uint8_t*)edi[9],data); coklat=edi[9]; coklat++; eeprom_write_byte((uint8_t*)gunawan[4],data); merah=gunawan[4]; merah++; goto lewat; else if(bit_is_set (PINA,PINA1)) data=0x00; eeprom_write_byte((uint8_t*)edi[9],data); coklat=edi[9]; coklat++; eeprom_write_byte((uint8_t*)gunawan[4],data); merah=gunawan[4]; merah++; goto lewat;

Page 179: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

151

if(dataku==0b00000011)//LDNOT=003 if(bit_is_clear(PINA,PIN2)) data=0xFF; eeprom_write_byte((uint8_t*)edi[9],data); coklat=edi[9]; coklat++; eeprom_write_byte((uint8_t*)gunawan[4],data); merah=gunawan[4]; merah++; goto lewat; else if(bit_is_set (PINA,PINA2)) data=0x00; eeprom_write_byte((uint8_t*)edi[9],data); coklat=edi[9]; coklat++; eeprom_write_byte((uint8_t*)gunawan[4],data); merah=gunawan[4]; merah++; goto lewat; if(dataku==0b00000100)//LDNOT=004 if(bit_is_clear(PINA,PIN3)) data=0xFF; eeprom_write_byte((uint8_t*)edi[9],data); coklat=edi[9]; coklat++; eeprom_write_byte((uint8_t*)gunawan[4],data); merah=gunawan[4]; merah++; goto lewat; else if(bit_is_set (PINA,PINA3)) data=0x00; eeprom_write_byte((uint8_t*)edi[9],data); coklat=edi[9]; coklat++; eeprom_write_byte((uint8_t*)gunawan[4],data);

Page 180: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

152

merah=gunawan[4]; merah++; goto lewat; if(dataku==0b00000101)//LDNOT=005 if(bit_is_clear(PINA,PIN4)) data=0xFF; eeprom_write_byte((uint8_t*)edi[9],data); coklat=edi[9]; coklat++; eeprom_write_byte((uint8_t*)gunawan[4],data); merah=gunawan[4]; merah++; goto lewat; else if(bit_is_set (PINA,PINA4)) data=0x00; eeprom_write_byte((uint8_t*)edi[9],data); coklat=edi[9]; coklat++; eeprom_write_byte((uint8_t*)gunawan[4],data); merah=gunawan[4]; merah++; goto lewat; if(dataku==0b00000110)//LDNOT=006 if(bit_is_clear(PINA,PIN5)) data=0xFF; eeprom_write_byte((uint8_t*)edi[9],data); coklat=edi[9]; coklat++; eeprom_write_byte((uint8_t*)gunawan[4],data); merah=gunawan[4]; merah++; goto lewat; else if(bit_is_set (PINA,PINA5)) data=0x00;

Page 181: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

153

eeprom_write_byte((uint8_t*)edi[9],data); coklat=edi[9]; coklat++; eeprom_write_byte((uint8_t*)gunawan[4],data); merah=gunawan[4]; merah++; goto lewat; if(dataku==0b00000111)//LDNOT=007 if(bit_is_clear(PINA,PIN6)) data=0xFF; eeprom_write_byte((uint8_t*)edi[9],data); coklat=edi[9]; coklat++; eeprom_write_byte((uint8_t*)gunawan[4],data); merah=gunawan[4]; merah++; goto lewat; else if(bit_is_set (PINA,PINA6)) data=0x00; eeprom_write_byte((uint8_t*)edi[9],data); coklat=edi[9]; coklat++; eeprom_write_byte((uint8_t*)gunawan[4],data); merah=gunawan[4]; merah++; goto lewat; if(dataku==0b00001000)//LDNOT=008 if(bit_is_clear(PINA,PIN7)) data=0xFF; eeprom_write_byte((uint8_t*)edi[9],data); coklat=edi[9]; coklat++; eeprom_write_byte((uint8_t*)gunawan[4],data); merah=gunawan[4]; merah++; goto lewat;

Page 182: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

154

else if(bit_is_set (PINA,PINA7)) data=0x00; eeprom_write_byte((uint8_t*)edi[9],data); coklat=edi[9]; coklat++; eeprom_write_byte((uint8_t*)gunawan[4],data); merah=gunawan[4]; merah++; goto lewat; //logika AND else if(dataku==AND_)//kode_intruksi = logika and alamat++; dataku=eeprom_read_byte((uint8_t*)alamat); if(dataku==0b00000001)//kode data and=001 if(bit_is_clear(PINA,PIN0)) data1=0x00; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) && (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; else if(bit_is_set (PINA,PINA0)) data1=PINA; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) && (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat;

Page 183: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

155

if(dataku==0b00000010)//and=002 if(bit_is_clear(PINA,PIN1)) data1=0x00; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) && (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; else if(bit_is_set (PINA,PINA1)) data1=PINA; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) && (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; if(dataku==0b00000011)//and=003 if(bit_is_clear(PINA,PIN2)) data1=0x00; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) && (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; else if(bit_is_set (PINA,PINA2)) data1=PINA; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) && (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4];

Page 184: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

156

merah++; goto lewat; if(dataku==0b00000100)//and=004 if(bit_is_clear(PINA,PIN3)) data1=0x00; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) && (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; else if(bit_is_set (PINA,PINA3)) data1=PINA; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) && (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; if(dataku==0b00000101)//and=005 if(bit_is_clear(PINA,PIN4)) data1=0x00; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) && (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; else if(bit_is_set (PINA,PINA4)) data1=PINA; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]);

Page 185: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

157

hijau=dataku6; data2=(data1) && (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; if(dataku==0b00000110)//and=006 if(bit_is_clear(PINA,PIN5)) data1=0x00; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) && (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; else if(bit_is_set (PINA,PINA5)) data1=PINA; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) && (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; if(dataku==0b00000111)//and=007 if(bit_is_clear(PINA,PIN6)) data1=0x00; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) && (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat;

Page 186: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

158

else if(bit_is_set (PINA,PINA6)) data1=PINA; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) && (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; if(dataku==0b00001000)//and=008 if(bit_is_clear(PINA,PIN7)) data1=0x00; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) && (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; else if(bit_is_set (PINA,PINA7)) data1=PINA; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) && (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; //logika ANDNOT else if(dataku==ANDNOT_)//kode_intruksi = logika andnot alamat++; dataku=eeprom_read_byte((uint8_t*)alamat); if(dataku==0b00000001)//kode data andnot=001

Page 187: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

159

if(bit_is_clear(PINA,PIN0)) data1=0xFF; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) && (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; else if(bit_is_set (PINA,PINA0)) data1=0x00; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) && (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; if(dataku==0b00000010)//andnot=002 if(bit_is_clear(PINA,PIN1)) data1=0xFF; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) && (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; else if(bit_is_set (PINA,PINA1)) data1=0x00; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) && (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++;

Page 188: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

160

goto lewat; if(dataku==0b00000011)//andnot=003 if(bit_is_clear(PINA,PIN2)) data1=0xFF; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) && (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; else if(bit_is_set (PINA,PINA2)) data1=0x00; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) && (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; if(dataku==0b00000100)//andnot=004 if(bit_is_clear(PINA,PIN3)) data1=0xFF; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) && (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; else if(bit_is_set (PINA,PINA3)) data1=0x00; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6;

Page 189: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

161

data2=(data1) && (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; if(dataku==0b00000101)//andnot=005 if(bit_is_clear(PINA,PIN4)) data1=0xFF; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) && (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; else if(bit_is_set (PINA,PINA4)) data1=0x00; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) && (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; if(dataku==0b00000110)//andnot=006 if(bit_is_clear(PINA,PIN5)) data1=0xFF; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) && (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; else if(bit_is_set (PINA,PINA5))

Page 190: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

162

data1=0x00; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) && (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; if(dataku==0b00000111)//andnot=007 if(bit_is_clear(PINA,PIN6)) data1=0xFF; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) && (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; else if(bit_is_set (PINA,PINA6)) data1=0x00; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) && (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; if(dataku==0b00001000)//andnot=008 if(bit_is_clear(PINA,PIN7)) data1=0xFF; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) && (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4];

Page 191: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

163

merah++; goto lewat; else if(bit_is_set (PINA,PINA7)) data1=0x00; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) && (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; //logika OR else if(dataku==OR_)//kode_intruksi = logika OR alamat++; dataku=eeprom_read_byte((uint8_t*)alamat); if(dataku==0b00000001)//OR=001 if(bit_is_clear(PINA,PIN0)) data1=0x00; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) || (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; else if(bit_is_set (PINA,PINA0)) data1=PINA; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) || (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat;

Page 192: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

164

if(dataku==0b00000010)//OR=002 if(bit_is_clear(PINA,PIN1)) data1=0x00; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) || (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; else if(bit_is_set (PINA,PINA1)) data1=PINA; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) || (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; if(dataku==0b00000011)//OR=003 if(bit_is_clear(PINA,PIN2)) data1=0x00; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) || (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; else if(bit_is_set (PINA,PINA2)) data1=PINA; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) || (hijau);

Page 193: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

165

eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; if(dataku==0b00000100)//OR=004 if(bit_is_clear(PINA,PIN3)) data1=0x00; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) || (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; else if(bit_is_set (PINA,PINA3)) data1=PINA; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) || (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; if(dataku==0b00000101)//OR=005 if(bit_is_clear(PINA,PIN4)) data1=0x00; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) || (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; else if(bit_is_set (PINA,PINA4))

Page 194: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

166

data1=PINA; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) || (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; if(dataku==0b00000110)//OR=006 if(bit_is_clear(PINA,PIN5)) data1=0x00; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) || (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; else if(bit_is_set (PINA,PINA5)) data1=PINA; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) || (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; if(dataku==0b00000111)//OR=007 if(bit_is_clear(PINA,PIN6)) data1=0x00; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) || (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++;

Page 195: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

167

goto lewat; else if(bit_is_set (PINA,PINA6)) data1=PINA; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) || (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; if(dataku==0b00001000)//OR=008 if(bit_is_clear(PINA,PIN7)) data1=0x00; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) || (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; else if(bit_is_set (PINA,PINA7)) data1=PINA; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) || (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; //logika ORNOT else if(dataku==ORNOT_)//kode_intruksi = logika ORNOT alamat++; dataku=eeprom_read_byte((uint8_t*)alamat);

Page 196: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

168

if(dataku==0b00000001)//ORNOT=001 if(bit_is_clear(PINA,PIN0)) data1=0xFF; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) || (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; else if(bit_is_set (PINA,PINA0)) data1=0x00; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) || (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; if(dataku==0b00000010)//ORNOT=002 if(bit_is_clear(PINA,PIN1)) data1=0xFF; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) || (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; else if(bit_is_set (PINA,PINA1)) data1=0x00; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) || (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2);

Page 197: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

169

merah=gunawan[4]; merah++; goto lewat; if(dataku==0b00000011)//ORNOT=003 if(bit_is_clear(PINA,PIN2)) data1=0xFF; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) || (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; else if(bit_is_set (PINA,PINA2)) data1=0x00; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) || (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; if(dataku==0b00000100)//ORNOT=004 if(bit_is_clear(PINA,PIN3)) data1=0xFF; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) || (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; else if(bit_is_set (PINA,PINA3)) data1=0x00;

Page 198: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

170

dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) || (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; if(dataku==0b00000101)//ORNOT=005 if(bit_is_clear(PINA,PIN4)) data1=0xFF; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) || (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; else if(bit_is_set (PINA,PINA4)) data1=0x00; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) || (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; if(dataku==0b00000110)//ORNOT=006 if(bit_is_clear(PINA,PIN5)) data1=0xFF; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) || (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat;

Page 199: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

171

else if(bit_is_set (PINA,PINA5)) data1=0x00; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) || (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; if(dataku==0b00000111)//ORNOT=007 if(bit_is_clear(PINA,PIN6)) data1=0xFF; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) || (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; else if(bit_is_set (PINA,PINA6)) data1=0x00; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) || (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; if(dataku==0b00001000)//ORNOT=008 if(bit_is_clear(PINA,PIN7)) data1=0xFF; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) || (hijau);

Page 200: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

172

eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; else if(bit_is_set (PINA,PINA7)) data1=0x00; dataku6=eeprom_read_byte((uint8_t*)gunawan[4]); hijau=dataku6; data2=(data1) || (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; //logika OUT else if(dataku==OUT_)//kode_intruksi = logika out alamat++; dataku=eeprom_read_byte((uint8_t*)alamat); if(dataku==0b01100101)//OUT=101 dataku3=eeprom_read_byte((uint8_t*)gunawan[4]); kuning=dataku3; if(kuning>0x00) kuning|=0xFF; temp=kuning; temp&=0x01; PORTC|=temp; goto lewat; else if(kuning==0x00) kuning&=0xFF; temp=kuning; temp&=0x00; PORTC|=temp; goto lewat;

Page 201: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

173

if(dataku==0b01100110)//OUT=102 dataku3=eeprom_read_byte((uint8_t*)gunawan[4]); kuning=dataku3; if(kuning>0x00) kuning|=0xFF; temp=kuning; temp&=0x02; PORTC|=temp; goto lewat; else if(kuning==0x00) kuning&=0xFF; temp=kuning; temp&=0x00; PORTC|=temp; goto lewat; if(dataku==0b01100111)//OUT=103 dataku3=eeprom_read_byte((uint8_t*)gunawan[4]); kuning=dataku3; if(kuning>0x00) kuning|=0xFF; temp=kuning; temp&=0x04; PORTC|=temp; goto lewat; else if(kuning==0x00) kuning&=0xFF; temp=kuning; temp&=0x00; PORTC|=temp; goto lewat;

Page 202: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

174

if(dataku==0b01101000)//OUT=104 dataku3=eeprom_read_byte((uint8_t*)gunawan[4]); kuning=dataku3; if(kuning>0x00) kuning|=0xFF; temp=kuning; temp&=0x08; PORTC|=temp; goto lewat; else if(kuning==0x00) kuning&=0xFF; temp=kuning; temp&=0x00; PORTC|=temp; goto lewat; if(dataku==0b01101001)//OUT=105 dataku3=eeprom_read_byte((uint8_t*)gunawan[4]); kuning=dataku3; if(kuning>0x00) kuning|=0xFF; temp=kuning; temp&=0x10; PORTC|=temp; goto lewat; else if(kuning==0x00) kuning&=0xFF; temp=kuning; temp&=0x00; PORTC|=temp; goto lewat;

Page 203: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

175

if(dataku==0b01101010)//OUT=106 dataku3=eeprom_read_byte((uint8_t*)gunawan[4]); kuning=dataku3; if(kuning>0x00) kuning|=0xFF; temp=kuning; temp&=0x20; PORTC|=temp; goto lewat; else if(kuning==0x00) kuning&=0xFF; temp=kuning; temp&=0x00; PORTC|=temp; goto lewat; if(dataku==0b01101011)//OUT=107 dataku3=eeprom_read_byte((uint8_t*)gunawan[4]); kuning=dataku3; if(kuning>0x00) kuning|=0xFF; temp=kuning; temp&=0x40; PORTC|=temp; goto lewat; else if(kuning==0x00) kuning&=0xFF; temp=kuning; temp&=0x00; PORTC|=temp; goto lewat;

Page 204: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

176

if(dataku==0b01101100)//OUT=108 dataku3=eeprom_read_byte((uint8_t*)gunawan[4]); kuning=dataku3; if(kuning>0x00) kuning|=0xFF; temp=kuning; temp&=0x80; PORTC|=temp; goto lewat; else if(kuning==0x00) kuning&=0xFF; temp=kuning; temp&=0x00; PORTC|=temp; goto lewat; //logika OUTNOT else if(dataku==OUTNOT_)//kode_intruksi = logika outnot alamat++; dataku=eeprom_read_byte((uint8_t*)alamat); if(dataku==0b01100101)//OUTNOT=101 dataku3=eeprom_read_byte((uint8_t*)gunawan[4]); kuning=dataku3; if(kuning>0x00) kuning&=0x00; temp=kuning; temp&=0x00; PORTC|=temp; goto lewat;

Page 205: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

177

else if(kuning==0x00) kuning|=0xFF; temp=kuning; temp&=0x01; PORTC|=temp; goto lewat; if(dataku==0b01100110)//OUTNOT=102 dataku3=eeprom_read_byte((uint8_t*)gunawan[4]); kuning=dataku3; if(kuning>0x00) kuning&=0x00; temp=kuning; temp&=0x00; PORTC|=temp; goto lewat; else if(kuning==0x00) kuning|=0xFF; temp=kuning; temp&=0x02; PORTC|=temp; goto lewat; if(dataku==0b01100111)//OUTNOT=103 dataku3=eeprom_read_byte((uint8_t*)gunawan[4]); kuning=dataku3; if(kuning>0x00) kuning&=0x00; temp=kuning; temp&=0x00; PORTC|=temp; goto lewat;

Page 206: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

178

else if(kuning==0x00) kuning|=0xFF; temp=kuning; temp&=0x04; PORTC|=temp; goto lewat; if(dataku==0b01101000)//OUTNOT=104 dataku3=eeprom_read_byte((uint8_t*)gunawan[4]); kuning=dataku3; if(kuning>0x00) kuning&=0x00; temp=kuning; temp&=0x00; PORTC|=temp; goto lewat; else if(kuning==0x00) kuning|=0xFF; temp=kuning; temp&=0x08; PORTC|=temp; goto lewat; if(dataku==0b01101001)//OUTNOT=105 dataku3=eeprom_read_byte((uint8_t*)gunawan[4]); kuning=dataku3; if(kuning>0x00) kuning&=0x00; temp=kuning; temp&=0x00; PORTC|=temp; goto lewat;

Page 207: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

179

else if(kuning==0x00) kuning|=0xFF; temp=kuning; temp&=0x10; PORTC|=temp; goto lewat;

if(dataku==0b01101010)//OUTNOT=106 dataku3=eeprom_read_byte((uint8_t*)gunawan[4]); kuning=dataku3; if(kuning>0x00) kuning&=0x00; temp=kuning; temp&=0x00; PORTC|=temp; goto lewat; else if(kuning==0x00) kuning|=0xFF; temp=kuning; temp&=0x20; PORTC|=temp; goto lewat; if(dataku==0b01101011)//OUTNOT=107 dataku3=eeprom_read_byte((uint8_t*)gunawan[4]); kuning=dataku3; if(kuning>0x00) kuning&=0x00; temp=kuning; temp&=0x00; PORTC|=temp; goto lewat;

Page 208: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

180

else if(kuning==0x00) kuning|=0xFF; temp=kuning; temp&=0x40; PORTC|=temp; goto lewat; if(dataku==0b01101100)//OUTNOT=108 dataku3=eeprom_read_byte((uint8_t*)gunawan[4]); kuning=dataku3; if(kuning>0x00) kuning&=0x00; temp=kuning; temp&=0x00; PORTC|=temp; goto lewat; else if(kuning==0x00) kuning|=0xFF; temp=kuning; temp&=0x80; PORTC|=temp; goto lewat; //logika LDTIM else if(dataku==LDTIM_)//kode_intruksi = logika ldtim alamat++; dataku=eeprom_read_byte((uint8_t*)alamat); if(dataku==0b00000001)//LDTIM=001 data=rina1[4]; eeprom_write_byte((uint8_t*)edi[9],data); coklat=edi[9];

Page 209: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

181

coklat++; eeprom_write_byte((uint8_t*)gunawan[4],data); merah=gunawan[4]; merah++; goto lewat; //logika LDTIMNOT else if(dataku==LDTIMNOT_)//kode_intruksi = logika ldtimnot alamat++; dataku=eeprom_read_byte((uint8_t*)alamat); if(dataku==0b00000001)//kode data LDTIMNOT=000 data=0x00; eeprom_write_byte((uint8_t*)edi[9],data); coklat=edi[9]; coklat++; eeprom_write_byte((uint8_t*)gunawan[4],data); merah=gunawan[4]; merah++; goto lewat; //logika LDCNT else if(dataku==LDCNT_)//kode_intruksi = logika ldcnt alamat++; dataku=eeprom_read_byte((uint8_t*)alamat); if(dataku==0b00000001)//kode data LDCNT=001 data=0xFF; eeprom_write_byte((uint8_t*)edi[9],data); coklat=edi[9]; coklat++; eeprom_write_byte((uint8_t*)gunawan[4],data); merah=gunawan[4]; merah++; goto lewat;

Page 210: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

182

//logika LDCNTNOT else if(dataku==LDCNTNOT_)//kode_intruksi = logika ldcntnot alamat++; dataku=eeprom_read_byte((uint8_t*)alamat); if(dataku==0b00000001)//kode data LDCNTNOT=000 data=0x00; eeprom_write_byte((uint8_t*)edi[9],data); coklat=edi[9]; coklat++; eeprom_write_byte((uint8_t*)gunawan[4],data); merah=gunawan[4]; merah++; goto lewat; //logika ANDTIM else if(dataku==ANDTIM_)//kode_intruksi = logika andtim alamat++; dataku=eeprom_read_byte((uint8_t*)alamat); if(dataku==0b00000001)//ANDTIM=001 data1=rina1[4]; dataku2=eeprom_read_byte((uint8_t*)edi[9]); hijau=dataku2; data2=(data1) && (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; //logika ANDTIMNOT else if(dataku==ANDTIMNOT_)//kode_intruksi = logika andtimnot alamat++; dataku=eeprom_read_byte((uint8_t*)alamat); if(dataku==0b00000001)//ANDTIMNOT=001

Page 211: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

183

data1=0x00; dataku2=eeprom_read_byte((uint8_t*)edi[9]); hijau=~dataku2; data2=(data1) && (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; //logika ANDCNT else if(dataku==ANDCNT_)//kode_intruksi = logika andcnt alamat++; dataku=eeprom_read_byte((uint8_t*)alamat); if(dataku==0b00000001)//ANDCNT=000 data1=0xFF; dataku2=eeprom_read_byte((uint8_t*)edi[9]); hijau=dataku2; data2=(data1) && (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; //logika ANDCNTNOT else if(dataku==ANDCNTNOT_)//kode_intruksi = logika andcntnot alamat++; dataku=eeprom_read_byte((uint8_t*)alamat); if(dataku==0b00000001)//ANDCNTNOT=000 data1=0x00; dataku2=eeprom_read_byte((uint8_t*)edi[9]); hijau=~dataku2; data2=(data1) && (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat;

Page 212: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

184

//logika ORTIM else if(dataku==ORTIM_)//kode_intruksi = logika ortim alamat++; dataku=eeprom_read_byte((uint8_t*)alamat); if(dataku==0b00000001)//ORTIM=001 data1=rina1[4]; dataku2=eeprom_read_byte((uint8_t*)edi[9]); hijau=dataku2; data2=(data1)|| (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; //logika ORTIMNOT else if(dataku==ORTIMNOT_)//kode_intruksi = logika ortimnot alamat++; dataku=eeprom_read_byte((uint8_t*)alamat); if(dataku==0b00000001)//ORTIMNOT=001 data1=0x00; dataku2=eeprom_read_byte((uint8_t*)edi[9]); hijau=~dataku2; data2=(data1) || (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; //logika ORCNT else if(dataku==ORCNT_)//kode_intruksi = logika orcnt alamat++; dataku=eeprom_read_byte((uint8_t*)alamat);

Page 213: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

185

if(dataku==0b00000001)//ORCNT=000 data1=0xFF; dataku2=eeprom_read_byte((uint8_t*)edi[9]); hijau=dataku2; data2=(data1) || (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; //logika ORCNTNOT else if(dataku==ORCNTNOT_)//kode_intruksi = logika orcntnot alamat++; dataku=eeprom_read_byte((uint8_t*)alamat); if(dataku==0b00000001)//ORCNTNOT=001 data1=0x00; dataku2=eeprom_read_byte((uint8_t*)edi[9]); hijau=~dataku2; data2=(data1) || (hijau); eeprom_write_byte((uint8_t*)gunawan[4],data2); merah=gunawan[4]; merah++; goto lewat; //logika CNT_ else if(dataku==CNT_) alamat++; dataku=eeprom_read_byte((uint8_t*)alamat); n=dataku; data=n; cnt(); //logika TIM_ else if(dataku==TIM_) alamat++;

Page 214: repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan

186

dataku=eeprom_read_byte((uint8_t*)alamat); n=dataku; sei(); loop_until_bit_is_set(PINB,PIN1); timer1_ctc_init(); //logika END else if(dataku==END_)//kode_intruksi = logika END asm("cli"); cekstatus=0; _delay_us(100); asm("sei"); break; lewat: asm("nop"); cli(); baca2(); ; return 0;