Simulink Arayüzü

Bu makalemizde bir seyir kontrol (cruise control) modellemesi örneği ile simulink arayüzünü anlatacağız. MATLAB ana penceresinden Yeni (new) düğmesine tıklayın ve Simulink Model seçeneğini seçin. Untitled adlı boş bir modeli gösteren boş bir Simulink penceresi belirecektir. Bu pencere aşağıdaki bölümlerden oluşmaktadır:

  • Açılan sistemin adı olan title bar – başlık çubuğu (untitled).
  • Başlık çubuğunun hemen altındaki menu bar – menü çubuğu.
  • Varsayılan araçlar ile menü çubuğunun altındaki toolbar – araç çubuğu (Library Browser ve Model Gezgini (Model Explorer) en çok kullanılan araçlardır).
  • Modelin hiyerarşi ağacını gösteren soldaki Model Browser – Model Tarayıcı paneli (bu panelin sağ alt tarafındaki « düğmesi ile gizlenebilir).
  • Model Tarayıcı panelinin sağındaki model editor – model düzenleyici paneli en kullanışlı paneldir. Dağınık olmayan bir düzenleme penceresi istiyorsanız, diğer tüm panelleri View menu – Görünüm menüsünden gizleyebilirsiniz (durum çubuğundan ayrılmanızı öneririm).
  • Altta simülasyon çözücüsünün geçerli durumu ve mevcut durumunu bildiren status bar– durum çubuğu.

En kullanışlı kısayollar ve hareketler şunlardır:

  • Yakınlaştırma/uzaklaştırma için fare tekerini kaydırma ile yapabilirsiniz.
  • Kaydırma tekerleğini her zamanki davranışını korumak (sadece yukarı ve aşağı doğru kaydırmak) istiyorsanız, Dosya | Simulink Tercihleri (Simulink Preferences) | Editör varsayılanlarına gidin ve kaydırma tekerleği kontrol yakınlaştırma (Scroll wheel controls zooming) onay kutusu işaretini kaldırın. Ctrl tuşuna basılı tutarak kaydırma yaparsanız ancak zoom özelliği çalışacaktır.
  • Space bar’a dokunulduğunda, model görünümünü (veya seçilen blok görünümünü) pencere boyutuna sığdırır.
  • Alt + 1 tuşlarına basmak varsayılan yakınlaşmayı (zoom) sıfırlar (bu bir cankurtaran!)
  • Fare tekerleğini basılı tutmak, modeli fare yönünde sürüklemenizi sağlar; bu işlem panning olarak bilinir.
  • Kaydırma tekerleğiniz yoksa, Boşluk tuşunu ve sol fare tuşuna basılı tutarak kaydırmayı gerçekleştirebilirsiniz.

Şimdi modellemeye başlama zamanı!

İlk modelimiz: Bir seyir denetleyicisi (cruise control)

Dünyada sportif bir arabadan daha eğlenceli birşey yoktur. Bu bir gerçek. Şimdi böyle bir araba için basit bir seyir kontrol sistemi geliştirmek istediğimizi hayal edelim. Bu sistem aşağıdaki görevleri yerine getirecek olsun:

  • Hedefimizdeki araç hızını okuma [km/s]
  • Geçerli araç hızını okuma [km/s]
  • Gaz pedalına basarak gaz miktarını kumanda edin [0 (basılı değilden) 1 (tam basılıya)]

Bu sistem, arabayı istenen hıza ulaşması için sadece gaz pedalını kullanacak ve bunu sabit tutabilen bir sürücü gibi davranacaktır.

Hadi başlayalım!

1. Adım: Modeli oluştur ve kaydet

MATLAB‘ı tercih ettiğiniz bir çalışma klasörüne (örneğin, home klasorunde bulunan 1386EN_02 adlı bir klasöre) getirip yeni bir model açtıktan sonra, Kaydet düğmesini tıklayın veya Dosya menüsünün altındaki Kaydet seçeneğini veya Ctrl + S klavye kısayolunu kullanarak cruise_control.slx adını verin.

