Anda di halaman 1dari 50

Fungsi-fungsi Interupsi CPM2A

1 Votes

CPM2A menyediakan beberapa jenis pemrosesan interupsi, yakni:

 Interrupt Inputs – Program interupsi akan dieksekusi ketika kondisi Input 000.03 –
000.06 berubah dari OFF menjadi ON. Nomor subrutin interupsi yang dialokasikan
untuk Input 000.03 – 000.06 adalah 000 – 003.
 Interval Timer Interrupts – Program interupsi interval timer akan dieksekusi
berdasarkan interval waktu yang ditentukan dengan kepresisian 0,1 milidetik. Nomor
subrutin interupsi yang dialokasikan adalah 000 – 049.
 Count-up Interrupts Using Interrupt Inputs (Counter Mode) – Sinyal input yang
masuk ke kaki Input 000.03 – 000.06 akan dihitung pada kecepatan tinggi dengan
frekuensi 2 kHz, dan program utama akan dihentikan sementara untuk menjalankan
program interupsi. Nomor subrutin interupsi yang dialokasikan untuk Input 000.03 –
000.06 adalah 000 – 0003.
 Count-check Interrupts Using High-Speed Counter – Pulsa yang masuk ke kaki
Input 000.00 – 000.02 akan dihitung pada kecepatan tnggi dengan frekuensi 20 kHz/5
kHz. Program interupsi dieksekusi ketika nilai PV High-Speed Counter telah mencapai
nilai target SV atau telah sampai pada jangkauan nilai tertentu. Nomor subrutin
interupsi yang dialokasikan untuk instruksi ini adalah 000 – 049.

Program interupsi didefinisikan sebagai subrutin


interupsi dalam program. Sebagaimana halnya subrutin biasa, subrutin interupsi juga
didefinisikan dengan instruksi SBN(92) dan RET(93) seperti diilustrasikan oleh gambar di
samping ini.

Adapun aturan-aturan yang harus diikuti dalam hal pendefinisian subrutin interupsi adalah
sebagai berikut.

1. Interupsi baru dapat didefinisikan dalam subrutin interupsi.


2. Interupsi yang sudah ada dapat dihapus dalam subrutin interupsi.
3. Di dalam subrutin interupsi tidak boleh ada subrutin interupsi lain.
4. Di dalam subrutin interupsi tidak boleh ada subrutin biasa.
5. Di dalam subrutin biasa tidak boleh ada subrutin interupsi.
Prioritas Interupsi
Urutan prioritas interupsi diilustrasikan oleh gambar berikut ini. Interupsi dengan prioritas
yang lebih tinggi akan didahulukan, artinya, program interupsinya akan diprioritaskan untuk
dieksekusi terlebih dahulu.

Jika interupsi dengan prioritas yang sama terjadi bersamaan, maka program interupsi akan
dijalankan secara berurutan dari nomor subrutin interupsinya.

Jika interupsi dengan prioritas yang lebih tinggi muncul ketika subrutin interupsi dengan
prioritas yang lebih rendah sedang dieksekusi, maka program akan melompat dulu ke
subrutin interupsi dengan prioritas yang lebih tinggi, dan setelah subrutinnya selesai
dieksekusi, program akan kembali melanjutkan subrutin interupsi yang ditinggalkannya tadi.

Aplikasi PLC Real-Time

Rate This

Artikel ini saya tulis sebagai jawaban atas pertanyaan Mbak Arnee dalam Aplikasi PLC –
Timer Berbasis Menit. Setelah membaca pertanyaan tersebut, saya langsung mengumpulkan
data dari berbagai sumber untuk mengetahui lebih detil mengenai sistem kontrol real-time.
Nah, berikut adalah kesimpulan singkat dari saya.

