Anda di halaman 1dari 33

Aplikasi PLC Parkir Mobil Sederhana

November 17, 2008 chandramde Leave a comment Go to comments


Sumber : http://telinks.wordpress.com/category/industrial-control-and-automation/
Belajar PLC tanpa contoh aplikasi pasti tidak afdhol. Berikut adalah sebuah contoh aplikasi
PLC pada pengontrolan jumlah mobil dalam area parkir.

Skenario
Adanya mobil yang masuk ke area parkir dideteksi oleh sensor S1.
Adanya mobil yang keluar dari area parkir dideteksi oleh sensor S2.
Kapasitas area parkir adalah 100 mobil.
Jika area parkir telah penuh, maka portal akan menutup pintu masuk dan tanda Parkir Penuh
dinyalakan.
Portal memiliki sensor pembatas untuk menyatakan kondisi portal terbuka (S3) dan portal
tertutup (S4). (S3 dan S4 tidak tergambar, maaf).
Tombol Reset digunakan untuk mereset nilai hitungan mobil dalam area parkir menjadi Nol.
Program Ladder

Rung Pertama. Jika Tombol Reset ditekan, maka DM0000 direset menjadi 0000 dengan
menggunakan instruksi MOVE MOV(21). DM0000 adalah alamat data memori yang
digunakan untuk menyimpan jumlah mobil yang terdapat dalam area parkir.
Rung Kedua. Jika S1 (Sensor_IN) mendeteksi adanya mobil yang masuk, maka program
akan mengecek terlebih dahulu apakah area parkir penuh atau tidak. Hal ini dilakukan dengan
membandingkan nilai DM0000 dengan #0010 (seharusnya #0100, yakni jumlah kapasitas
area parkir, akan tetapi dalam program digunakan nilai #0010 untuk mempercepat proses
simulasi). Komparasi tersebut dilakukan menggunakan fungsi COMPARE CMP(20).
Jika DM0000 kurang dari #0010, maka program akan memicu bit 200.00 dengan instruksi
DIFU(13). Kondisi bit 200.00 ini kemudian digunakan sebagai pemicu fungsi INCREMENT
INC(38) untuk menambah nilai DM0000 dengan satu (DM0000 = DM0000 + 1).
Sedangkan Output 010.01 berfungsi sebagai penanda visual adanya mobil masuk.

Rung Ketiga. Jika S2 (Sensor_OUT) mendeteksi adanya mobil yang keluar dari area parkir,
maka program akan mengecek apakah nilai counter DM0000 samadengan nol. Jika nilai
DM0000 lebih dari nol, maka program akan memicu kondisi bit 200.01 dengan instruksi
DIFU(13). Kondisi bit 200.01 ini kemudian digunakan untuk memicu fungsi DECREMENT
DEC(39) untuk mengurangi nilai DM0000 dengan satu (DM0000 = DM0000 1). Output
010.02 berfungsi sebagai penanda visual adanya mobil keluar.
Rung Keempat. Jika nilai DM0000 = #0010, maka berarti area parkir telah penuh >
Nyalakan tanda Parkir Penuh.

Rung Kelima. Jika area parkir penuh, maka tutup portal pintu masuk.

Rung Keenam. Jika area parkir tidak penuh, pastikan portal pintu masuk dalam keadaan
terbuka.
Selamat belajar!
Aplikasi PLC Solusi ON-OFF Satu Tombol
December 23, 2008 chandramde Leave a comment Go to comments
Perhatikan diagram ladder berikut ini.

Ketika Tombol START ditekan, maka


MOTOR akan ON. MOTOR akan tetap ON meskipun Tombol START dilepas. Untuk
mematikan MOTOR, maka ditekan Tombol STOP. Rangkaian tersebut disebut Rangkaian
ON-OFF dengan Self-Maintaining Output.
Selanjutnya, perhatikan diagram ladder berikut.

Ketika Tombol ON-OFF ditekan, maka instruksi DIFU(13) akan membangkitkan pulsa
HIGH sesaat (1 siklus) pada alamat IR200.00. Jika MOTOR dalam kondisi OFF, maka
pulsa PULSE akan mengeset instruksi KEEP(11) dan menghidupkan MOTOR pada
Output 010.00. Sebaliknya, jika MOTOR dalam kondisi ON, maka pulsa PULSE akan
mereset instruksi KEEP(11) dan mematikan MOTOR.
Dengan mengkombinasikan instruksi DIFU(13) dan KEEP(11) dapat disusun diagram untuk
Solusi ON-OFF Satu Tombol.
Selamat belajar!
Aplikasi PLC Mesin Pengering Sederhana
December 20, 2008 chandramde Leave a comment Go to comments
Anggap saja ini mesin pengering cucian yang punya pilihan untuk mengeringkan cucian
selama 1 menit, 2 menit, dan 3 menit yang dapat dipilih menggunakan tombol kuning,
merah, dan biru. Teknik pengeringan adalah dengan cara memutar cucian dalam tabung
berlubang-lubang dengan kecepatan tinggi selama 1, 2, atau 3 menit.

Skenario
1. Jika Tombol 1_Menit ditekan, maka Motor akan berputar selama 1 menit, dan
kemudian OFF.
2. Jika Tombol 2_Menit ditekan, maka Motor akan berputar selama 2 menit, dan
kemudian OFF.
3. Jika Tombol 3_Menit ditekan, maka Motor akan berputar selama 3 menit, dan
kemudian OFF.
Diagram laddernya adalah sebagai berikut.

Rung 1. Jika Tombol 1_Menit ditekan, maka SV (Setting Value) Timer TIM001 akan diisi
dengan nilai 600 hex (60 detik). Kenapa gak pake MOV(21) aja? Karena tidak bisa, instruksi
MOV(21) tidak dapat mengakses memori area TC. Oleh karena itu digunakan instruksi
BSET(71). Lihat Instruksi BSET(71).

Rung 2. Jika Tombol 2_Menit yang ditekan, maka SV TIM001 akan diisi dengan 1200 hex
(120 detik).
Rung 3. Jika Tombol 3_Menit yang ditekan, maka SV TIM001 akan diisi dengan 1800 hex
(180 detik).

