Organisasi Program pada PLC

Catatan: tulisan ini adalah postingan pertama saya setelah hampir 4.5 tahun vakum karena studi lanjut. I\’m back now! 🙂 

Pernahkah anda membuat program PLC yang sangat panjang karena sistem yang anda buat sangat kompleks? Ada kalanya program yang panjang tidak bisa dihindari, namun sangat baik jika Anda sebagai PLC programmer mencari cara untuk membuat program anda lebih pendek/efisien.

\"\"

sumber gambar: https://bit.ly/2QSXCdm

Mengapa?

Seperti halnya pemrograman dengan bahasa konvensional (misalnya C atau Pascal), programmer bisa mendapatkan hasil yang lebih baik dengan memecah programnya menjadi bagian – bagian kecil (di bahasa C disebut functions) karena [3]:

  • Reusability – bagian program tertentu yang sering berulang tidak perlu dibuat berkali – kali, namun cukup dibuat dalam 1 fungsi (function) yang nantinya dapat dipanggil jika diperlukan. Hal ini membuat pemrograman lebih efisien.
  • Abstraction – kita dapat \”menyembunyikan\” detail yang kompleks bagi \”pengguna\” fungsi pada program kita. User hanya perlu mengetahui:
    1. Nama fungsi
    2. Apa yang dikerjakan fungsi tersebut
    3. Parameter input dari fungsi
    4. Outout yang dihasilkan fungsi
  • Easy to debug – melakukan pencarian kesalahan pada program yang pendek tentunya jauh lebih mudah dari pada program yang sangat panjang

Bagaimana?

Organisasi atau pengaturan program pada PLC ini didorong oleh standar pemrograman 61131-3 pada bagian Common Element [1].

\"\"

Salah satu yang ditekankan ialah perlunya Program Organizational Unit (POU) untuk membagi program PLC menjadi 3 jenis:

  • Function
  • Function Block
  • Program

Function di sini memiliki pengertian yang mirip dengan function pada bahasa C atau procedure pada Pascal. Function dapat disediakan oleh vendor atau user bisa membuatnya secara mandiri dengan menuliskan beberapa baris program yang akan sering dipanggil ke dalam sebuah function.  Ciri dari function adalah jika input yang diberikan sama, maka output yang dihasilkan juga akan selalu sama atau konsisten.

Contoh Function bawaan dari vendor: fungsi ADD untuk penjumlahan, DIV untuk pembagian, dan MUL untuk perkalian. Di akhir posting ini akan diberikan contoh sederhana bagaimana user dapat membuat function sendiri

Function block (FB) memiliki sifat lebih kompleks dari function. Saat diberi input yang sama, FB dapat memberikan hasil yang berbeda karena FB juga bergantung dari variabel internal maupun eksternal yang nilainya dapat berubah – ubah sesuai dengan hasil eksekusi program pada saat itu. Dengan kata lain FB dapat merekam \”pengalaman\” PLC sebelumnya, sedangkan function tidak.

Berikut ini contoh interface untuk mengakses sebuah FB [1]:

\"\"

Dari sini terlihat bahwa pengguna cukup mengetahui ada 2 variabel input dengan tipe Boolean dan 1 variabel output dengan tipe Boolean dari fungsi \”Example\”.

Contoh FB: blok kontrol PID. Karena FB ini kompleks, umumnya pembuat program ingin mempermudah pengguna dengan menyembunyikan detail yang kompleks. FB ini dapat ditulis dengan bahasa – bahasa standar IEC 61131-3, bahkan bisa diprogram dengan bahasa lain, misalnya bahasa C. Berikut ini contoh pada PLC Siemens S7 200 [4]:

\"\"

Program adalah keselurahan kode program termasuk di dalamnya function dan FB. Jadi, program ini adalah program PLC yang kita kenal pada umumnya.

Organisasi Program pada PLC Siemens S7 200

Hampir semua vendor PLC memiliki mekanisme untuk organisasi program ini. Berikut ini contoh pada PLC Siemens S7 200. Sebagai catatan, PLC ini merupakan tipe yang paling dasar dan lama (sekarang sudah discontinued) dari Siemens sehingga organisasi yang diberikan masih sederhana tidak sepenuhnya sama dengan standar di atas.

Program dibagi menjadi 3: MAIN, SBR_0 (Subroutine), dan INT_0 (Interrupt). SBR dan INT jumlahnya bisa lebih dari 1. Pada posting ini hanya diberikan contoh untuk SBR saja.

\"\"

Pada MAIN kita dapat memprogram seperti biasa, sedang pada Subroutine kita bisa menuliskan potongan program kecil (mirip dengan function) yang akan sering dipanggil. Subroutine dapat dipanggil dengan program sebagai berikut di MAIN [4]:

\"\"

Kemudian kita klik bagian SBR_0, dan kita bisa memasukkan program yang relevan. Misalnya kita ingin melakukan proses penjumlahan dan pengurangan setiap kali SBR_0 dipanggil. Program di SBR_0 akan berhenti dieksekusi jika ouput RET (return) diaktifkan [4].

\"\"

Cukup sekian untuk posting kali ini. Semoga bermanfaat.

Sumber:

  1. PLCOpen, \”IEC 61131-3: a standard programming resource\”
  2. John, K. dan Tiegelkamp, M. \”IEC 61131-3: Programming Industrial Automation Systems\”
  3. Zachary, J.L., \”https://www.cs.utah.edu/~zachary/computing/lessons/uces-10/uces-10/node11.html\”
  4. Siemens, \”Simatic S7 200 Programmable Controller – System Manual\”

 

0 thoughts on “Organisasi Program pada PLC”

  1. Selamat datang kembali Mas Handy, senang sekali membaca tulisan Mas Handy lagi. Blog saya juga hibernasi hahahaha. Ngeliat blog Mas Handy aktif lagi, jadi pelecut buat aktifin blog saya 😀

    Reply

Leave a Comment

× Ada pertanyaan?