Sebuah sistem kontrol dikatakan real-time jika sistem kontrol tersebut mampu merespon
masukan dengan tepat secara logika dan cepat. Terkadang respon tersebut harus sedemikian
cepat, sehingga jika tidak dilakukan dalam periode waktu yang terbatas yang dibutuhkan,
maka respon tersebut dianggap gagal, dan oleh karenanya, sistem pun dianggap gagal. Jadi,
sistem kontrol yang memiliki waktu respon yang cukup cepat sehingga mampu merespon
masukan dalam periode waktu yang terbatas yang dibutuhkan, maka sistem kontrol tersebut
dapat disebut sebagai sistem kontrol real-time. Selambat apapun respon suatu sistem, jika
masih mampu memenuhi batasan waktu respon yang dibutuhkan, tetap saja dikatakan sistem
tersebut real-time.
Contoh: Sebuah kontroler suhu pada sebuah Curing
Vessel berpemanas listrik yang digunakan dalam proses curing (pemasakan) kompon karet,
tidak memerlukan response-time yang cepat. Dalam sistem ini, laju perubahan suhu
adalah ±1,5 derajad Celcius per menit dengan maksimum suhu yang dapat dicapai sebesar
160 derajad Celcius. Selain itu, proses pemasakan kompon karet juga tidak termasuk proses
yang kritis. Adanya selisih suhu antara suhu aktual dan suhu target tidak banyak
mempengaruhi hasil akhir proses. Demikian juga dengan waktu proses. Adanya selisih
(kurang atau lebih) terhadap lamanya waktu proses masak juga tidak mempengaruhi hasil
akhir proses.

Nah, untuk sistem yang ‘enteng’ semacam ini, kontroler suhu dengan cycle-time 10 detik pun
cukup. Kontroler tidak perlu mensampling suhu dengan frekuensi yang berlebihan karena
lajunya hanya 1,5 derajad Celcius semenitnya.

Lalu bagaimana dengan PLC? Kita ambil contoh saja PLC OMRON CPM1A atau CPM2A.
Keduanya memiliki I/O Response-Time dan Cycle-Time yang sangat cepat. Oleh karenanya
setiap aplikasi sistem kontrol berbasis PLC, dimana PLC tersebut dapat merespon setiap
masukan dalam periode waktu yang ditentukan, maka sistem kontrol berbasis PLC tersebut
dapat dikategorikan sebagai sistem kontrol real-time.

Struktur Memori Area CPM1A


dan CPM2A

Rate This

Kamis, 15 Januari 2009 kemarin, Mas Ari menanyakan apakah alamat untuk CPM1A sama
dengan CPM2A. Nah, untuk menjawab pertanyaan tersebut, maka berikut adalah data
mengenai struktur memori area untuk PLC OMRON CPM1A dan CPM2A.

CPM1A
IR AREA
+ Input: IR000 – IR009 word = IR00000 – IR00915 bit
+ Output: IR010 – IR019 word = IR01000 – IR01915 bit
+ Work Area: IR200 – IR231 word = IR20000 – 23115 bit
SR AREA
SR232 – SR255 word = SR23200 – SR25515 bit

TR AREA
TR0 – TR7

HR AREA
HR00 – HR19 word = HR0000 – HR1915 bit

AR AREA
AR00 – AR15 word = AR0000 – AR1515 bit

LR AREA
LR00 – LR15 word = LR0000 – LR1515 bit

TIMER/COUNTER AREA
TC000 – TC127

DM AREA
+ Read/Write: DM0000 – DM0999, DM1022 – DM1023
+ Error log: DM1000 – DM1021
+ Read-only: DM6144 – DM6599
+ PC Setup: DM6600 – DM6655

CPM2A
IR AREA
+ Input: IR000 – IR009 word = IR00000 – IR00915 bit
+ Output: IR010 – IR019 word = IR01000 – IR01915 bit
+ Work Area:

 IR20 – IR49 word = IR02000 – IR04915 bit


 IR200 – IR227 word = IR20000 – 22715 bit

SR AREA
SR228 – SR255 = SR22800 – SR25515 bit

TR AREA
TR0 – TR7

HR AREA
HR00 – HR19 = HR0000 – HR1915

AR AREA
AR00 – AR23 = AR0000 – AR2315

LR AREA
LR00 – LR15 = LR0000 – LR1515

TIMER/COUNTER AREA
TC000 – TC255
DM AREA
+ Read/Write: DM0000 – DM1999, DM2022 – DM2047
+ Error log: DM2000 – DM2021
+ Read-only: DM6144 – DM6599
+ PC Setup: DM6600 – DM6655

Kalau dilihat data di atas, maka sebagian besar alamat memori CPM1A dan CPM2A adalah
sama. Hanya terdapat sedikit perbedaan seperti jumlah Timer/Counter – CPM1A memiliki
127 Timer/Counter, sedangkan CPM2A dua kali lipatnya. DM juga demikian, CPM2A
kapasitasnya dua kali lipat dibanding dengan CPM1A.

Aplikasi PLC – Solusi ON-OFF


Satu Tombol

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.

Aplikasi PLC – Mesin


Pengering Sederhana