Kullanılabilir iki dosya biçimi olduğunu fark edeceksiniz. Bunlar aşağıdaki gibi açıklanmaktadır:

  • .mdl uzantısı, MATLAB R2012a’dan önce Simulink sürümleri tarafından kullanılan biçimdir (yapılandırılmış bir metin dosyası)
  • .slx uzantısı, MATLAB R2012a’da (sıkıştırılmış dosya grubu) tanıtılan yeni Simulink sürümleri tarafından kullanılan biçimdir.

İlk biçim en çok kullanılan biçimdir ancak her modelin oluşturulmasında kullanılan Simulink sürümüne bağlı olacağını unutmayın; Daha yeni sürümlerle geliştirilenler daha eski sürümler tarafından okunamaz, daha yeni sürümler eski modelleri yükseltebilir.

Kaydedilen model artık çalışma klasörümüzde görülebilir. Simulink‘i kapatırsanız, modeli daha sonra MATLAB‘ın Komut Penceresine sürükleyerek yeniden açabilirsiniz.

2. Adım: Kodu yorumlayın!

Bir sistemin ne yaptığını açıklamak her zaman iyi bir fikirdir. C programlama dilinde, bir fonksiyonu açıklamak için yorum bölümünü (/ * … * /) ifadesi ile kullanırsınız; Simulink‘te, Ek açıklama aracı simgesini (cruise_control düzenleyicinin solundaki) Annotation tool icon tıklayarak veya model düzenleyicinin beyaz alanını çift tıklayarak bir not ekleyebilirsiniz.

C’deki işlevleri açıklayan açıklamalara benzer şekilde, model görünümünün üstünde ne yaptığını açıklayan bir not eklemek iyi bir uygulamadır. Bu notu ekleyelim:

This model simulates a cruise control system.
The purpose is to make a car going at a desired
speed using the throttle.

Note’e sağ tıklayarak hizalamayı ayarlayabilir (varsayılan olarak: ortalanmış) ve daha dikkat çekici hale getirmek için bir açıklama kenarlığı çizebilirsiniz:

simulink model 1

3. Adım: Simulink Kütüphane Tarayıcısını Açmak (Simulink Library Browser)

Simulink kitaplığından bazı blokları yerleştirmeye başlayalım. Simülink Kütüphane Tarayıcısı‘nı Library Browser’e basarak veya Görünüm | Kütüphane Tarayıcı (Library Browser) menüsü veya Ctrl + Shift + L klavye kısayolunu kullanarak açabilirsiniz.

İki panelli yeni bir pencere açılacaktır: sol panel mevcut tüm kitaplıkları listeler, her birisi bir veya daha fazla alt grupları içerir, sağ panel ise seçilen kütüphaneye ait tüm blokları gösterir. Blok kütüphanelerine aynı zamanda blok setleri de (blocksets) denir.

Bir bloğa çift tıklarsanız, kısa bir blok açıklamasına ve bloğun kabul edebileceği parametrelere sahip yeni bir pencere görüntülenir. Blok ve nasıl kullanılacağı hakkında ayrıntılı bilgi almak için Yardım düğmesine tıklayın. Seçilen bloğun anlamını ve kullanımını açıklayan sayfa ile dokümantasyon merkezi açılacaktır.

Simulink Library Browser‘da gezinmek oldukça basittir; çoğu zaman Simulink blok setinin bloklarını kullanacağız (Simulink yazılımı ile birlikte kurulur).

4. Adım: Kütüphane Tarayıcısı’ndan modele blokları ekleme

İhtiyacımız olan ilk bloklar giriş (input) ve çıkış (output) portlarıdır. Giriş portları (inports olarak da adlandırılır) Simulink | Kaynaklar (Sources) blockset ve In1 etiketlidir:

simulink model 2

Benzer şekilde, çıkış bağlantı noktaları Simulink | Sinks blockset ve Out1 etiketlidir. Bu bloklar modele aşağıdaki şekilde yerleştirilebilir:

  • Kütüphane Tarayıcı’ndan model penceresine sürükleyip bırakma veya
  • Model penceresine kopyalama ve yapıştırma (Ctrl + C, Ctrl + V) veya
  • Sağ tıklayın ve cruise_control’a ekle seçeneğini seçin veya
  • Ctrl + I klavye kısayolunu kullanarak (ekleme)

