dinamik sistemlerin modellenmesi, simülasyonu ve analizi için kullanılan bir yazılım paketidir. Son yıllarda akademik ve endüstriyel ortamlarda yaygın biçimde kullanılmaktadır. Simulink,
- İş akış kontrolü
- Isı, soğutma, süsbansiyon ve fren sistemleri
- Sayısal İşaret İşleme ve haberleşme
- Diferansiyel denklem çözümü
- Durum-uzay modelleri
- Transfer fonksiyonları
- Neuro-Fuzzy sistem modelleme
- Elektrik devre çözümü
- Kontrol sistemleri (Uçuş kontrol, PID kontrolü)
- Dış ortam ile veri alışverişi
- Uzaktan ve Web tabanlı kontrol
- Robotics çalışmaları
gibi birçok elektrik, elektronik, finans, mekanik ve termodinamik gerçek dünya sistemini simüle edebilir. Bir MATLAB arayüzü olan Simulink’te bir modelleme işlemi için:
- Simge sürekleme-bırak mantığı ile taşınan bloklar kullanılır.
- Matlab kodu yazmak yerine, işlem blokları birbirine bağlanarak model diyagramları oluşturulur.
- Blok simgeleri, sistemin girişlerini, sistemin parçalarını veya sistemin çıkışlarını gösterir.
Simulink’in bir diğer önemli özelliği de Matlab ortamı ile etkileşimli işlem görmesidir:
- Simulink çıkış sonuçları, Matlab çalışma ortamına gönderilebilir ya da bu ortamdan veri kullanılabilir.
- Simulink modelleri, setparam ve getparam komutları kullanılarak programlama (.m) dosyalarıyla kontrol edilebilir.
- Simulink, GUI yapısı ile interaktif bir ortam oluşturarak kullanılabilir.
Bir dinamik sistemin simülasyonu, iki adımlık bir Simulink işlemidir:
- İlk önce Simulink model editörü kullanılarak dinamik sistemin girişi, durumu ve çıkışı arasında zaman bağımlı matematiksel ilişkisini (nümerik, türev, diferansiyel denklemler vb) grafiksel olarak gösteren bir blok diyagramı oluşturulur.
- İkinci adımda belirlenen bir zaman aralığı içerisinde modellenen sistem çalıştırılır yani simüle edilir.
Fiziksel sistemi yaratmadan önce similasyonunu yapıp gerekli analizleri yaptıktan sonra bunu gerçekleştirmeniz yatırımınızın boşa gitmemesini sağlarsınız. Yapılan şey bir bilgasayar modeli yapmaktır. Bir bilgisayar modeli, bir kişi, bina, araç, ağaç gibi herhangi bir nesnenin matematiksel gösterimidir. Model, rüzgar hareketleri, trafik akışı, yaylanma gibi bir işlemin gösterimi de olabilir. En geniş kapsamı ile simulation (benzetim), gerçek veya teorik fiziksel bir sistemin bilgisayar üzerinde tasarlanma disiplini ve analiz işlemidir. Simulink bize karmaşık sistemleri tasarlama ve similasyon yapma olanağı vermektedir. Mühendislik sistemlerinde simulasyonun önemi gün geçtikçe artmaktadır. Sistemlerin tasarımında büyük oranda bilgisayar similasyonlarından faydalanmakta, mümkün olduğunca tasarımın test aşamaları da bilgisayarlar yardımıyla yapılmaktadır. Bu da prototiplere olan ihtiyacı azaltarak maliyetlerin büyük oranda düşmesini sağlamaktadır. Simulink, MATLAB ile birlikte bütünleşik olarak çalışan bir similasyon ortamıdır. Sürekli zamanlı ve ayrık zamanlı sistemleri veya her ikisini de içeren hibrit sistemleri desteklemektedir. İçinde birçok altsistemi blok olarak barındırdığından sürükle-bırak yöntemiyle birçok sistemi bir-kaç dakikada kurarak simule edebilir,değişik durumlardaki cevabını test edebilirsiniz. Bunun için Simulink bizlere zengin bir blok kütüphanesi sunmaktadır. Devre tasarlama aracı olarak da kullanılabilir. Biyomekanik dersinin devamı olan bu konu için matlab simulink nasıl kullanıldığıyla başlayarak örneklerle devam edeceğim.
Matlab Simulink Açma ve Kullanma
- console kullanarak açmak için : >>simulink
- Grafiksel arayüzden açmak için
- Simulink model dosyalarının uzantısı .mdl (model) şeklindedir.
- Matlab komut (>>…) ekranından simulink dosya adını yazarak direkt olarak model penceresine geçebilirsiniz ya da klasik dosya açma yöntemlerinden biri ile dosyayı bulup üzerine çift tıklayabilirsiniz