1 Votes

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_Menitditekan, 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.

Instruksi Block Set – BSET(71)

Rate This

Instruksi BSET(71) berfungsi meng-copy nilai word dari operand S (Source) ke suatu blok
memori yang berawal dari alamat pada operand St (Start) hingga alamat yang ada pada
operand E (End).

Operand Source dapat berupa konstanta atau alamat dari memori area IR, AR, HR, DM, LR,
dan TC. Operand Start dan End dapat berupa alamat dari memori area IR, AR, HR, DM, LR,
dan TC.
Pada contoh ladder di atas, jika Input 000.06 ON, maka instruksi BSET(71) akan meng-
copy nilai 110 hexa ke alamat DM0100 hingga DM0200. Karakter ‘@’ menunjukkan
instruksi BSET(71) didiferensiasi.

Berbeda dengan instruksi MOV(21), instruksi BSET(71) dapat digunakan untuk mengisi
nilai pada memori area TC, sehingga dapat digunakan untuk mengubah nilai parameter SV
pada sebuah Timer/Counter.

Contoh aplikasi penggunaan instruksi BSET(71) dapat dilihat pada Aplikasi PLC – Mesin
Pengering Sederhana.

Aplikasi PLC – Timer


Berbasis Menit

3 Votes

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!

Bit Flag Penting – II

1 Votes

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!

Bagikan ini:

Pake NO Atau NC ?
Rate This

Perhatikan diagram ladder berikut ini.

Ketika TOMBOL START ditekan, maka MOTOR pada Output 010.00


akan ON. MOTOR akan tetap ON meskipun TOMBOL START dilepas. Rangkaian seperti
ini disebut sebagai Self-Maintaining Bit. Untuk menghentikan MOTOR, maka TOMBOL
STOP harus ditekan.

Program di atas akan berjalan dengan benar dengan kondisi masukan fisik (komponen
eksternal), sebagai berikut:

 TOMBOL START – Normally Open (NO)


 TOMBOL STOP – Normally Open (NO)

Sekarang perhatikan diagram ladder berikut ini.

Program ini berfungsi sama dengan program sebelumnya, yakni untuk menghidupkan dan
mematikan MOTOR. Yang berbeda adalah TOMBOL STOP dalam program bertipe NO.
Konsekuensinya adalah komponen fisik TOMBOL STOP haruslah bertipe NC.

Diagram ladder di bawah ini pun berfungsi sama, dengan syarat TOMBOL
START bertipe NC dan TOMBOL STOP bertipe NC.

Demikian pula halnya dengan diagram ladder berikut ini, dengan syarat TOMBOL
STARTbertipe NC dan TOMBOL STOP bertipe NO.
Pertanyaan
Program ngikut komponen? Atau, komponen ngikut program?

Jawaban
Tergantung. Seringkali dalam prosesnya, program selesai duluan dan baru dicarikan
komponen yang sesuai. Berarti dalam kasus ini, komponen ngikut program. Namun
demikian, tak jarang juga terjadi sebaliknya, program yang ngikut komponen. Mudah-
mudahan sedikit gambaran di atas dapat memberikan sedikit tambahan wawasan bagi kita
pemrogram PLC.

Selamat belajar!

Bit Flag Penting – I

Rate This

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!

Free-Running Timer

Rate This

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.
S One-Shot Timer

Rate This

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!

Instruksi COUNTER – CNT


3 Votes

Instruksi CNT berfungsi sebagai penghitung/pencacah mundur. Apa yang dihitung? Yang
dihitung adalah perubahan kondisi masukan CP (Count Pulse) dari OFF ke ON.

Ketika kondisi eksekusinya ON, maka setiap kali ada perubahan kondisi masukan CP dari
ON ke OFF, maka instruksi CNT akan mengurangi nilai PV-nya (Present Value) dengan
satu. Perubahan CP selain dari kondisi OFF ke ON tidak berpengaruh terhadap nilai PV.

Jika PV telah mencapai nol, maka Completion Flag Counter akan ON. Kondisi tersebut akan
dipertahankan sampai Counter direset.

Counter direset melalui kaki masukan R. Jika kondisi R berubah dari OFF ke ON, maka nilai
PV akan direset menjadi samadengan SV. Pada saat Counter dalam kondisi direset (R=ON),
perubahan kondisi pada CP tidak akan berpengaruh pada PV.

Seperti halnya TIMER, instruksi CNT memiliki 2 operand yakni TC


