Durum makinesi (LabVIEW programlama) - State machine (LabVIEW programming)

Bir durum makinesi farklı programlama dillerinin çoğunda kullanılan bir tür programlama tekniğidir. Durum makinesi, özellikle kullanılan önemli ve esnek bir araçtır. LabVIEW programlama, çünkü kodlamanın bakımı, dokümantasyonu ve yeniden kullanımı çok kolaydır.[1]

Durum makinelerine giriş

Durum makineleri 3 kavram etrafında döner: durum, olay ve eylem. Durum, programın sorun üzerinde çalışırken bulunduğu konum veya durumdur. Örneğin, bir durum kullanıcının bir şey yapmasını bekliyor olabilir veya bir hesaplama çalıştırabilir. Devletler, büyük resmi parçalamaya ve her şeyin daha sorunsuz ilerlemesine yardımcı olmaya çalışır. Bunları akıllıca geliştirmek, durum makinesinin daha verimli çalışmasını sağlamaya yardımcı olacaktır. Olaylar, programın kendisi için belirli bir anlamı olan olaylardır. Yapacağımız örnek, kullanıcı doğru miktarda para koyduktan sonra bir ürünü dağıtan bir satış makinesidir. Bu program için bir olay, para yatırılan veya başlat düğmesine basan kişi olabilir. Eylem, programın meydana gelen belirli bir olaya nasıl tepki vereceğidir.[1]

LabVIEW'deki durum makineleri

İçinde LabVIEW devlet makineleri daha da güçlü. Durum makinesi, programın kullanıcının girebileceği farklı veri türlerine akıllıca yanıt vermesine yardımcı olabilir.[1] Bu özelliği açıklamaya yardımcı olmak için, tekniği açıklamaya yardımcı olacak basit bir satış makinesi programı kullanacağız.

Bir durum makinesinin ortak cihazları

Numaralandırılmış sabitler ve kaydırma yazmaçları kullanılarak bir while döngüsünde bulunan basit bir while döngüsü

İçinde LabVIEW durum makineleri, döngü içinde bulunan bir vaka yapısı ile bir while döngüsü oluşturarak başlatılabilir. While döngüsü, numaralandırılmış sabit adı verilen özel bir sabite bağlı olabilir. Numaralandırılmış bir sabit, sabit bir kelime veya kelime öbeğidir, 0'dan basit bir tam sayıya değiştirilir. n - 1, nerede n kullanıcının sahip olmak isteyeceği vaka sayısıdır. Bunu yapmak, programlamayı kullanıcının anlaması için çok daha kolay hale getirir çünkü sayı kodlarına bakmak yerine neler olup bittiğini açıklayan birkaç kelimeye bakarlar. Bir durum makinesi de ağırlıklı olarak vardiya kayıtlarına dayanır. Bir süre döngüsünde bilgi aktarmak için bir kaydırma yazmacı kullanılır. Örneğin, bir kaydıran yazmaç döngüde üzerinde çalışılacak bilgilerle başlayacaktır. İş bittikten sonra, bir dahaki sefere döngünün başlangıcında kullanılmak üzere vardiya yazmacına yeni bir değer kaydedilebilir.[2] Daha sonra programcının yapması gereken tek şey, her duruma ayrı ayrı görevler eklemektir. İlk numaralandırılmış sabit oluşturulduktan sonra, onu bir tür tanımına (genellikle tip tanımı olarak adlandırılır) dönüştürmeye değer. Numaralandırılmış sabiti bir def türüne dönüştürmek. kullanıcının orijinali kopyalamaya devam etmesine ve programda yeniden kullanmasına izin verir, tıpkı tip tanımı dışında normal bir kontrol gibi, bir örneği değiştirmek hepsini değiştirir. Def yazın. programın çok daha sağlam olmasını sağlar ve yeni bir şey eklenmesi gerektiğinde değiştirmeyi çok daha basit hale getirir.

Basit satış makinesi örneği

LabVIEW Durum Makinesi örneği (Başlangıç ​​Durumu) .png