Tercih ettiğiniz yöntemi kullanarak modelde bir giriş portu ve bir çıkış portu yerleştirelim. Pencere başlığının değiştiğine ve şimdi yıldız işareti taşıdığına dikkat edin (cruise_control *). Bu, son kaydettiğimiz andan itibaren model üzerinde bir düzenleme yapıldığı anlamına gelir. Modeli kaydedin ve yıldız kaybolacaktır.

Elbette, bir blok yerleştirmeniz gerektiğinde Simulink Library Browser‘ı her seferinde açmanız sıkıntı verici bir işlemdir ve geliştirme süresini yavaşlatmaktadır. Aynı işlevselliği sunan bir blok modelde zaten mevcutsa, kopyalayıp yapıştırın veya farenin sağ düğmesine basılı tutarak sürükleyin; Yeni bir kopya yapılacaktır.

Bir önceki portta fare okunu hareket ettirerek başka bir giriş portu ekleyelim ve farenin sağ tuşuna basılı tuttuğunuzda başka bir port’a sürükleyip bırakın; Bağlantı noktasını Yapıştır veya Yinelemek istediğinizi soran küçük bir menü görünecektir:

  • Yapıştır: Bu seçenek alt sisteme yeni bir giriş sinyali ekleyerek yeni bir port oluşturur.
  • Kopyala (Duplicate): Bu seçenek yeni bir giriş sinyali eklemez; Yeni bağlantı noktası kopyalanana eşit olacak ve sinyal de aynı olacaktır. Sadece bir bağlantı hattı önlemek için yararlıdır.

5. Adım: Blokları yeniden adlandırın

Her bloğun geçerli alt sistemde benzersiz bir ada sahip olması gerektiğini unutmayın. In2 bağlantı noktasını, adına çift tıklatarak In1 olarak yeniden adlandırmayı deneyin; Simulink, adın zaten var olduğunu söyleyen bir hata penceresi gösterecektir.

In1 ve In2 etiketleri çok anlam ifade etmediğinden bunları girişlerimiz için yeniden adlandıracağız: Araç hızı (Vehicle speed) ve Hedef hız (Target speed) isimlerini ben tercih ettim. Aynı şey çıktı için de geçerli: Gaz Kelebeği (Throttle).

Ölçüm birimini de ada eklemek iyi bir uygulamadır; Dönüşüm hatalarından kaçınmaya yardımcı olur (en iyiler bile bu tür hataları yapabilir – NASA yaptı!).

Şimdi aşağıdaki ekran görüntüsüne benzer bir şey yapmamız gerekiyor:

simulink model 3

6. Adım: Algoritmayı uygulamak

En basit fakat en etkili seyir kontrolü algoritması bir PI (Orantılı-İntegral) denetleyicidir. Bu algoritma aşağıdaki dört adımı kullanarak özetlenebilir:

  1. Hata e(t), yani hedef hız ile araç hızı arasındaki farkı hesaplayın.
  2. Hatalı Kp‘sine bir düzeltme faktörü uygulayın.
  3. Hatalı Ki integraline bir düzeltme faktörü uygulayın.
  4. Hem oransal hem de integral bileşenlerini toplama ve kontrol sinyali u(t) elde edilmesi.

Sistem Dinamiği veya Otomatik Kontrol dersi olanlar bu konuya yakından aşikardır. PI denetleyicisinin matematiksel formülü aşağıdaki gibidir:

pi denetleyicisinin matematiksel formülü

Elbette, gaz pedalını fiziksel sınırlarının ötesine geçiremeyiz; Gaz kelebeği kontrol sinyalinin sınırlandırılması gerekir; alt limit 0 (gaz kelebeği kapalı) ve üst sınır 1 (gaz kelebeği tamamen açık). Formüle bakarak, Simulink Library Browser‘da aşağıdaki blokları bulmamız gerektiğini tahmin etmek kolaydır:

  • Hatayı hesaplamak için bir Subtract bloğu (Simulink | Matematik İşlemleri’nden)
  • Kp ve Ki için iki Sabit blok – Constant block (Simulink | Sources) ve iki Ürün bloğu – Product block (Simulink | Math Operations)
  • Hata integralini tutan bir Integrator bloğu (Simulink | Continuous)
  • Bir Ekleme bloğu – Add block (Simulink | Matematik İşlemleri’nden)
  • Çıkış gazını ayarlamak için bir Doygunluk bloğu – Saturation block (Simulink | Discontinuities)