Rung 4. Jika Tombol 1_Menit ditekan ATAU Tombol 2_Menit ditekan ATAU Tombol
3_Menit ditekan, maka bit flag RUN yang ada di alamat IR200.00 akan diset oleh instruksi
KEEP(11). Bit flag RUN akan direset oleh Completion-Flag dari TIM001.

Rung 5. Selama bit flag RUN berada dalam kondisi ON, maka TIM001 akan menghitung
dan MOTOR akan berputar. Sementara itu, LAMPU indikator akan berkedip-kedip dengan
frekuensi 1 detik. Setelah SV samadengan nol, maka Completion-Flag TIM001 akan ON.
Pada siklus berikutnya, bit flag RUN akan direset sehingga MOTOR dan LAMPU akan
OFF.
Dan jangan lupa memberi END(01) di akhir program.
Selamat belajar!
Aplikasi PLC Timer Berbasis Menit
December 17, 2008 chandramde Leave a comment Go to comments
Dengan memanfaatkan bit 1-Minute Clock Pulse yang berada di alamat SR254.00, dapat
dibuat rangkaian Timer berbasis menit sebagai berikut.
Rung 1. Jika Tombol START ditekan, maka alamat IR200 akan diisi dengan nilai 45 hex.
Kenapa hexa dan bukannya desimal akan terjawab di rung berikutnya. Selain mengisi alamat
IR200 dengan 45 hex, bit TimeIsRunning pada alamat 201.00 akan diset dan bit TimeIsUp
pada alamat 201.01 akan direset. Alamat IR200 digunakan untuk menyimpan sebagai SV
(Setting Value).

Rung 2. Apabila TimeIsRunning ON, maka setiap 1 menit sekali, nilai pada IR200 akan
dikurangi 1. Perhatikan bahwa di sini digunakan instruksi DEC(39) dengan tipe operand
BCD. Inilah sebabnya pada Rung 1 di atas, SV pada alamat IR200 diisi menggunakan
instruksi MOV(21) dengan nilai hexa sebagaimana diketahui bahwa nilai hexa merupakan
representasi nilai desimal dalam format BCD. Jadi dalam contoh aplikasi ini timer akan
menghitung selama 45 menit.
Setiap 1 menit juga, nilai SV pada alamat IR200 akan dibandingkan dengan nol. Jika sama
atau lebih besar, maka bit TimeIsUp yang merupakan Completion-Flag dari timer berbasis
menit ini akan diset dan bit TimeIsRunning akan direset untuk menghentikan timer ini.

Rung 3. Selama Completion-Flag (TimeIsUp) OFF, maka POMPA1 akan ON. Jika
TimeIsUp, maka POMPA1 akan OFF dan POMPA2 akan ON.

Catatan
Dalam contoh ini SV disimpan dalam area memori IR (Internal Relay) yang tidak
mempertahankan nilainya ketika PLC dimatikan. Jika diinginkan nilai SV yang bertahan
nilainya ketika PLC dimatikan, maka dapat digunakan area lain seperti HR atau DM.
Demikian juga halnya dengan bit TimeIsRunning dan bit TimeIsUp, dapat digunakan area
HR.
Selamat belajar!

Free-Running Timer
December 9, 2008 chandramde Leave a comment Go to comments

Selama START berada dalam kondisi ON, maka Timer TIM001 akan aktif dan menghitung
selama 5 detik. Setelah 5 detik, Completion Flag-nya akan aktif. Berubahnya kondisi
Completion Flag dari OFF ke ON akan mengaktifkan INT_TO_MCU (Output 010.00) dan
mematikan TIM001. Pada siklus berikutnya, TIM001 akan kembali aktif dan menghitung
selama 5 detik. Sementara itu INT_TO_MCU kembali menjadi OFF. Proses tersebut akan
terjadi berulang-ulang sampai kondisi START menjadi OFF.
Timer pada rangkaian di atas sebagai Free-Running Timer karena Timer aktif kembali
setelah hitungan selesai secara berulang-ulang dengan memanfaatkan Completion Flag-nya.
Rangkaian ini disebut juga Flicker karena berfungsi memberi efek flickering (berkedip-
kedip) pada Output 010.00.
Pada contoh di atas, PLC akan mengirimkan sinyal interupsi ke MCU setiap 5 detik. Sinyal
interupsi tersebut berfungsi sebagai penanda bahwa MCU (Microcontroller Unit) harus
membaca data masukan dari 8 buah sensor suhu dan meng-update tampilan pada layar LCD.
Selamat belajar!

One-Shot Timer
December 9, 2008 chandramde Leave a comment Go to comments

Ketika Tombol START (Input 000.00) ON, maka LAMPU (Output 1000) akan ON.
LAMPU akan tetap ON meskipun START berubah menjadi OFF. Bersamaan dengan
LAMPU, Timer TIM001 juga ikut ON, dan menghitung selama 5 detik. Setelah 5 detik,
Completion Flag TIM000 akan ON sehingga 5sec_ON akan terbuka dan mematikan
LAMPU.
Rangkaian Timer di atas disebut juga One-Shot Timer. Fungsinya adalah mengaktifkan
keluaran selama periode waktu tertentu sesaat setelah kondisi eksekusinya terpenuhi (ON).
Misal: Keran air panas pada mesin pembuat kopi otomatis membuka selama 3 detik ketika
operator menekan Tombol START. Selanjutnya, mesin akan memasukkan campuran
gula+kopi dan mengaduknya. Lho? Apa gak kopi+gula dulu baru air panas? Ya, namanya
juga misal, hahaha
Selamat belajar!
Bit Flag Penting I
December 11, 2008 chandramde Leave a comment Go to comments
Bit flag penting adalah bit-bit dalam memori SR (Special Relay) dan AR (Auxiliary Relay)
yang memiliki fungsi khusus yang sangat membantu dalam pemrograman PLC. PLC
OMRON SYSMAC C memiliki bit-bit penting yang harus dipelajari, dimengerti dan
diamalkan dalam kehidupan ber-PLC sehari-hari, hihihi
Bahasan bit flag penting ini akan ditulis dalam beberapa bagian. Pada bagian pertama ini
akan disampaikan tiga bit flag yang seringkali digunakan dalam program PLC.
Bit Flag Always ON
Bit ini berada di alamat SR253.13. Seperti namanya bit flag ini selalu ON. Bit flag ini
digunakan untuk memberikan kondisi eksekusi (ON) secara terus-menerus selama program
berjalan.
Bit Flag Always OFF
Bit yang menempati alamat SR253.14 ini memiliki fungsi berkebalikan dengan bit flag
sebelumnya. Bit ini senantiasa berada pada kondisi OFF. Bit flag ini jarang digunakan dalam
program.
Bit Flag First Cycle
Bit flag ini ON pada saat siklus pertama saja. Pada siklus kedua dan seterusnya, bit flag ini
akan OFF. Bit flag yang berada di alamat SR253.15 ini juga seringkali digunakan dalam
proses inisialisasi sistem. Bit ini disebut juga bit First Scan Flag.
Contoh Penggunaan Bit Flag Always ON

