Programming PLC Yang Tidak Efektif

S7-300, S7-400, Simatic Step7 Add comments

Contoh program PLC yang akan dibahas kali ini saya temui di perusahaan saya sebelumnya
Posisi saya saat itu adalah PLC Engineer (maintenance dan project), sehingga sering ketemu dengan program-program PLC S7 yang saat itu System Integratornya yaitu salah satu SI terbesar di Indonesia mungkin juga di dunia. Tapi setelah dilihat-lihat program blocknya, banyak sekali pengulangan – pengulangan script program yang tidak perlu.

Contoh yang akan saya bahas yaitu untuk Function Motor :

Nah si programmer buat suatu function Motor DOL (Direct OnLine), dan dipanggil dari function lain :



Dari sana bisa kita lihat, bahwa Function Motor DOL tersebut digunakan untuk mendefinisikan 3 Motor yaitu

Lubrication Pump All Gearing (P 013.1)
Lubrication Pump Godet Left (P 013.2)
Lubrication Pump Godet Right (P 013.3)

Bagaimana jika motornya ada 1000 ?? si programmer tersebut harus menginitialisasikan function untuk masing-masing motor sebanyak 1000 kali…..hufff :( kalo rajin sich gak apa apa :) . Nah, disini saya coba membuat suatu program untuk mengatasi masalah perulangan seperti itu.

1. Tipe Data Motor DOL

Tujuannya untuk lebih mudah mengelompokkan object motor sehingga program kita juga jadi lebih terstruktur.

2. Data Block Motor DOL

3 buah Motor diatas kita kelompokkan dalam satu Data Block khusus Motor DOL.

3. Function Untuk Semua Motor DOL

Yup, inti dari bahasan ini yaitu di cara pemanggilan program untuk masing-masing motor, disini saya kasi contoh disatu function berbeda :

Dalam program ini saya menggunakan temporary variabel (cnt dan offs), dimana cnt berfungsi sebagai counter hitungan scan ke berapa yang sedang dilakukan, sedangkan offs sebagai offset untuk instruksi selanjutnya, yaitu menggunakan function Copy DB yang telah saya bahas di postingan sebelumnya.

Intinya dari program network 1 sampai ke network 3 adalah mengopy semua data object dari tiap-tiap motor (sesuai counter) ke dummy/indirect object dalam hal ini yaitu zMDOL. Kemudian pada network 4, saya memanggil function Motor DOL dan object yang melekat didalamnya adalah dummy/indirect object (zMDOL).

Network 5 yaitu membalikkan nilai object zMDOL yang telah diproses di function motor DOL ke objectnya masing – masing sesuai dengan posisi counter. Kemudian di network 6 yaitu pengkondisian nilai dari counter, terus darimana nilai 3 ??? karna untuk kasus ini object motornya adalah 3, jika object yang di scan belum sama dengan 3 maka akan terus di loop ke label “loop” (network 2) sebelum pindah ke scan program selanjutnya. Yup, selesai dech !! semoga dengan program ini akan lebih membuat program kita menjadi lebih sederhana dan hanya membutuhkan work memory yang lebih kecil dibanding sebelumnya.

Copyright © 2008 toekangscada.com, Powered by Wordpress, WP Theme redesign from Glossyblue
Entries RSS Comments RSS Log in