Number dan SV (Setting Value). TC Number dapat bernilai 0-255 untuk CPM2A dan 0-127
untuk CPM1A. Sedangkan SV dapat berupa konstanta (BCD) atau salah satu dari register IR,
AR, SR, HR, LR, dan DM.

Perlu diperhatikan!

 Jika instruksi CNT berada dalam interlock section, nilai PV-nya tidak direset ketika
kondisi eksekusi Interlock tidak terpenuhi.
 Counter tidak direset meskipun PLC dimatikan.
 SV Counter adalah bilangan BCD. Jadi hati-hati jika menggunakan SV selain
konstanta.

Contoh Program

Rung 1. Pada siklus pertama, DM0100 akan diisi dengan nilai 100 hex.
CNT001 memiliki SV=100 BCD, sedangkan CNT002 memiliki SV=DM0100=100 hex.
CP dan R masing-masing Counter sama-sama terhubung ke Input 000.00 dan Input 000.01,
sehingga kedua Counter akan menghitung atau direset bersama-sama.

Pada contoh program di atas, Completion Flag CNT001 akan ON setelah 100 hitungan.
Demikian juga halnya dengan CNT002. Lain halnya jika kita memasukkan konstanta #100
Dyang berarti 100 desimal pada instruksi MOV(21) di atas. Nilai 100 desimal akan disimpan
sebagai 64 hexa. Jika dieksekusi, maka CNT002 akan selesai pada hitungan ke 64 bukannya
100 seperti yang kita harapkan.

Selamat belajar!

Instruksi TIMER – TIM

1 Votes

Instruksi TIM berfungsi sebagai ON-Delay dengan penghitungan waktu mundur. Ketika
kondisi eksekusinya terpenuhi, maka TIMER akan melakukan penghitungan waktu dari
nilai SV (Setting Value) menuju nol dengan resolusi waktu 0,1 detik. Jika kondisi
eksekusinya ON dalam waktu yang cukup lama sehingga waktunya mencapai 0000,
maka Completion Flag-nya akan ON. Kondisi ON ini akan dipertahankan sampai TIMER
direset.

Instruksi TIM memiliki 2 operand. Operand pertama adalah TC Number yang pada PLC
OMRON CPM2A dapat diisi dengan nilai 0-255 (0-127 untuk CPM1A). Jadi dalam program
PLC CPM2A dapat didefinisikan sebanyak 256 Timer.

Perlu diperhatikan!

TC Number berlaku untuk instruksi TIMER dan COUNTER. Dalam sebuah program,
masing-masing Timer dan Counter harus didefinisikan dengan TC Number yang berbeda.

Operand kedua adalah Setting Value. Operand ini bertipe word, BCD. Nilainya mulai 0000
hingga 9999. Setting Value dapat berupa konstanta atau salah satu dari register IR, AR, SR,
HR, LR, DM.

Contoh Program

Ketika Input 000.01 OFF, maka TIM000 akan ON dan melakukan penghitungan. Kurang-
lebih setengah detik kemudian, Completion Flag TIM000 akan ON dan menyalakan
Lampu. Lampu akan tetap menyala hingga TIM000 direset (Input 000.01 ON).

Penjelasan singkat ini belum mencakup segala aspek tentang TIMER. Semoga tulisan-tulisan
yang lain dapat melengkapinya.

Perlu diingat!
Timer dalam Interlock Section akan direset jika kondisi eksekusi interlock tidak terpenuhi
(OFF).

Selamat belajar!

Aplikasi PLC – Timer is


Running Flag

Rate This

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
tambahanseperti 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 COMPARE – CMP(20)

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.00akan ON. Dan jika nilainya lebih dari 5, maka Output 010.02 akan ON.

S Aplikasi PLC – Eskalator Otomatis

4 Votes

Eskalator otomatis adalah eskalator yang secara otomatis akan ON ketika ada orang yang
akan menaikinya. Dan akan secara otomatis OFF jika dalam periode waktu tertentu eskalator
tidak mendeteksi adanya orang yang akan menaikinya.

Keterangan:

 S1 – Sensor kedatangan penumpang


 S2 – Sensor kepergian penumpang
 MOTOR – Motor penggerak eskalator

Skenario

 Jika S1 ON, maka MOTOR ON dan TIMER1 OFF


 Jika S2 ON, maka TIMER1 ON
 Jika TIMER1 ON, maka MOTOR OFF
Program

