DAFTAR PUSTAKA.
[1] HTTP://www. NEMA. Org
[2] HTTP://www.plcs.net
[3] OMRON. Programmable Controllers Operation Manual, OMRON Electronics
Pte.Ltd. 2002.
[4] Frank D Petruzella, Programmable Logic Controller, McGraw Hill .USA. 1998.
[5] ATMEL. Datasheet AT89S52.
[6] Moh. Ibnu Malik, ST. Belajar Mikrokontroler Atmel AT89S52.Gava Media
Yogyakarta. 2003
[7] Pari Vallal Kannan, Micrprocessor Design Project Training. University of
Texas. Dallas.
DAFTAR PUBLIKASI
1. Gun Gun Gumilar, Asep Suhendi, dan Khairurrijal. “Rancang Bangun
Programmable Logic Controller (PLC) Minimum Berbasis Mikrokontoler
ATMEL AT89S52”. Asosiasi Akademisi Perguruan Tinggi Seluruh Indonesia
(ASASI) (Ciawi, Bogor, 9-11 Agustus 2007).
2. Gun Gun Gumilar dan Khairurrijal. “Super Programmable Logic Controller
T100MD-888+”. Seminar Instrumentasi Berbasis Fisika (SIBF) (Bandung, 31
Agustus 2006).
3. Yanuar Syapaat, Suryadi, Heri Permadi, Gun Gun Gumilar, dan Khairurrijal.
”Aplikasi Mikrokontroler MCS-51 dalam Percobaan Bandul untuk Penentuan
Nilai Gravitasi Bumi”. Seminar Nasional Teknologi dan Rekayasa Industri
(SNTRI07). Applied Tech. 07 Vol. 1 (serpong, April 2007).
RANCANG BANGUN
PROGRAMMABLE LOGIC CONTROLLER (PLC) MINIMUM
BERBASIS MIKROKONTOLER ATMEL AT89S52
Gun Gun Gumilar
1, Asep Suhendi, dan Khairurrijal
2K.K. Fisika Material Elektronik, Fakultas Matematika dan Ilmu Pengetahuan Alam
Institut Teknologi Bandung
Jalan Ganesa 10, Bandung 40132
E-mail :
2krijal@fi.itb.ac.id,
1gun@planck.fi.itb.ac.id
Abstrak
Programmable Logic Controller (PLC) merupakan suatu piranti yang dibuat sebagai pengganti
kumpulan relay-relay mekanik yang digunakan dalam sistem kontrol. PLC bekerja dengan cara
membaca status (kondisi) yang dialami oleh masukannya, untuk kemudian digunakan dalam
pengubahan status keluarannya. Sedangkan bentuk dan jumlah pengubahan yang terjadi pada
keluaran PLC bergantung pada program yang diberikan oleh pengguna dalam bentuk diagram ladder
yang disebut dengan program aplikasi kendali. Mikrokontroler Atmel AT89S52 telah dimanfaatkan
dalam rancang bangun sebuah PLC minimum. Sistem operasi PLC minimum tersebut juga telah
dibangun untuk memindai (scan) proses, yang dimulai dengan melakukan pembacaan modul-modul
masukan, mengeksekusi program aplikasi kendali dan diakhiri dengan meng-update modul-modul
keluarannya. Instruksi yang dapat dieksekusi oleh sistem operasi PLC minimum tersebut dapat berupa
fungsi kombinasional, sekuensial, pewaktu, dan pencacah. Selain itu, PLC minimum tersebut dapat
berkomunikasi dengan divais lain (komputer) melalui RS232 secara asinkron untuk melakukan
download, upload dan monitor PLC.
Kata Kunci : Programmable Logic Controller (PLC), mikrokontroler AT89S52, sistem kontrol
I. Pendahuluan
Industrialisasi adalah sektor penting
dalam kehidupan manusia. Hampir semua
kebutuhan manusia tidak dapat lepas dari
proses yang terjadi di industri. Salah satu cara
untuk meningkatkan hasil produksi di
industri-industri adalah dengan terus mengembangkan
sistem pengendalian proses produksi tersebut.
Seiring perkembangan yang terjadi di bidang
elektronika melahirkan teknologi sistem
pengendali Programmable Logic Controller
(PLC) yang mampu melakukan pengendalian
secara diskrit dan analog, memiliki kemudahan
dalam pemrograman dan handal untuk
digunakan sebagai basis sistem otomasi di
industri-industri.
PLC (Programmable Logic
Controller) atau kendali logika terprogram
merupakan suatu piranti elektronik yang
dirancang untuk dapat beroperasi secara digital
dengan menggunakan memori sebagai media
penyimpanan instruksi-instruksi internal untuk
menjalankan fungsi-fungsi logika, seperti
fungsi pencacah, fungsi urutan proses, fungsi
waktu, fungsi aritmatika dan fungsi yang
lainnya dengan cara memprogramnya.
Program-program yang telah dibuat kemudian
dimasukkan dalam PLC melalui
programmer/monitor. Pembuatan program
dapat digunakan melalui komputer sehingga
dapat mempercepat hasil pekerjaan. Fungsi
lain pada PLC adalah dapat digunakan untuk
memonitor jalannya proses pengendalian yang
sedang berlangsung, sehingga dapat dengan
mudah dikenali urutan kerja (work squence)
proses pengendalian yang terjadi
1.
II.Perancangan Sistem Minimum
PLC
2.1 Komponen Utama Penyusun Sistem
Pada dasarnya bagian-bagian PLC
dapat dibagi menjadi 4 bagian utama yaitu
central processing unit (CPU), modul
input/output, power supply dan programming
device seperti yang ditunjukkan pada gambar
1.
CPU adalah “otak” dari PLC yang
berfungsi untuk mengeksekusi program yang
ditanam oleh programming device, mengontrol
komunikasi antar modul dan melakukan
perubahan status I/O berdasarkan program
yang ada di memori.
Power supply adalah komponen PLC
yang berfungsi untuk memberikan arus listrik
ke komponen PLC yang lain. Pada beberapa
PLC arus listrik yang diberikan ke PLC
dibedakan dengan arus listrik untuk divais
eksternal.
Gambar 1 Bagian-bagian PLC
Modul input/output adalah interface
antara PLC dengan divais eksternal. Interface
ini mengkonversi sinyal yang diterimanya dari
divais eksternal menjadi sinyal logic yang
dapat dimengerti oleh CPU.
Programming device adalah alat untuk
membuat program yang nantinya akan ditanam
ke memori program PLC. Programming device
dapat berupa personal computer ataupun
hand-held unit
2.
2.2 Spesifikasi sistem minimum PLC
Sistem PLC ini dibuat dengan
perangkat keras yang memiliki fasilitas
minimun beserta perangkat lunak sistem
operasi 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 2.
Spesifikasi sistem minimum PLC
yang akan dibuat adalah :
1.
PLC dapat diprogram dengan diagram
ladder. Program yang akan ditanamkan ke
PLC tersebut selanjutya disebut dengan
program aplikasi kontrol. Program
aplikasi ini nantinya dapat di downloading
ke PLC dan juga dapat di uploading 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.
Gambar 2 Rancangan sistem PLC
2.3 Rancang Bangun Perangkat Keras
Jenis mikrokontroler yang
difungsikan sebagai PLC pada sistem ini
adalah mikrokontroler Atmel AT89S52. Ada
beberapa alasan yang mendasari penggunaan
mikrokontroler ini diantaranya
3:
• Adanya downloadable flash memory 8 KB
• Adanya satu timer tambahan.
• Harganya yang tergolong murah
• Mudah didapat dipasaran
2.3.1 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). Tegangan
pada mikrokontroler untuk standar digitalnya
adalah +5V dan 0V, standar ini bukan level
TTL yang menjadi standar komunikasi serial
RS232, maka Integreted 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.
2.3.2 Port Masukan Digital
Saluran masukan PLC pada sistem ini
menggunakan port 0 pada mikrokontroler
AT89S52. Karakteristik yang dimilikinya
adalah input digital dengan tegangan masukan
kurang dari 5VDC adalah logika 0 dan lebih
dari 5VDC berlogika 1 (aktif high)
Pengalamatan port masukan
mengunakan standar yang didapat pada buku
Programmable Logic Controller karya Frank
D. Petruzella, seperti dapat dilihat pada tabel
1
4.
2.3.3 Port keluaran digital
Saluran keluaran digital PLC
menggunakan port 2 pada mikrokontroler
AT89S52. Untuk mengatur keluaran yang
diinginkan, pada port keluaran ini digunakan
IC 74HC573 sebagai latch yang berfungsi
untuk 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).
Pengalamatan port keluaran dapat
dilihat pada tabel 2. Karakteristik dari port
keluaran adalah keluaran tegangan 5 VDC
4Tabel 2 Pengalamatan port keluaran
2.3.4 Tampilan LCD
Pada PLC ini terdapat port yang
digunakan untuk menampilkan data melalui
LCD, 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 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.
2.4 Rancang Bangun Perangkat Lunak
Sistem operasi yang dibuat dan akan
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 Assembler. Secara umum
algoritma sistem operasi yang akan dibuat
dapat dilihat pada gambar 7.
2.4.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
5.
o LOAD
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
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.
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 ORLOAD
Instruksi ini akan membaca data stack
sebelumnya dan di-OR-kan dengan data
stack sekarang kemudian disimpan kembali
kedalam stack. Format data untuk instruksi
ini adalah 06 tanpa parameter.
Gambar 7 Algoritma Power-ON Ready (POR) PLC
o ANDLOAD
Instruksi ini akan membaca data stack
sebelumnya dan di-AND-kan dengan data
stack sekarang kemudian disimpan kembali
kedalam stack. Format data untuk instruksi
ini adalah 07 tanpa parameter.
o ST
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.
o STNOT
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.
2.5 Cara Kerja Sistem
Untuk menjalankan sistem PLC ini,
terlebih dahulu sistem harus terkoneksi dengan
PC(Personal Computer) atau divais lain
melalui komunikasi serial. Adapun langkah
untuk memprogram PLC tersebut adalah
sebagai berikut:
o
Downloading Program Aplikasi Kontrol
Langkah pertama adalah menanamkan
program aplikasi kedalam PLC, yang dapat
dijalankan saat PLC dalam mode standby.
Komunikasi ini dilakukan dengan cara
mengirim karakter ‘w’ (write) yang diikuiti
dengan deretan instruksi-instruksi program
aplikasi dan diakhiri dengan karakter ‘@’
sebagai tanda akhir dari program aplikasi.
Deretan instruksi-instruksi yang dikirim
akan disimpan didalam memori
mikrokontroler.
o
Uploading Program Aplikasi Kontrol
Komunikasi ini untuk mendapatkan
instruksi-instruksi pada program aplikasi
yang ada di memori PLC, yang dapat
dijalankan saat PLC dalam mode RUN.
Komunikasi ini dilakukan dengan cara
mengirim karakter ‘r’ (read) ke PLC,
selanjutnya PLC akan mengirimkan semua
instruksi yang tersimpan didalam memori
sehingga user bisa mengetahui program
yang ditanamkan didalam mikrokontroler.
o Pembacaan status I/O
Komunikasi ini untuk memonitor status
input atau output PLC, yang dapat
dijalankan saat PLC pada mode RUN.
Komunikasi ini dilakukan dengan cara
mengirim karakter ‘m’ (monitor) ke PLC,
sehingga bisa diketahui status input dan
output pada program aplikasi yang sedang
dijalankan.
III. Hasil dan Pembahasan
Berikut adalah gambar rancangan
minimum PLC dengan fitur delapan buah input
digital, delapan buah output digital dan
tampilan LCD.
Gambar 8 PLC minimum
Pada Gambar 8 diperlihatkan salah
satu program ladder yang diaplikasikan pada
sistem minimum PLC. Aplikasi tersebut
merupakan aplikasi sederhana dengan dua
masukan dan satu keluaran.
Pada contoh aplikasi tersebut terlihat
masukan yang digunakan adalah input 0 yang
bersifat normally open dengan kode 1000,
sedangkan masukan yang kedua menggunakan
input 1 yang bersifat normally close dengan
kode 1001. Kedua masukan ini dihubungkan
dengan operator and. Hasil dari penggabungan
kedua input ini dihubungkan dengan keluaran
0 dengan kode 0000.
Sebelum dikirimkan ke dalam PLC,
program ladder tersebut dikonversi ke dalam
format heksa terlebih dahulu. Dalam bentuk
heksa, program ladder tersebut akan terlihat
sebagai berikut
001000021001080000@.
00 merupakan format heksa yang akan
me-load (normally open) masukan dengan alamat
1000, kemudian 02 merupakan representasi
dari logika and antara masukan sebelumnya
(1000) dengan masukan berikutnya (1001).
Hasil operasi kedua masukan akan menjadi
keluaran untuk alamat 0000, 08 merupakan
kode yang diartikan sebagai keluaran dari
PLC.
Tabel 3 hasil uji ladder logika and sistem minimum PLC
IN0 IN1 OUT0 0 0 0 0 1 0 1 0 1 1 1 0
Pada uji logika tersebut nilai dari IN0
dan IN1 diubah-ubah, perubahan keempat
input ini menyebabkan perubahan OUT0,
perubahan tersebut dapat dilihat pada Tabel 3
diatas.
IV. Kesimpulan dan Saran
Berdasarkan hasil rancang bangun
dan ujicoba sistem minimum PLC yang
diimplementasikan, terdapat beberapa hal yang
dapat disimpulkan, antara lain:
a. Untuk mengimplementasikan PLC tidak
diperlukan perangkat-perangkat yang
mahal, semua perangkat atau komponen
yang diperlukan mudah didapat di pasar.
b. Sistem operasi PLC yang dibuat telah
mengakomodasi fungsi-fungsi AND, OR,
dan XOR..
c.
PLC yang diimplementasikan tidak
memiliki port input dan output serta
register yang banyak walaupun
sebenarnya masih terdapat port-port
pararel yang tidak digunakan pada
mikrokontroler AT89S52. Hal ini
dikarenakan keterbatasan kapasitas flash
memory.
d. Tidak adanya proteksi terhadap pengiriman
instruksi tidak dikenal menyebabkan crash
pada PLC jika mengirimkan karakter
selain instruksi lewat hyperterminal.
V. Daftar Pustaka
[1]
HTTP://www.NEMA.Org
[2]
HTTP://www.plcs.net
[3]
Moh. Ibnu Malik, ST. Belajar
Mikrokontroler Atmel AT89S52.Gava
Media Yogyakarta. 2003
[4]
Frank D Petruzella, Programmable
Logic Controller, McGraw Hill .USA.
1998
[5]
OMRON. Programmable Controllers
Operation Manual, OMRON
Electronics Pte.Ltd. 2002
[6]
ATMEL. Datasheet AT89S52
[7]
Dallas
Semiconductor.
Datasheet
Maxim
[8]
Pari Vallal Kannan, Micrprocessor
Design Project Training. University of
Super Programmable Logic Controller T100MD-888+
Gun Gun Gumilar
1)dan Khairurrijal
2)Program Studi Fisika, Fakultas Matematika dan Ilmu Pengetahuan Alam
Institut Teknologi Bandung
Jalan Ganesa 10, Bandung 40132
1)E-mail: gun@planck.fi.itb.ac.id
2)E-mail: krijal@fi.itb.ac.id
Abstrak – Salah satu jenis peralatan kontrol
otomatis yang saat ini banyak digunakan
adalah PLC (Programmable Logic
Controller). Dengan adanya PLC maka segala
proses kontrol yang semula dirasa cukup rumit
dapat tertangani dengan lebih baik secara
otomatis. Aplikasi PLC sendiri saat ini tidak
hanya terbatas pada dunia industri saja, tetapi
juga sudah merambah ke berbagai bidang
yang lain seperti kesehatan, pertanian bahkan
sampai pada peralatan kebutuhan sehari-hari.
Jenis PLC yang dibahas pada essai ini adalah
Super PLC tipe T100MD-888+ yang
diproduksi oleh Triangle Research Inc.
Pemaparan mengenai Super PLC ini
mencakup karakteristik, sistem I/O, cara kerja,
bahasa yang dipergunakan sampai beberapa
aplikasi sederhana.
Kata Kunci: Programmable Logic Controller
(PLC), Super PLC.
1. PENDAHULUAN
PLC (Programmable Logic Controller) atau
kendali logika terprogram merupakan suatu
piranti elektronik yang dirancang untuk dapat
beroperasi secara digital dengan menggunakan
memori sebagai media penyimpanan
instruksi-instruksi internal untuk menjalankan
fungsi-fungsi logika, seperti fungsi-fungsi pencacah, fungsi-fungsi
urutan proses, fungsi waktu, fungsi aritmatika
dan fungsi yang lainnya dengan cara
memprogramnya. Program-program yang
telah dibuat kemudian dimasukkan dalam PLC
melalui programmer/monitor. Pembuatan
program dapat digunakan melalui komputer
sehingga dapat mempercepat hasil pekerjaan.
Fungsi lain pada PLC adalah dapat digunakan
untuk memonitor jalannya proses pengendalian
yang sedang berlangsung, sehingga dapat
dengan mudah dikenali urutan kerja (work
squence) proses pengendalian yang terjadi
Salah satu jenis PLC yang tergolong sebagai
keluaran terbaru adalah Super PLC jenis
T100MD-888+. PLC jenis ini dikeluarkan oleh
Triangle Research International, Inc. Berikut
dipaparkan tentang Super PLC T100MD-888+.
2. SUPER PLC T100MD-888+
2.1. Komponen Utama Penyusun SUPER
PLC T100MD-888+
Dalam Super PLC T100MD-888+ terdapat 4
(empat) komponen utama sebagai penyusun
sistem keseluruhan, yaitu :
1. Central Prossesing Unit (CPU), merupakan
otak dari Super PLC yang terdiri dari 3
bagian :
a. Mikroprosesor, merupakan otak dari Super
PLC yang difungsikan untuk operasi
matematika dan operasi logika.
b. Memori, merupakan daerah CPU yang
digunakan untuk melakukan proses
penyimpanan dan pengiriman data pada
Super PLC.
c. Catu daya, berfungsi untuk mengubah
sumber masukan tegangan bolak-balik
menjadi tegangan searah.
2. Programmer/Monitor
3. Input/Output modules
4. Rak dan chasis
Hubungan bagian utama dari Super PLC
tersebut dapat dilihat pada Gambar 1 berikut
ini
2.2. Karakteristik
Salah satu jenis PLC yang tergolong sebagai
keluaran terbaru adalah Super PLC jenis
T100MD-888+. PLC jenis ini memiliki
beberapa karakteristik sebagai berikut
[2]:
1. 8 saluran input analog 10 bit.
2. 2 saluran output analog 8 bit.
3. 2 saluran Programmable Motion
Controllers untuk mengatur gerak motor
stepper hingga 20.000 pulsa per detik.
4. 2 saluran output PWM (Pulse Width
Modulated).
5. 2 saluran HSC (High Speed Counters) 32
bit yang bisa menghitung hingga
mencapai 10.000 Hz.
6. 4 saluran input untuk interrupt
7. 2 saluran pengukuran pulsa masukan
untuk mengukur frekuensi dan lebar pulsa
dari pulsa yang datang hingga 10.000 Hz.
8. Real time clock/calendar untuk
memprogram aksi ON/OFF yang telah
dijadwalkan.
9. Program memori EEPROM 16 bit (6016
karakter), yang bisa diperbesar hingga
8190 karakter dengan menggunakan
IC-M2018P.
10. EEPROM yang bisa diprogram sebanyak
1700 karakter untuk data pengguna, bisa
diperbesar hingga 7750 karakter dengan
IC-M2018P.
11. Terdapat 16 sambungan komputasi PID
yang menjadikan PLC jenis ini dapat
secara langsung memberikan kontrol PID
secara digital untuk proses otomatisasi.
12. Sambungan port RS232 untuk koneksi
dengan PC guna pemrograman atau
pemantauan.
13. Sambungan port RS485 untuk networking
atau koneksi dengan piranti lain di luar
PLC seperti layar LCD dan RS485
berdasarkan I/O cards analog.
14. Memiliki protokol standar industri, baik
port serial RS232 maupun RS485 yang
secara berkesinambungan mendukung
komunikasi beberapa protokol, seperti :
i) Native ASCII based Host Link
Commands
ii) MODBUS RTU
iii) MODBUS ASCII
iv) OMRON C20H Host Link Commands.
15. Watch-Dog Timer (WDT) yang akan
me-reset PLC jika CPU tidak berfungsi karena
kesalahan hardware atau software. Sistem
reset oleh WDT dapat ditentukan oleh
perintah STATUS (1).
Gambar keseluruhan dari PLC T100MD-888+
adalah sebagai berikut
Gambar 2, T100MD-888+ dan modul LCD [3]
2.3. Sistem I/O (Masukan dan Keluaran)
2.3.1. Masukan dan Keluaran Khusus
Empat saluran pertama dari delapan saluran
masukan ON/OFF T100MD dapat
dikonfigurasikan sebagai “special inputs”
seperti Counter dengan kecepatan tinggi,
interrupt dan pengukuran pulsa (Pulse
Measurement). Sedangkan pada pada
saluran keluaran, beberapa salurannya dapat
dikonfiguraikan sebagai PWM dan
pengontrol pulsa keluaran untuk stepper.
Jika saluran I/O khusus ini tidak digunakan
maka saluran-saluran tersebut dapat
digunakan sebagai saluran ON/OFF biasa
pada Diagram Ladder. Jika dua atau lebih
fungsi khusus menggunakan saluran I/O
yang sama maka hanya satu yang akan
bekerja pada satu waktu. Kedudukan dari
I/O khusus ini dapat dilihat pada tabel
berikut :
2.3.1.1. Masukan Khusus
Masukan khusus pada Super PLC
T100MD-888+ dapat dilihat pada Tabel 1
berikut ini
Tabel 1. Masukan Khusus
Sebuah pin yang dipergunakan sebagai
suatu masukan khusus tertentu tidak bisa
dipergunakan sebagai masukan khusus
yang lain pada saat yang bersamaan,
misalnya pin 3 tidak bisa digunakan
sebagai Counter kecepatan tinggi dan pada
saat sama berfungsi sebagai pin pengukur
pulsa.
2.3.1.2. Keluaran Khusus
Keluaran khusus pada Super PLC
T100MD-888+ dapat dilihat pada Tabel 2
berikut ini
Tabel 2 Keluaran Khusus
2.3.2. Sistem I/O Analog dan Digital
2.3.2.1. Sistem I/O Analog
Super PLC T100MD-888+ memiliki
delapan buah saluran I/O analog.
Kedelapan saluran I/O analog tersebut
menggunakan konektor DB15 yang
terletak pada sudut kiri pada Super PLC
T100MD888+. Super PLC ini
memerlukan masukan tegangan referensi
analog +5V dan ground analog pada
bagian female DB15 seperti terlihat pada
Gambar 3.
Signal Pin # A/D #1 8 A/D #2 7 A/D #3 6 A/D #4 5 A/D #5 4 A/D #6 3 A/D #7 OR D/A #1 2 A/D #8 OR D/A #2 1Analog Ref. AVcc 13-15 Analog ground AVss 9-11
Gambar 3 saluran I/O analog
2.3.2.2. Sistem I/O Digital
Pada saluran I/O digital, terdapat delapan
buah saluran masukan dan delapan buah
saluran keluaran. Pada tiap saluran
masukan dan saluran keluaran terdapat
LED yang akan menyala apabila I/O
dipergunakan. Nyala LED ini akan sesuai
dengan posisi pin yang dipergunakan
sebagai saluran I/O. Untuk Input digital,
LED yang dipergunakan berwarna hijau
sedagkan untuk Output digital LED yang
dipergunakan berwarna merah.
[4]2.4. Perangkat Lunak
Perangkat lunak merupakan bagian paling
penting dari T100MD-888+ karena perangkat
lunaklah yang akan mengatur kerja dari PLC
ini, tanpa adanya perangkat lunak yang
didownload ke PLC, maka PLC ini tidak akan
berkerja. Jenis perangkat lunak yang
dipergunakan adalah bahasa pemrograman
Ladder dan Tbasic. Perangkat lunak yang
digunakan untuk memprogram PLC jenis ini
adalah perangkat lunak Internet Trilogi Versi
5.3 yang dikeluarkan oleh Triangle Research
International, Inc. Seperti diberikan dalam
Gambar 4.
Gambar 4. Tampilan Perangkat Lunak Internet Trilogi Versi 5.3
Pada PLC jenis ini, diberikan fasilitas untuk
melakukan download program ataupun
monitoring terhadap kinerja sistem dengan
menggunakan sistem jaringan, sehingga ketika
pengguna ingin memasukan program atau
melihat keberjalanan sistem, tidak perlu
dilakukan dengan datang ke lokasi dimana
PLC berada, tetapi cukup mengkoneksikannya
dengan jaringan internet sehingga ia dapat
memprogram atau memantau sistem di
manapun ia berada.
Penggambaran untuk diagam ladder dikenal
simbol-simbol yang hampir sama dengan
relay-relay mekanik, yaitu :
a.
Saklar Normally Open (NO)
b.
Saklar Normally Close (NC)
Pada sistem digital dikenal beberapa tipe dasar
gerbang logika. Gerbang merupakan suatu
rangkaian dengan satu atau beberapa masukan
yang akan menghasilkan satu buah keluaran
bila diberi masukan. Gerbang logika yang
dapat diimplementasikan dengan diagram
Ladder adalah
a. Gerbang AND
b. Gerbang OR
c. Gerbang NAND (Not AND)
d. Gerbang NOR (Not OR)
e. Gerbang XOR (Exclusive OR)
f. Gerbang XNOR(Exclusive NOR)
Beberapa gerbang tersebut juga dapat
digabungkan dalam suatu rangkaian hingga
diperoleh keluaran yang diinginkan.
2.5 Cara Operasi
Langkah untuk membuat suatu aplikasi pada
Super PLC T100MD-888+ ini adalah sebagai
berikut :
a. Pertama tentukan terlebih dahulu jenis
aplikasi yang akan digunakan
b. Setelah itu, buat pemrogramannya dengan
menggunakan diagram Ladder
c. Penggunaan diagram Ladder ini cukup
mudah karena pengguna hanya cukup
memasukkan simbol-simbol yang
melambangkan suatu masukan atau
keluaran tertentu.
d. Setelah program selesai dibuat, maka
langkah selanjutnya adalah men-download
program tersebut ke PLC.
e. Apabila pada aplikasi yang dibuat
mempergunakan lebih dari satu PLC,
maka pen-download-annya pun akan
berbeda untuk tiap PLC. Tetapi dapat
dilakukan melalui satu komputer saja asal
komputer tersebut terhubung dengan
semua PLC yang dipakai.
f.
Langkah selanjutnya adalah
mengkonfigurasikan hardwarenya sesuai
dengan program yang dibuat.
g. Untuk pengontrollan alat, bisa dilakukan
melalui hardware langsung ataupun bisa
menggunakan software.
3. HASIL DAN PEMBAHASAN
Pada Gambar 5 diperlihatkan salah satu
program ladder yang diaplikasikan pada Super
PLC. Aplikasi tersebut merupakan aplikasi
sederhana untuk menyalakan LED secara
bergantian yang seolah-olah LED tersebut
berjalan.
Pada diagram tersebut, apabila user menekan
saklar start, maka diagram ladder pada baris
yang pertama akan terhubung, akibatnya relay
run akan ter-energis. Karena saklar start dan
run merupakan gerbang OR, maka meskipun
saklar start di lepas, sistem akan terus berjalan
hingga saklar stop di tekan. Relay run
terhubung dengan timer Clk0,5s, yang artinya
timer ini akan meloloskan sinyal setiap 0,5
detik sekali. Hasil keluaran dari timer ini akan
dibaca sebagai detak oleh keluaran Seq1, yang
kemudian Seq1 akan meneruskan sinyalnya
menuju setiap keluaran sesuai dengan detak
yang diberikan, dalam hal ini dari detak 1
sampai 4 detak setelah itu akan berulang lagi.
Untuk keluarann yang berupa LED, maka akan
terlihat nyala LED yang berjalan secara
bolak-balik hingga saklar stop ditekan.
LED tersebut akan menyala secara bergantian
mulai dari LED no 1 dan 8 kemudian diikuti
oleh LED no 2 dan 7 dan seterusnya dengan
selang waktu 0,5 detik. Proses ini akan
berlangsung terus hingga tombol stop di tekan.
Pada diagram ladder tersebut juga dilengkapi
dengan tombol manual, sehingga pengguna
dapat mengaktifkan sistem secara manual.
Ketika tombol manual diaktifkan, maka detak
yang dihasilkan oleh timer Clk0,5s akan
tertahan. Untuk memberikan detak pada
keluaran Seq1, dilakukan dengan menekan
tombol Step.
Selain contoh di atas, Super PLC
T100MD-888+ juga dapat diaplikasikan sebagai
pencacah (Counter) dan pada berbagai fungsi
pewaktu seperti :
a. On-Delay (penunda on)
b. Off-delay (penunda off)
c. Limited on time (pembatas waktu on)
d. Repeat Cycling (Siklus pengulangan)
e. Sistem dengan penekanan tombol jenis
pushbutton.
f.
Dan lain-lain
4. RINGKASAN
PLC (Programmable Logic Controller)
merupakan sebuah alat kontrol yang
dipergunakan sebagai alat kontrol otomatis,
sehingga dapat meningkatkan jumlah hasil
produksi secara efektif dan efisien. Saat ini
penggunaan PLC tidak hanya terbatas pada
dunia industri saja tetapi juga sudah
diaplikasikan pada alat kedokteran,
alat-alat rumah tangga, dll.
Salah satu jenis PLC yang merupakan seri
keluaran terbaru adalah super PLC, beberapa
kelebihan Super PLC T100MD-888+ ini
adalah :
• Fleksibel (keluwesan)
• Deteksi dan koreksi kesalahan lebih
mudah
• Harga relatif murah
• Pengamatan visual (visual observation)
• Kecepatan operasi (speed of operation)
• Implementasi proyek lebih singkat
• Lebih sederhana dan mudah dalam
•
penggunaannya, memodifikasi lebih
mudah tanpa tambahan biaya.
• Dokumentasi mudah.
Di samping kelebihan tersebut, Super PLC
tersebut kurang cocok untuk proses seperti
pada lingkungan panas dan vibrasi yang tinggi.
DAFTAR PUSTAKA
[1] M. Budiyanto dan A. Wijaya, “Pengenalan
Dasar-dasar PLC (Programmable Logic
Controller) Disertai Contoh Aplikasinya”,
Gava Media, Yogyakarta, 2003
[2] Anonim, “User Manual Super
Programmable Controllers”, Triangle
Research International, Inc., USA, 2003.
[3] http://scmstore.com/english/PLC/
SCMT100/MD888/info.htm
[4] www.flexibleautomation.co.nz/triplc/
mdseries.htm
Aplikasi Mikrokontroler MCS-51 dalam Percobaan Bandul untuk Penentuan
Nilai Gravitasi Bumi
Yanuar Syapaat, Suryadi, Heri Permadi, Gun Gun Gumilar, dan Khairurrijal*)
Program Studi Fisika, Fakultas Matematika dan Ilmu Pengetahuan Alam
Institut Teknologi Bandung
Jalan Ganesha 10, Bandung, Indonesia, 40132
*E-mail: krijal@itb.ac.id
Abstrak
Mikrokontroler dapat dianalogikan dengan komputer berukuran kecil atau biasa disebut minikomputer. Layaknya
sebuah komputer yang memiliki posesor, memori, port input untuk mouse, port output untuk printer, layar dll.
mikrokontroler juga mempunyai fitur yang sama tetapi berukuran sangat kecil bila dibandingkan komputer.
Mikrokontroler AT89S52 merupakan salah satu jenis dari mikrokoktroler MCS-51 yang mempunyai 8 Kbyte sistem
flash memori sehingga kemampuan baca tulis program bisa mencapai 1000 kali, 32 pin I/O dan dengan kelebihan
lain, mikrokontroler ini dapat digunakan dalam berbagai fungsi. Dan pada percobaan kali ini, mikrokontroler ini
digunakan untuk menghitung nilai gravitasi dari percobaan bandul. Sensor inframerah digunakan sebagai
pendeteksi gerak bandul dan sinyal sensor tersebut dimasukan kedalam mikrokontrole. Sinyal yang masuk
diidentifikasi sebagai interupsi pada mikrokontroler yang di program untuk mengenali bahwa waktu antara dua
sinyal dari sensor sebagai perioda bandul. Perumusan matematis percobaan bandul menyatakan adanya hubungan
antara besar perioda, panjang tali dan nilai gravitasi, oleh karena itu nilai gravitasi dapat dihitung kemudian.
Pengolahan data mempergunakan ms excel yang mengolah data hasil akusisi dari hyperteminal. Percobaan ini
diharapkan dapat menunjukkan bahwa pengamatan fenomena fisika bukanlah sesuatu hal yang sangat sulit. Oleh
karena itu pembuatan alat-alat ini sangat cocok untuk lab fisika di sekolah-sekolah ataupun perguruan tinggi dan
akan sangat membantu pembelajaran fisika.
Katakunci : Mikrokontroler, AT89S52, Program, bandul, Gravitasi
I. PENDAHULUAN
Sampai saat ini fisika masih
dianggap suatu hal yang sulit baik secara
teori maupun secara praktek, fisika
dianggap sekumpulan rumus yang tidak
dapat diaplikasikan dalam kehidupan
sehari-hari, percobaan-percobaanya
dianggap sesuatu hal yang sulit
dilakukan dan dengan biaya yang mahal.
fisika dengan peralatan yang kita
dimiliki apa adanya, percobaan fisika
dapat divariasikan agar terlihat lebih
mudah. Contohnya pada penentuan nilai
percepatan gravitasi bumi dengan
percoban bandul. Osilasi bandul
digantungkan pada ketinggian tertentu
kemudian diamati periodanya. Dari
osilasi kemudian didapatkan perioda,
yang digunakan dalam perhitungan
untuk mendapatkan nilai percepatan
gravitasi bumi.
Dengan adanya mikrokontroler maka
fenomena fisika dapat diotomatisasi
termasuk percobaan penentuan nilai
gravitasi bumi. Osilasi bandul di deteksi
oleh sensor dan kemudian datanya
dikirim ke mikrokontroler yang
diprogram untuk menghitung periode
dari osilasi bandul tersebut.
Mikrokontroler yang dipergunakan
merupakan keluarga MCS-51 yaitu
mikrokontroler AT89S52 yang
diproduksi oleh Atmel, mikrokontroler
ini mempunyai beberapa kelebihan
diantaranya harganya yang relatif murah.
II.
TEORI PENENTUAN NILAI
GRAVITASI
MENGGUNAKAN METODA
PERCOBAN BANDUL
Dalam fisika (mekanika), besaran
percepatan gravitasi g dapat ditentukan
dengan berbagai metode, diantaranya
osilasi bandul, pegas, dan osilasi zat cair
dalam pipa. Pada bandul yang berosilasi,
diperoleh periode osilasi T sebagai
fungsi panjang tali l . Fungsi ini dapat
dinyatakan dalam persamaan :
1)
Pers.1.Perioda Bandul
Gbr.1. Ilustrasi Percobaan
Dari persamaan diatas apabila
panjang tali, dan peridoe osilasi bandul
diketahui maka dapat dihitung nilai
percepatan gravitasi bumi sehingga
persamaanya dapat diubah menjadi :
g = 4π
2l/T
2Pers.2. Percepatan Gravitasi Bumi
dimana :
g = percepatan gravitasi bumi
(meter/detik
2)
l = panjang tali (meter)
T = peroioda osilasi bandul
Π = konstanta 3,14
III.
PEMROGRAMAN PADA
MIKROKONTROLER
l
a
c
Gbr.2.Perida Bandul
b
Perioda atau waktu getar (T) adalah
selang waktu yang diperlukan untuk
melakukan satu getaran lengkap(satuan
detik)
3), atau dengan kata lain waktu
yang diperlukan oleh bandul (Gbr.2.)
untuk menempuh perjalanan dari b ke c
kemudian ke b lagi, atau dari b ke a
kemudian ke b lagi. Pergerakan bandul
ini dideteksi oleh sensor
infrared-phodioda.
Gbr.3.Sensor Infrared-Photodioda
Transmitter memancarkan
gelombang inframerah yang selalu
diletakkan di antara pergerakan bandul,
tetapi apabila bandul melintas diantara
sensor ini maka sinyal dari infrared
terpotong sehingga menyebabkan
perubahan kondisi pada photodioda.
Perubahan inilah yang dideteksi oleh
mikrokontroler.
Sensor ditempatkan di antar lintasan
b, satu periode bandul berarti sensor
menangkap sinyal pada titik b sebanyak
dua kali, dan pada mikrokontroler di
definisikan satu kali sensor menangkap
sinyal sebagai satu interupt yang berarti
dua kali intrupt adalah satu periode
bandul tersebut.
Sehingga diagram alirnya dapat
digambarkan sebagai berikut :
Gbr.4. Diagram Alir Program
Dapat dilihat di atas bahwa perioda
didefinisikan sebagai waktu antara
terjadinya dua kali interupt. Pada
percobaan yang dilakukan Adanya
interupt ini di tandai oleh nyalanya LED
yang di pasang pada board
mikrokontroler.
IV. AKUSISI DATA
4.1 Pengambilan data dengan
Hyperterminal
Data dari mikrokontroler yang
bernilai perioda dari bandul, kemudian
dikirimkan ke computer melalui
komunikasi serial RS232, dan pada
computer data ditampilkan pada aplikasi
hyperterminal yang sebelumnya telah di
setting agar dapat menerima data dari
komunikasi serial sehingga
penggambilan data dapat dilihat seperti
gambar di bawah ini.
Gbr.5. Akusisi Data Dengan Hyperterminal
Data dari hyperterminal berupa
perioda osilasi badul kemudian di
pindahkan ke note pad atau langsung ke
Ms Excel yang kemudian diolah sesuai
tujuan yaitu menghitung nilai dari
percepatan gravitasi.
Data yang didapat adalah perioda
osilasi bandul data tersebut bernilai
milidetik sehingga diubah dahulu
menjadi detik, dan berdasarkan
persamaan . maka perhitungan nilai
gravitasi dapat dicari. Seperti disajikan
pada table 1.
TABEL I
PENGOLAHAN DATA DENGAN MS EXCEL
Hasil Perhitungan Nilai Gravitasi
t(ms) t(s) t^2 Nilai
Gravitasi
1935 1.935 3.74423 10.42779641 1935 1.935 3.74423 10.42779641 1937 1.937 3.75197 10.40627361 1935 1.935 3.74423 10.42779641 1934 1.934 3.74036 10.43858285 1937 1.937 3.75197 10.40627361 1935 1.935 3.74423 10.42779641 1941 1.941 3.76748 10.36342745 1935 1.935 3.74423 10.42779641 1935 1.935 3.74423 10.42779641 1936 1.936 3.7481 10.41702667 1936 1.936 3.7481 10.41702667 1936 1.936 3.7481 10.41702667 1927 1.927 3.71333 10.51455877 1934 1.934 3.74036 10.43858285 1936 1.936 3.7481 10.41702667 1934 1.934 3.74036 10.43858285 1930 1.93 3.7249 10.48189643 1936 1.936 3.7481 10.41702667 1936 1.936 3.7481 10.41702667 1840 1.84 3.3856 11.53237713 1952 1.952 3.8103 10.24695562 1911 1.911 3.65192 10.69136381Perhitungan sederhana ini dilakukan
pada aplikasi Ms Excel dengan
formulasi sesuai persamaan di atas.
V. DISKUSI
Mikrokontroler diprogram agar dapat
mengamati nilai dari periode osilasi
bandul sebaik mungkin, dalam program
telah di perkirakan bahwa eror yang
terjadi hanyalan satu milidetik, tetapi
pada kenyataanya nilai yang di dapat
berbeda dengan referensi.
Hasil nilai rata-rata nilai percepatan
gravitasi yang diperoleh adalah 10,47
m/s
2berbeda dengan referensi yaitu
sebesar 9,8 m/s
2.
Banyak faktor yang mempengaruhi
dari keakuratan data yang diperoleh,
mulai dari faktor lingkungan sampai
faktor pada alat itu sendiri. Faktor
lingkungan yang mempengaruhi
diantaranya kemiringan dari lantai,
getaran-getaran yang terjadi ketika
percobaan dan sebagainya. Keakuratan
data juga dipengaruhi oleh alat dan cara
percobaan, misalkan ayunan bandul
yang tidak sempurna sehingga
simpangan yang terjadi tidak selurus
yang diinginkan, selain itu besarnya
bandul yang digunakan, sensor
mendeteksi bandul ketika bandul
tersebut melewati sensor, apabila sisi
bandul tersebut cukup besar maka sensor
akan langsung mendeteksinya dan ketika
badul tersebut kembali maka sisi
sebaliknya sensor akan mendeteksi
sehingga pendeteksian bandul tidak tepat
di tengah-tengah pusat massa.
Tetapi penggunaan mikrokontroler
ini merupakan suatu bukti bahwa
fenomena fisika dapat kita variasikan
dengan kemampuan kita yang lain
sehingga dapat dilakukan lebih mudah.
VI. KESIMPULAN
Mikrokontroler AT89S52 yang
merupakan mikrokontroler keluarga
ATMEL dapat diaplikasikan dalam
berbagai bidang, salah satunya dalam
fenomena fisika penentuan nilai
percepatan gravitasi dengan percobaan
bandul. Mikrokontoler menerima sinyal
dari sensor yang di program agar dapat
mendeteksi setiap perioda bandul setiap
dua kali pengiriman sinyal dari sensor.
Data kemudian diolah dengan Ms Excel
sehingga didapatkan nilai dari
percepatan gravitasi, dan dari percobaan
ini didapat nilai percepatan gravitasi
sebesar +- 10,4 m/s2. tentu saja nilai
yang di dapat memiliki perbedaan
dengan nilai referensi yaitu sebesar 9,8
m/s2 dikarenakan berbagai faktor yaitu,
delay dari pemrograman, pantulan sinar
sendor dari bandul, keadaan lingkungan
dan berbagai faktor lainnya. Tetapi pada
intinya percobaan ini menjadi menarik
karena ternyata fenomena fisika dapat di
otomatisasi sehingga memudahkan kita
dalam melakukan pengamatannya.
VII.
REFERENSI
[1] Khairurrijal, M. Miftahul Munir,
Asep Suhendi, Hendrayana Thaha,
Suryadi ”DIKTAT
MIKROKONTROLER MCS-51”, 2007.
[2] Eko Afgianto, ”Belajar
mikrokontroller AT89C51/52/55, Teori
dan Aplikasi” Andi, Yoyakarta, 2005.
[3] Data Sheet mikrokontroller
AT89C51/52/55
[4]http://www.saburchill.com/physics/pr
acticals/006.html
Sistem Operasi PLC Minimum
ORG 00H ACALL INIT CLR P3.7 SETB P3.3 MOV P2,#00000000B START: JNB RI,START MOV P2,#00000000B ACALL TERIMA MOV R0,#30H MOV R1,#20H CJNE A,#'w',BACA ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;Sub Rutin Penyimpanan Data (Upload)SIMPAN: CLR A ACALL TERIMA MOV @R0,A INC R0 CJNE A,#'@',SIMPAN SJMP START ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ BACA: CJNE A,#'r',MONITOR BACA2: CLR A MOV A,@R0 INC R0 ;~~~~~~~~~~~~~~~~~~~~~~~ ACALL KIRIM ;~~~~~~~~~~~~~~~~~~~~~~~ CJNE A,#'@',BACA2 SJMP START ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;Sub Rutin Aktivasi PLC
MONITOR: CJNE A,#'m',START CLR A MONITOR1: MOV R0,#30H MOV R1,#20H CLR A CLR C MONITOR2: MOV R2,#2H MOV R3,#3H CJNE A,#'@',MONITOR3 JB RI,START SJMP MONITOR1 MONITOR3: CLR A MOV A,@R0 CJNE A,#'@',LANJUT JB RI,START
LANJUT: INC R0 DJNZ R2,MONITOR3 ACALL AKSI SJMP MONITOR2 ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;Sub Rutin Hubungan Antar Elemen
AKSI: LOAD: CJNE A,#'0',LOAD_NOT ACALL PILIH_PORT CLR A RLC A MOV @R1,A ;INC R1 RET LOAD_NOT: CJNE A,#'1',AND_ ACALL PILIH_PORT CLR A CPL C RLC A MOV @R1,A ;INC R1 RET AND_: CJNE A,#'2',AND_NOT ACALL PILIH_PORT ;DEC R1 CLR A RLC A ANL A,@R1 MOV @R1,A RET AND_NOT: CJNE A,#'3',OR_ ACALL PILIH_PORT ;DEC R1 CLR A CPL C RLC A ANL A,@R1 MOV @R1,A RET OR_: CJNE A,#'4',OR_NOT ACALL PILIH_PORT ;DEC R1 CLR A RLC A ORL A,@R1 MOV @R1,A RET OR_NOT: CJNE A,#'5',ST ACALL PILIH_PORT ;DEC R1
CLR A CPL C RLC A ORL A,@R1 MOV @R1,A RET ST: CJNE A,#'8',ST_NOT CLR A ;MOV A.@R1 ;RRC A ACALL TERUS_OUT RET ST_NOT: CJNE A,#'9',ULANG_AKSI CLR A MOV A,@R1 RRC A CPL C RLC A MOV @R1,A ACALL TERUS_OUT RET ULANG_AKSI: RET ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;Sub Rutin Pemilihan Port Masukan
PILIH_PORT: CLR A MOV A,@R0 CJNE A,#'@',TERUS_IN RET TERUS_IN: CJNE A,#'1',PORT_OUT_TERUS 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_OUT_TERUS: LJMP PORT_OUT ;~~~~~~~~~~~~~~~~~~~~~~~~~ PORT_IN1: CJNE A,#'1',PORT_IN2 MOV C,P0.1 RET PORT_IN2: CJNE A,#'2',PORT_IN3 MOV C,P0.2
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 ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;Sub Rutin Pemilihan Port Keluaran
PORT_OUT: INC R0 TERUS_OUT: CLR A MOV A,@R0 INC R0 CJNE A,#'@',TERUS_OUT0 RET TERUS_OUT0: CJNE A,#'0',TERUS_OUT1_LANJUT 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 ;~~~~~~~~~~~~~~~~~~~~~~~~ TERUS_OUT1_LANJUT: LJMP TERUS_OUT1 ;~~~~~~~~~~~~~~~~~~~~~~~~ PORT_OUT1: CJNE A,#'1',PORT_OUT2 MOV A,@R1 RRC A MOV P2.1,C RET 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 MOV A,@R1 RRC A MOV P2.6,C RET PORT_OUT7: MOV A,@R1 RRC A MOV P2.7,C RET TERUS_OUT1: LJMP AKSI ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ; Sub Rutin Komunikasi Serial
INIT: MOV SCON,#50H MOV A,PCON SETB ACC.7 MOV PCON,A MOV TMOD,#20H MOV TH1,#0FDH SETB TR1 RET TERIMA:
JNB RI,$ ;cek masukan CLR RI ;Ri di nolkan supaya bisa menerima karakter baru
MOV A,SBUF ;pindahkan karakter ke akumulator RET
KIRIM:
CLR TI RET END
Ladder Programming
Private Sub CmdConvert_Click()For i = 0 To 48 n = 2 * i m = 2 * i + 1
If LD1(n).Tag <> "normal" Then If LD1(n).Tag = "input1" Then LD1(n).Tag = "normal" If txtTanda.Text = "0" Then txtTanda.Text = "1"
TxtConvert.Text = TxtConvert.Text & "00" & NmKomp1(n).Text ElseIf txtTanda.Text = "1" Then
TxtConvert.Text = TxtConvert.Text & "02" & NmKomp1(n).Text End If
ElseIf LD1(n).Tag = "input2" Then LD1(n).Tag = "normal" If txtTanda.Text = "0" Then txtTanda.Text = "1"
TxtConvert.Text = TxtConvert.Text & "01" & NmKomp1(n).Text ElseIf txtTanda.Text = "1" Then
TxtConvert.Text = TxtConvert.Text & "03" & NmKomp1(n).Text End If
ElseIf LD1(n).Tag = "output1" Then LD1(n).Tag = "normal"
TxtConvert.Text = TxtConvert.Text & "08" & NmKomp1(n).Text txtTanda.Text = "0"
ElseIf LD1(n).Tag = "output2" Then LD1(n).Tag = "normal"
TxtConvert.Text = TxtConvert.Text & "09" & NmKomp1(n).Text txtTanda.Text = "0"
End If End If
If LD1(n + 1).Tag = "normal2_1" Then If LD1(n + 2).Tag = "input1" Then LD1(n + 2).Tag = "normal" If txtTanda.Text = "0" Then txtTanda.Text = "1"
TxtConvert.Text = TxtConvert.Text & "00" & NmKomp1(n + 2).Text If LD1(n + 16).Tag = "input1" Then
LD1(n + 16).Tag = "normal"
TxtConvert.Text = TxtConvert.Text & "04" & NmKomp1(n + 16).Text ElseIf LD1(n + 16).Tag = "input2" Then
LD1(n + 16).Tag = "normal"
TxtConvert.Text = TxtConvert.Text & "05" & NmKomp1(n + 16).Text End If
ElseIf txtTanda.Text = "1" Then
TxtConvert.Text = TxtConvert.Text & "02" & NmKomp1(n + 2).Text If LD1(n + 16).Tag = "input1" Then
LD1(n + 16).Tag = "normal"
TxtConvert.Text = TxtConvert.Text & "04" & NmKomp1(n + 16).Text ElseIf LD1(n + 16).Tag = "input2" Then
LD1(n + 16).Tag = "normal"
TxtConvert.Text = TxtConvert.Text & "05" & NmKomp1(n + 16).Text End If
End If
ElseIf LD1(n + 2).Tag = "input2" Then LD1(n + 2).Tag = "normal" If txtTanda.Text = "0" Then txtTanda.Text = "1"
TxtConvert.Text = TxtConvert.Text & "01" & NmKomp1(n + 2).Text If LD1(n + 16).Tag = "input1" Then
LD1(n + 16).Tag = "normal"
TxtConvert.Text = TxtConvert.Text & "05" & NmKomp1(n + 16).Text End If
ElseIf txtTanda.Text = "1" Then
TxtConvert.Text = TxtConvert.Text & "03" & NmKomp1(n + 2).Text If LD1(n + 16).Tag = "input1" Then
LD1(n + 16).Tag = "normal"
TxtConvert.Text = TxtConvert.Text & "04" & NmKomp1(n + 16).Text ElseIf LD1(n + 16).Tag = "input2" Then
LD1(n + 16).Tag = "normal"
TxtConvert.Text = TxtConvert.Text & "05" & NmKomp1(n + 16).Text End If
End If
ElseIf LD1(n + 2).Tag = "output1" Then LD1(n + 2).Tag = "normal"
TxtConvert.Text = TxtConvert.Text & "08" & NmKomp1(n + 2).Text If LD1(n + 16).Tag = "output1" Then
LD1(n + 16).Tag = "normal"
TxtConvert.Text = TxtConvert.Text & "08" & NmKomp1(n + 16).Text ElseIf LD1(n + 16).Tag = "output2" Then
LD1(n + 16).Tag = "normal"
TxtConvert.Text = TxtConvert.Text & "09" & NmKomp1(n + 16).Text End If
ElseIf LD1(n + 2).Tag = "output2" Then LD1(n + 2).Tag = "normal"
TxtConvert.Text = TxtConvert.Text & "09" & NmKomp1(n + 2).Text If LD1(n + 16).Tag = "output1" Then
LD1(n + 16).Tag = "normal"
TxtConvert.Text = TxtConvert.Text & "08" & NmKomp1(n + 16).Text ElseIf LD1(n + 16).Tag = "output2" Then
LD1(n + 16).Tag = "normal"
TxtConvert.Text = TxtConvert.Text & "09" & NmKomp1(n + 16).Text End If
End If End If Next i End Sub
Private Sub CmdKomponen0_Click() For i = 0 To 48
n = 2 * i
If n <> 12 And n <> 26 And n <> 40 And n <> 54 And n <> 68 And n <> 82 And n <> 96 Then If LD1(n).Tag = "fokus" Then
If n > 0 Then
If LD1(n - 1).Tag <> "normal2_2" Then Load FrmInput
FrmInput.Show 1
NmKomp1(n).Text = TxtIn.Text LD1(n).Tag = "input1"
LD1(n).Picture = LoadPicture(".\Ladder\NO.jpg") If LD1(n + 1).Tag = "normal2_2" Then
LD1(n + 2).Tag = "fokus" LD1(n + 2).Picture = LoadPicture(".\Ladder\focus.jpg") CmdKonektor0.Visible = True CmdKonektor1.Visible = False CmdKonektor2_1.Enabled = False CmdKonektor0.Enabled = True If (n + 1) = 12 Or (n + 1) = 26 Or (n + 1) = 40 Or (n + 1) = 54 Or (n + 1) = 68 Or (n + 1) = 82 Or (n + 1) = 96 Then CmdKomponen2.Enabled = True CmdKomponen3.Enabled = True End If Else LD1(n + 1).Tag = "fokus"
LD1(n + 1).Picture = LoadPicture(".\Ladder\focus.jpg") CmdKonektor0.Visible = False CmdKonektor1.Visible = True CmdKonektor2_1.Enabled = True CmdKonektor1.Enabled = True End If End If
If LD1(n - 1).Tag = "normal1" Then CmdKonektor5.Enabled = True CmdKonektor2_1.Enabled = False CmdKonektor0.Enabled = False CmdKonektor1.Enabled = False End If ElseIf n = 0 Then Load FrmInput FrmInput.Show 1 NmKomp1(n).Text = TxtIn.Text LD1(n).Tag = "input1" LD1(n).Picture = LoadPicture(".\Ladder\NO.jpg") LD1(n + 1).Tag = "fokus" LD1(n + 1).Picture = LoadPicture(".\Ladder\focus.jpg") CmdKonektor1.Visible = True CmdKonektor0.Visible = False CmdKonektor2_1.Enabled = True CmdKonektor1.Enabled = True CmdKomponen2.Enabled = False CmdKomponen3.Enabled = False End If End If End If CmdKomponen0.Enabled = False CmdKomponen1.Enabled = False Next i End Sub
Private Sub CmdKomponen1_Click() For i = 0 To 48
n = 2 * i
If n <> 12 And n <> 26 And n <> 40 And n <> 54 And n <> 68 And n <> 82 And n <> 96 Then If LD1(n).Tag = "fokus" Then
If n > 0 Then
If LD1(n - 1).Tag <> "normal2_2" Then Load FrmInput
FrmInput.Show 1
NmKomp1(n).Text = TxtIn.Text LD1(n).Tag = "input2"
LD1(n).Picture = LoadPicture(".\Ladder\NC.jpg") If LD1(n + 1).Tag = "normal2_2" Then
LD1(n + 2).Tag = "fokus" LD1(n + 2).Picture = LoadPicture(".\Ladder\focus.jpg") CmdKonektor0.Visible = True CmdKonektor1.Visible = False CmdKonektor2_1.Enabled = False CmdKonektor0.Enabled = True If (n + 1) = 12 Or (n + 1) = 26 Or (n + 1) = 40 Or (n + 1) = 54 Or (n + 1) = 68 Or (n + 1) = 82 Or (n + 1) = 96 Then CmdKomponen2.Enabled = True CmdKomponen3.Enabled = True End If Else LD1(n + 1).Tag = "fokus" LD1(n + 1).Picture = LoadPicture(".\Ladder\focus.jpg") CmdKonektor0.Visible = False
CmdKonektor2_1.Enabled = True CmdKonektor1.Enabled = True End If
End If
If LD1(n - 1).Tag = "normal1" Then CmdKonektor5.Enabled = True CmdKonektor2_1.Enabled = False CmdKonektor0.Enabled = False CmdKonektor1.Enabled = False End If ElseIf n = 0 Then Load FrmInput FrmInput.Show 1 NmKomp1(n).Text = TxtIn.Text LD1(n).Tag = "input2" LD1(n).Picture = LoadPicture(".\Ladder\NC.jpg") LD1(n + 1).Tag = "fokus" LD1(n + 1).Picture = LoadPicture(".\Ladder\focus.jpg") CmdKonektor1.Visible = True CmdKonektor0.Visible = False CmdKonektor1.Enabled = True CmdKonektor2_1.Enabled = True CmdKomponen2.Enabled = False CmdKomponen3.Enabled = False End If End If End If CmdKomponen0.Enabled = False CmdKomponen1.Enabled = False Next i End Sub
Private Sub CmdKomponen2_Click() For i = 0 To 6
n = 14 * (i + 1) - 2
If LD1(n).Tag = "fokus" Then Load FrmOutput FrmOutput.Show 1 NmKomp1(n).Text = TxtOut.Text LD1(n).Tag = "output1" LD1(n).Picture = LoadPicture(".\Ladder\Out1.jpg") If n < 82 Then p = n + 15 m = n + 2 For j = 0 To 11 m = m + 1
If LD1(m).Tag <> "" Then Exit For Next j
End If
If LD1(n - 1).Tag = "normal1" Then LD1(n - 14).Tag = "fokus"
LD1(n - 14).Picture = LoadPicture(".\Ladder\focus.jpg") ElseIf LD1(m).Tag <> "" And n < 82 Then
If LD1(p).Tag <> "end" Then LD1(n + 15).Tag = "normal" LD1(n + 16).Tag = "fokus" LD1(n + 16).Picture = LoadPicture(".\Ladder\focus.jpg") CmdKonektor0.Visible = True CmdKonektor1.Visible = False CmdKonektor0.Enabled = True CmdKomponen0.Enabled = True CmdKomponen1.Enabled = True CmdKomponen2.Enabled = False CmdKomponen3.Enabled = False End If
ElseIf LD1(n + 1).Tag = "normal" And LD1(m).Tag = "" Then LD1(n + 2).Tag = "fokus" LD1(n + 2).Picture = LoadPicture(".\Ladder\focus.jpg") CmdKonektor0.Visible = True CmdKonektor1.Visible = False CmdKonektor0.Enabled = True CmdKomponen0.Enabled = True CmdKomponen1.Enabled = True CmdKomponen2.Enabled = False CmdKomponen3.Enabled = False End If End If Next i End Sub
Private Sub CmdKomponen3_Click() For i = 0 To 6
n = 14 * (i + 1) - 2
If LD1(n).Tag = "fokus" Then Load FrmOutput FrmOutput.Show 1 NmKomp1(n).Text = TxtOut.Text LD1(n).Tag = "output2" LD1(n).Picture = LoadPicture(".\Ladder\Out2.jpg") If n < 82 Then p = n + 15 m = n + 2 For j = 0 To 11 If m < 97 Then m = m + 1
If LD1(m).Tag <> "" Then Exit For End If
Next j End If
If LD1(n - 1).Tag = "normal1" Then LD1(n - 14).Tag = "fokus"
LD1(n - 14).Picture = LoadPicture(".\Ladder\focus.jpg") ElseIf LD1(m).Tag <> "" And n < 82 Then
If LD1(p).Tag <> "end" Then LD1(n + 15).Tag = "normal" LD1(n + 16).Tag = "fokus" LD1(n + 16).Picture = LoadPicture(".\Ladder\focus.jpg") CmdKonektor0.Visible = True CmdKonektor1.Visible = False CmdKonektor0.Enabled = True CmdKomponen0.Enabled = True CmdKomponen1.Enabled = True CmdKomponen2.Enabled = False CmdKomponen3.Enabled = False End If
ElseIf LD1(n + 1).Tag = "normal" And LD1(m).Tag = "" Then LD1(n + 2).Tag = "fokus" LD1(n + 2).Picture = LoadPicture(".\Ladder\focus.jpg") CmdKonektor0.Visible = True CmdKonektor1.Visible = False CmdKonektor0.Enabled = True CmdKomponen0.Enabled = True CmdKomponen1.Enabled = True CmdKomponen2.Enabled = False CmdKomponen3.Enabled = False End If End If Next i End Sub
Private Sub CmdKonektor0_Click() For i = 0 To 47
n = 2 * i
If LD1(n).Tag = "fokus" Then
If n <> 12 And n <> 26 And n <> 40 And n <> 54 And n <> 68 And n <> 82 And n <> 96 Then LD1(n).Tag = "normal" LD1(n).Picture = LoadPicture(".\Ladder\Con1.jpg") LD1(n + 1).Tag = "fokus" LD1(n + 1).Picture = LoadPicture(".\Ladder\focus.jpg") End If If n = 12 Or n = 26 Or n = 40 Or n = 54 Or n = 68 Or n = 82 Or n = 96 Then CmdKonektor0.Enabled = False CmdKonektor1.Enabled = False Else CmdKonektor1.Enabled = True End If End If Next i CmdKonektor0.Visible = False CmdKonektor1.Visible = True CmdKomponen0.Enabled = False CmdKomponen1.Enabled = False CmdKomponen2.Enabled = False CmdKomponen3.Enabled = False CmdKonektor2_1.Enabled = True End Sub
Private Sub CmdKonektor1_Click() For i = 0 To 47
n = 2 * i + 1
If LD1(n).Tag = "fokus" Then
If n <> 13 And n <> 27 And n <> 41 And n <> 55 And n <> 69 And n <> 83 And n <> 97 Then LD1(n).Tag = "normal" LD1(n).Picture = LoadPicture(".\Ladder\Con1.jpg") LD1(n + 1).Tag = "fokus" LD1(n + 1).Picture = LoadPicture(".\Ladder\focus.jpg") ElseIf n = 13 Or n = 27 Or n = 41 Or n = 55 Or n = 69 Or n = 83 Or n = 97 Then LD1(n).Tag = "normal" LD1(n).Picture = LoadPicture(".\Ladder\blank.jpg") LD1(n + 1).Tag = "fokus" LD1(n + 1).Picture = LoadPicture(".\Ladder\focus.jpg") End If If n = 11 Or n = 25 Or n = 39 Or n = 53 Or n = 67 Or n = 81 Or n = 95 Then CmdKomponen0.Enabled = False CmdKomponen1.Enabled = False CmdKomponen2.Enabled = True CmdKomponen3.Enabled = True CmdKonektor0.Enabled = False Else CmdKomponen0.Enabled = True CmdKomponen1.Enabled = True CmdKomponen2.Enabled = False CmdKomponen3.Enabled = False CmdKonektor0.Enabled = True End If End If CmdKonektor2_1.Enabled = False CmdKonektor1.Visible = False CmdKonektor0.Visible = True CmdKonektor1.Enabled = False Next i End Sub
Private Sub CmdKonektor2_1_Click() For i = 0 To 40