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,  

debug  

instruksi   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