Mesin Keadaan Hingga (Finite State Machine)


Sebelum membuat program, ada langkah-langkah perencanaan yang sebaiknya dilakukan supaya sistem yang telah dirancang dapat dengan baik diimplementasikan ke sebuah pengendali.  Artikel ini membahas bagaimana mempersiapkan sebuah diagram mesin keadaan sebelum membuat program PLC.

Mesin keadaan hingga (Finite State Machine) merupakan sebuah model komputasi yang diterapkan pada perangkat keras atau lunak yang merepresentasikan suatu urutan kerja.  Model ini menggambarkan beberapa keadaan yang mungkin terjadi pada suatu sistem, yang keadaan-keadaan ini dipicu oleh peristiwa-peristiwa (event) yang terdapat pada sistem tersebut. Peristiwa-peristiwa ini memungkinkan berubahnya suatu keadaan ke keadaan lain, atau bisa dikatakan sebagai suatu transisi antar keadaan (state transition).

 

Contoh 1:

Contoh sederhana mesin keadaan bisa dilihat pada gambar di atas, yaitu sistem buka tutup pada sebuah pintu.   Kemungkinan keadaan pada sebuah pintu adalah 2 keadaan, yaitu keadaan tertutup dan keadaan terbuka. Keadaan awal ditandai dengan anak panah masuk, dalam hal ini adalah keadaan 1.  Ada dua transisi yang mungkin terjadi, yaitu buka_pintu dan tutup_pintu.  Transisi ini adalah peristiwa (event) yang memicu berpindahnya suatu keadaan dalam hal ini  peristiwa dilakukan oleh seseorang atau suatu mekanisme yang secara langsung berinteraksi dengan sistem.   Saat keadaan tertutup, hanya mungkin terjadi suatu peristiwa, yaitu buka_pintu, yang mengubah keadaan dari tertutup menjadi terbuka.  Sehingga keadaan yang aktif saat ini adalah keadaan 2 (terbuka).  Hal yang sama terjadi saat keadaan terbuka, hanya ada satu peristiwa yang mungkin terjadi, yaitu tutup_pintu yang mengubah keadaan terbuka menjadi tertutup.

Model mesin keadaan ini dapat diimplementasikan ke sebuah program ladder diagram seperti gambar di bawah.  Diasumsikan bahwa pintu adalah sebuah keluaran yang memiliki dua keadaan yaitu off (tertutup) dan on (terbuka). Sedangkan masukan buka_pintu dan tutup_pintu adalah peristiwa yang mungkin terjadi dalam sistem ini. Dilihat dari strukur ladder diagram ini bisa kita lihat bahwa rangkaian ini adalah self holding contact, yaitu kontak buka_pintu diparalel dengan kontak pintu dan diputus oleh kontak tutup_pintu. Anda juga bisa menggunakan koil SET RESET sebagai pengganti ladder diagram ini. (silakan membuka daftar instruksi sesuai PLC yang Anda gunakan).



 

Contoh 2:

Sebuah sistem buka tutup pintu terdiri dari dua tombol (Push Button) yaitu untuk membuka dan menutup. Sistem juga dilengkapi oleh dua saklar pembatas (Limit Switch) untuk membatasi gerakan pintu saat terbuka penuh dan tertutup penuh.  Mekanisme membuka dan menutup dilengkapi dengan sebuah motor yang dikendalikan oleh dua relay (A dan B) sehingga motor dapat berputar bolak balik yang dapat menggerakkan pintu secara dua arah yaitu membuka dan menutup.

 


Rangkaian elektronik di atas menjelaskan bahwa motor hanya akan berputar jika ada status pada relay A dan B berbeda (sesuai dengan tabel kebenaran). Jika relay A aktif dan relay B tidak aktif maka motor akan berputar searah jarum jam atau clock wise (asumsi).  Demikian juga sebaliknya jika hanya B yang aktif maka motor akan berputar counter clock wise. Dalam contoh ini kita asumsikan juga bahwa relay A untuk motor tutup pintu dan relay B untuk motor buka pintu.

Sekarang mari kita persiapkan diagram mesin keadaan (state machine) sebelum membuat ladder diagram.  Pada diagram di bawah dijelaskan bawah sistem ini memiliki 4 keadaan, yaitu (1) tertutup, (2) sedang membuka, (3) terbuka dan (4) sedang menutup.  Sedangkan peristiwanya adalah aktifnya PB_buka, LS_buka, PB_tutup dan LS_tutup.  Berbeda dengan contoh sebelumnya, sedang menutup dan sedang membuka merupakan keadaan yang penting untuk dipertimbangkan dalam sistem, karena pergerakannya bisa diamati dan memiliki pengaruh terhadap faktor keselamatan yang akan dijelaskan nanti.

Sistem berawal dari keadaan tertutup (semua motor mati).  Pada keadaan ini hanya ada satu peristiwa yang mungkin terjadi, yaitu ditekannya PB_buka yang akan menyebabkan berpindahnya keadaan dari tertutup (1) menjadi sedang membuka (2) ditandai aktifnya motor B. Keadaan akan berubah menjadi terbuka (3) jika LS_buka sudah aktif atau tersentuh oleh mekanisme pintu.  Pada keadaan ini, motor B mati. Demikian seterusnya keadaan akan berubah dan kembali ke keadaan semula atau membentuk suatu siklus.



