KP @ P.T. Indoserako Sejahtera Part III : PLC Part III : Function Block

By : Giovanni Sutanto NIM 132 05 038

Function block adalah block yang mempunyai fungsi yang spesifik, baik yang sudah terdefinisikan oleh software compiler Ladder Diagram (contohnya CoDeSys), maupun yang didefinisikan oleh programmer (user-defined function block).

Function block yang sudah terdefinisikan oleh software compiler Ladder Diagram contohnya antara lain adalah timer, counter, trigger.

Timer ada beberapa macam, antara lain TON, TOF, TP.

Berikut ini adalah contoh sebaris Ladder Diagram yang menggunakan function block TON :

Jika contact Input (NO) menjadi aktif/on, maka coil Output tidak langsung aktif, melainkan menunggu function block TON Timer1 selesai menghitung waktu selama 1 detik, setelah itu baru coil Output on. Waktu yang kita inginkan dituliskan pada PT, seperti contoh di atas, penulisannya adalah t#1s. Jika kita ingin waktu yang dihitung oleh Timer1 sebesar 0,5 detik, maka penulisan pada PT adalah t#500ms atau t#0.5s. ET digunakan jika kita ingin melihat sudah berapa lama Timer1 menghitung waktu. Untuk keperluan itu kita perlu memberi nama variabel ET, dan tipe variabelnya haruslah TIME. Pada contoh di atas, ET pada Timer1 diberi nama variabel t1 bertipe TIME.

Berikut ini adalah contoh sebaris Ladder Diagram yang menggunakan function block TOF :

Misalkan keadaan awalnya contact Input (NC)  dan coil Output keduanya sedang aktif/on. Pada saat contact Input dinonaktifkan, maka coil Output tidak langsung nonaktif/off, melainkan menunggu function block TOF Timer2 selesai menghitung waktu selama 1 detik, setelah itu baru coil Output off. Untuk PT dan ET sama dengan pada function block TON.

Berikut ini adalah contoh sebaris Ladder Diagram yang menggunakan function block TP :

Function block TP menghasilkan pulsa selebar nilai waktu pada PT-nya pada saat IN-nya diaktifkan. Pada contoh di atas, jika contact Input (NO) diaktifkan, maka coil Output akan aktif selama 2 detik (nilai PT Timer3) kemudian nonaktif kembali. Hal ini disebabkan karena adanya pulsa selebar 2 detik yang dihasilkan oleh Timer3.

Berikut ini adalah sebuah program Ladder Diagram yang dibuat penulis sebagai contoh aplikasi function block Timer :

Program Ladder di atas merupakan program untuk mengaplikasikan fungsi multivibrator kotak dengan duty cycle 50% dan tH = tL = 1 detik. Program ini dapat dijelaskan secara singkat sebagai berikut. (1) Ketika push button ON (NO) ditekan, maka akan mengaktifkan coil hidupkan pada rangkaian Interlock pada baris 0001. (2) Karena coil hidupkan sedang on/aktif, maka contact hidupkan (NO) pada baris 0002 juga on/aktif. (3) Contact Lampu (NO) pada keadan awalnya adalah off/nonaktif, sehingga contact Lampu (NC) pada baris 0002 on/aktif. (4) Karena (2) dan (3), maka Timer TON t1 menjadi bekerja (menghitung waktu hingga 1 detik). (5) Setelah Timer TON t1 selesai menghitung waktu hingga 1 detik, maka coil Lampu pada baris 0002 menjadi on/aktif, dan mengakibatkan contact Lampu (NC) pada baris 0002 off/nonaktif. (6) Nonaktifnya contact Lampu (NC) menyebabkan Timer TON t1 tidak memperoleh suplai tegangan P24 pada IN-nya, sehingga t1 menjadi off. (7) Off-nya t1 menyebabkan coil Lampu pada baris 0002 juga di-off-kan, namun terhalang oleh keberadaan Timer TOF t2 pada baris 0003. (8) t2 menjadi bekerja menghitung waktu selama 1 detik karena contact Lampu (NO) pada baris 0003 hendak mengalami perubahan falling-edge (dari on menjadi off). (9) Setelah Timer TOF t2 selesai menghitung waktu hingga 1 detik, maka barulah coil Lampu pada baris 0002 dan 0003 menjadi off/nonaktif. (10) Off-nya coil Lampu menyebabkan contact Lampu (NC) pada baris 0002 menjadi on/aktif, keadaan ini sama dengan pada keadaan (3). (11) Demikian berulang seterusnya, kecuali push button OFF (NO, bukan NC, karena pada baris 0001 contact OFF sudah NC) ditekan.

Jika pembaca ingin berlatih menggunakan function block, mungkin pembaca bisa mencoba membuat program Ladder untuk mengaplikasikan kerja nyala lampu lalu lintas, seperti latihan yang diberikan oleh pembimbing KP (engineer Donni) kepada penulis pada saat KP. Spesifikasinya adalah sebagai berikut. Terdapat push button ON (NO) dan OFF (NO), yang masing-masing berfungsi untuk menjalankan dan mematikan lampu lalu lintas. Begitu push button ON ditekan, lampu lalu lintas berjalan, dimulai dari lampu merah. Lampu merah, kuning, dan hijau masing-masing menyala selama 3 detik. Begitu push button OFF ditekan, semua lampu mati.

Selanjutnya penulis akan membahas mengenai Counter dan Trigger.

Counter ada tiga macam, yaitu CTU, CTD, dan CTUD.

Berikut ini adalah contoh sebaris Ladder Diagram yang menggunakan function block CTU :