Selama siklus PLC berlangsung, secara kontinyu program mengecek apakah unit ekspansi
suhu CPM1A-TS101 bekerja baik ataukah mengalami error.
Contoh Penggunaan Bit Flag First Scan
Pada penggalan program di atas, bit flag First Scan digunakan untuk memastikan bahwa
Counter CNT001 direset setiap kali sistem dinyalakan.
Untuk bit flag Always OFF, maaf, tapi hingga kini saya belum pernah menggunakannya
dalam program.
Selamat belajar!
Bit Flag Penting II
December 17, 2008 chandramde Leave a comment Go to comments
Pada Bit Flag Penting Bagian I dibahas tiga bit flag saja yakni Always ON, Always OFF,
dan First Scan. Pada bagian kedua ini akan dibahas secara singkat lima bit clock pulse yang
berfungsi mengeluarkan pulsa clock dengan frekuensi yang beragam.
Bit SR 254.00 1-Minute Clock Pulse
Bit ini mengeluarkan pulsa clock dengan periode 1 menit (30 detik HI 30 detik LO).
Bit SR 254.01 0.02-Second Clock Pulse
Bit ini mengeluarkan pulsa clock dengan periode 0,02 detik (0,01 detik HI 0,01 detik LO).
Bit SR 255.00 0.1-Second Clock Pulse
Bit ini mengeluarkan pulsa clock dengan periode 0,1 detik (0,05 detik HI 0,05 detik LO).
Bit SR 255.01 0.2-Second Clock Pulse
Bit ini mengeluarkan pulsa clock dengan periode 0,2 detik (0,1 detik HI 0,1 detik LO).
Bit SR 255.02 1.0-Second Clock Pulse
Bit ini mengeluarkan pulsa clock dengan periode 1 detik (0,5 detik HI 0,5 detik LO).
Contoh Aplikasi
Contoh aplikasi dapat dilihat pada Aplikasi PLC Timer Berbasis Menit.
Selamat belajar!
Differentiated Instructions
November 18, 2008 chandramde Leave a comment Go to comments
Sebagian besar instruksi PLC dapat diperlakukan sebagai instruksi yang didiferensiasi
(differentiated) dan sebagai instruksi yang tidak didiferensiasi (non-differentiated).
Instruksi yang didiferensiasi dibedakan dengan adanya karakter @ di awal nama instruksinya.
Apa bedanya?
Instruksi yang didiferensiasi hanya dieksekusi satu kali saja ketika kondisi eksekusinya
berubah dari OFF ke ON. Jika kondisi eksekusinya tidak berubah, atau berubah dari ON ke
OFF, sejak terakhir kalinya ia di-scan, maka instruksi tersebut tidak akan dieksekusi lagi.
Instruksi yang tidak didiferensiasi akan dieksekusi dalam setiap siklus.
Instruksi apa saja yang dapat didiferensiasi dapat dilihat dalam Quick Reference.
Selamat belajar!

Bit Flag Penting I


December 11, 2008 chandramde Leave a comment Go to comments
Bit flag penting adalah bit-bit dalam memori SR (Special Relay) dan AR (Auxiliary Relay)
yang memiliki fungsi khusus yang sangat membantu dalam pemrograman PLC. PLC
OMRON SYSMAC C memiliki bit-bit penting yang harus dipelajari, dimengerti dan
diamalkan dalam kehidupan ber-PLC sehari-hari, hihihi
Bahasan bit flag penting ini akan ditulis dalam beberapa bagian. Pada bagian pertama ini
akan disampaikan tiga bit flag yang seringkali digunakan dalam program PLC.
Bit Flag Always ON
Bit ini berada di alamat SR253.13. Seperti namanya bit flag ini selalu ON. Bit flag ini
digunakan untuk memberikan kondisi eksekusi (ON) secara terus-menerus selama program
berjalan.
Bit Flag Always OFF
Bit yang menempati alamat SR253.14 ini memiliki fungsi berkebalikan dengan bit flag
sebelumnya. Bit ini senantiasa berada pada kondisi OFF. Bit flag ini jarang digunakan dalam
program.
Bit Flag First Cycle
Bit flag ini ON pada saat siklus pertama saja. Pada siklus kedua dan seterusnya, bit flag ini
akan OFF. Bit flag yang berada di alamat SR253.15 ini juga seringkali digunakan dalam
proses inisialisasi sistem. Bit ini disebut juga bit First Scan Flag.
Contoh Penggunaan Bit Flag Always ON

Selama siklus PLC berlangsung, secara kontinyu program mengecek apakah unit ekspansi
suhu CPM1A-TS101 bekerja baik ataukah mengalami error.
Contoh Penggunaan Bit Flag First Scan

Pada penggalan program di atas, bit flag First Scan digunakan untuk memastikan bahwa
Counter CNT001 direset setiap kali sistem dinyalakan.
Untuk bit flag Always OFF, maaf, tapi hingga kini saya belum pernah menggunakannya
dalam program.
Selamat belajar!
INSIDE INSTRUKSI PLC
Instruksi SET dan RSET
November 10, 2008 chandramde Leave a comment Go to comments
Instruksi SET dan RESET mirip sekali dengan instruksi OUTPUT dan OUTPUT NOT.
Instruksi SET dan RESET mengubah kondisi bit operand-nya ketika kondisi eksekusinya
ON. Ketika kondisi eksekusinya OFF, kondisi bit operand-nya tidak akan terpengaruh.
Berbeda dengan instruksi OUTPUT dan OUTPUT NOT yang akan mempengaruhi kondisi
bit operand-nya, baik ketika kondisi eksekusinya ON maupun OFF. Mari kita memahaminya
dengan contoh.
Contoh Program

