BAB III
PERANCANGAN DAN IMPLEMENTASI
Pada tugas akhir ini akan dibuat sebuah perangkat keras PLC dengan fasilitas minimun beserta perangkat lunak sistem operasinya yang ditanamkan pada mikrokontroler sehingga memfungsikan mikrokontroler tersebut sebagai PLC. Selain itu juga dibuat program konversi dari diagram ladder menjadi suatu format data yang dapat dimengerti oleh sistem operasi tersebut. Pembuatan perangkat lunak diagram Ladder untuk memprogram PLC dibuat sendiri dengan menggunakan bahasa pemrograman Visual Basic 6. Diagram blok sistem PLC yang akan dibangun dapat dilihat pada Gambar 3.1 berikut 12 .
Gambar 3.1 Rancangan sistem PLC
12
OMRON. Programmable Controllers Operation Manual
22
Spesifikasi sistem minimum PLC yang dibuat adalah
1. PLC dapat diprogram dengan diagram ladder. Program yang akan ditanamkan ke PLC tersebut selanjutya disebut dengan program aplikasi kendali. Program aplikasi ini nantinya dapat di upload ke PLC dan juga dapat di download dari PLC ke komputer melalui komunikasi serial RS232 secara asinkron UART (Universal Asynchronous Receiver /Transmitter).
2. Selama PLC diaktifkan atau dalam keadaan RUN komputer dapat mengakses data-data masukan atau keluaran dan variabel proses melalui komunikasi UART.
3. PLC ini terdiri dari 8 masukan digital, 8 keluaran digital, 1 saluran masukan analog, tampilan LCD dan 1 port komunikasi serial RS232.
3.1 Rancang Bangun Perangkat Keras
Seperti yang telah disebutkan pada bab sebelumnya mikrokontroler yang digunakan untuk difungsikan sebagai PLC adalah mikrokontroler ATMEL AT89S52.
Alasan yang mendasari penggunaan mikrokontroler ini adalah adanya downloadable flash memory 8 KB sehingga tidak diperlukan lagi memori luar untuk menampung program sistem operasi PLC. Selain itu kapasitasnya yang 8 KB relatif lebih besar daripada yang terdapat pada sebagian besar keluarga MCS-51 yang lain. Memori ini juga dapat diprogram ulang sampai 1000 kali. Paling utama dari semua itu, pemakaian memori ini memungkinkan sistem pemrograman mikrokontroler menjadi lebih sederhana tidak memerlukan rangkaian yang rumit seperti pada AT89C51.
23
3.1.1 Rangkaian pembangkit clock
Rangkaian ini berfungsi untuk membangkitkan sinyal clock untuk menjalankan mikrokontroler. Pada dasarnya mikrokontroler mempunyai internal clock generator yang berfungsi sebagai sumber clock, tetapi masih diperlukan rangkaian tambahan untuk membangkitkan clock yaitu berupa osilator kristal dan kapasitor. Nilai frekuensi osilator kristal (foc) yang dipakai dalam tugas akhir ini adalah 11,059 MHZ. Rangkaian lengkap dapat dilihat pada Gambar 3.2 berikut 13 .
Gambar 3.2 Rangkaian pembangkit clock
3.1.2 Rangkaian reset
Rangkaian reset yang diberikan pada Gambar 3.3 adalah rangkaian yang berfungsi untuk memberikan pulsa masukan selama selang waktu 2 siklus mesin pada saat sistem mendapatkan catu daya pertama kali. Masukan reset (pin 9) sendiri adalah active high. Ketika pin reset diset tinggi akan mereset mikrokontroler kembali ke power-on state 14 .
13 14
Sumber : Pari Vallal Kannan, Micrprocessor Design Project Training Sumber : Pari Vallal Kannan, Micrprocessor Design Project Training
24
Gambar 3.3 Rangkaian reset
3.1.3 Komunikasi serial RS232
Untuk berkomunikasi dengan divais luar melalui komunikasi RS232, digunakan port 3.0 sebagai penerima data (RXD) dan port 3.1 sebagai pengirim data (TXD) seperti yang terlihat pada Gambar 3.4. Tegangan pada mikrokontroler untuk standar digitalnya adalah +5V dan 0V dan ini bukan level TTL yang menjadi standar komunikasi serial RS232, maka Integrated Circuit (IC) Maxim 232 digunakan untuk mengubahnya menjadi level TTL RS232. Port serial pada mikrokontroler AT89S52 bersifat full duplex artinya pengiriman dan penerimaan data dapat dilakukan secara bersamaan.
Gambar 3.4 Rangkaian komunikasi serial
25
Untuk berkomunikasi dengan divais luar baudrate mikrokontroler dengan baudrate divais luar haruslah sama. Baudrate adalah jumlah simbol yang dikirim dalam satu detik atau dalam sistem ini sama dengan jumlah bit yang dikirim dalam satu detik. Untuk mendapatkan baudrate yang sesuai dapat dilakukan dengan mengkonfigurasi SFR TH1 dan bit SMOD pada SFR PCON (Power Control). Pada tugas akhir ini diinginkan baudrate sebesar 19200 bps dengan frekuensi osilator 11,059 MHZ, maka cara mengkonfigurasinya adalah :
maka dengan SMOD =1 didapat :
Sehingga kita dapat,
TH1 = 253 = FDH.
3.1.4 Port masukan digital
Semua saluran masukan dan keluaran PLC pada Tugas Akhir ini menggunakan port 0 pada mikrokontroler AT89S52. Pada port masukan digital, karakteristik yang dimilikinya adalah masukan digital dengan tegangan masukan kurang dari 5VDC adalah logika 0 dan lebih dari 5VDC berlogika 1. Rangkaian untuk masukan digital ditunjukkan pada Gambar 3.5.
26
Pengalamatan port masukan mengunakan standar yang didapat pada buku Programmable Logic Controller karya Frank D. Petruzella, seperti dapat dilihat pada tabel 3.1. Karekteristik dari port masukan ini adalah masukan digital dengan tegangan masukan kurang dari 5VDC adalah logika 0 dan lebih dari 5VDC berlogika 1 15 .
Gambar 3.5 Rangkaian masukan digital
Tabel 3.1 Pengalamatan port masukan
3.1.5 Port keluaran digital
Port keluaran digital PLC menggunakan port 2 pada mikrokontroler AT89S52. Pada port keluaran ini digunakan IC 74HC573 sebagai latch yang berfungsi untuk
15
Sumber : Frank D Petruzella, Programmable Logic Controller
27
mengatur keluaran dari PLC. Pengaturan latch ini dilakukan melalui port 3.3 dari mikrokontroler, apabila dikirimkan sinyal high maka data dari port 2 akan masuk ke port keluaran, ketika dikirimkan sinyal low maka IC tersebut akan menyimpan data terakhir yang masuk ke port keluaran (latch). Gambar rangkaian keluaran digital ditunjukkan pada Gambar 3.6.
Gambar 3.6 Rangkaian keluaran digital
Pengalamatan port keluaran dapat dilihat pada Tabel 3.2. Karakteristik dari port keluaran adalah keluaran tegangan 5 VDC 16
Tabel 3.2 Pengalamatan port keluaran
16
Sumber : Frank D Petruzella, Programmable Logic Controller
28
3.1.7 Tampilan LCD
Pada PLC ini terdapat port yang digunakan untuk menampilkan data melalui LCD. Rangkaian tampilan LCD ditunjukkan pada Gambar 3.7. Port yang digunakan adalah port 2 dari mikrokontroler, yang pengaturan penggunaannya diatur melalui port 3.7. Pada sistem tampilan LCD ini digunakan IC 74LS245 sebagai buffer yang mengatur arah data yang masuk dan keluar ke LCD. Tampilan LCD ini bisa dipergunakan untuk menampilkan berbagai parameter yang sedang dioperasikan oleh PLC dengan cara memprogramnya, sehingga bisa diketahui berbagai variabel yang diinginkan.
Gambar 3.7 Rangkaian tampilan LCD
3.2 Rancang Bangun Perangkat Lunak
Sistem operasi yang dibuat dan ditanam ke mikrokontroler AT89S52 ini berfungsi untuk mengatur cara kerja PLC atau dengan kata lain memfungsikan mikrokontroler AT89S52 sebagai PLC. Pemrograman sistem operasi ini akan ditulis dengan bahasa
29
Assembler. Secara umum algoritma sistem operasi yang akan dibuat dapat dilihat pada Gambar 3.8.
3.2.1 Prosedur Utama
Prosedur ini adalah prosedur yang dijalankan oleh mikrokontroler pertama kali. Prosedur ini dinamakan program utama yang akan menjalankan fungsi utama sistem operasi. Prosedur ini akan menjalankan satu persatu instruksi dari program aplikasi. Berikut prosedur utama untuk masing-masing instruksinya.
o LOAD (Normally Open)
Instruksi ini akan membaca data register I/O sesuai dengan parameternya dan menyimpannya dalam stack. Format data untuk instruksi ini adalah 00 diikuti dengan alamat I/O yang akan diakses, contoh 001001.
o LOADNOT (Normally Close)
Instruksi ini akan membaca data register I/O sesuai dengan parameternya, di-XOR dengan 1 dan menyimpannya dalam stack. Format data untuk instruksi ini adalah 01 diikuti dengan alamat I/O yang akan diakses, contoh 011002.
o AND
Instruksi ini akan membaca isi stack dan di-AND-kan dengan data register I/O sesuai dengan parameternya kemudian disimpan ke stack kembali. Format data untuk instruksi ini adalah 02 diikuti dengan alamat I/O yang akan diakses, contoh 021002.
30
o ANDNOT
Instruksi ini akan membaca isi stack, isi stack ini di-AND-kan dengan hasil data register I/O di-XOR dengan 1, kemudian disimpan ke stack kembali. Format data untuk instruksi ini adalah 03 diikuti dengan alamat I/O yang akan diakses, contoh 031002.
o OR
Instruksi ini akan membaca isi stack dan di-OR-kan dengan data register I/O sesuai dengan parameternya kemudian disimpan ke stack kembali. Format data untuk instruksi ini adalah 04 diikuti dengan alamat I/O yang akan diakses, contoh 041002
o ORNOT
Instruksi ini akan membaca isi stack, isi stack ini di-OR-kan dengan hasil dari data register I/O di-XOR dengan 1, kemudian disimpan ke stack kembali. Format data untuk instruksi ini adalah 05 diikuti dengan alamat I/O yang akan diakses, contoh 051002.
o OUT
Instruksi ini akan membaca data dari stack dan diberikan ke register output sesuai dengan parameternya. Format data untuk instruksi ini adalah 08 diikuti dengan alamat I/O yang akan diakses, contoh 081002.
31
o OUTNOT
Instruksi ini akan membaca data dari stack dan di-XOR-kan dengan 1 kemudian diberikan ke register output sesuai dengan parameternya. Format data untuk instruksi ini adalah 09 diikuti dengan alamat I/O yang akan diakses, contoh 091002.
Gambar 3.8 Algoritma Power-ON Ready (POR) PLC
32
3.2.2 Prosedur inisiasi serial
Prosedur ini untuk mengkonfigurasi mode operasi dan baudrate komunikasi port serial. Prosedur ini tidak memiliki nilai balikan maupun argumen.
INIT: MOV
SCON,#50H
MOV
A,PCON
SETB
ACC.7
MOV
PCON,A
MOV
TMOD,#20H
MOV
TH1,#0FDH
SETB
TR1
RET
Baris pertama instruksi tersebut merupakan bentuk pengaktifan mode serial, sehingga proses pengiriman data antara hardware dengan komputer bisa dilakukan. Baudrate yang digunakan untuk komunikasi ini adalah sebesar 19200 bps.
3.2.3 Prosedur menerima karakter
Prosedur ini untuk mendapatkan karakter dari port serial. Prosedur ini memiliki nilai balikan karakter yang diterima.
TERIMA: JNB
RI,$
;cek masukan
CLR
RI
;Ri di nolkan supaya bisa menerima karakter baru
MOV A,SBUF
;pindahkan karakter ke akumulator
RET
33
JNB RI,$; adalah perintah agar menunggu bit RI di set oleh hardware, jika sudah diset maka kembali dinolkan dengan perintah CLR RI; agar dapat digunakan kembali sebagai tanda suatu byte data telah selesai diterima. RI adalah bit pada register SCON sebagai tanda data telah selesai diterima. Selanjutnya data pada SBUF yang merupakan data / karakter yang diterima melalui port serial ditampung pada accumulator. Baris perintah RET; untuk memberikan nilai balikan berupa karakter yang telah diterima.
3.2.4 Prosedur mengirimkan karakter
Prosedur ini untuk mengirim karakter melalui port serial. Prosedur ini memiliki nilai balikan karakter yang telah terkirim dan memiliki argumen karakter yang ingin dikirim.
KIRIM: MOV
SBUF,A
JNB
TI,$
CLR
TI
RET
Karakter yang akan dikirimkan disimpan dalam Accumulator, yang selanjutnya karakter tersebut dipindahkan ke dalam SBUF melalui instruksi MOV SBUF,A;. JNB TI,$; adalah perintah agar menunggu bit TI di set oleh perangkat keras, jika sudah diset maka kembali dinolkan dengan perintah CLR TI; agar dapat digunakan kembali sebagai tanda suatu byte data telah selesai dikirim. TI adalah bit pada register SCON sebagai tanda pengiriman telah selesai dilakukan.
34
3.2.5 Prosedur pemilihan port
Prosedur ini untuk mengetahui data dari port yang sesuai dengan alamat yang ada pada parameter instruksi program aplikasi. Prosedur ini memiliki nilai balikan data port yang diinginkan.
PILIH_PORT: CLR
A
MOV
A,@R0
CJNE
A,#'@',TERUS_IN
RET TERUS_IN: CJNE
A,#'1',PORT_OUT
INC
R0
PORT_IN: CLR
A
MOV
A,@R0
INC
R0
DJNZ
R3,PORT_IN
PORT_IN0: CJNE
A,#'0',PORT_IN1
MOV
C,P0.0
RET
PORT_IN1: CJNE
A,#'1',PORT_IN2
MOV
C,P0.1
RET
35
PORT_IN2: CJNE
A,#'2',PORT_IN3
MOV
C,P0.2
RET
PORT_IN3: CJNE
A,#'3',PORT_IN4
MOV
C,P0.3
RET
PORT_IN4: CJNE
A,#'4',PORT_IN5
MOV
C,P0.4
RET
PORT_IN5: CJNE
A,#'5',PORT_IN6
MOV
C,P0.5
RET
PORT_IN6: CJNE
A,#'6',PORT_IN7
MOV
C,P0.6
RET
PORT_IN7: MOV
C,P0.7
RET ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PORT_OUT:
36
INC
R0
TERUS_OUT: CLR
A
MOV
A,@R0
INC
R0
CJNE
A,#'@',TERUS_OUT0
RET TERUS_OUT0: CJNE
A,#'0',TERUS_OUT1
TERUS_OUT2: CLR
A
MOV
A,@R0
INC
R0
DJNZ
R3,TERUS_OUT2
PORT_OUT0: CJNE
A,#'0',PORT_OUT1
MOV
A,@R1
RRC
A
MOV
P2.0,C
RET
PORT_OUT1: CJNE
A,#'1',PORT_OUT2
MOV
A,@R1
RRC
A
MOV
P2.1,C
RET
37
PORT_OUT2: CJNE
A,#'2',PORT_OUT3
MOV
A,@R1
RRC
A
MOV
P2.2,C
RET
PORT_OUT3: CJNE
A,#'3',PORT_OUT4
MOV
A,@R1
RRC
A
MOV
P2.3,C
RET
PORT_OUT4: CJNE
A,#'4',PORT_OUT5
MOV
A,@R1
RRC
A
MOV
P2.4,C
RET
PORT_OUT5: CJNE
A,#'5',PORT_OUT6
MOV
A,@R1
RRC
A
MOV
P2.5,C
RET
PORT_OUT6: CJNE
A,#'6',PORT_OUT7
38
MOV
A,@R1
RRC
A
MOV
P2.6,C
RET
PORT_OUT7: MOV
A,@R1
RRC
A
MOV
P2.7,C
RET
Prosedur tersebut adalah perintah untuk membaca alamat port yang terdapat di flash memori dan ditampung pada register R1. Register R1 inilah yang akan digunakan untuk mengetahui port mana yang ingin di-assign.
3.3 Pemrograman Diagram Ladder
Pemrograman untuk Ladder Diagram (diagram tangga)
dibuat sendiri dengan
menggunakan bahasa pemrograman Visual Basic versi 6. Visual dari pemrograman ini berupa sel-sel berjumlah 97 (batas antar sel dihilangkan, sehingga tidak terlihat jumlah sel yang terdapat pada program) seperti dapat dilihat pada Gambar 3.9.
Terdapat 4 jenis sel yang dibagi berdasar isi sel tersebut, yaitu :
1. Sel yang diisi oleh salah satu komponen input berupa load dan loadnot yang terdapat pada sel bernomor genap.
39
Gambar 3.9 Visual Ladder Programmer
2. Sel yang diisi oleh salah satu komponen output berupa OUT dan OUTNOT yang berada di nomor 12, 26, 40, 54, 68, 82, 96 (sel paling kanan dari semua rung/baris).
3. Sel yang diisi oleh penghubung antar komponen yaitu garis horizontal dan vertikal di semua nomor ganjil. Pada sel ini dapat berisi kedua penghubung vertikal dan horizontal atau salah satunya saja.
4. Sel yang diisi oleh penamaan komponen masukan atau keluaran yang terdapat di bagian atas dari setiap rung.
Alogritma ini dibagi dalam 3 tahap yaitu :
1. Pengisian jenis dan nama komponen beserta parameter.
2. Pencarian jenis komponen di sel bernomor genap dan hubungan antar komponen di sel bernomor ganjil. Pencarian dilakukan berdasarkan rung (baris), dimulai dari 40
sel bernomor 0, 1 sampai 13 ; 14 sampai 27 dst, seperti dapat dilihat pada Gambar 3.10 berikut.
Gambar 3.10 Pencarian penghubung antar komponen
3. Lakukan perubahan nama komponen sesuai dengan hubungan antar komponen yang didapat. Perubahan ini bisa mengganti karakter dari string sel, seperti yang terjadi pada logika AND, ANDNOT, OR dan ORNOT, Contoh :
Pada diagram Ladder diatas, instruksinya adalah Load 1000, Load 1001, Load 1002 dan OUT 0000. Dalam format hexa yang disimpan pada tiap sel adalah
Sel 1
Sel 2
Sel 3
Sel 4
001000
001002
001001
080000
Format hexa masing-masing sel diatas harus diubah, karena pada diagram ditemukan logika AND dan OR. Format hexa masing-masing sel menjadi
41
Sel 1
Sel 2
Sel 3
Sel 4
001000
021002
041001
080000
Terlihat sel 2 yang awalnya memiliki instruksi 00 (LOAD) berubah menjadi 02 (AND) begitu juga pada sel 3 yang awalnya memiliki instruksi 00 (LOAD) berubah menjadi 04 (OR). Pada alogritma format hexa pada tiap sel input akan dibaca dari kiri ke kanan dan atas ke bawah dilanjutkan dengan format hexa selsel outpuutnya. Sehingga format hexa yang akan dikirim pada diagram ladder diatas adalah 001000021002041001080000
42