Anda di halaman 1dari 18

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.

Instruksi dif u / dif down

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!
Instruksi set dan reset

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.

Instruksi keep

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.

Instruksi end dan nop

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

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

Instruksi timer counter…………………

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

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 D
yang 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.

Instruksi move…

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

Instruksi INCREMENT – INC(38)


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.

Instruksidecrement

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.

Anda mungkin juga menyukai