Instruksi OUTPUT pada Net1 akan mengaktifkan Output 010.00 ketika kondisi Input
000.00 ON, dan akan mematikan Output 010.00 ketika kondisi Input 000.00 OFF.
Demikian pula halnya dengan instruksi OUTPUT NOT pada Net2. Ketika kondisi Input
000.01 ON, maka kondisi Output 010.01 akan OFF, dan ketika kondisi Input 000.01 ON,
maka kondisi Output 101.01 akan ON.
Instruksi SET pada Net3 akan mengaktifkan bit 200.00 ketika Input 000.02 ON. Kondisi ini
akan tetap dipertahankan meskipun Input 000.02 berubah kondisi dari ON menjadi OFF.
Instruksi RSET pada Net4 akan menonaktifkan bit 200.00 ketika Input 000.03 ON. Kondisi
ini akan tetap dipertahankan meskipun Input 000.03 berubah kondisi dari ON menjadi OFF.
Selamat belajar!

Instruksi KEEP
November 11, 2008 chandramde Leave a comment Go to comments
Instruksi ini digunakan untuk mempertahankan kondisi bit operand berdasarkan dua kondisi
eksekusi, yakni Set dan Reset. Oleh sebab itu, instruksi KEEP ini terhubung ke dua baris
instruksi pengkondisi eksekusi. Jika kondisi eksekusi instruksi pada baris pertama ON (Set),
maka kondisi bit operand instruksi KEEP akan ON. Dan jika kondisi eksekusi instruksi pada
baris kedua ON (Reset), maka kondisi bit operand instruksi KEEP akan OFF. Jadi instruksi
KEEP ini seperti instruksi SET dan RSET yang dijadikan satu paket.
Kondisi bit operand yang digunakan instruksi KEEP tidak direset dalam instruksi
INTERLOCK. Contoh program berikut akan menjelaskan fungsi KEEP dan penggunaannya
dalam program.
Contoh Program

KEEP-1
Ketika kondisi eksekusi S ON, maka kondisi Output 010.00 akan ON. Kondisi ini tetap
dipertahankan meskipun S berubah menjadi OFF. Untuk mematikan Output 010.00 maka
digunakan kondisi eksekusi R. Ketika kondisi eksekusi R ON, maka Output 010.00 akan
OFF.
KEEP-2
KEEP-2 berada dalam interlock section. Ketika kondisi eksekusi IL(02) ON dan kondisi
eksekusi S ON, maka Output 010.02 akan ON. Kondisi ini akan tetap dipertahankan
meskipun kondisi eksekusi IL(02) berubah menjadi OFF, karena IL(02) tidak mereset
instruksi KEEP(11). Berbeda dengan kondisi Output 010.01 yang kondisinya akan ON jika
kondisi eksekusi IL(02) ON dan kondisi Output 010.00 ON. Kondisi Output 010.01 akan
OFF jika kondisi eksekusi IL(02) OFF meskipun kondisi Output 010.00 ON.
Selamat belajar!
Instruksi INTERLOCK
November 7, 2008 chandramde Leave a comment Go to comments
Instruksi Interlock IL(02) digunakan bersama dengan instruksi Interlock Clear ILC(03).
Instruksi ini digunakan untuk menjalankan bagian program tertentu, yakni bagian program
yang berada di antara IL(02) dan ILC(03), dengan syarat kondisi eksekusi untuk IL(02)
terpenuhi (ON). Bagian program yang terletak di antara IL(02) dan ILC(03) disebut sebagai
interlock section.
Jika kondisi eksekusi IL(02) OFF, maka interlock section akan diperlakukan sbb:
Bit-bit untuk instruksi OUT dan OUT NOT akan dimatikan (OFF)
TIM dan TIMH(15) akan direset
Nilai Process Value (PV) pada CNT dan CNTR(12) akan dipertahankan
Bit status untuk instruksi KEEP(11) akan dipertahankan
Instruksi DIFU(13) dan DIFD(14) tidak akan dieksekusi
Instruksi lain tidak akan dieksekusi dan nilai-nilai IR, AR, LR, HR dan SR yang digunakan
sebagai output akan dimatikan/direset (OFF)
IL(02) dan ILC(03) tidak harus berpasangan satu-satu. IL(02) dapat digunakan berkali-kali
dengan satu ILC(03) penutup. Setiap IL(02) membentuk bagian interlock-nya masing-masing
hingga bertemu dengan ILC(03). Akan tetapi tidak memungkinkan untuk membuat interlock
bersarang (nested interlock).
Contoh Program
Ketika Kondisi1 OFF, maka interlock section tidak akan dieksekusi. Timer0 dan Output
010.03 akan direset, dan nilai Counter1 akan dipertahankan. Program akan melompat
menuju Net7, dan Output 010.04 akan berkedap-kedip. Nilai Kondisi2 tidak berpengaruh
selama nilai Kondisi1 OFF.
Ketika Kondisi1 ON, maka Timer0 akan aktif, dan ketika waktunya terpenuhi Output
Timer0 akan menurunkan nilai Counter1. Timer0 akan otomatis direset oleh keluarannya
sendiri. Setelah nilai Counter0 tercapai (10 kali hitungan), maka Kondisi2 akan ON
sehingga interlock section kedua (Net5) akan dieksekusi sampai Counter0 direset
menggunakan CNT1RST.
Instruksi Interlock tidak cocok digunakan untuk mengontrol output yang membutuhkan nilai
tetap (sustained output), misalnya aktuator pneumatik dan hidrolik, karena kondisi output
akan direset ketika kondisi interlock tidak terpenuhi. Instruksi ini lebih cocok digunakan
untuk mengontrol output yang tidak membutuhkan nilai tetap. Untuk aplikasi yang
membutuhkan pengontrolan sustained output, maka instruksi Jump lebih cocok digunakan.
Selamat belajar!

Instruksi DECREMENT DEC(39)