- Simulink Kütüphanesi: Simulink'i çalıştırdığınızda karşınıza Simulink kütüphanesi gelecektir. Simulasyon yaparken kullanacağımız bloklar kategorilere ayrılmış biçimde burada bulunmaktadır.

- Blok Diyagramlar Her bir blok sürekli zamanda ya da ayrık zamanda çıkış veren temel bir dinamik sistemi ifade eder. Hatlar blokların giriş ve çıkışları arasındaki bağlantıları gösterir. Blok diyagramdaki her bir blok belirli bir tip bloğun örneğidir. Bloğun tipi ,bloğun giriş ve çıkışları, durumları ve zaman arasındaki bağıntıyı belirler.
- Bloklar Bloklar Simulink’in nasıl simule edileceğini bildiği temel dinamik sistemleri temsil eder. Blokları programlama dillerinde kullanılan fonksiyonlara benzetebiliriz. Her bir dinamik sistem için yazılmış hazır fonksiyonlardır. Bize kalan sadece bu hazır fonksiyonları kullanarak sistemimizi kurmaktır. Bir blok şu bileşenlerin birinden veya birkaçından oluşur: Giriş kümesi, durum kümesi ve çıkış kümesi.

- Durumlar: Bloklar durumlara sahip olabilirler. Durum, bloğun çıkışını belirleyen ve şimdiki değeri, bloğun önceki durumları ve/veya girişlerinin fonksiyonu olan bir değişkendir. Duruma sahip olan bir blok şimdiki durumunu belirlemek için geçmiş değerlerini kaydetmek zorundadır. Duruma sahip olan bloklara , hafızalı blok denilir. Çünkü bu bloklar o anki değerlerini belirlemek için geçmiş değerlerini kaydetmek zorundadırlar.
- Simulink İntegral Alıcı (integrator) Bloğu Duruma sahip bloklara bir örnektir. Similasyonun başlangıcından o anki zamana kadar giriş sinyalinin integralini çıkış olarak verir. O anki zaman adımındaki integral değeri, integrator bloğunun geçmişteki giriş değerlerine bağlıdır. Dolayısıyla integral,integrator bloğunun durumudur. Durumlu bloklara bir başka örnek de Simulink Hafıza (memory) bloğudur. Hafıza bloğu girişlerindeki değerleri o anda kaydedip ileriki bir zamanda çıkışına verir. Hafıza bloğunun durumları önceki giriş değerleridir.
- Simulink Kazanç Bloğu (Gain) Durumsuz bloklara bir örnektir. Kazanç bloğu girişindeki değeri kazanç adı verilen bir sabitle çarparak çıkışına verir. Kazanç bloğunun çıkışı tamamiyle o anki giriş değeri ve sabit olan kazanç ile belirlenir. Dolayısıla Kazanç bloğunun durumu yoktur. Diğer bazı durumsuz bloklar Toplam (Sum) ve Çarpım (product) bloklarıdır.Bu blokların çıkışları tamamiyle girişlerinin bir fonkiyonudur.(İlki için toplam, ikincisi için çarpımdır)Dolayısıyla bu blokların durumları yoktur.
- Blok Parametreleri: Birçok standart bloğun anahtar özellikleri parametrik hale getirilmiştir.Örneğin, Kazanç Bloğunun (Gain) kazancı bir parametredir. Her bir parametrik blok size blok parametrelerini belirleyebileceğiniz bir diyalog kutusu sunar. Blok parametrelerini belirlemek için MATLAB ifadeleri kullanabilirsiniz. Simulink bu ifadeleri simulasyonu çalıştırmadan önce hesaplar. Parametrelerin değerlerini simulasyon esnasında değiştirebilirsiniz. Bu parametrenin en uygun değerini interaktif bir şekilde belirlemenize olanak sunar. Parametrik bloklar etkili bir biçimde benzer blok ailelerini temsil ederler. Örneğin, bir model oluşutururken modeldeki her bir Kazanç (Gain) blokunun kazanç değerlerini ayrı ayrı belirleyerek her bir Kazanç Bloğunun farklı davranmasını sağlayabilirsiniz. Blokların parametrik hale getirilmesi , her bir standart bloğun bir blok ailesini temsil etmesini sağlayarak, Simulink’in modelleme gücünü artırmaktadır.