Otomat makinesi örneğinde, makinedeki toplam para miktarını ve hangi durumda olduğumuzu kontrol eden numaralandırılmış sabitleri dolaştırmak için vardiya yazmaçlarını kullanıyoruz. Başlangıç ​​durumu resmimize baktığımızda, vardiya kayıtlarını görebiliriz. sol ve sağ tarafta ve ortada numaralandırılmış sabitler. Ayrıca resmin altında gösterge olarak her bir bölümü görüntülemek için kullanılan bir sekme görebiliriz. Bunu yaparak, kullanıcının döngüden çıkma ve onları içinde olması gereken duruma kilitleme olasılığını ortadan kaldırıyoruz. Programın başlangıç ​​aşamasındayken, kullanıcının haklı olduğundan emin olmak istiyoruz. orada programla.

LabVIEW Durum Makinesi örneği (Başlangıç ​​Blok Şeması) .png

Bu durum, kullanıcı başlat düğmesine basana kadar kullanıcıyı aşağıda gösterilen blok diyagramdaki başlat menüsünde tutar. Başlat düğmesine basıldıktan sonra, program bir sonraki vakaya gönderilir ("Para ekle" durumu olarak adlandırılır).

LabVIEW Durum Makinesi örneği (Para Kasası Ekle) .png

"Para ekle" durumunda, kullanıcı bir kez daha burada tutulur ve vardiya yazmaçları ve her vurduğunuzda para ekleyen düğmeler aracılığıyla şimdiye kadar sahip oldukları toplam tutara para eklemeye devam eder. Bu, işin çoğunun yapıldığı ve satış makinesinin mümkün olduğunca gerçek olduğu, gerçek madeni para eklemeden, diğer her durumda işin çoğunun arka planda çalıştığı ana durumdur. Kullanıcı para eklemeyi bitirdiğinde, "Dağıt" durumuna geçmek için "Para eklemeyi bitirdi" düğmesine basar.

LabVIEW Durum Makinesi örneği (Değişiklik Blok Şeması Ekle) .png

"Para kutusu ekle", aynı zamanda, blok diyagram üzerinde "Değişiklik ekle" sekmesinde hangi sekmenin görüntüleneceğini de değiştirir. Burada kullanıcı para ekleyebilir ve "Eklenen Toplam Değişiklik" ekranından ne kadar para olduğunu görebilir.

LabVIEW Durum Makinesi örneği (Dağıtım Kutusu) .png

"Dağıtma" durumu, ilk önce kullanıcının bir öğeyi satın almaya yetecek kadar para koyup koymadığını kontrol ederek başlar. Bu durumda, ya yeterli para ya da yeterli para olmaması şeklindeki iki seçeneği ele alan ikinci bir vaka yapısı vardır. Sistemde yeterli para varsa, öğeyi satın aldığınız için teşekkür ederim diyen bir mesaj kutusu açılır ve ardından bir öğeyi satın almak için gereken para, sistemdeki toplam paradan çıkarılır. Sistemde yeterli para yoksa, program yeterli para olmadığını belirten yeni bir mesaj çıkarır ve "son" durumuna geçmeden önce daha önce eklenen tüm parayı gönderir.

LabVIEW Durum Makinesi örneği (Dispense Change Block Diagram) .png

"Dağıtım" durumu ve "son" durumu için blok diyagramı aynı resimdir. Programın çıkardığı açılır mesajlar dışında kullanıcının gerçekten yapması gereken hiçbir şey yoktur.

LabVIEW Durum Makinesi örneği (End Case) .png

"Son" durumu, kullanıcıya değişikliklerini ve eşyalarını aldıklarını kontrol etmek için yeterli zaman sağlamak üzere programı geciktirmeye çalışan çok basit bir durumdur. 5000 milisaniyeden (5 saniye) sonra bekleme zamanlayıcısı kullanılır, yukarı ve program başka bir kullanıcının işleme yeniden başlaması için beklemek üzere başlangıç ​​sayfasına geri döner.

Faydaları

Durum makinesi, programın parçalarını hızlı bir şekilde başlatmak ve eklemek veya çıkarmak kolay olduğu için sıklıkla kullanılır. Durum makineleri, geliştiricinin çalışırken organize olmasına da yardımcı olacak şekilde çalışır.[3]

Referanslar

  1. ^ a b c Acı, Rick. LabVIEW Gelişmiş Programlama Teknikleri. Boca Raton: CRC Press LLC, 2001.
  2. ^ LabVIEW 2011'den LabVIEW Yardım Sayfası.
  3. ^ "Eğitim: Durum Makineleri", www.ni.com, 2014.