Integrator bloğu (ve Continuous blockset’indeki hemen hemen her diğer blok), Laplace alanındaki karşılık gelen transfer fonksiyonu H(s) = Y(s)/U(s) ile temsil edilir. Daha fazla bilgi, blok parametreleri penceresindeki Yardım düğmesine tıklayarak elde edilebilir. Burada anlatılanları anlamak için Laplace dönüşümleri hakkında bilgi sahibi olmanız gerekmez; 1/s bloğunun bir integratör olduğunu unutmayın.

Blokları, algoritmanın önerdiği düzende yerleştirin (aşağıdaki ekran görüntüsüne bakın) ve seçeneklerini anlamak için her bloğu açın. Öncesinde şunları yapmayı unutma:

  • Çıkarma blok işaretlerini kontrol edin: Hedef hız, pozitif bağlantı noktasına, Araç hızı da negatif bağlantı noktasına bağlanmalıdır; Bu nedenle blok parametresi + – olmalıdır.
  • Doygunluk blok sınırlarını üzerine çift tıklatarak düzenleyin; Bir pencere açılır; Bu pencerede, Üst limit: 1 olarak ayarlayın ve Alt limit değeri: 0 olarak ayarlayın!

İsteğe bağlı olarak, blokları yeniden boyutlandırabilirsiniz (seçili bloğun kenarında görünen küçük tutamaçları sürükleyerek), matematik bloklarının adlarını gizleyebilir (bloklara sağ tıklayın ve Format alt menüsünü açın) ve sabit blokları Ki ve Kp olarak yeniden adlandırabilirsiniz.

İki blok arasında bağlantı kurmak için, küçük oku kaynak bloğundan hedef bloktaki bitiş noktasına fare ile sürüklemek yeterlidir.

Hızlıca iki bloğu bağlamak için kaynak bloğu (source block) seçin ve ardından Ctrl tuşuna basılı tutun ve hedef bloğunu tıklayın. Bu, çoklu bloklar da (multiple blocks) işe yarar.

Aşağıdaki ekran görüntüsünde gösterilen modele benzer bir model bulmalıyız:

simulink model 4

7. Adım: Mantığı alt sistemlere yerleştirin

Alt sistemler, belirli bir işlevselliği uygulayan blokları bir araya getirmenin çok uygun bir yoludur. PI denetleyicisi bileşenleri arasında net bir ayrım yapmak için, gruplandırılacak öğeleri seçebilir ve bağlamsal menüyü açmak ve bir alt sistem oluşturmak (veya Ctrl + G klavye kısayolu ile) için sağ tıklatabilirsiniz. İşlem aşağıdaki ekran görüntüsünde gösterilmektedir:

simulink model 5

İki alt sistem yaratacağız: biri orantılı bileşen için ve diğeri de integral bileşeni için. Küçük bir varsayılan boyutta oldukları ve In1 ve Out1‘in varsayılan bağlantı noktası adlarına sahip oldukları için yeniden boyutlandırmaları ve yeniden adlandırmaları, daha sonra bunları açmaları (çift tıklama ile) ve bağlantı noktalarını yeniden adlandırmaları gerekir.

Aşağıdaki ekran görüntüsünde gösterilen modeli yapmış olmalısınız:

simulink model 6

Soldaki Model Tarayıcı panelindeki değişikliğe dikkat edin; Sistem hiyerarşisinde alt sistemlerin adlarını tıklayarak gezinebilirsiniz. Cruise_control bloğuna kök alt sistemi denir.

PI denetleyicisinin tüm bileşenlerini (bağlantı noktaları ve Doygunluk bloğu hariç her şey) seçerek ve bir alt sistem oluşturarak alt sistemi içine modeli düzenlemeye devam edelim. Yine, yeni alt sistemin bağlantı noktası adlarını düzenlememiz gerekiyor.

Aşağıdaki ekran görüntüsünde gösterilen temiz, düzenli, düzgün görünüşlü, açıklayıcı sistemi görmeliyiz:

simulink model 7