- Değiştirilebilir Parametreler: Birçok blok parametresi değiştirilebilirdir. Simulasyon yapılırken değeri değiştirilebilen parametreler değiştirilebilir parametrelerdir.Örneğin Kazanç bloğunun kazanç parametresi değiştirilebilir parametredir. Simulasyon çalışırken bloğun kazancını değiştirebilirsiniz. Bir parametre değiştirilebilir değilse ve similasyon çalışıyorsa Simulink parametreyi ayarlayan diyalog kutusunu engeller. Simulink belirledikleriniz dışında bütün parametreleri değiştirilemez olarak belirlemenize izin verir. Bu büyük modellerin çalıştırılmasını hızlandırı ve modelinizden daha hızlı bir şekilde kod üretilmesini sağlar.
- Altsistemler: Simulink bize, kompleks sistemleri ,blok diyagramları ile temsil edilen birbirine bağlı altsistemler şeklinde modellemenize izin verir. Altsistemleri Simulink altsistem(subsysytem) bloğuyla ve model editörüyle oluşturabilirsiniz. Alt sistemleri ana sistemlere istediğiniz derinliğe kadar gömerek hiyeraiş modeller yaratabilirsiniz. Bir geçiş durumu olduğunda,bir tetikleme veya yetkilendirme girişi geldiğinde çalıştırılan şarta bağlı çalışan alt sistemler oluşturabilirsiniz.
- Sinyaller: Simulink sinyal terimini blokların çıkış değerlerini belirtmekte kullanır.Simulink size sinyal ismi,veri tipi( örn: 8-bit,16-bit veya 32-bit tamsayı) ,numerik tip (Reel veya kompleks), ve boyutluluk(tek boyutlu veya 2-boyutlu dizi) gibi sinyal özelliklerini belirlemenize olanak verir. Birçok blok herhangi bir veri veya numerik tipte ve boyutta çıkışı kabul edebilir.Diğerleri de kabul edebildikleri sinyal özellikleri ile ilgili kısıtlamalar taşırlar.
- Veri Tipleri: Veri tipi, verinin bilgisayardaki temsiline verilen addır.Simulink MATLAB’te desteklenen int8, double ve boolean gibi herhangi bir dahili veri tipini kullanabilir. Bunlara ek olarak Simulink kendine özgü iki veri tipi daha tanımlar:Simulink.Parameter Simulink.SignalBu Simulink'e özgü veri tipleri diğer genel veri tipleri ile tutulamayan Simulink’e özgü bazı bilgilerin tutulmasında kullanılırlar. Simulink size Simulin veri objeleri denilen Simulink veri tiplerini kullanarak parametre değerleri ve sinyal olarak kullanılmak üzere yeni veri tipleri yaratmanıza imkan verir. Her iki Simulink veri tipini de kullanarak kendi modellerinize özgü bilgileri saklayabilen yeni ver tipleri yaratabilirsiniz.
Simulink Örnekleri
Statik Modelleme: zamandan etkilenmeyen modellerdir. Modelin durumu zamana göre değişiklik göstermez. Santigrat dereceden fahrenhayta dönüşüm yapan bir denklemin(F = 9/5 (°C) + 32 ) modellemesi yapan bir simulink yapalım:
- Yukarıda anlatıldığı gibi matlab simulink açılır.
- Simulink Library Browser file altındaki yeni klasörüne
tıklanır.
- Sources >> Constant 2 tane (°C) değeri ve 32 değerini yüklemek için, Math >> Gain 1 tane çarpma ve Sum 1 tane toplama için, Sinks >> Display 1 tane sonucu göstermek için yolunu izleyerek yeni açılan çalışma sayfasına sürükleyip bırakıp ekleyebilirsiniz Veya Constant, Gain, Sum, Sinks sözcüklerini direk aratarak ekleyebilirsiniz. veya İlk sıradaki "Commonly Used Blocks" seçerek ekleyebilirsiniz.
- girdi ve çıktıları ayarlamak için oklarla bloklar birbirine bağlanır. Bloklar Çift tıklanarak Constan 50, Constant1 32 ve Gain 9/5 değerleri ayarlanır.
- tüm hepsini yapıp 50 °C değerini verip Run butonuna tıkladığınızdaki sonuç (F=122):