November 21, 2008 chandramde Leave a comment Go to comments
Instruksi ini berfungsi untuk mengurangi satu nilai pada operand bertipe word. Operand
dalam hal ini bisa salah satu dari register IR, SR, AR, DM, HR, dan LR.
Jika kondisi eksekusi instruksi DEC(39) terpenuhi, maka nilai operand akan dikurangi satu
tanpa mempengaruhi bit flag Carry (CY).
Instruksi ini termasuk salah satu instruksi yang dapat didiferensiasi. Jika DEC(38) tidak
didiferensiasi, maka selama kondisi eksekusinya terpenuhi, nilai operand akan bertambah
satu setiap siklusnya. Jika dibutuhkan untuk memicu instruksi DEC(39) sekali saja selama
kondisi eksekusi terpenuhi, maka gunakan instruksi DEC(38) yang didiferensiasi atau dengan
menggabungkan instruksi DEC(38) dengan instruksi DIFU(13) atau DIFD(14).
Contoh Program
Ketika PLC di-running, maka DM0100 akan diisi nilainya 1000 oleh instruksi MOV(21)
yang kondisi eksekusinya diaktifkan sekali saja yakni pada siklus pertama. Hal ini dapat
dilakukan dengan memanfaatkan First Cycle Flag dengan alamat SR 253.15.
Selanjutnya, jika Input 000.01 ON, maka nilai DM0100 akan berkurang satu dengan aman
dan tenteram. Lain halnya dengan ketika Input 000.00 ON. Ketika hal itu terjadi, maka nilai
DM0100 akan berkurang dengan sangat cepat. Hal ini disebabkan karena meskipun sekejap
saja kita mengubah kondisi Input 000.00 dari OFF ke ON dan kemudian ke OFF lagi, PLC
telah memprosesnya berulang-ulang karena siklus waktu PLC yang lebih cepat.
Selamat belajar!
Instruksi INCREMENT INC(38)
November 21, 2008 chandramde Leave a comment Go to comments
Instruksi ini berfungsi untuk menambah satu nilai pada operand bertipe word. Operand
dalam hal ini bisa salah satu dari register IR, SR, AR, DM, HR, dan LR.
Jika kondisi eksekusi instruksi INC(38) terpenuhi, maka nilai operand akan ditambah satu
tanpa mempengaruhi bit flag Carry (CY).
Instruksi ini termasuk salah satu instruksi yang dapat didiferensiasi. Jika INC(38) tidak
didiferensiasi, maka selama kondisi eksekusi terpenuhi, nilai operand akan bertambah satu
setiap siklusnya. Jika dibutuhkan untuk memicu instruksi INC(38) sekali saja selama kondisi
eksekusi terpenuhi, maka gunakan instruksi INC(38) yang didiferensiasi atau dengan
menggabungkan instruksi INC(38) dengan instruksi DIFU(13) dan DIFD(14) .
Contoh Program
Ketika PLC di-running, maka DM0100 akan direset nilainya oleh instruksi MOV(21) yang
kondisi eksekusinya diaktifkan sekali saja yakni pada siklus pertama. Hal itu dapat dilakukan
dengan memanfaatkan bit First Cycle Flag pada alamat SR 253.15.
Selanjutnya, jika Input 000.01 ON, maka nilai DM0100 akan bertambah satu dengan aman
dan tenteram. Lain halnya dengan ketika Input 000.00 ON. Ketika hal itu terjadi, maka nilai
DM0100 akan bertambah lebih dari satu dengan sangat cepat. Hal ini disebabkan karena
meskipun sekejap saja kita mengubah kondisi Input 000.00 dari OFF ke ON dan kemudian
ke OFF lagi, PLC telah memprosesnya berulang-ulang karena siklus waktu PLC yang cepat.
Selamat belajar!

Instruksi BINARY-TO-BCD BCD(24)


November 25, 2008 chandramde Leave a comment Go to comments
Instruksi BCD(24) berfungsi untuk mengkonversi bilangan binary (hexadecimal) menjadi
BCD ekuivalennya. Nilai bilangan yang dikonversi tidak boleh melebihi 270F hexa karena
hasil konversinya akan melebihi angka 9999. Jika hal ini terjadi maka instruksi BCD(24)
tersebut tidak akan dieksekusi.
Instruksi ini membutuhkan dua operand yakni Source dan Destination. Source adalah alamat
memori bilangan binary yang akan dikonversi dan Destination adalah alamat memori
bilangan BCD hasil konversi. Source dan Destination bisa saja salah satu dari IR, SR, AR,
DM, HR, atau LR. Source dan Destination tidak dapat diisi konstanta.

Bilangan BCD Binary-Coded-Decimal


BCD adalah teknik pengkodean bilangan desimal, dimana masing-masing digit bilangan
desimal tersebut direpresentasikan dengan bilangan biner. Dalam dunia elektronik dan
komputer, pengkodean ini bertujuan untuk memudahkan pengkonversian data bilangan
desimal ketika akan ditampilkan pada suatu display (seven-segment misalnya). Selain itu,
BCD juga digunakan untuk mempercepat suatu proses kalkulasi. Dengan teknik pengkodean
BCD ini, maka akan dapat dihindari kerumitan baik dari sisi hardware maupun software.
Dalam sistem bilangan BCD, sebuah digit bilangan desimal diwakili oleh 4 bit bilangan
binernya. Dasar pengkodean bilangan desimal menjadi bilangan BCD adalah dengan
mengganti setiap digit bilangan desimal dengan bilangan biner 4 bit sebagai berikut:
Desimal: 0 1 2 3 4 5 6 7 8 9
Biner : 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001
Jadi bilangan 236 desimal akan dikodekan menjadi 0010 0011 0110 = BCD 236.
Agar lebih mudah memahami, mari kita simak hasil simulasi pada program SYSWIN 3.4 dan
PLC CPM2A berikut ini:
Pada baris pertama, instruksi MOV(21) mengisi memori DM0100 dengan angka 00EC hex
atau 0236 desimal. Pada baris berikutnya, instruksi BCD mengkonversi bilangan 00EC hex
menjadi 0236 bcd. Sekarang mari kita lihat tampilan data memorinya.

Tampilan di atas menunjukkan isi memori DM0100 dan DM0101 dalam bilangan hexa. Nilai
dalam DM0100 adalah 0236 desimal yang ditampilkan sebagai 00EC hexa. Hasil konversi
bilangan 0236 desimal menjadi BCD adalah 0236 bcd, yang tersimpan dalam bentuk hexa
sebagai 0236 hexa.

