{"id":1185,"date":"2018-10-15T12:06:19","date_gmt":"2018-10-15T12:06:19","guid":{"rendered":"https:\/\/www.akademiautomasi.com\/?p=1185"},"modified":"2018-10-15T12:06:19","modified_gmt":"2018-10-15T12:06:19","slug":"organisasi-program-pada-plc","status":"publish","type":"post","link":"https:\/\/www.akademiautomasi.com\/?p=1185","title":{"rendered":"Organisasi Program pada PLC"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><em>Catatan: tulisan ini adalah postingan pertama saya setelah hampir 4.5 tahun vakum karena studi lanjut. I\\&#8217;m back now! \ud83d\ude42&nbsp;<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pernahkah anda&nbsp;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&nbsp;<em>programmer&nbsp;<\/em>mencari cara untuk membuat program anda lebih pendek\/efisien.<\/p>\n\n\n\n<figure class=\\\"wp-block-image aligncenter\\\"><a href=\\\"https:\/\/learnautomation.wordpress.com\/2018\/10\/15\/organisasi-program-pada-plc\/blog_complexsimple\/\\\" rel=\\\"attachment wp-att-1189\\\"><img src=\\\"https:\/\/learnautomation.wordpress.com\/wp-content\/uploads\/2018\/10\/blog_complexsimple.jpg\\\" alt=\\\"\\\" class=\\\"wp-image-1189\\\" \/><\/a><\/figure>\n\n\n\n<p class=\"\\&quot;has-text-align-center\\&quot; wp-block-paragraph\"><em>sumber gambar:&nbsp;https:\/\/bit.ly\/2QSXCdm<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Mengapa?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Seperti halnya pemrograman dengan bahasa konvensional (misalnya C atau Pascal),&nbsp;<em>programmer<\/em> bisa mendapatkan hasil yang lebih baik dengan memecah programnya menjadi bagian &#8211; bagian kecil (di bahasa C disebut&nbsp;<em>functions<\/em>) karena [3]:<\/p>\n\n\n\n<ul class=\"\\&quot;wp-block-list\\&quot; wp-block-list\">\n<li><strong>Reusability &#8211;\u00a0<\/strong>bagian program tertentu yang sering berulang tidak perlu dibuat berkali &#8211; kali, namun cukup dibuat dalam 1 fungsi (<em>function<\/em>) yang nantinya dapat dipanggil jika diperlukan. Hal ini membuat pemrograman lebih efisien.<\/li>\n\n\n\n<li><strong>Abstraction<\/strong> &#8211; kita dapat \\&#8221;menyembunyikan\\&#8221; detail yang kompleks bagi \\&#8221;pengguna\\&#8221; fungsi pada program kita. <em>User<\/em> hanya perlu mengetahui:\n<ol class=\"\\&quot;wp-block-list\\&quot; wp-block-list\">\n<li>Nama fungsi<\/li>\n\n\n\n<li>Apa yang dikerjakan fungsi tersebut<\/li>\n\n\n\n<li>Parameter input dari fungsi<\/li>\n\n\n\n<li>Outout yang dihasilkan fungsi<\/li>\n<\/ol>\n<\/li>\n\n\n\n<li><strong>Easy to debug<\/strong> &#8211; melakukan pencarian kesalahan pada program yang pendek tentunya jauh lebih mudah dari pada program yang sangat panjang<\/li>\n<\/ul>\n\n\n\n<!--more-->\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Bagaimana?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Organisasi atau pengaturan program pada PLC ini didorong oleh standar pemrograman 61131-3 pada bagian&nbsp;<em>Common Element&nbsp;<\/em>[1].<\/p>\n\n\n\n<figure class=\\\"wp-block-image aligncenter\\\"><a href=\\\"https:\/\/learnautomation.wordpress.com\/2018\/10\/15\/organisasi-program-pada-plc\/iec_61131-3\/\\\" rel=\\\"attachment wp-att-1190\\\"><img src=\\\"https:\/\/learnautomation.wordpress.com\/wp-content\/uploads\/2018\/10\/iec_61131-3.png?w=300\\\" alt=\\\"\\\" class=\\\"wp-image-1190\\\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Salah satu yang ditekankan&nbsp;ialah perlunya&nbsp;<em><strong>Program Organizational Unit<\/strong>&nbsp;<\/em>(POU) untuk membagi program PLC&nbsp;menjadi 3 jenis:<\/p>\n\n\n\n<ul class=\"\\&quot;wp-block-list\\&quot; wp-block-list\">\n<li>Function<\/li>\n\n\n\n<li>Function Block<\/li>\n\n\n\n<li>Program<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><em><strong>Function<\/strong>&nbsp;<\/em>di sini memiliki pengertian yang mirip dengan&nbsp;<em>function<\/em> pada bahasa C atau <em>procedure<\/em> pada Pascal. <em>Function&nbsp;<\/em>dapat disediakan oleh&nbsp;<em>vendor <\/em>atau&nbsp;<em>user&nbsp;<\/em>bisa membuatnya secara mandiri dengan menuliskan beberapa baris program yang akan sering dipanggil ke dalam sebuah&nbsp;<em>function<\/em>.&nbsp; Ciri dari&nbsp;<em>function&nbsp;<\/em>adalah jika input yang diberikan sama, maka output yang dihasilkan&nbsp;juga akan selalu sama atau konsisten.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Contoh <em>Function <\/em>bawaan&nbsp;dari <em>vendor<\/em>: fungsi ADD untuk penjumlahan, DIV untuk pembagian, dan MUL untuk perkalian. Di akhir <em>posting <\/em>ini akan diberikan contoh sederhana bagaimana&nbsp;<em>user&nbsp;<\/em>dapat membuat&nbsp;<em>function<\/em> sendiri<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><em>Function block (<\/em>FB<\/strong><em><strong>)<\/strong>&nbsp;<\/em>memiliki sifat lebih kompleks dari&nbsp;<em>function. <\/em>Saat diberi input yang sama,&nbsp;FB dapat memberikan hasil yang berbeda karena FB juga bergantung dari variabel internal maupun eksternal yang nilainya dapat berubah &#8211; ubah sesuai dengan hasil eksekusi program pada saat itu. Dengan kata lain FB dapat merekam \\&#8221;pengalaman\\&#8221; PLC sebelumnya, sedangkan&nbsp;<em>function&nbsp;<\/em>tidak.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Berikut ini contoh&nbsp;<em>interface<\/em> untuk mengakses sebuah FB [1]:<\/p>\n\n\n\n<figure class=\\\"wp-block-image aligncenter\\\"><a href=\\\"https:\/\/learnautomation.wordpress.com\/2018\/10\/15\/organisasi-program-pada-plc\/fb_interface\/\\\" rel=\\\"attachment wp-att-1188\\\"><img src=\\\"https:\/\/learnautomation.wordpress.com\/wp-content\/uploads\/2018\/10\/fb_interface.png\\\" alt=\\\"\\\" class=\\\"wp-image-1188\\\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Dari sini terlihat bahwa pengguna cukup mengetahui ada 2 variabel input dengan tipe Boolean dan 1 variabel output dengan tipe Boolean dari fungsi \\&#8221;Example\\&#8221;.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">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 &#8211; bahasa standar IEC 61131-3, bahkan bisa diprogram dengan bahasa lain, misalnya bahasa C. Berikut ini contoh pada PLC Siemens S7 200 [4]:<\/p>\n\n\n\n<figure class=\\\"wp-block-image aligncenter\\\"><a href=\\\"https:\/\/learnautomation.wordpress.com\/2018\/10\/15\/organisasi-program-pada-plc\/pid\/\\\" rel=\\\"attachment wp-att-1197\\\"><img src=\\\"https:\/\/learnautomation.wordpress.com\/wp-content\/uploads\/2018\/10\/pid.png\\\" alt=\\\"\\\" class=\\\"wp-image-1197\\\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><em><strong>Program<\/strong> <\/em>adalah keselurahan kode program termasuk di dalamnya&nbsp;<em>function&nbsp;<\/em>dan FB. Jadi, program ini adalah program PLC yang kita kenal pada umumnya.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Organisasi Program pada PLC Siemens S7 200<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">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&nbsp;<em>discontinued<\/em>) dari Siemens sehingga organisasi yang diberikan masih sederhana tidak sepenuhnya sama dengan standar di atas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Program dibagi menjadi 3: MAIN, SBR_0 (<em>Subroutine<\/em>), dan INT_0 (<em>Interrupt<\/em>). SBR dan INT jumlahnya bisa lebih dari 1. Pada posting ini hanya diberikan contoh untuk SBR saja.<\/p>\n\n\n\n<figure class=\\\"wp-block-image aligncenter\\\"><a href=\\\"https:\/\/learnautomation.wordpress.com\/2018\/10\/15\/organisasi-program-pada-plc\/pou-2\/\\\" rel=\\\"attachment wp-att-1195\\\"><img src=\\\"https:\/\/learnautomation.wordpress.com\/wp-content\/uploads\/2018\/10\/pou1.png?w=300\\\" alt=\\\"\\\" class=\\\"wp-image-1195\\\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Pada MAIN kita dapat memprogram seperti biasa, sedang pada <em>Subroutine&nbsp;<\/em>kita bisa menuliskan potongan program kecil (mirip dengan&nbsp;<em>function<\/em>) yang akan sering dipanggil.&nbsp;<em>Subroutine&nbsp;<\/em>dapat dipanggil dengan program sebagai berikut di MAIN [4]:<\/p>\n\n\n\n<figure class=\\\"wp-block-image aligncenter\\\"><a href=\\\"https:\/\/learnautomation.wordpress.com\/2018\/10\/15\/organisasi-program-pada-plc\/pou2\/\\\" rel=\\\"attachment wp-att-1194\\\"><img src=\\\"https:\/\/learnautomation.wordpress.com\/wp-content\/uploads\/2018\/10\/pou2.png?w=300\\\" alt=\\\"\\\" class=\\\"wp-image-1194\\\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">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 (<em>return<\/em>) diaktifkan [4].<\/p>\n\n\n\n<figure class=\\\"wp-block-image aligncenter\\\"><a href=\\\"https:\/\/learnautomation.wordpress.com\/2018\/10\/15\/organisasi-program-pada-plc\/pou3\/\\\" rel=\\\"attachment wp-att-1193\\\"><img src=\\\"https:\/\/learnautomation.wordpress.com\/wp-content\/uploads\/2018\/10\/pou3.png?w=290\\\" alt=\\\"\\\" class=\\\"wp-image-1193\\\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Cukup sekian untuk posting kali ini. Semoga bermanfaat.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sumber:<\/p>\n\n\n\n<ol class=\"\\&quot;wp-block-list\\&quot; wp-block-list\">\n<li>PLCOpen, \\&#8221;IEC 61131-3: a standard programming resource\\&#8221;<\/li>\n\n\n\n<li>John, K. dan Tiegelkamp, M. \\&#8221;IEC 61131-3: Programming Industrial Automation Systems\\&#8221;<\/li>\n\n\n\n<li>Zachary, J.L., \\&#8221;https:\/\/www.cs.utah.edu\/~zachary\/computing\/lessons\/uces-10\/uces-10\/node11.html\\&#8221;<\/li>\n\n\n\n<li>Siemens, \\&#8221;Simatic S7 200 Programmable Controller &#8211; System Manual\\&#8221;<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Catatan: tulisan ini adalah postingan pertama saya setelah hampir 4.5 tahun vakum karena studi lanjut. I\\&#8217;m back now! \ud83d\ude42&nbsp; Pernahkah anda&nbsp;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&nbsp;programmer&nbsp;mencari cara untuk membuat program anda lebih pendek\/efisien. &#8230; <a title=\"Organisasi Program pada PLC\" class=\"read-more\" href=\"https:\/\/www.akademiautomasi.com\/?p=1185\" aria-label=\"Read more about Organisasi Program pada PLC\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":1189,"comment_status":"open","ping_status":"open","sticky":false,"template":"single-with-sidebar","format":"standard","meta":{"_kadence_starter_templates_imported_post":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[38],"tags":[55,93],"class_list":["post-1185","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-plc-tutorial","tag-iec-61131-3","tag-pemrograman"],"jetpack_featured_media_url":"https:\/\/www.akademiautomasi.com\/wp-content\/uploads\/2018\/10\/blog_complexsimple.jpg","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.akademiautomasi.com\/index.php?rest_route=\/wp\/v2\/posts\/1185","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.akademiautomasi.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.akademiautomasi.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.akademiautomasi.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.akademiautomasi.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1185"}],"version-history":[{"count":0,"href":"https:\/\/www.akademiautomasi.com\/index.php?rest_route=\/wp\/v2\/posts\/1185\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.akademiautomasi.com\/index.php?rest_route=\/wp\/v2\/media\/1189"}],"wp:attachment":[{"href":"https:\/\/www.akademiautomasi.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1185"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.akademiautomasi.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1185"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.akademiautomasi.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1185"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}