- Yapılan işlem 50 * 9/5 + 32 = 122 değeridir.
- kod: sicaklik_hesaplama
Dinamik Modelleme: zamandan etkilenen modellerdir. Bir simülasyon süresi söz konusudur.
Başlangıç şartları: x(0) = 0 ve dx/dt(0) = 0 Giriş: f(t), t=0’da genliği 3 olan adım fonksiyonu Kütle, m = 0.25 Sönüm katsayısı, c = 0.5 Yay sabiti, k = 1 f(t)=2 olduğunda x değerinin değişimini Modelleyip Grafik ile gösterelim.
- Yukarıda anlatıldığı gibi matlab simulink açılır.
- Simulink Library Browser file altındaki yeni klasörüne
tıklanır.
- bir tane Constant, üç tane Gain, iki tane Integrator, bir tane Add, bir tane Scope ekleyin
- girdi ve çıktıları ayarlamak için oklarla bloklar birbirine bağlanır. - Constant değeri 2 olarak ayarla - Gain değeri 1 olarak ayarla - Gain1 değeri 0.5 olarak ayarla - Gain2 değeri 0.25 olarak ayarla
- sonuç olarak Scope tıklandığında x değerinin zamana göre değişim çıkmaktadır.

- t zamanda f(t) =2 olduğunda x değerindeki artış 6 saniye kadar artmış sonrasında yayın geri çekmesinden dolayı azalmaya başlamıştır.
- Kodu: dinamik_model
Kesikli Modelleme: zamanın tek bir noktasında oluşan ani bir harekettir. Hava alanına inen bir uçak, bankaya giren bir müşteri ya da bir döngüyü bitiren bir hareket ayrık (kesikli) olaylara örneklerdir. Fark Denklemi: x(n+2)=1.5*x(n+1)-0.5*x(n) y(n)=x(n) x(0)=0.5 ve x(1)=2.0 Dt=10.0 Denklemini modelleyip grafiksel gösterelim:
- Yukarıda anlatıldığı gibi matlab simulink açılır.
- Simulink Library Browser file altındaki yeni klasörüne
tıklanır.
- bir tane Sum, iki tane Unit Delay, iki tane Gain, bir tane Scope blokları eklenir.
- girdi ve çıktıları ayarlamak için oklarla bloklar birbirine bağlanır. -Çalışma sayfasına eklediğiniz blokları ters çevirmek için tıklayınız ve "Control + R" tıklayınız. (Rotate & Flip > Clockwise) (Format > Flip Block) - Oklara yazı eklemek için çift tıklayın ve sonra yazıyı yazın. - zaman ve model için diğer bazı ayarlamak için "Control + E" tıklayabilirsiniz (Simulation > Model Configuration Parameters) - Unit Delay tıklayarak "Initial condition" ilk koşul değerini 2 yap [ x(1)=2.0 ] - Unit Delay1 tıklayarak "Initial condition" ilk koşul değerini 0.5 yap [ x(0)=0.5 ]
- sonuç olarak verilen başlangıç değerlerine göre grafik Scope tıklanarak görebilir.

- Burada kafanız karıştıysa sorun yok. Bunun anlamı öğrenmeye hazır olduğunuzdur :) ilk başlangıç değerleri verildikten t =0 sonra işlem gerçekleştirilir ve t=1 zamanda Scope ile gösterime hazır hale gelir. Aşağıda sildiğim oklar sadece zaman değişimi yani t zamanda birinin girdiği olan değer t+1 zamanda ok yönünde hareket ederek diğerinin girdisi halini almaktadır. herhangi bir t zamanda yapılan işlem ise değerleri aktaran okları sildiğimde aşağıdaki durumu almaktadır.

- Kod:kesikli_model
Sürekli Modelleme: Zamana bağlı olarak kesilmeden devam eden (arası olmayan) hareketlerdir. Gün içindeki bir gölün suyunun sıcaklığının düşmesi ve yükselmesi, benzinin tankere boşaltılması ve kimyasal dönüşümler örnek olarak verebilir. Matematiksel olarak modellenirken çoğu kez diferansiyel denklemlerden yararlanılır.
Giriş: 3 sin(2t) Çıkış: dx/dt parametre: Başlangıç şartı → x(0) İşlem Birimi: Integrator blogu I. dereceden bir diferansiyek denklemi çözelim:
- Yukarıda anlatıldığı gibi matlab simulink açılır.
- Simulink Library Browser file altındaki yeni klasörüne
tıklanır.
- bir tane Sum, iki tane Unit Delay, iki tane Gain, bir tane Scope blokları eklenir.
- girdi ve çıktıları ayarlamak için oklarla bloklar birbirine bağlanır. - bir tane SinWave Bloğu eklenir ve çift tıklanarak Amplitude = 3, Frequency = 2 ayarlanır - Integrator Bloğu eklenir ve çift tıklanarak Initial Condition= -1 ayarlanır
- Sonuç olarak sinus değerine göre bir sonuç çıkar.