Jika ditampilkan dalam bentuk bilangan desimal, maka DM0100 = 00236, dan hasil konversi
BCD DM0101 = 00566.
Jadi dapat dikatakan bahwa 0236 hexa adalah versi BCD dari bilangan 0236 desimal.
Pengertian ini untuk memudahkan kita dalam proses pembuatan program yang melibatkan
bilangan BCD.
Selamat belajar!

Instruksi JMP
November 8, 2008 chandramde Leave a comment Go to comments
Instruksi Jump JMP(04) selalu berpasangan dengan instruksi Jump End JME(05). JMP
digunakan untuk melewati bagian program tertentu dalam program, yakni bagian program
yang terletak di antara instruksi JMP(04) dan JME(05). Kita sebut saja bagian program
tersebut sebagai jump section.
Jika kondisi eksekusi JMP(04) ON, maka program akan berjalan lurus seperti jika tidak ada
instruksi JMP(04). Dengan kata lain, instruksi-instruksi dalam jump section akan dieksekusi.
Tapi jika kondisi eksekusi JMP(04) OFF, maka eksekusi program akan melompat menuju
instruksi tepat di bawah instruksi JME(05), tanpa mengubah nilai status apapun yang ada di
dalam jump section.
Terdapat dua tipe Instruksi JMP(04) dan JME(05), yakni instruksi dengan nomor 01-99, dan
instruksi dengan nomor 00. Instruksi dengan nomor 01-99 hanya dapat digunakan satu kali
dalam program. Pada kondisi eksekusi OFF, instruksi JMP(04) dengan nomor 01
(JMP(04)@01) akan melompatkan eksekusi program ke JME(05) dengan nomor 01
(JME(05)@01), seolah-olah instruksi-instruksi yang ada di antara keduanya tidak ada.
Intsruksi JMP(04)@00 dapat digunakan berulang-ulang dalam program. Bahkan bisa juga
instruksi ini digunakan secara berurutan dengan hanya satu instruksi JME(04) saja. Dalam
eksekusinya, program akan mencari pasangan JMP(04)@00 terdekat pada instruksi-instruksi
selanjutnya meskipun tanpa mengubah nilai status apapun. Akan tetapi hal tersebut
menyebabkan proses eksekusi program menjadi sedikit lebih lama dibandingkan ketika
menggunakan instruksi JMP(04) dan JME(05) dengan nomor 01-99.
Instruksi JMP(04) dan JME(05) dengan nomor 00 dapat dianggap sebagai instruksi interlock
IL(02) dan ILC(03) dengan catatan bahwa instruksi JMP(04) dan JME(05) tidak mengubah
nilai status apapun dalam jump section-nya.
Contoh Program
Pada saat Kondisi1 OFF, eksekusi program akan langsung melompat ke instruksi tepat di
bawah JME(05) yakni Net5. Perubahan nilai Input 000.01 hanya akan mengubah kondisi
Output 010.01 saja, sedangkan kondisi Output 010.00 tetap.
Jika Kondisi1 ON, maka program akan mengeksekusi Net2 hingga Net5. Timer0 akan
bekerja, dan perubahan nilai pada Input 000.01 akan mengubah kondisi Output 010.00 dan
Output 010.01.
Untuk membuktikan bahwa instruksi JMP(04) tidak mengubah nilai status apapun dalam
jump section, lakukan praktek sbb:
1. Aktifkan Kondisi1 (Input 000.00 ON)
2. Aktifkan Input 000.01 untuk menyalakan Output 010.00 dan Output 010.01.
3. Matikan Kondisi1 ketika Input 000.01 masih ON.
4. Matikan Input 000.01
Hasil yang akan didapat adalah kondisi Output 010.00 tetap ON, meskipun nilai Input
000.01 berubah-ubah. Perhatikan juga bahwa Output Timer0 dan Output 010.02 juga tetap.
Hal ini membuktikan bahwa instruksi JMP(04) dan JME(05) tidak mengubah nilai status
apapun di dalam jump section-nya. Demikian pula halnya dengan nilai Timer0. Ketika
Kondisi1 berubah dari ON ke OFF sementara nilai Timer0 belum mencapai nol, maka nilai
Timer0 tersebut akan dilanjutkan ketika kondisi eksekusi instruksi JMP(04) atau nilai
Kondisi1 kembali ON.
Selamat belajar!
Instruksi MOVE MOV(21)
November 18, 2008 chandramde Leave a comment Go to comments
Instruksi MOVE - MOV(21) digunakan untuk meng-copy nilai dari Source ke Destination.
Source dapat berupa konstanta (#), ataupun data yang ada di alamat tertentu dalam register
IR, SR, AR, DM, HR, TC, dan LR. Sedangkan Destination adalah alamat register IR, SR,
AR, DM, HR, LR. Jika kondisi eksekusi MOV(21) ON, maka data di Source (Sumber) akan
di-copy ke Destination (Tujuan).
Perhatian!
Instruksi MOV(21) tidak dapat digunakan untuk mengubah nilai PV (Process Value) pada
Timer/Counter.
Instruksi MOV(21) tidak dapat digunakan untuk mengubah nilai DM6144 sampai DM6655.
Contoh Program
Ketika kondisi Input 000.00 ON, maka konstanta #0100 akan di-copy ke DM0000, dan
selanjutnya nilai dalam DM0000 akan di-copy ke HR05.
Instruksi MOV(21) dapat diperlakukan sebagai instruksi yang didiferensiasi atau tidak. (Lihat
Differentiated Instructions).
Selamat belajar!

Instruksi INTERRUPT CONTROL INT(89)


February 6, 2009 chandramde Leave a comment Go to comments

Instruksi INT(89) berfungsi untuk mengontrol/mengarahkan


interupsi dan melakukan satu dari tujuh fungsi yang dapat dipilih sesuai dengan nilai
parameter C1. Instruksi INT(89) memiliki tiga buah operand yakni C1, 000, dan C2. C1
adalah konstanta dengan nilai 000 004, 100, dan 200. Berikut adalah fungsi instruksi
INT(89) berdasarkan nilai operand C1:
1. Mask/Unmask Interrupt Inputs (C1 = 000)
2. Clear Interrupt Inputs (C1 = 001)
3. Read Current Mask Status of Interrupt Inputs (C1 = 002)
4. Restart Decrementing Counter and Unmask Interrupt (C1 = 003)
5. Restart Incrementing Counter and Unmask Interrupt (C1 = 004)
6. Mask All Interrupts (C1 = 100)
7. Unmask All Interrupts (C1 = 200)
1. Fungsi Mask/Unmask Interrupt Inputs
Fungsi ini digunakan untuk menghalangi atau mengijinkan interupsi dari kaki Input 000.03
000.06. Interupsi yang dihalangi (masked) akan dicatat dan diabaikan oleh CPU. Interupsi
yang diijinkan (unmasked) akan direspon dan program interupsinya akan dieksekusi.
Operand C2 (word) pada instruksi INT(89) digunakan untuk mengijinkan (unmasking) atau
menghalangi (masking) masukan interupsi. Untuk mengijinkan masukan interupsi, maka bit
yang bersesuaian harus direset. Dan sebaliknya, untuk menghalangi masukan interupsi, maka
bit yang berseuaian harus diset. Bit ke-0 untuk Input 000.03, bit ke-1 untuk Input 000.04, bit
ke-2 untuk Input 000.05, dan bit ke-3 untuk Input 000.06. Berikut adalah contoh penggunaan
instruksi INT(89) untuk mengijinkan masukan interupsi 000.03 dan menghalangi masukan
interupsi yang lainnya.

Instruksi INT(89) akan dieksekusi pada siklus pertama program. C1 = 000 berarti
menjalankan fungsi Mask/Unmask Interrupt Inputs. C2 = 000EH = 00000000 00001110B
berarti mengijinkan masukan interupsi 000.03 dan menghalangi masukan interupsi yang
lainnya.
Pada awal operasi, semua masukan interupsi berada dalam kondisi terhalangi. Oleh karena itu
perlu dilakukan unmasking agar masukan interupsi dapat digunakan.
2. Fungsi Clear Interrupt Inputs
Fungsi ini digunakan untuk menghapus masukan interupsi. Karena CPU mencatat masukan
interupsi meskipun dalam keadaan masked, maka program interupsi akan langsung
dieksekusi seketika setelah masukan interupsinya di-unmasked, kecuali catatan interupsinya
dihapus terlebih dahulu.
Penghapusan catatan interupsi ini perlu dilakukan jika kita ingin mengaktifkan interupsi
ditengah-tengah jalannya program. Lain halnya jika unmasking dilakukan pada siklus
pertama program, maka proses clearing ini tidak perlu dilakukan. Berikut adalah contoh
penggunaan instruksi INT(89) untuk menghapus masukan interupsi sebelum interupsi di-
unmasking.
Ketika SENSOR berubah kondisi dari OFF menjadi ON, maka instruksi INT(89) pertama
akan menghapus masukan interupsi dari semua kaki input (000.03 000.06). Selanjutnya,
instruksi INT(89) berikutnya akan mengijinkan masukan interupsi Input 000.03 dan
menghalangi masukan interupsi yang lainnya.
Maaf, sekian saja dulu. Fungsi-fungsi instruksi INT(89) yang lain, cara setup-nya, dan contoh
programnya saya sambung lain waktu. Insya Allah
Selamat belajar!

Instruksi COMPARE CMP(20)


November 27, 2008 chandramde Leave a comment Go to comments
Instruksi CMP(20) berfungsi membandingkan dua buah operand bertipe word. Ketika
kondisi eksekusi instruksi ini terpenuhi, maka CMP(20) akan membandingkan nilai
operand1 dengan nilai operand2. Hasil perbandingan tersebut disimpan dalam bit flag EQ
(EQuals), LE (LEss-than), dan GR (GReater-than) yang menyatakan operand1 = operand2,
operand1 < operand2, dan operand1 > operand2.

Perlu diperhatikan!
Jika membandingkan nilai PV (Process Value) pada Timer atau Counter, maka perlu diingat
bahwa nilai PV pada Timer dan Counter adalah bilangan BCD. Jadi nilai pembandingnya
sebaiknya juga BCD agar tidak bingung.
Sebaiknya langsung memproses hasil perbandingan instruksi CMP(20) sebelum instruksi lain
dijalankan karena mungkin saja bit flag EQ, LE, dan GR mengalami perubahan nilai.
Contoh Program
Rung 1. Ketika pertama kali dihidupkan, nilai DM0100 akan direset menjadi 0000 dengan
menggunakan instruksi MOV(21) yang dieksekusi oleh bit flag First_Scan (SR253.15).
Rung 2. Jika Input 000.00 ON, maka instruksi @INC(38) akan menaikkan nilai DM0100
sebesar 1. Adanya tambahan karakter @ di depan menunjukkan bahwa instruksi ini
didiferensiasi.
Rung 3. Secara kontinyu, program membandingkan nilai DM0100 dengan 5. Jika nilainya
kurang dari 5, maka Output 010.01 akan ON. Jika nilainya samadengan 5, maka Output
010.00 akan ON. Dan jika nilainya lebih dari 5, maka Output 010.02 akan ON.
Selamat belajar!
Aplikasi PLC Timer is Running Flag
November 29, 2008 chandramde Leave a comment Go to comments
Dalam suatu aplikasi, terkadang kita perlu mengetahui kondisi suatu TIMER apakah ia
sedang Running atau tidak. Hal itu dapat dilakukan dengan memberikan sebuah bit flag
tambahan seperti ditunjukkan oleh gambar berikut.

Contoh Program

Pada penggalan program di atas, bit Timer1_Running pada alamat 205.00 akan ON selama
Timer Max_On (TIM001) Running. Bit ini akan OFF jika TIM001 OFF atau jika
Completion Flag-nya ON, yakni ketika nilai PV-nya telah mencapai nilai 0000.
Selamat belajar!

Instruksi INCREMENT INC(38)


November 21, 2008 chandramde Leave a comment Go to comments
Instruksi ini berfungsi untuk menambah satu nilai pada operand bertipe word. Operand
dalam hal ini bisa salah satu dari register IR, SR, AR, DM, HR, dan LR.
Jika kondisi eksekusi instruksi INC(38) terpenuhi, maka nilai operand akan ditambah satu
tanpa mempengaruhi bit flag Carry (CY).
Instruksi ini termasuk salah satu instruksi yang dapat didiferensiasi. Jika INC(38) tidak
didiferensiasi, maka selama kondisi eksekusi terpenuhi, nilai operand akan bertambah satu
setiap siklusnya. Jika dibutuhkan untuk memicu instruksi INC(38) sekali saja selama kondisi
eksekusi terpenuhi, maka gunakan instruksi INC(38) yang didiferensiasi atau dengan
menggabungkan instruksi INC(38) dengan instruksi DIFU(13) dan DIFD(14) .
Contoh Program
Ketika PLC di-running, maka DM0100 akan direset nilainya oleh instruksi MOV(21) yang
kondisi eksekusinya diaktifkan sekali saja yakni pada siklus pertama. Hal itu dapat dilakukan
dengan memanfaatkan bit First Cycle Flag pada alamat SR 253.15.
Selanjutnya, jika Input 000.01 ON, maka nilai DM0100 akan bertambah satu dengan aman
dan tenteram. Lain halnya dengan ketika Input 000.00 ON. Ketika hal itu terjadi, maka nilai
DM0100 akan bertambah lebih dari satu dengan sangat cepat. Hal ini disebabkan karena
meskipun sekejap saja kita mengubah kondisi Input 000.00 dari OFF ke ON dan kemudian
ke OFF lagi, PLC telah memprosesnya berulang-ulang karena siklus waktu PLC yang cepat.
Selamat belajar!
Instruksi STEP DEFINE dan STEP START
November 14, 2008 chandramde Leave a comment Go to comments
Instruksi STEP DEFINE STEP(08) dan STEP START SNXT(09) digunakan
berpasangan untuk membentuk breakpoint antara satu bagian program dengan bagian
program yang lain dalam sebuah program yang besar. Masing-masing bagian tersebut dapat
dieksekusi sebagai suatu unit program dan akan direset setelah eksekusi selesai dilakukan.
Bagian program yang didefinisikan menggunakan STEP(08) disebut section.
Instruksi STEP(08) digunakan untuk mendefinisikan awal dari sebuah section. Instruksi ini
menggunakan bit kontrol dalam register IR, LR, atau HR. Eksekusi STEP(08) dikontrol
menggunakan bit kontrol, sehingga tidak memerlukan kondisi eksekusi. Untuk mengeksekusi
sebuah STEP(08) digunakan instruksi SNXT(09) dengan alamat bit kontrol yang sama
dengan STEP(08). Dalam sebuah section tidak boleh ada instruksi-instruksi END(01),
IL(02)/ILC(03), JMP(04)/JME(05), dan SBN(92).
Ketika kondisi eksekusi SNXT(09) terpenuhi (ON), maka STEP(08) dengan alamat bit
kontrol yang sama akan dieksekusi. Sekali dieksekusi, STEP(08) akan terus dieksekusi
hingga kondisi bit kontrol OFF atau terjadi eksekusi SNXT(09) selanjutnya dengan STEP(08)
tanpa bit kontrol.
Instruksi SNXT(09) harus diletakkan sebelum instruksi STEP(08), sehingga instruksi
SNXT(09) akan dieksekusi terlebih dahulu sebelum eksekusi program mencapai instruksi
STEP(08) dengan alamat bit kontrol yang sama. Hal ini disebabkan karena dalam setiap
siklusnya PLC mengeksekusi instruksi-instruksi secara berurutan dari atas ke bawah.
Ketika sebuah STEP(08) selesai dijalankan, maka semua bit IR dan HR akan direset. Timer
juga akan direset. Sedangkan nilai Counter, Keep, dan Shift Register dipertahankan.
Contoh Program

Ketika kondisi Step-1 ON OFF, maka section dalam Step-1 tidak akan dijalankan. Program
akan mengeksekusi instruksi di Net7 dan menghasilkan Output 010.02 berkedip-kedip tiap
detik.
Ketika kondisi SNXT(09) Step-1 terpenuhi (Step-1 ON = ON), maka section akan
dieksekusi. Eksekusi berlangsung terus-menerus hinga kondisi Step-1 OFF terpenuhi.
Eksekusi section dalam Step-1 juga dapat dihentikan dengan mereset nilai bit kontrolnya.
Oleh karena itu, eksekusi section dalam contoh program di atas akan dihentikan jika kondisi
Stop Reset terpenuhi.
STEP(08) dapat diprogram secara berurutan. Tergantung dari kondisi eksekusi dan
penampatan instruksi SNXT(09), maka STEP(08) dan SNXT(09) dapat dieksekusi sebagai
sekuensial, pencabangan, atau paralel.
Selamat belajar!
Instruksi END dan NOP
November 13, 2008 chandramde Leave a comment Go to comments
Instruksi END END(01)
Instruksi ini digunakan sebagai penutup program. Instruksi-instruksi yang terletak di bawah
instruksi END(01) tidak akan dieksekusi oleh PLC. Instruksi END(01) dapat diletakkan
dimana saja di dalam program. Karenanya, instruksi ini dapat digunakan untuk men-debug
program. Dengan menyelipkan instruksi END(01) pada baris tertentu di dalam program,
maka berarti kita membatasi eksekusi program sampai baris tersebut. Setelah yakin bahwa
program berjalan benar hingga baris tersebut, kita dapat menghapus instruksi END(01)
tersebut dan memindahkannya ke bagian lain. Perlu diingat bahwa setelah selesai melakukan
debugging, maka instruksi END(01) yang digunakan untuk tujuan debugging tersebut harus
dihapus agar program berjalan normal secara keseluruhan.
Jika dalam sebuah program PLC belum terdapat instruksi END(01), maka program tidak
akan dieksekusi dan pesan kesalahan akan ditampilkan. Instruksi END(01) mereset flag ER,
CY, GR, EQ dan LE.
Instruksi NOP(00)
Instruksi ini tidak diperlukan dalam pemrograman dan tidak ada simbol ladder khusus untuk
instruksi ini. Ketika instruksi ini ditemukan dalam program, maka PLC tidak melakukan
apapun dan program akan melanjutkan eksekusi ke instruksi selanjutnya. Ketika memori PLC
dihapus, maka semua alamat akan berisi NOP(00).

Anda mungkin juga menyukai