Scanning Cycle PLC

Sedikit cerita tentang salah satu konsep dasar PLC
8 tahun yang lalu ketika saya pertama kali dikenalkan PLC oleh dosen kuliah. Salah satu hal yang selalu ditekankan oleh beliau adalah bagaimana kita memahami konsep scanning cycle di PLC. Kalo gak salah dulu saya seharian dijelasin hanya untuk hal sepele seperti ini ๐Ÿ™‚

Mengapa hal ini penting sekali bagi seorang yang ingin memperdalam PLC ? Analoginya mirip seperti latihan kungfu yang dalam 1 bulan pertama hanya melatih kuda kuda saja. Konsep scanning cycle merupakan pondasi awal seorang engineer PLC sehingga dengan pondasi yang kuat tersebut akan memudahkan untuk pengembangan kemampuan ke bagian yang lebih rumit.

Berikut teori atau alur dari scanning cycle PLC :

โ€ข PLC program di eksekusi secara terus menerus selama sistem PLC tersebut tidak berhenti.
โ€ข Status dari input fisik di salin ke memori area yang biasanya disebut sebagai I/O Image Table.
โ€ข Program dijalankan dari rung atau network yang pertama sampai ke rung yang terakhir.
โ€ข CPU dari PLC meng-evaluasi semua program di rung dan merubah status dari output.

Jadi kesimpulannya ; tidak ada instruksi yang jalannya secara bersamaan, semuanya berurutan meski dengan jeda yang hitungannya mikro detik.

Beberapa hal penting yang berhubungan dengan scanning cycle PLC :

โ€ข Lamanya CPU untuk menjalankan semua alur tersebut disebut sebagai satu scan time
โ€ข Scan time bergantung dari tipe CPU dan jumlah dari I/O beserta program yang dibuat
โ€ข Setiap instruksi dalam setiap program PLC tidak ada yang dijalankan bersamaan, tetapi berurutan mulai dari kiri ke kanan kemudian kebawah.
โ€ข Eksekusi setiap instruksi dilakukan sangat cepat (dalam hitungan ยตs), sehingga dua output yang memiliki logika yang sama tetapi dalam rung yang berbeda akan terlihat seolah-olah aktif dalam waktu yang sama.

Contoh kasusnya :

Dari contoh kasus diatas bisa menjelaskan bagaimana cara kerja dari scan PLC. Simulasikan logika diatas dengan tombol 1 on dan tombol 2 off. Apa yang terjadi ?

Berikut analisa slow motion-nya :

Output lampu memiliki dua kondisi on dari network 1 dan off dari network 2. Dua kondisi tersebut tidak aktif secara bersamaan, tetapi berurutan dengan urutan dari kiri ke kanan kemudian ke bawah, dalam hal ini yaitu mulai dari network 1 (lampu on) kemudian ke network 2 (lampu off), waktu pergantian antara on menuju off hanya sepersekian mikro detik (tergantung jenis PLC). Apabila lampu dihubungkan ke output PLC, maka status dari output PLC tersebut akan off, karena perubahan I/O image table (output PLC) dilakukan setelah eksekusi program terakhir di network 2 yang dalam hal ini bernilai off.

Sekarang, coba anda simulasikan tombol 1 off dan tombol 2 on, hasilnya lampu akan bernilai on karena eksekusi terakhir dari program adalah lampu bernilai on atau hasil dari eksekusi logika di network 2. Tapi apakah lampu sempat bernilai off ? jawabannya ya,,, lampu sempat sesaat bernilai off saat dieksekusi di network 1, dengan waktu yang sangat sangat cepat dalam hitungan mikro detik (untuk S7-1200 satu intruksi bit sekitar 0.08 ยตs). Perubahan nilai lampu dari off menjadi on seperti analisa diatas tidak akan bisa dilihat apabila kita monitor status tag atau address di PLC software.

Untuk kasus interrupt logic atau task yang lebih dari satu selain main task (kalo di Siemens dikenal sebagai OB), eksekusi dari hasilnya ada peluang dilakukan di saat yang bersamaan meski peluang ini sangat kecil, hal ini biasanya diatur oleh settingan priority dari setiap interrupt atau task tersebut.

Jadi inget saat awal kerja dulu , liat contoh program dari engineer asing, dimana di rung paling atas si programmer ini bikin logic ALWAYS ON untuk meRESET semua output PLC dengan tujuan apabila di logika dibawahnya tidak ada logika SET maka output tersebut pasti akan OFF atau RESET. Bagi yang masih memahami bahwa logika scan program ini dilakukan secara bersamaan pastilah hasil dari program si programmer ini akan selalu bentrok dengan logika RESET dengan kata lain outputnya gak akan pernah on.

Akhir kata saya cantumin dikit alur scanning dari PLC Siemens S7-1200 :

status STARTUP
A. Clear semua input(I) atau memory yang tidak retentive
B. Initialisasi nilai output dari nilai terakhir atau substitute value
C. Eksekusi StartUp Organization Block (OB)
D. Copy semua status dari fisik input ke I memory (Image I/O)
E. Semua interrupt yang aktif di masukkan ke jalur antrian saat RUN mode
F. Write nilai output fisik dari memory Q (Image I/O)