- sonuç olarak denklemdeki x değerinin zamana (0-10) göre değişimidir.
- Kodu: surekli_modelleme_simulink
Açık Çevrim Modelleme: Sisteme bir geri besleme sağlamadan sistemin çıktılarının varolduğu yani girişin çıkış işaretinden etkilenmediği sistemlerdir. 
- Yukarıda anlatıldığı gibi matlab simulink açılır.
- Simulink Library Browser file altındaki yeni klasörüne
tıklanır.
- bir tane Constant, iki tane Integration, bir tane Scope blokları eklenir.
- girdi ve çıktıları ayarlamak için oklarla bloklar birbirine bağlanır. - 1 tane Constant yerçekimi ivmesini için (sabit ve dünya : 9.81) ve değeri -0.981 olarak ayarlanır. - Konum (Integrator ilk değeri) 20 olarak ayarlanır.
- Grafikte 20 metre yükseklikten topun 10 saniye içerisindeki düşme konumu şu şekildedir.

- Grafikte 20 metre yükseklikten topun 10 saniye zemine çarpmadan aşağıya doğru 50 metre yol almıştır.
- Kodu: serbest_dusme_simulink
Kapalı Çevrim Modelleme: Sistem işlemlerinin sonuçları, benzetim modeline bir sonraki işlemin değişikliği için geri döndüğü benzetimdir. 
- Yukarıda anlatıldığı gibi matlab simulink açılır.
- Simulink Library Browser file altındaki yeni klasörüne
tıklanır.
- bir tane Constant, iki tane Integration, bir tane Scope, bir tane Sum, bir tane MATLAB Function blokları eklenir.
- girdi ve çıktıları ayarlamak için oklarla bloklar birbirine bağlanır. - 1 tane Constant yerçekimi ivmesini için (sabit ve dünya : 9.81) ve değeri -0.981 olarak ayarlanır. - Konum (Integrator ilk değeri) 20 olarak ayarlanır. - Matlab Function içine bu kodlar yazılır:
function [f, a, b] = fcn(y)
% giriş olarak yükseklik değeri alınmaktadır.
% burada yere çarpan topa etki eden kuvvet (f)
% topun esnemesi sonucu yarıçapındaki değişiklik (a,b)
% hesaplanarak çıktı olarak verilmektedir.
if y < 1e-4 % zeminden aşağı inilmesi engelleniyor
y = 1e-4;
end
k = 500;%yay sabiti
if y <= 0.5 % yere değerken oluşan tepki kuvveti
f = k*(0.5-y);%tepki kuvveti
a = sqrt(0.5^(3/y));
b = y;
else %yere değmemiş
f = 0; %tepki Kuvveti
a = 0.5;
b = 0.5;
end
end
- Açık çevrim örneğinin devamı olarak sıfır(0) konumunda bir zemin olduğunu ve zemine çarpan top herhangi bir kuvvetini kaybetmeden esnek bir şekilde yükseldiğini function ile kod yazarak sisteme bunu ekleyeceğiz.

- Grafikte 20 metre yükseklikten topun 10 saniye zemine çarpmadan aşağıya 2o metre düştükten sonra yer çarpma kuvveti onu yükseltmiştir. Bu şekilde sistem bir döngü oluşturmaktadır.
- Kodu:serbest_dusme_simulink2
Stokastik Modelleme: Bir veya daha fazla rasgele değişkene dayanan modellerdir. Bu yüzden gerçek sistem davranışını, yalnızca tahmini olarak ortaya koyabilir. Deterministik Modelleme: Rasgele olmayan girdi değişkenine sahip olan modellerdir. Deterministlik modellerdeki hareketler her zaman aynıdır ve aynı çıktıları üretir.
bazı örnekler
http://www.shefelbine.org/index.php/teaching/SimMechanics