CTU adalah counter yang menghitung maju event berubahnya state variabel bertipe BOOL pada CU-nya dari off menjadi on (rising-edge), dan jika nilai penghitungan event sudah mencapai nilai pada PV-nya, maka variabel bertipe BOOL pada Q-nya akan diaktifkan. Pada contoh di atas, jika contact Input (NO) mengalami rising-edge, maka nilai i1 (variabel bertipe INT pada CV dari function block CTU Counter1) akan ditambah 1 (+1) (nilai inisialisasi variabel i1 adalah 0). Jika nilai i1 sudah sama dengan 5 (nilai PV), maka coil Output akan diaktifkan. Pada contoh ini, RESET diisi FALSE, ini artinya bahwa penghitungan Counter ini tidak dapat di-reset. RESET ini bisa diisi dengan variabel bertipe BOOL. Jika demikian, maka pada saat variabel bertipe BOOL pada RESET ini aktif/on, maka nilai pada CV akan diisi dengan nilai 0 lagi (nilai inisialisasinya).

Berikut ini adalah contoh sebaris Ladder Diagram yang menggunakan function block CTD :

CTD adalah counter yang menghitung mundur event berubahnya state variabel bertipe BOOL pada CD-nya dari off menjadi on (rising-edge), dan jika nilai penghitungan event sudah mencapai nilai 0, maka variabel bertipe BOOL pada Q-nya akan diaktifkan. Pada keadaan awal setelah program Ladder Diagram ini di-compile, nilai variabel i2 (pada CV dari function block CTD Counter2) adalah 0 (nilai inisialisasi variabel i2), sehingga coil Output langsung aktif. Untuk itu, variabel Set (pada LOAD dari function block CTD Counter2, berfungsi untuk menyalin nilai PV ke variabel pada CV pada saat Set sedang aktif/on) perlu diberi pulsa, supaya nilai 3 (pada PV) disalin ke variabel i2, dengan demikian coil Output akan dinonaktifkan dan CTD dapat menghitung mundur. Perhatikan bahwa varibel Set harus dinonaktifkan jika CTD akan menghitung, sebab jika tidak, maka variabel i2 akan terus diisi dengan nilai 3 tiap kali siklus mesin dari PLC. Jika i2 sudah bernilai 3 dan variabel Set sudah off, maka saat contact Input (NO) mengalami rising-edge maka nilai i2 akan dikurangi 1 (-1). Saat nilai i2 mencapai 0, maka coil Output akan diaktifkan.

CTUD adalah gabungan dari CTU dan CTD. Berikut ini gambarnya sebelum didefinisikan :

Trigger adalah function block yang menghasilkan impuls (pulsa yang sangat sempit, selebar beberapa siklus mesin PLC) ketika variabel inputnya (bertipe BOOL) mengalami edge, baik rising-edge (transisi dari off ke on) maupun falling-edge (transisi dari on ke off). Trigger ada 2 macam, yaitu F_TRIG dan R_TRIG. F_TRIG menghasilkan impuls ketika mendeteksi falling-edge pada variabel inputnya. Sedangkan R_TRIG menghasilkan impuls ketika mendeteksi rising-edge pada variabel inputnya.

Berikut ini adalah gambar sebuah function block F_TRIG pada saat belum didefinisikan :

Berikut ini adalah gambar sebuah function block R_TRIG pada saat belum didefinisikan :

Mungkin pembaca masih ada yang bingung, apa gunanya impuls pada PLC? Impuls berguna untuk pengambilan data yang sangat cepat, karena pada aplikasi di pabrik/industri, penghematan waktu sangat berharga.

Function block yang didefinisikan oleh programmer berfungsi untuk mengurangi pendefinisian prosedur yang sama secara berulang-ulang. Selain itu, juga dapat membuat program lebih sistematis dan lebih mudah dipahami.

Berikut ini adalah contoh function block yang didefinisikan oleh penulis sebagai bagian dari project “Inflator” :

Function block di atas berfungsi untuk mengkonversi pembacaan sensor tekanan menjadi bersatuan bar dan psi, untuk keperluan pengolahan data yang selanjutnya.

Perhatikan bahwa setiap function block yang didefinisikan oleh programmer pada software CoDeSys harus selalu memiliki minimal sebuah contact dan sebuah coil (keduanya merupakan variabel bertipe BOOL). Variabel yang berasal dari contact merupakan variabel yang pada typecasting (pendefinisian tipe variabel) didefinisikan pertama kali pada kelompok variabel VAR_INPUT. Sedangkan variabel yang berasal dari coil merupakan variabel yang pada typecasting didefinisikan pertama kali pada kelompok variabel VAR_OUTPUT.

Jika function block ini dipanggil pada program main, maka sebelum didefinisikan function block ini akan memiliki tampilan seperti berikut :

Struktur program ini secara keseluruhan, dimulai dari program main dan function block-function block yang didefinisikan programmer (penulis), adalah sebagai berikut :

PLC_PRG (PRG) adalah program main, sedangkan proses_auto (FB) dan Scaling_Bacaan_Sensor (FB) adalah dua buah function block yang didefinisikan penulis, yang kemudian dipanggil pada program main (PLC_PRG (PRG)) sebagai instance-instance.

Perhatikan pada function block Scaling_Bacaan_Sensor di atas, terdapat box-box yang bernama WORD_TO_REAL, SUB, dan MUL. Box-box tersebut disebut sebagai Box with EN. Box with EN ini akan dibahas pada post selanjutnya, yaitu “KP @ P.T. Indoserako Sejahtera Part III : PLC Part IV : Box with EN”.

Warm Regards,
Giovanni Sutanto

NIM 132 05 038

-Teknik Elektro ITB Jalur Pilihan Teknik Kendali Angkatan 2005-

No comments yet

Leave a reply