status RUN
1. Write nilai output fisik dari memory Q (Image I/O)
2. Copy semua status dari fisik input ke I memory (Image I/O)
3. Eksekusi program di main OB
4. Diagnostic
5. Proses semua interrupt dan komunikasi

31 thoughts on “Scanning Cycle PLC”

  1. salah satu yg menjadi issue soal Scanning Cycle ini adalah soal presisi waktu. Misal soal Totalizer yg dgn terpaksa harus diproses di PLC. Dimana sebaiknya kita meletakkan program ini? di OB1 dgn triger dr timer or di blok lainnya?

  2. nie maksudnya logik dari flow rate analog ke digital ?sebaiknya di OB cyclic interupt yang prioritynya lebih dari OB1

    atau kalo emang butuhnya presisi banget ya beli flow meter yang ada pulse DO, pelit amat sih ๐Ÿ™‚ hehehe
    – bisa pake module DI interrupt , nanti programnya diletakin di OB Hardware Interrupt
    – atau pake counter module FM350, logicnya juga di OB interrupt

  3. mas urusan pelit/dermawan ngk boleh dibawa2 ke-ranah education …:)
    btw thx atas penjelasannya, satu lagi pertanyaan. Berdasarkan best practice … berapa lama max scan time yg layak untuk sebuah program sebelum si engineer memutuskan untuk 1. Upgrade ke-CPU yg lebih tinggi or 2. Tetap ngotot menjejali si-CPU dgn program2 baru …

  4. 1. tentuin mau belajar PLC merk apa dulu meski secara konsep sama semua
    2. cari softwarenya
    3. kalo ada duit beli PLC nya atau punya software simulasinya
    4. baca manual PLC nya, programming dan banyak latihan soal

  5. mas syukron,

    maksudnya record data disini di PLC nya atau di PC ?
    hampir semua PLC bisa, apalagi tipe baru
    malah biasanya sudah disediakan fasilitas data loging ke memory PLC
    hanya saja kalo record di PLC memory nya terbatas

    saran saya lewat PC
    jadi alurnya gini : PLC –> DDE Server/OPC Server –> database

  6. kok mirip dengan assembler ya mas. waktu saya kuliah jaman dulu belajar dan jadi programmer assembler yang pake DOS. Sayang g kepake sekarang.. sekalian tanya mas kalo maw kursus Wonderware ada teman ga mas yang di Surabaya. Saya ada dasar dan programnya cuman maw pendalaman nih…mohn infonya

  7. mas fathoni saya mw tanya kalo alamat simovert am counter module FM 350 tu dmn y?
    trus klo misal outputnya itu di DB untuk kluar ke outputnya tu gmn?
    maaf baru belajar…
    makasih

  8. mf ms…sewaktu sy mau monitor ladder diagram muncul warning BLOCK VERSION IS NEWER VERSION AND CAN’T UPLOADED. mohon pencerahanya….thx…

  9. Mas, terima project setting PLC buat pabrik ?
    saya lagi ada pabrik udah 5 tahun ngga jln, pake semantic 5, mau dijalankan lagi. Please contact saya diemail untuk diskusi.

    Thx

  10. assalamu’alaikum mas thoni
    salam kenal dan salam silaturahmi
    sy mw belajar PLC S7,kebetulan dtmpt kerja sy menggunakan S7 300 dgn profibus
    sy mohon d’bantu,kalo boleh sy minta buku panduan PLC S7 300 dan software simatic manager’y……
    atas bantuan dan ilmu’y,sy ucapkan ribuan terima kasih

  11. Untuk Scan cycle yg terukur di program yg sedang berjalan yg “longest” ya pak? (tab cycle monitoring)

    Untuk menentukan type CPU dengan scan cycle yg diinginkan dgn melihat work memory nya ya pak,yg saya baca work memory spt RAM dlm PC?

    Terus kira-kira berapa load memory (MMC) yg bisa dieksekusi CPU tsb?

    Thx

  12. Mas fatoni salam kenal saya mau minta pencerahan tentang cara comunikasi plc s7 dari sofware k hardware.saya ada sofware s7-400 trus sy mau pake utk komunikasi dg hadware s7-200 tp G bisa kenapa ya mas…? Mohon pencerahanya..

  13. master sy masih bingung yang dimaksud interup di s7-200 apakah kalau interup dipanggil program main akan ditinggalkan selamanya smpai interupnya selesai
    ? atw bagaimana ya? thanks

  14. Maaf Mas setahu saya yang dimaksud interupt itu adalah meninggalkan program yang sedang berjalan, eksekusi program berbelok ke program di blok interupsi, setelah selesai CPU akan kembali menjalankan program yang ditinggalkan tadi. Dengan fungsi interupt ini program interupt akan dijalankan walaupun Siklus scan belum selesai. Tidak ada program yang dijalankan secara paralel kecuali pada CPU dual core.

Leave a Comment

Your email address will not be published. Required fields are marked *