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
214
Embed
repository.usd.ac.idrepository.usd.ac.id/29198/1/045114070_Full.pdf · TUGAS AKHIR IMPLEMENTASI CPU PLC (PROGRAMMABLE LOGIC CONTROL) MENGGUNAKAN MIKROKONTROLLER ATMEGA32 Diajukan
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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
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
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
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
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
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
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
di atas, jika dikonfigurasi sebagai master maka pin MISO ini sebagai
input tetapi jika dikonfigurasi sebagai slave maka pin MISO ini
sebagai output.
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.
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.
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
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
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.
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:
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]
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.
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]
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
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.
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
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.
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
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
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
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
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
51
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.
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-
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
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.
Gambar 4.23 logika LD CNT untuk memanggil hasil eksekusi CNT
Hasil dari logika counter
Gambar 4.24 hasil dari logika counter
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
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
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
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
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
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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.
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
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
//***************************************************************** // 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
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
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;
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)
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;