Son adım: Kök alt sistemi mutlaka mantık içermemeli, eksiksiz bir işlevi yerine getiren, yalnızca çok küçük veya hiç sinyal paylaşan kök-düzey bloklar içermelidir. Doygunluk bloğunu (Saturation block) dışarıda bıraktık. Dolayısıyla, her şeyi seçeceğiz (tam anlamıyla portlar dahil) ve aşağıdaki ekran görüntüsünde gösterildiği gibi cruise control kök alt sistemini oluşturacağız:

simulink model 8

Bu sefer portları yeniden isimlendirmek zorunda kalmadık; Onları seçime dahil ettiğimizden Simulink adlarını korudu ve yeni oluşturulan alt sistemin dışında yeni kopyalar oluşturdu.

8. Adım: Çalışma alanı değişkenlerini bildirme

Hız sabitleyici ile ilgili bir sorun var; PI kalibrasyon sabitlerini bloğun içinde bıraktık ve bazı simülasyonları yapmadan kalibre edemiyoruz. Ya değerlerini her değiştirmemiz gerektiğinde, model hiyerarşisini İntegral ve Orantılı bloklara kadar kazmak isteyeceğiz ya da onları kök düzeyine çekmemiz gereklidir.

Bu yöntemlerin her ikisi de, modellemiş olduğumuz gibi basit sistemlere uygulanabilir. Ancak, model karmaşıklığı büyüdükçe, sabitlerin nerede olduğunu veya kesin, anlaşılır bir sistem düzenine sahip olabilmede sorun yaşayabilirsiniz.

Fakat temiz ve etkili bir çözüm var. Simulink, MATLAB değişkenlerini okuyabildiğinden, Kp ve Ki sabitlerini MATLAB çalışma alanında tanımlamak ve etiketlerini Sabit bloklarda kullanmamız kolaydır. Dolayısıyla bunları MATLAB’ın Komut Penceresinde girerek tanımlıyoruz:

Kp = 1;
Ki = 1;

Daha sonra sabit bloklara gideceğiz, her birisini çift tıklayıp ilgili Kaynak Bloğu (Source Block) Parametrelerini penceresindeki Sabit Değer alanını daha önce tanımlanan Kp ve Ki değişkenleriyle düzenleyeceğiz.

Kp için blok parametreleri penceresi aşağıdaki ekran görüntüsüne benzeyecektir:

simulink model 9

Bitti! Şimdi doğrudan Kp ve Ki‘yi MATLAB’ın Komut Penceresinden düzenleyebiliriz!

Çalışma alanını modelin yanında (yani, cruise_control.slx’in kaydedildiği aynı yerde), cruise_control.mat olarak adlandırın, daha sonra MATLAB‘ın ana penceresinde Save Workspace düğmesine tıklayın.

Modeli her açtığınızda yüklemeyi önlemek için, PreLoadFcn model geri aramasını kullanabilirsiniz. Kök alt sistemine (root subsystem) gidin, beyaz boşluk üzerine sağ tıklayın ve bağlamsal menüden (contextual menu) Model Özellikleri (Model Properties) öğesini seçin. Yeni bir pencere açılacaktır; Geri Arama sekmesine (Callbacks tab) tıklayın ve listeden PreLoadFcn öğesini seçin. Metin kutusunun içinde, çalışma alanı yüklemesini gerçekleştirecek olan MATLAB komutunu yazacağız: load(‘cruise_control.mat’)

Önemsiz hatalar yapmadığımızı doğrulamak için, Güncelleştirme Diyagramı’nı (Update Diagram) Simülasyon menüsünden veya Ctrl + D tuşlarına basarak çalıştırmalısınız.

İlk modelimizi bitirdik. Şimdi nasıl davrandığını görme zamanı.

9. Adım: İlk simülasyonu yapın

Kontrolörümüzün açık döngüde nasıl çalıştığını görelim (kontrol etmek için hiçbir şeye gerek olmadan). Giriş ve çıkış bağlantı noktalarını kök düzeyinden silmeliyiz, çünkü bunları Kütüphane Tarayıcı’ndan (Library Browser) uygun Kaynaklar (appropriate Sources) ve Sinks blokları ile değiştiriyoruz.

