Programmable Logic Controller (PLC)
OMRON PCM1A Programmable Logic Controller (PLC)
Oleh : Rohendi, M.I.Kom
( Instruksi Dasar Pemrograman dengan Ladder Diagram )
Teknik Elektro STT DR. KHEZ. MuFaqien Purwakarta
Ketika kondisi Input 000.00 ON, maka konstanta #0100 akan di-copy ke DM0000, dan selanjutnya nilai dalam DM0000 akan di-copy ke HR05. 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 MOVE – MOV(21)
Instruksi MOVE -‐ MOV(21) digunakan untuk
copy
meng-‐ nilai dari Source ke DesLnaLon.
Source dapat berupa konstanta (#), ataupun
data yang ada di alamat tertentu dalam register IR, SR, AR, DM, HR, TC, dan LR. Sedangkan DesJnaJon adalah alamat register
IR, SR, AR, DM, HR, LR. Jika kondisi eksekusi MOV(21) ON, maka data di Source (Sumber)
copy
akan di-‐ ke DesLnaLon (Tujuan).
PerhaLan!
Instruksi MOV(21) Jdak dapat digunakan untuk mengubah nilai PV (Process Value) pada Timer/Counter. Instruksi MOV(21) Jdak dapat digunakan
KeJka kondisi Input 000.00 ON, maka
untuk mengubah nilai DM6144 sampai
konstanta #0100 akan di-‐ copy ke DM0000,
DM6655.
dan selanjutnya nilai dalam DM0000 akan di-‐ copy ke HR05.
Instruksi INCREMENT – INC(38)
Instruksi ini berfungsi untuk menambah satu
operand word Operand nilai pada berJpe .
dalam hal ini bisa salah satu dari register IR, SR, AR, DM, HR, dan LR. Jika kondisi eksekusi instruksi INC(38)
operand
terpenuhi, maka nilai akan ditambah
flag Carry
satu tanpa mempengaruhi bit (CY). Instruksi ini termasuk salah satu instruksi yang dapat di diferensiasi . Jika INC(38) Jdak didiferensiasi, maka selama kondisi eksekusi
operand
terpenuhi, nilai akan bertambah satu seJap 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) .
Instruksi DECREMENT – DEC(39)
Instruksi ini berfungsi untuk mengurangi satu
operand word Operand
nilai pada berJpe . 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) Jdak d i d i f e r e n s i a s i , m a k a s e l a m a k o n d i s i eksekusinya terpenuhi, nilai operand akan bertambah satu seJap 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).
Instruksi COMPARE – CMP(20)
Instruksi CMP(20) berfungsi membandingkan dua buah operand berJpe word.
KeJka 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 diperhaLkan !
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 Jdak 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.Instruksi Compare
Rung 1. KeJka pertama kali dihidupkan,
v 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
v instruksi @
INC(38) akan menaikkan nilai
DM0100 sebesar 1. Adanya tambahan
karakter ‘@’ di depan menunjukkan bahwa instruksi ini didiferensiasi .
Rung 3. Secara konJnyu, program
v 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 BINARY-‐TO-‐BCD – BCD(24)
Instruksi BCD(24) berfungsi untuk m e n g k o n v e r s i b i l a n g a n b i n a r y ( h e x a d e c i m a l ) m e n j a d i B C D ekuivalennya. Nilai bilangan yang dikonversi Jdak boleh melebihi 270F hexa karena hasil konversinya akan melebihi angka 9999. Jika hal ini terjadi maka instruksi BCD(24) tersebut Jdak akan dieksekusi. Instruksi ini membutuhkan dua operand yakni Source dan DesLnaLon. Source adalah alamat memori bilangan binary yang akan dikonversi dan DesJnaJon adalah alamat memori bilangan BCD hasil konversi. Source dan DesJnaJon bisa saja salah satu dari IR, SR, AR, DM, HR, atau LR. Source dan DesJnaJon Jdak dapat diisi konstanta.
Instruksi SET dan RSET
Instruksi SET dan RESET mirip sekali dengan instruksi OUTPUT dan OUTPUT NOT. Instruksi SET dan RESET mengubah kondisi bit operand-‐nya keJka kondisi e k s e k u s i n y a O N . K e J k a k o n d i s i eksekusinya OFF, kondisi bit operand-‐nya Jdak akan terpengaruh. Berbeda dengan instruksi OUTPUT dan OUTPUT NOT yang akan mempengaruhi kondisi bit operand-‐nya, baik keJka kondisi eksekusinya ON maupun OFF.
Instruksi JMP
Instruksi Jump – JMP(04) selalu berpasangan dengan instruksi Jump End –
JME(05). JMP digunakan untuk melewaJ 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 secLon.Jika kondisi eksekusi JMP(04) ON, maka program akan berjalan ‘lurus’ seperJ jika
Jdak ada instruksi JMP(04). Dengan kata lain, instruksi-‐instruksi dalam jump
secJon 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 secLon.Animasi disamping ini merupakan aplikasi instruksi MC (Master Control) dan MCR (Master Control Reset) dimana program yang ada diantara MC dan MCR (0001 & 0500) akan bekerja saat input 0000 akJf (ON)
Instruksi DIFU dan DIFD
Instruksi DifferenLate Up – DIFU(13) dan DifferenLate Down – DIFD(14)
digunakan untuk mengubah kondisi bit operand menjadi ON selama 1 siklus saja.
KeJka 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 mengakJlan
bit operand menjadi ON selama 1 siklus saja.Kebalikan dari instruksi DIFU(13) yang mengakJlan bit operand selama 1 siklus
keJka kondisi eksekusi berubah dari OFF ke ON, maka instruksi DIFD(14) akan
mengakJlan bit operand selama 1 siklus keJka kondisi eksekusi berubah dari ON
ke OFF. Contoh berikut akan menjelaskan prinsip kerja dari DIFU(13) dan
DIFD(14).
Animasi disamping ini merupakan aplikasi instruksi DIPU dan DIPD yang digunakan untuk menyalakan lampu (0500) dengan Single Push Bu5on (0000) .
Instruksi KEEP
I n s t r u k s i i n i d i g u n a k a n u n t u k 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 seperJ instruksi SET dan RSET yang dijadikan satu paket. Kondisi bit operand yang digunakan instruksi K E E P J d a k d i r e s e t d a l a m i n s t r u k s i
INTERLOCK . Contoh program berikut akan
menjelaskan fungsi KEEP dan penggunaannya dalam program.
Instruksi END dan NOP
Instruksi ini umumnya digunakan sebagai penutup program. Instruksi-‐instruksi
yang terletak di bawah instruksi END(01) Jdak akan dieksekusi oleh PLC.
Instruksi END(01) dapat diletakkan dimana saja di dalam program. Karenanya,
debuginstruksi ini dapat digunakan untuk men-‐ program. Dengan menyelipkan
instruksi END(01) pada baris tertentu di dalam program, maka berarJ 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.Jika dalam sebuah program PLC belum terdapat instruksi END(01), maka
program Jdak akan dieksekusi dan pesan kesalahan akan ditampilkan. Instruksi
END(01) mereset flag ER, CY, GR, EQ dan LE.Instruksi NOP(00)
Instruksi ini Jdak diperlukan dalam pemrograman dan Jdak ada simbol ladder khusus untuk instruksi ini. KeJka instruksi ini ditemukan dalam program, maka PLC Jdak melakukan apapun dan program akan melanjutkan eksekusi ke instruksi selanjutnya. KeJka memori PLC dihapus, maka semua alamat akan berisi NOP(00).
Selamat UAS