Pemprograman ladder diagram dapat dibuat terstruktur berdasarkan diagram mesin keadaan (state machine) di atas.  Untuk memudahkan pemahaman konversi dari state machine ke ladder diagram, kita akan gunakan internal relay untuk mewakili keadaan-keadaan yang ada di sistem.  Simbol yang digunakan dalam artikel ini adalah M1, M2, M3, dan M4 untuk mewakili keadaan 1, 2, 3 dan 4.  (silakan sesuaikan dengan simbol pada PLC yang Anda gunakan).

Kita lihat bahwa saat PLC diaktifkan, maka kontak First_scan akan terhubung sesaat selama 1 scan time (1 ... 100 mili detik, tergantung jenis PLC).  Kontak ini akan mengaktifkan M1 (keadaan 1) dan akan terkunci. Keadaan ini akan bertahan sampai PB_buka aktif dan akan berpindah ke keadaan 2 (M2 aktif, M1 mati). Demikian seterusnya sampai keadaan 4 lalu kembali lagi ke keadaan 1.   Pola yang bisa kita amati dari ladder diagram ini bisa ditunjukkan oleh tanda anak panah. Anak panah merah menunjukkan bahwa keadaan saat ini merupakan syarat bagi input di keadaan sesudahnya.  Anak panah biru menunjukkan bahwa keadaan saat ini akan dimatikan (reset) oleh keadaan sesudahnya. Hal ini berlaku juga untuk transisi dari keadaan 4 ke keadaan 1 (tidak tergambar).

Selanjutnya, implementasi output bisa dibuat di ladder paling bawah, dalam hal ini Motor_B hanya akan aktif pada keadaan 2 (M2) dan Motor_A aktif hanya pada keadaan 4 (M4).







Pertimbangan keamanan dan keselamatan

Ada beberapa faktor yang bisa menyempurnakan sistem ini, yaitu:

  1. Faktor keamanan (security): misalnya saat PLC aktif pertama kali atau setelah listrik mati, maka sebaiknya pintu harus segera menutup.  Hal ini bisa dinyatakan dengan mengubah keadaan 4 (sedang menutup) menjadi keadaan pertama yang harus dilakukan oleh sistem.

  2. Faktor keselamatan (safety): misalnya memprioritaskan pintu membuka dari pada menutup.  Contohnya, saat sedang menutup (keadaan 4), tiba-tiba PB_buka ditekan, maka pintu harus mulai membuka (keadaan 2).  Tentunya hal ini akan lebih aman.

Diagram mesin keadaan dapat dilihat pada gambar di bawah ini. Bisa dilihat perbedaan dari sebelumnya, pada gambar ini keadaan awal dimulai dari keadaan 4 (sedang menutup). Pada ladder diagram, keadaan awal diaktifkan oleh kontak First_scan yang diparalel dengan input rangkaian M4. Saat koil M4 aktif, ada dua kemungkinan yang bisa terjadi, yaitu LS_tutup akan aktif (menuju keadaan 1) dan PB_buka ditekan (menuju keadaan 2).   Sekarang kita lihat PB_buka.  Di ladder diagram, PB_buka ini diseri dengan kontak M4 maupun kontak M1, yang artinya PB_buka diijinkan untuk bisa diaktifkan saat keadaan 4 atau keadaan 1.  Dan jangan lupa, bawa saat keadaan 2 (M2 aktif) maka keadaan 1 dan keadaan 4 harus di-reset. (ditandai kontak NC dari M2 mengeblok rangkaian M1 dan M4).

 

 

Rangkuman dan catatan

  1. State machine adalah model dari sistem yang sudah dideskripsikan dengan jelas sebelumnya, melingkupi cara kerja, jumlah piranti input/output, syarat dan ketentuan yang hendak dirancang.

  2. State machine bisa digunakan untuk mempersiapkan program PLC (Ladder Diagram) agar bisa terstruktur.  Ladder diagram yang dibahas di artikel ini bukan satu-satunya program yang bisa berfungsi, melainkan ada kemungkinan program lain yang mungkin menggunakan cara dan instruksi yang berbeda.

  3. Nomor urut keadaan (state) tidak selalu harus berurutan aktifnya, bahkan untuk memulainya pun tidak harus dimulai dari keadaan 1.  Nomor yang digunakan di sini hanya untuk penamaan saja, dan aktual urutan kerjanya bisa acak sesuai dengan sistem yang dikehendaki.

  4. Koil yang tersusun dalam rangkaian mesin keadaan (state machine) maksimal hanya satu yang aktif.  Dalam contoh ini: M1,M2,M3 dan M4.

  5. Setiap koil keluaran (misalnya motor dan lampu) bisa dihubungkan ke satu atau lebih keadaan (state), sedangkan setiap kontak pada salah satu keadaan (state) tidak serta merta harus dihubungkan ke koil piranti.