Simulink Library Browser’den aşağıdaki blokları alacağız:

  • Sabit değeri 0 olarak ayarlanmış Araç hız girişine (Vehicle speed input) sabit bir blok (Constant block) bağlanır. (Simulink | Kaynaklardan)
  • Sonuç değeri 0.1 olarak ayarlanmış Hedef hız girişine (Target speed input) bir Adım bloğu (Step block) (Simulink | Kaynaklar’dan) bağlanır. (Gaz kelebeğinin 0 ile 1 arasında limitlendirildiğini unutmayın)
  • Gaz Kelebeği çıktısına (Throttle output) bir Kapsam bloğu (Scope block) bağlanır. (Simulink | Sinks)

Sistemi aşağıdaki ekran görüntüsüne benzetmeliyiz:

simulink model 10

Simülasyonu çalıştırmak kolay bir iştir: araç çubuğundaki yeşil Çalıştır (Run) düğmesine tıklayın veya Simülasyon | Menü girişini çalıştırın veya Ctrl + T klavye kısayolunu yazın.

Simülasyon tamamlandığında (sol alttaki durum çubuğu Ready kelimesini tekrar gösterir), yeni eklenen Scope bloğuna çift tıklayın ve şu düzgün grafiği göreceksiniz:

simulink model 11

Grafiğin tüm pencere boyutunu doldurması için Autoscale simgesine basın (soldan altıncı).

İyi! Simülasyonun onuncu saniyede durduğuna dikkat edin; Simulink araç çubuğunda (model editörünün hemen üstünde) ayarlanabilen varsayılan simülasyon süresidir.

Küçük sonuç analizimizi yapabiliriz:

  • 1. saniyeden önce: Hedef hız hala 0’dır, gaza ihtiyaç duyulmadan araç hızına eşit.
  • 1. saniyede: Hedef hız (ve hız farkı) 0,1’e gider, PI kontrolörünün oransal faktörü devreye girer ve integral faktörü çalışmaya başlarken hız farkı ile Kp çarpımına eşit bir gaz kelebeği ayarlar,
  • 1. saniyeden itibaren, gaz kelebeğine orantılı katkı 0,1’de kalır, ancak integral katkısı doğrusal olarak yükselir (Ki 1, gaz kelebeğinin eğimi hız farkına, yani 0,1’e eşittir).

Elde edilen sonuç grafiğinin gerçektende kesintili olmadığını göreceksiniz. Scope parametreleri penceresini (Parametre simgesi düğmesine (soldan ikinci) tıklayın) ve Stil sekmesinde (Style tab) çizgi işaretleyicisini (line marker) seçerek gerçekten sürekli olmadığını görebilirsiniz. Simulink otomatik olarak yeterli bir zaman adımı seçti. Bir sonraki bölümde simülasyon zamanlarını tartışacağız.

Yaptığımız şey açık döngüsel bir simülasyon: kontrollü bir sistem olmadan çalışan bir denetleyiciye sahibiz, bu nedenle hız (veya daha iyisi: denetleyicinin tepki verdiği hata e(t)), bir Adım bloğu ile oluşturuldu. Açık döngü benzetimlerinin amacı, belirli türden girdilerle denetleyici davranışını göstermek ve kontrol etmektir.

Şimdi ne var? Kapalı çevrimli bir simülasyon gerçekleştirmek ve cruise kontrol ünitemizin gaza kumanda ederek hız farkını nasıl ortadan kaldırabileceğini görmek için kontrollü bir sistemin matematiksel modeline ihtiyacımız var. Bir araba modellemeliyiz.

Bir sonraki makalemizde gerçek bir araç için modelleme örneği yapacağız.

Kaynak: Getting Started with Simulink By Luca Zamboni

Furkan Gümüş
Furkan Gümüş
Karadeniz Teknik Üniversitesi Makine Mühendisliği bölümü mezunu. Yüksek lisans eğitimini Marmara Üniversitesi Makine Mühendisliği bölümünde tamamladı. Doktora eğitimine Yıldız Teknik Üniversitesi Mekatronik Mühendisliği alanında devam ettiriyor. Uzmanlığı Robot ve Mekatronik Sistemler, Otomatik Kontrol, Mekanik Tasarım, Gömülü Sistem ve Kontrol Yazılımlarıdır.
Subscribe
Bildir
guest
0 Yorum
Inline Feedbacks
View all comments
Arıcılık Malzemeleri

Yeni Yazılar

Mühendislik Maaşları

Bunları Gördünüz mü?