Rung 1. Jika S1 ON dan TIMER1 OFF, maka MOTOR ON. Nilai bit Output
010.00 (MOTOR) digunakan sebagai pengunci (bit-locking).

Rung 2. Jika S2 ON, maka selama S1 OFF, kondisi Timer1_ON akan ON.
Penggunaan instruksi DIFU(13) berfungsi untuk menyatakan bahwa prioritas S1 lebih tinggi
dibandingkan S2. Dan bahwa TIMER1 harus OFF ketika S1 ON. Hal ini untuk
mengantisipasi adanya kemungkinan S2 ON lebih lama dibandingkan dengan S1.

Rung 3. Selama nilai Timer1_ON = ON, maka TIMER1 ON. Jika nilai TIMER1 terpenuhi
maka TIMER1 akan memutus rangkaian MOTOR sehingga eskalator akan berhenti
berjalan.

Selamat belajar!
Instruksi BINARY-TO-BCD
– BCD(24)

1 Votes

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 DECREMENT – DEC(39)

Rate This

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.

S Instruksi INCREMENT – INC(38)

1 Votes
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 MOVE – MOV(21)

Rate This

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!

Differentiated Instructions

1 Votes

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!

Aplikasi PLC – Parkir


Mobil Sederhana

2 Votes

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.02berfungsi 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!

Instruksi STEP DEFINE dan


STEP START

1 Votes

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

Rate This

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

Bagikan ini:

Instruksi DIFU dan DIFD

4 Votes
Instruksi Differentiate Up – DIFU(13) dan Differentiate Down – DIFD(14) digunakan
untuk mengubah kondisi bit operand menjadi ON selama 1 siklus saja. Ketika dieksekusi,
DIFU(13) akan membandingkan kondisi eksekusi sekarang dengan kondisi eksekusi
sebelumnya. Jika kondisi eksekusi sebelumnya adalah OFF dan kondisi eksekusi sekarang
adalah ON, maka DIFU(13) akan mengaktifkan bit operand menjadi ON selama 1 siklus saja.

Kebalikan dari instruksi DIFU(13) yang mengaktifkan bit operand selama 1 siklus ketika
kondisi eksekusi berubah dari OFF ke ON, maka instruksi DIFD(14) akan mengaktifkan bit
operand selama 1 siklus ketika kondisi eksekusi berubah dari ON ke OFF. Contoh berikut
akan menjelaskan prinsip kerja dari DIFU(13) dan DIFD(14).

Contoh Program

Ketika kondisi eksekusi (Input 000.00) berubah dari OFF ke ON, instruksi DIFU(13) akan
mengaktifkan bit Output 010.00 selama 1 siklus. Proses tersebut dapat dilihat pada LED
indikator pada badan PLC yang akan terlihat berkedip. Selanjutnya, ketika kondisi eksekusi
berubah dari ON ke OFF, maka instruksi DIFD(14) akan mengaktifkan bit Output
010.01 selama 1 siklus.

DIFU(13) dan DIFD(14) dalam INTERLOCK dan JUMP

Jika instruksi DIFU(13) dan DIFD(14) berada dalam interlock section, maka instruksi-
instruksi tersebut hanya akan dieksekusi jika kondisi eksekusi instruksi Interlock terpenuhi.
Ketika kondisi eksekusi Interlock tidak terpenuhi (OFF), maka DIFU(13) dan DIFD(14) tidak
akan dieksekusi, dan kondisi bit operand-nya akan direset.
Jika instruksi DIFU(13) dan DIFD(14) berada dalam jump section, maka DIFU(13) dan
DIFD(14) hanya akan dieksekusi jika kondisi eksekusi instruksi JMP(04) terpenuhi. Akan
tetapi perlu diperhatikan bahwa ketika kondisi bit operand DIFU(13) atau DIFD(14) sedang
dalam kondisi ON, kemudian pada siklus berikutnya, kondisi eksekusi JMP(04) sudah tidak
terpenuhi lagi (OFF), maka kondisi bit operand DIFU(13) dan DIFD(14) akan dipertahankan
hingga kondisi eksekusi JMP(04) terpenuhi lagi. Jadi mesti hati-hati!

Selamat belajar!

Instruksi KEEP
3 Votes

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 SET dan RSET

1 Votes

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.00ON, 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.

Instruksi JMP

1 Votes
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 interlockIL(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.01berubah-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!

Selamat belajar!

Instruksi INTERLOCK

1 Votes

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
Timer0akan 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!

Anda mungkin juga menyukai