Sonlu Durum Makineleri (Finite State Machine) Nedir?

Günümüzde gömülü sistemlerde küçük veya kompleks birçok uygulama sonlu durum makinelerini kullanmaktadır. Gömülü sistemler için C programlamada sonlu durum makineleri (FSM) popüler model tasarımı (design pattern)’den biridir. Sonlu durum makineleri geliştirmeyi kolay ve problemsiz yapmayı sağlamaktadır. Kahve makinesi, Otomat satış makineleri, poz makinesi , kapı kilit sistemeleri gibi bir çok olay (event) temelli bir çok bulunmaktadır. Bazı pos cihazları, olayların bir olay işleyicisine kaydedildiği olay tablosu kullanır. Bazı POS aygıtları, olayların bir olay işleyicisine  kaydedildiği (event handler) olay tablosunu kullanır. Bu olay  işleyicisi(event handler), ilgili olay geldiğinde çalışır. 

Sonlu durum makineleri , birden çok durum (state) sahip olabilir. Bir durumdan diğer duruma dahili ve harici girişler ile geçebilmektedir. Bu girişler donanımsal kesmeler, yazılımsal kesmeler veya timer sinyali olabilmektedir.

Bu yazıda sonlu durum makinelerinin uygulanmasını bir kaç yaklaşımla anlatacağım.

Örneğin, bir elektronik kontak anahtarı projesini göz önünde bulunduralım. Elektronik kontak anahtarında durumlar gelen olaylar(event) ile değişmektedir. Aşağıda bir elektronik kontak anahtarına ait durumlarından bahsettim.

Elektronik kontak anahtarının durumları

Boş Durum (Idle State)
Sistem elektrik durumu (15/54) (Electric State)
Kızdırma durumu (17) (Heater State)
Marş durumu(50)  (Starter State)

Başlangıç durumunda, Elektronik kontak anahtarı boş durumdadır. Elektronik kontak anahtarının çalışması için kullanıcıya ait şifrenin girilmesi gerekmektedir. Kullanıcı şifreyi girip onayladığı zaman başlangıç durumu, sistem elektrik durumuna geçer 15/54’e ait röle aktif olmaktadır. Şifre girildikten sonra onay tuşuna 20sn boyunca basınca  kızdırma durumuna geçerek kızdırma rölesi aktif edilir. 20 sn’yi geçince ise kızdırma durumu sonlanır ve marş durumuna geçer. Marş durumunda ise 15/54 yine aktif,kızdırma rölesi kapanır, marş rölesi aktif olur. Marş durumu tamamlanınca ise mars rölesi kapanır elektrik durumuna geçmektedir. Elektrik durumu ise  keypadden girilen iptal tuşu ile kapanmaktadır. Bu olaylar örgüsü aşağıdaki görseldeki gibidir.

Olay temelli durum makinelerinde uygulanması için iki farklı popüler yaklaşım C programlamada mevcuttur. Bu yaklaşımların seçimi gereksinimlere ve durumlara bağladır.

  • Koşullu önerme (Conditional Statement)
  • Lookup table metodunun kullanılması

Bu yazıda koşullu önerme metodu uygulanacaktır.

Sonlu Durum Makineleri için Koşullu Önerme Metodunun Kullanılması

Sonlu durum makinelerin uygulanması için en kolay yoldur. Tetiklenen olayların ve durumların kontrolü için bu yöntemde if-else veya switch-case kullanılmaktadır. Aşağıda yukarıda elektronik kontak anahtarına ait sonlu durum makineleri için koşullu önerme metodunun kullanıldığı kod mevcuttur.

 

 

Bu yazı hakkında ne düşünüyorsun ?
  • Gereksiz 
  • Normal 
  • Faydalı 
  • Müthiş 
Sidar ATABEY

About Sidar ATABEY

Elektrik-Elektronik Mühendisi. Makine Mühendisliğinde yan dal programını tamamladı. 1 sene boyunca Erasmus Programı kapsamında Polonya Silesian University of Technology'de eğitim gördü.

View all posts by Sidar ATABEY →