Matlab Destekli DC Motor Kontrolü

Matlab Destekli DC Motor Kontrolü

Matlab Destekli DC Motor Kontrolü

1         FİZİKSEL KURULUM

Kontrol sistemlerinde ortak bir aktüatör DC motordur. Doğrudan döner hareket sağlar ve tekerleklerle veya tamburlarla ve kablolarla birleştiğinde, dönüşüm hareketi sağlayabilir. Armatürün eşdeğer elektrik devresi ve rotorun serbest cisim diyagramı aşağıdaki şekilde gösterilmektedir.

Şekil 1. Armatürün eşdeğer elektrik devresi ve rotorun serbest cisim diyagramı

Sistemin fiziksel parametreleri:

(J) Rotorun eylemsizlik momenti 0.01 kgm2

(b) Motor viskoz sürtünme sabiti 0.1 Nms

(Ke) Elektromotor kuvvet sabiti 0.01 V/rad/s

(Kt) Motor tork sabiti 0.01 Nm/A

(R) Elektrik direnci 1 Ohm

(L) Elektrik endüktansı 0.5 H



 

2         TRANSFER FONKSİYONUNUN ELDE EDİLMESİ

Genel olarak, bir DC motor tarafından üretilen tork, armatür akımı ve manyetik alanın gücü ile orantılıdır. Bu örnekte, manyetik alanın sabit olduğunu ve bu nedenle motor torkunun aşağıdaki denklemde gösterildiği gibi sabit bir faktör Kt tarafından sadece armatür akımı i ile orantılı olduğunu varsayacağız. Bu armatür kontrollü bir motor olarak adlandırılır.

…(1)

Ters emk, e, şaftın açısal hızı ile sabit bir faktör Ke ile orantılıdır.

…(2)

SI birimlerinde, motor torku ve ters emk sabitleri eşittir, yani, Kt =Ke; bu nedenle, hem motor tork sabitini hem de ters emk sabitini temsil etmek için K kullanacağız.

Newton’un 2. yasası ve Kirchhoff’un voltaj kanununa dayanan aşağıdaki denklemleri türetebiliriz.

…(3)

 …(4)

Laplace dönüşümünün uygulanması, yukarıdaki modelleme denklemleri Laplace değişkenleri s cinsinden ifade edilebilir.

…(5)

Sistemin transfer fonksiyonu denklem (5) olarak ifade edilebilir.

 

3         SİSTEMİN ANALİZ EDİLMESİ

3.1        Tasarım Gereksinimlerinin Tanımlanması

Bir motorun en temel gereksinimi, istenen hızda dönmesi gerektiğinden, motor hızının kalıcı durum hatasının %1’den daha az olmasını gerektirecektir. Motorumuz için diğer bir tasarım şartı, açıldığı anda kalıcı durum hızına ulaşma süresidir. Bu durumda, 2 saniyeden daha az bir oturma süresine sahip olmasını istiyoruz. Ayrıca, referans hızından daha büyük bir hız, sisteme zarar verebileceğinden, %5’ten daha az aşma ile bir basamak cevabına sahip olmak istiyoruz.

  • Oturma süresi 2 saniyeden az
  • Aşma %5’ten az
  • Kalıcı durum hatası %1’den az

3.2        Sistemin Açık Döngü Cevabının Elde Edilmesi

Öncelikle MATLAB üzerinde m dosyası oluşturarak sistemimizi MATLAB’a tanıtıyoruz.

J = 0.01;

b = 0.1;

K = 0.01;

R = 1;

L = 0.5;

s = tf(‘s’);

P_motor = K/((J*s+b)*(L*s+R)+K^2);

Sistemin açık döngü cevabını elde etmek için aşağıdaki linearSystemAnalyzer komutunu m-dosyasının sonuna ekleyoruz ve MATLAB komut penceresinde çalıştırıyoruz. Linear System Analyzer‘a ayrıca MATLAB araç şeridinin APPS sekmesine gidip, Control System Design and Analysis altındaki uygulama ikonuna tıklayarak da erişebiliriz. Aşağıdaki komutta, işleve iletilen “step” dizgesi, sistem P_motor için bir birim basamak cevap çizimini oluşturmayı belirtir. 0:0.1:5 sayı aralığı, basamak cevap çiziminin, 0 saniye ile 5 saniye arasında 0.1 saniyelik zaman aralıklarıyla veri noktaları içermesi gerektiğini belirtir. Elde edilen çizim, aşağıdaki şekillerde gösterilmektedir; burada, sistemin özelliklerinin bir kısmı şekil üzerinde sağa tıklayarak ve Characteristics menüsünden Settling Time ve Steady State gibi performans yönlerinden seçerek görülebilir.

linearSystemAnalyzer(‘step’, P_motor, 0:0.1:5);

Şekil 2. Sistemin açık döngü basamak cevabı

 

Görüldüğü gibi sistem gereksinimlerinin hiçbiri karşılanamamaktadır. Bunlara ek olarak sistemin diğer girişlere (örneğin sinüs) verdiği cevaplar da incelenebilir (Şekil 4’e bakınız).

Sistemin kutuplarını görüntülemek için m dosyasına pzmap komutu yazılır.

pzmap(P_motor)

Şekil 3. Sistemin kutupları

Şekil 3’ten de görüldüğü üzere sistemin s1=-2 ve s2=-10’da gerçek eksen üzerinde kutupları vardır. Sistemin transfer fonksiyonu birinci dereceden bir sistem gibi davranır. Örnek olarak m dosyasına aşağıdaki kodları yazarak transfer fonksiyonlarının sinüs girişine verdikleri cevapları Şekil 4’teki karşılaştırabiliriz.

rP_motor = 0.1/(0.5*s+1)

Şekil 4. Sistemin sinüs girişe verdiği cevap

 

Bu grafiklerden anlaşılacağı üzere sistemimize istediğimiz şartları sağlaması için bir kontrol elemanı eklemeliyiz.

 

4         PID DENETLEYİCİ TASARIMI

Şekil 5. Sistemin blok diyagramı

 

Bilindiği gibi PID denetleyicisinin genel yapısı denklem (6)’daki gibidir.

…(6)

 

4.1        Oransal Kontrolcü Tasarımı

Transfer fonksiyonumuza aşağıdaki kodları m dosyamıza yazarak sistemimize kazancı 100 olan bir oransal kontrol elemanı ekliyoruz.

Kp = 100;

C = pid(Kp);

sys_cl = feedback(C*P_motor,1);

Şimdi kapalı döngü basamak cevabını incelemek için aşağıdaki kodları da m dosyamıza ekliyoruz. Sistemin özelliklerinin bir kısmını şekil üzerinde sağa tıklayarak ve elde edilen menüden Characteristics‘i seçerek görüntüleyebilirsiniz. Aşağıdaki şekilde, Settling Time, Peak Response ve Steady State için ek açıklamalar özellikle eklenmiştir.

t = 0:0.01:5;

step(sys_cl,t)

grid

title(‘Step Response with Proportional Control’)

Şekil 6. Oransal kontrolcü eklenmiş sistemin kapalı döngüsünün basamak girişe cevabı

 

Eklenen oransal kontrolcü ile sistemin cevap hızı ve aşma artarken kalıcı durum hatası azaldı fakat yine de aşma için istenilen değere ulaşılamamıştır.

 

4.2        Oransal Denetleyicinin İntegral ve Türev ile Desteklenmesi

Sisteme eklenecek olan bir integral denetleyici sistemin kalıcı durum hatasını giderecek ve bir türev denetleyicisi de aşma miktarını azaltacaktır. Bu değişiklikleri yapmak için m dosyamıza oran, integral ve türev denetleyicilerini ekliyoruz.

Kp = 75;

Ki = 1;

Kd = 1;

C = pid(Kp,Ki,Kd);

sys_cl = feedback(C*P_motor,1);

step(sys_cl,[0:1:200])

title(‘PID Control with Small Ki and Small Kd’)

Şekil 7. Küçük kazançlı integral ve türev denetleyicisi ile PID kontrolcünün basamak cevabı

 

Burada kalıcı durum hatası istenilen sınırların içindedir fakat oturma süresi çok büyüktür. Sistemi istenilen tasarım şartlarına uygun hale getirmek için Kp = 100; Ki = 200; Kd = 1 seçilerek tekrar grafik çizilir (Şekil 8’e bakınız).

Şekil 8. Büyük Ki ve küçük Kd kazançlı PID denetleyicinin basamak girişe cevabı

 

Cevap hızı ile birlikte aşma değeri de artmıştır. Kalıcı durum hatası ve oturma süresi ziyi bir şekilde elde edilmişse de aşma istenilen değerin çok üzerindedir. Kp = 100; Ki = 200; Kd = 10 değerleri için sistemin basamak girişe cevabı Şekil 9’da çizilmiştir.

Şekil 9. Kp = 100; Ki = 200; Kd = 10 değerlerine sahip PID’nin basamak girişe cevabı

 

Grafikte görüldüğü üzere sistem bu PID değerlerinde tüm gereksinimleri karşılamaktadır.

 

4.3        Kolayca PID Tasarımı

Sisteme daha kolay ve hızlı bir şekilde PID denetleyicisi tasarlamak için APPS sekmesinden PID Tuner bloğu seçilir (Şekil 10’a bakınız). Açılan pencerenin sol üst kısmından Plant’e tıklayarak çıkan seçeneklerden Import seçilip PID ile denetleyeceğimiz sistemi tanıtıyoruz.

Şekil 10. PID Tuner’ın açılması

 

Şekil 11. Sistemin PID Tuner’a aktarılması

 

Şekil 12. Sistemin oransal kontrolcü ile basamak girişe cevabı

 

MATLAB otomatik olarak sistemimize Oransal kontrol eklenerek ayarlama yapıyor. Sistemin davranışını elle değiştirmek için Şekil 12’de görülen Response Time çubuğunu istediğimiz yönde hareket ettirebiliriz. Yaptığımız seçimlerle kalıcı durum hatası olduğundan dolayı sistemi tasarım şartlarına uygun hale getirmek için sisteme bir integral etki ekliyoruz ve Response Time ve Transient Behavior değerlerini belirliyoruz.

PI denetimi için;

Response Time: 0,5637

Transient Behavior: 0,67

Kp= 18,145         Ki= 41,6491

Şekil 13. Sistem için PI denetleyici ayarlanması

 

Sistem PI denetleyici ile istenilen tasarım şartlarını sağlamaktadır. Yine de PID denetleyici için sistemin basamak girişe cevabını görmek istiyoruz.

PID denetim için;

Response time: 0,5902     Transient Behavior: 0,71

Kp= 18,6564       Ki= 46,7431        Kd= 1,3732

Şekil 14. Sistem için PID tasarlanması

 

5         FREKANS ALANI ile DENETLEYİCİ TASARIMI

Frekans tabanlı tasarımın ana fikri, kapalı döngü cevabını tahmin etmek için açık döngü transfer fonksiyonunun Bode grafiğini kullanmaktır. Sisteme bir kontrolör eklemek açık döngü Bode çizimini değiştirir ve böylece kapalı döngü cevabını değiştirir. Kontrolörün, açık döngü Bode çizimini, kapalı döngü sisteminin istenen şekilde hareket edeceği şekilde şekillendirmek üzere tasarlanması hedefimizdir. İlk önce orijinal açık döngü sistem transfer fonksiyonu için Bode çizimini gerçekleştirelim. Aşağıdaki kodu m dosyamızın sonuna ekleyelim. Şekil 15’te sistemin açık döngü bode diyagramı görülmektedir.

bode(P_motor)

grid

title(‘Bode Plot of the Original Plant’)

Şekil 15. Sistemin açık döngü bode diyagramı

 

5.1        Oransal Kazanç Eklenmesi

Yukarıdaki Bode grafiğinden, bu sistemin kazanç payı ve faz payının şu anda sonsuz olduğu görülmektedir. Bununla ilgili problem, faz payının sonsuz olmasıdır, çünkü büyüklük alanı tüm frekanslarda 0 dB’nin altındadır. Bu, sistemin aşırı hata olmadan çeşitli referans sinyallerini izleme konusunda sorun yaşayacağını gösterir. Bu nedenle, yeterli faz payı varken sistemin kazancını arttırmak istiyoruz.

Denge payı için genellikle 60 derecelik bir faz payı yeterlidir. Yukarıdaki Bode grafiğinden, bu faz payı yaklaşık 10 rad/sn’lik bir geçiş frekansı için elde edilir. Büyüklük alanını yükseltmek için gereken kazanç, kazanç geçiş frekansının 10 rad/sn’de gerçekleşmesi için yaklaşık 40 dB gibi görünmektedir. Belirli bir frekansta Bode çiziminin kesin fazı ve kazancı, ilgili frekansta grafik üzerine tıklanarak belirlenebilir. Sol el argümanlarıyla çağrılan bode komutu da, aşağıda gösterildiği gibi 10 rad/sn’de tam faz ve büyüklüğü sağlamak için kullanılabilir.

[mag,phase,w] = bode(P_motor,10)

Şekil 15 üzerinden modül ve açı değerleri okunabilir.
Modül= 0.0139
Açı= -123.6835˚

Buradan faz payı için;

γ=180+∠G(jw1)H(jw1)
γ=56,3>0 Sistem kararlıdır.

20.log C=-37.1
C≅72 olarak kazanç payı bulunur.

Sisteme C=72 şeklinde bir kazanç eklenerek sistemin basamak cevabı çizilir. Bunun için m dosyasına aşağıdaki komutları ekliyoruz.

C = 72;margin(C*P_motor);sys_cl = feedback(C*P_motor,1);t = 0:0.01:10;step(sys_cl,t), gridtitle(‘Step Response with Proportional Gain = 72’)

Şekil 16. Kazanç payı 72 olan oransal kontrolcü ile sistemin basamak cevabı

 

Sistemin oturma süresi gayet iyidir fakat aşma istenilen değerden daha yüksektir. Bu durumu telafi etmek için sisteme bir Lag Kompansatörü ekleyebiliriz.

 

5.2        Lag Kompansatörü Eklenmesi

Aşağıdaki lag kompansatörünü düşünün:

…(7)

Bu lag kompansatörü, 1/0.01 = 100’lik bir DC kazancına sahiptir, bu da sistemin statik konum hatası sabitini 100’lük bir faktörle artıracağı ve sistemin kapalı döngü basamak tepkisi ile bağlantılı kalıcı durum hatasını azaltacağı anlamına gelir. Aslında, kalıcı durum hatası konusundaki gereksinimi karşılarken, daha önce kullanılan 72 oranındaki oransal kazancı azaltmamıza izin verir. 45’lik bir kazanç elde edeceğiz. Üstelik kutup ve sıfırın geçiş frekansları, 10 rad/sn’lik akım kazanım frekansının 10 ya da daha altında olduğu için, kompansatörün katkıda bulunduğu faz gecikmesi, performansı çok olumsuz etkilememelidir. Aşağıdaki komutları kullanarak lag kompansatörünün Bode grafiği oluşturulabilir.

C = 45*(s + 1)/(s + 0.01);

bode(C)

grid

title(‘Bode Plot of the Lag Compensator’)

sys_cl = feedback(C*P_motor,1);

t = 0:0.01:10;step(sys_cl,t);

grid

title(‘Step Response with Lag Compensator’)

Şekil 17. 45’lik kazanca sahip lag kompansatörü eklenerek basamak cevabının incelenmesi

 

Burada kazanç 45 seçilirse aşma istenilen değere gelir fakat oturma süresi %1 hata için hala yetersizdir. Burada MATLAB oturma süresini otomatik olarak %2 hata ile almakta olduğu için buna dikkat etmek gerekir.

Sistem gereksinimlerini karşılamak için m dosyamıza controlSystemDesigner(P_motor) komutunu ekleyip kontol sistemi tasarım bölümüne geçebiliriz.

 

5.2.1       Kök-Yer Eğrilerinden Faydalanarak Lag Kompansatör Seçimi

MATLAB arayüzündeki üst sekmelerinden APPS kısmında olan Control System Designer bloğu seçilir.

Şekil 18. Kontrol sistemi tasarlayıcının açılması

 

Şekil 19. Sistem için blok diyagramı seçilmesi

 

Edit Architecture” seçilerek “G” fonksiyonu “P_motor” olarak tanımlanır.

Şekil 20. Transfer fonksiyonunun “G” bloğuna atanması

 

Çalışma alanını ikiye ayırıp bir kısmına step cevabını diğer kısmına kök-yer düzenleyicisini ekliyoruz.

Şekil 21. Basamak cevabı için sistemin giriş ve çıkışının seçilmesi

 

Şekil 22. Kök-Yer eğrisi düzenleyici eklenmesi

 

Kök-yer düzenleyicisi alanında sağ tuş tıklayarak yeni tasarım parametreleri (oturma zamanı, aşma oranı,… gibi) ekliyoruz. Bunun için Şekil 23’de olduğu gibi kök yer eğrisinde boş bir alana sağ tuş tıklanarak çıkan menüden Design Requirements seçeneğinden New seçilir. Açılan New Design Requirement penceresinden oturma zamanı ve maksimum aşma değerleri grafik için belirlenir.

Şekil 23. Tasarım şartı ekleme aşamaları

 

Şekil 24. Tasarım şartlarının kök yer eğrisine eklenmiş hali

 

Sistemimizi ifade etmeyi tamamladıktan sonra lag kompansatörü eklemek için öncelikle “Preferences” sekmesinden aşağıdaki ayarlar yapılır. Options sekmesindeki Compensator Format seçeneğini Zero/pole/gain olarak değiştiriyoruz.

Şekil 25. Kompensatör formatının seçilmesi

 

Yine sağ tuş seçeneklerinden sisteme “Lead”, “Lag”, … gibi elemanlar ekleyebiliriz.

Şekil 26. Lag kompensatörün eklenmesi

 

Şekil 27. Eklenen kompansatörün ayarlanması

 

Kompansatör için yapılan ayarlamalar ile Şekil 28’deki kök-yer eğrisi ve sistemin belirlenen kompansatör ile basamak girişe verdiği cevap elde edilir. Bu seçimlerle sistemin oturma süresi 1.84 saniye ile gayet gerçekçidir ve tüm tasarım gereksinimleri karşılanmıştır.

Şekil 28. Kompensatör ile kök-yer ve basamak cevabı eğrisi

 

6         DİJİTAL DENETLEYİCİ TASARIMI

Bir dijital kontrol sisteminin tasarımındaki ilk adım, sistemin örneklenmiş bir veri modelini üretmektir. Bu nedenle, sürekli-zaman sisteminin örneklendiği bir frekansın seçilmesi gereklidir. Bir örnekleme periyodu seçerken, örnekleme frekansının, sistemin örneklenmiş çıktısının sistemin tam davranışını yakalamasıyla neredeyse sistemin dinamiğine eşit olduğu düşünülmektedir.

 

6.1        Dijital Sistemin Basamak Girişe Cevabı

Sistemin sürekli zamanlı bir modelini oluşturmalıyız. M dosyasına aşağıdaki MATLAB kodunu eklemeliyiz. Bu komut transfer fonksiyonunu sistemin sıfır ve kutuplarının kolayca tespit edilebileceği bir forma dönüştürür.

zpk(P_motor)

Verilen transfer fonksiyonunu sürekli Laplace alanından ayrık Z alanına dönüştürmek istiyoruz. MATLAB bu dönüşümü c2d komutu ile gerçekleştirir. c2d komutu üç argüman gerektirir: sistem modeli, örnekleme zamanı (Ts) ve tutucu tipi. Bu örnekte sıfırıncı dereceden tutucu (zoh) devresini alacağız.

Sistemi kesikli zamanda denetlemek için transfer fonksiyonunu kesikli zaman formatına aktarmalıyız. Bunun için m dosyasına aşağıdaki komutları yazalım;

Ts = 0.05;

dP_motor = c2d(P_motor,Ts,’zoh’);

zpk(dP_motor)

Şekil 29. Kesikli zamanda sistemin kapalı döngü transfer fonksiyonunun basamak girişe cevabı

 

Sürekli zamana benzer sonuçlar elde edilmiş olup sistem tasarım gereksinimlerini karşılanamamaktadır.
Bu nedenle kesikli zamanda denetleyici tasarlamak istiyoruz.

 

6.2        Dijital Sisteme Denetleyici Eklenmesi

Kesikli sistemi denetlemek için sisteme daha önceden hesapladığımız PID denetleyiciyi eklemek istiyoruz. Bunun için m dosyasına aşağıdaki kodları yazıyoruz. Burada “tustin” yaklaşımını kullanacağız.

Kp = 100;

Ki = 200;

Kd = 10;

C = Kp + Ki/s + Kd*s;

dC = c2d(C,Ts,’tustin’)

Kapalı devre cevabının PID denetleyici ile performansının verilen tasarım gereksinimlerini karşılayıp karşılamadığını görmek için aşağıdaki kodları m dosyasının sonuna ekleyip ve tekrar çalıştırıyoruz.

sys_cl = feedback(dC*dP_motor,1);

[x2,t] = step(sys_cl,12);

stairs(t,x2)

xlabel(‘Time (seconds)’)

ylabel(‘Velocity (rad/s)’)

title(‘Stairstep Response: with PID controller’)

Şekil 30. Ayrık zamandaki sistemin PID denetleyici ile basamak girişe cevabı

 

Grafikten de görüldüğü üzere sistemin kapalı döngü cevabı kararsızdır. Bu nedenle, sistemin kök yerleşimine bir göz atmalıyız. Bunun için yine m dosyasına aşağıdaki kodları ekliyoruz.

rlocus(dC*dP_motor)

axis([-1.5 1.5 -1 1])

title(‘Root Locus of Compensated System’)

Şekil 31. Ayrık sistemin z alanındaki kök yerleşimi

 

Görüldüğü üzere -1’de bir kutup vardır. Bu yüzden sistem kararsızlığa gitmektedir. Bunu telafi etmek için kompansatörden gelen -0.82’deki sıfırı iptal ediyoruz.

z = tf(‘z’,Ts);

dC = dC/(z+0.82);

rlocus(dC*dP_motor);

axis([-1.5 1.5 -1 1])

title(‘Root Locus of Compensated System’);

Şekil 32. Sıfırı iptal edilen sistemin z alanında sıfır ve kutupları

 

Şekil 33. Komut kullanılarak istenilen noktadaki kazancın belirlenmesi

 

Böylece, rlocfind komutunu kullanarak belirli bir kapalı döngü kutup konumuna karşılık gelen kazancı belirleyebiliriz. Komut satırında [K,poles] = rlocfind(dC*dP_motor) yazılması, lokusun kökünde kullanabileceğiniz bir imleç üretecektir. Bu, yalnızca tıklattığınız noktadan değil, tüm kapalı döngü kutuplarını listelemesi açısından yararlıdır.

0.8’lik bir kazanç seçmek ve MATLAB komut penceresinde aşağıdaki komutları yazarak ortaya çıkan kapalı döngü basamak cevabını incelemek istiyoruz.

sys_cl = feedback(0.8*dC*dP_motor,1);

[x3,t] = step(sys_cl,8);

stairs(t,x3)

xlabel(‘Time (seconds)’)

ylabel(‘Velocity (rad/s)’)

title(‘Stairstep Response: with Modified PID controller’)

 

Şekil 34. Ayrık zamandaki sistemin yeniden düzenlenmiş denetleyici ile basamak girişe cevabı

 

Tasarımımız nihayet kesikli zamanda tüm gereksinimleri sağlayan bir eğri elde etmemizi sağlamıştır.

 

7         SIMULINK ile DENETLEYİCİ TASARIMI

Simulink ile modelleme yaparken aşağıdaki blokları kullanacağız.

Şekil 35. Sistemde kullanılacak temel elemanlar

 

7.1        Simulink ile Modelleme

Bu sistem, rotor ataletine etki eden torkların toplanması ve hız kazandırmak için ivmenin entegre edilmesi ile modellenmek istenmektedir. Yani, Kirchoff’un yasaları armatür devresine uygulanacak. İlk olarak, dönme hızlanmasının integrallerini ve armatür akımının değişim oranını modellemek istiyoruz.
…(8)

…(9)

Simülasyon modelini oluşturmak için Simulink’i ve yeni bir model penceresi açıyoruz. Sonra aşağıda listelenen adımları izlenir.

  • Simulink/Continuous kütüphanesinden Integrator bloğunu ekliyoruz.
  • Aşağıda gösterildiği gibi “d2/dt2 ( )” giriş hattını ve çıkış hattını “d/dt ( )” etiketliyoruz.
  • Bir öncekinin üzerinde başka bir Integrator bloğu yerleştiriyoruz.
  • “D/dt (i)” giriş satırını ve “i” çıkış satırını etiketliyoruz.

Şekil 36. Blok diyagramıyla integral alma işlemi

 

Denklemler tekrar hatırlanacak olursa;

…(10)

 …(11)

Açısal hızlanma 1/J’ye eşittir, iki terim (bir pozitif, bir negatif) toplamı ile çarpılır. Benzer şekilde, akımın türevi 1/L’ye eşittir, üç terim (bir pozitif, iki negatif) toplamı ile çarpılır. Simulink’teki denklemleri modellemeye devam etmek için aşağıdaki adımlar izlenir.

  • Simulink/Matematik Operasyonları kütüphanesinden iki Kazanç bloğu ekleyoruz, bunlardan biri Integratorlerin her birine eklenir.
  • Açısal hızlanmaya karşılık gelen kazanç bloğunu üzerine çift tıklayarak ve değerini “1/J” olarak değiştirerek düzenliyoruz.
  • Bloğun altındaki “kazanç” kelimesine tıklayarak “Atalet” bloğunu elde ediyoruz.
  • Benzer şekilde, diğer kazanç değerini “1/L” ve etiketini “Endüktans” olarak düzenliyoruz.
  • Kazanç bloklarının her birine ekli olan Simulink/Matematik Operasyonları kütüphanesinden iki toplama bloğu ekliyoruz.
  • Bir terim pozitif ve bir negatif olduğundan, “+ -” ye karşılık gelen toplama bloğunun sembollerini düzenleyeceğiz.

Elektrik denklemindeki işaretleri temsil etmek için diğer toplama bloğunun işaretlerini “- + -” olarak düzenleyin.

Şekil 37. Denklemlerin kurulma aşaması

 

Şimdi, dönel denklemde temsil edilen torkları eklemek istiyoruz. İlk olarak, sönümleme torkunu eklemek istiyoruz.

  • “Atalet” bloğunun altına bir Kazanç bloğu yerleştiriyoruz. Sonraki bloğa sağ tıklayıp ve Rotate & Flip > Flip Block bloğu çevir seçeneğini seçiyoruz. Ctrl-I tuşu basılı tutularak seçilen bir bloğu değiştirilebilir.
  • Kazanç değerini “b” olarak ayarlayıp bu bloğu “Sönümleme” olarak yeniden adlandırıyoruz.
  • Dönen Integrator’ün çıkışından bir çizgiye dokunup (çizerken veya sağa tıklayarak Ctrl tuşunu basılı tutarak) ve “Sönümleme” bloğunun girişine bağlıyoruz.
  • “Sönümleme” bloğu çıktısından döndürme toplama bloğunun negatif girişine bir çizgi çizip ardından, torku armatürden eklemek istiyoruz.
  • Bir satır ile dönel toplama bloğunun pozitif girişine bağlı bir kazanç bloğu yerleştirin.
  • Motor sabitini göstermek ve “Kt” olarak etiketlemek için değerini “K” olarak düzenliyoruz.
  • Çizgiyi mevcut Integrator’den çekmeye devam edip ve “Kt” bloğuna bağlıyoruz.

Şimdi, elektrik denkleminde temsil edilen voltaj terimlerini ekleyeceğiz. İlk olarak, armatür direncindeki voltaj düşüşünü eklemek istiyoruz.

  • Soldan sağa “Endüktans”’ın üzerine bir kazanç bloğu yerleştiriyoruz.
  • Kazanç değerini “R” olarak ayarlayıp bu bloğu “Direnç” olarak yeniden adlandırıyoruz.
  • Mevcut Integrator’ün çıkışına bir çizgi çekip ve “Direnç” bloğunun girişine bağlıyoruz.
  • “Direnç” bloğunun çıkışından mevcut denklem ekleme bloğunun üst negatif girişine bir çizgi çizip motordan emk eklemek istiyoruz.
  • Mevcut toplama bloğunun diğer negatif girişine bir çizgi eklenmiş bir Kazanç bloğu yerleştiriyoruz.
  • Motor ters emk sabitini temsil etmek ve “Ke” olarak etiketlemek için bu değeri “K” olarak düzenleyeceğiz.
  • Dönel Integrator’ün çıkışına bir çizgi çekerek “Ke” bloğuna bağlayacağız.
  • Simulink/Ports & Subsystems kütüphanesinden In1 ve Out1 bloklarını ekleyip bunları sırasıyla “Voltage” ve “Speed” olarak etiketliyoruz.

Son tasarım aşağıdaki şekilde gösterilen örnek gibi görünmelidir.

Şekil 38. Sistem modelinin Simulimk ile kurulması

 

Ekstraksiyonu gerçekleştirmek için, model penceresinin en üstündeki menülerden Analysis > Control Design > Linear Analysis seçeneğini seçiyoruz. Bu, Linear Analysis Tool açılmasını sağlar. Basamak cevabı ile tanımlanan Step düğmesine tıklıyoruz. Bu doğrusallaştırmanın sonucu, aşağıda gösterildiği gibi Linear Analysis Workspace görünen linsys1 nesnesidir. Ayrıca, doğrusallaştırılmış sistemin açık döngü basamak cevabı otomatik olarak üretilecektir.

Şekil 39. Doğrusallaştırılmış sistemin açık döngü basamak cevabı

 

Simulink modelinin yalnızca doğrusal bileşenleri kullanır. Bu işlemin, doğrusal olmayan elemanlara sahip modellerin doğrusal yaklaşımlarını ayıklamak için de kullanılabileceğini unutmayın.

Modelin kendisine bakarak model çıkarımını daha fazla doğrulamak istiyoruz. Doğrusallaştırılmış model, sadece nesnenin MATLAB Workspace‘e sürüklenmesiyle taşınabilir. Bu nesne, MATLAB komut satırından doğrudan oluşturulan bir nesne ile aynı şekilde MATLAB içinde kullanılabilir. Özellikle, MATLAB komut penceresinde zpk(linsys1) komutunu girmek, modelin aşağıdaki formata sahip olduğunu gösterir.
…(12)

Bu, aşağıda verilen MATLAB komutlarını m dosyasına yazılarak görülebilir.

s = tf(‘s’);

P_motor = K/((J*s+b)*(L*s+R)+K^2);

zpk(P_motor)

 

7.2        Simulink ile Sistemin Açık Döngü Cevabı

Açık döngü basamak cevabı, MATLAB çalışma alanına herhangi bir model çıkarmadan doğrudan Simulink içinde üretilebilir. Basamak cevabını simüle etmek için, önce simülasyonun ayrıntıları ayarlanmalıdır. Bu, Simulation menüsünden Model Configuration Parameters seçilerek elde edilebilir. Ortaya çıkan menüde, simülasyonun Stop time alanında çalışacağı uzunluğu belirliyoruz. Zamanı “3” saniye olarak girmek istiyoruz, çünkü basamak cevabının kararlı duruma ulaşması için yeterince uzun olacaktır. Bu pencerede, sayısal çözücünün farklı yönleri belirtilebilir, ancak sadece bu örnek için varsayılan değerleri kullanmak istiyoruz.

Daha sonra bir giriş sinyali ve simülasyonumuzun çıkışını görüntülemek için bir araç eklememiz gerekiyor. Bu, aşağıdakileri yaparak yapılır:

  • In1 ve Out1 bloklarını kaldırıyoruz.
  • Simulink/Sources kütüphanesinden bir Step bloğu yerleştirip ve motor alt sisteminin voltaj girişine bağlıyoruz.
  • Hız çıkışını görüntülemek için Simulink/Sinks kütüphanesinden bir Scope takıp bunu motor alt sisteminin Speed ​​çıkışına bağlıyoruz.
  • T = 0’da uygun basamak girişi sağlamak için, basamak bloğunu çift tıklayıp Step time “0” olarak ayarlıyoruz.

Son model aşağıdaki şekilde gösterildiği gibi görünmelidir.

Şekil 40. Simulink modelin alt sistem haline dönüştürülmesi

 

Şekil 38’deki sistemi kapalı bir forma dönüştürmek için Şekil 40’daki gibi alt sistem olarak değiştiriyoruz.

 

Şekil 41. Açık döngü sistemin basamak girişe cevabı;

 

7.3        Sisteme Lag ve Lead Kompansatör Eklenmesi

Lag kompansatör için aşağıdaki gibi bir ayarlama tercih edilmiştir.

…(13)

Lag kompansatörünü alt sisteme seri olarak koymak ve istenen referansla karşılaştırmak için motorun hızını geri beslemek istiyoruz.

Daha spesifik olarak, aşağıda verilen adımları izleyeceğiz:

  • Modelin giriş ve çıkış portlarını çıkartıyoruz.
  • Simulink/Math Operations kitaplığından bir toplama bloğu ekleyip ardından, bloğa çift tıklıyoruz ve “+ -” ifadesini giriyoruz.
  • Simulink/Continuous kütüphanesinden bir Transfer Fonksiyonu bloğu yerleştirip daha sonra Numerator coefficients alanını “[44 44]” ve Denominator coefficients alanına “[1 0,01]” şeklinde giriyoruz.
  • Simulink/Sources kütüphanesinden bir Step bloğu ekleyip daha sonra bloğa çift tıklayıp Step time “0” olarak ayarlıyoruz.
  • Simulink/Sinks kütüphanesinden bir Scope bloğu yerleştiriyoruz.

Aynı adımları lead kompansatör için de gerçekleştirdik ve sonra aşağıdaki şekilde gösterildiği gibi bileşenleri bağlayıp isimlendirdik.

Şekil 42. Lag ve Lead kompansatör eklenmiş sistemlerin simulink diyagramı

 

Simülasyonu yürütmek ve scope tarafından üretilen çıktıyı gözlemlemek, her iki cevabın da sıfıra yaklaşan sabit bir hataya sahip olduğunu göreceksiniz. Grafikler üzerinde yakınlaştırma yaparak, aşağıda gösterilen şekle benzer bir şekil üretebilirsiniz. İki grafiğin karşılaştırılmasında, lead kompansatörlü sisteme ait mavi cevap, lag kompansatörlü sistem tarafından üretilen sarı cevaba kıyasla çok daha küçük bir oturma süresine ve biraz daha büyük, ancak benzer şekilde aşma oranına sahiptir.

Şekil 43. Simulasyonun grafiği

 

Sonuç olarak “Lag” kompansatör “Lead” kompansatöre göre daha yavaş cevap vermiştir.

Daha sonra simülasyon durdurma süresini 1 saniye olarak değiştirip modeli çalıştıralım. MATLAB çalışma alanı, modelinizdeki değişken çalışma alanı blokları ile değişken dizilime karşılık gelen bir dizidir. Ayrıca, zaman varsayılan değişken tout kullanılır. Artık simülasyonumuzun sonuçlarını çalışma alanından çizebiliriz. Kontrol çabası değişkenlerinin nasıl çizileceğini görmek için aşağıdaki kodu m dosyasına yazıyoruz.

subplot(2,1,1)plot(tout,ulag);xlabel(‘time (seconds)’)ylabel(‘control effort (volts)’)title(‘Control Effort Under Lag Compensation’)subplot(2,1,2)plot(tout,ulead);xlabel(‘time (seconds)’)ylabel(‘control effort (volts)’)title(‘Control Effort Under Lead Compensation’)

Şekil 44. Lag ve lead kompansatörün sistemi kontrol etmek için harcadıkları çaba (Volt olarak)

 

Yukarıdaki sonuçların incelenmesi, lead kompansatörünün gerektirdiği kontrol çabalarının, tipik bir DC motor için yaklaşık 150,000 volttan daha yüksek olduğunu göstermektedir. Sonuç olarak “Lag” kompansatör “Lead” kompansatöre göre daha yavaş cevap vermiştir. Öte yandan “Lead” kompansatör bu etkiyi sağlayabilmek için daha fazla enerji tüketir. Bu bilgilerden yola çıkarak eğer sistem gereksinimleri karşılanıyorsa “Lag” kullanmak enerji tasarrufu açısından önemlidir.

 

8         SIMSCAPE ile KONTROLCÜ TASARIMI

Simscape ile denetleyici tasarımı için Simscape kütüphanesinden gerekli devre elemanlarını simulink sayfamıza ekliyoruz. Bu elemanları Şekil 45’teki gibi birleştirerek DC motorumuzu oluşturuyoruz. Ardından DC motoru alt sisteme dönüştürüyoruz.

Şekil 45. DC motorun Simscape modelinin kurulması

 

Şekil 46. DC motor modelinin alt sisteme dönüştürülmesi

 

Şekil 47. Sistemin açık döngü cevabını elde etmek için Simscape modelin tamamlanması

 

Şekil 48. Simscape modelin alt sisteme dönüştürülmesi

 

Sistemin davranışını gözlemleyebilmek için sisteme bir “Step” giriş ve “Scope” ekliyoruz (Şekil 48). Scope üzerinden elde edilen grafiklerde konum “mavi”, akım “sarı”  ve hız “kırmızı” renk ile temsil edilmiştir.

Şekil 49. Açık döngü Simscape modelin basamak girişe cevabı

 

Sistemi kapalı döngü haline getirmek için giriş kısmına bir toplama elemanı ekleyerek buraya kontrol etmek istediğimiz hızdan bir geri besleme yapıyoruz.

Şekil 50. Kapalı döngü Simscape modeli

 

Şekil 51. Kapalı döngü Simscape modelin basamak girişe cevabı

 

Sistemi lag kompansatör ile denetlemek için toplama noktasından sonra bir transfer fonksiyonu tanımlayarak buraya daha önce simulink ile elde ettiğimiz lag değerlerini yazıyoruz.

Şekil 52. Lag kompansatörlü kapalı döngü Simscape modeli

 

Şekil 53. Lag kompansatörlü kapalı döngü Simscape modelin basamak girişe cevabı

 



Sonuç olarak elde edilen grafikler simulink ve m-file ile aynıdır.

Kaynak: http://ctms.engin.umich.edu/CTMS/index.php?example=MotorSpeed&section=SystemModeling

Muhammed Kofoğlu
Muhammed Kofoğlu

Ben Makine Mühendisi Muhammed KOFOĞLU. 1994 yılında Orhangazi’de doğdum. Aslen Trabzon/Çaykaralıyım. İlk ve orta okul eğitimimi Örnekköy ilköğretim okulunda tamamladım. Sonrasında Orhangazi Çok Programlı Lisesini bitirdim. 2012 yılında ara vermeden Karadeniz Teknik Üniversitesi Mühendislik Fakültesi Makine Bölümüne başladım. 4 yıl sonra üniversiteden bölüm üçüncüsü olarak mezun oldum. Bir yıl ara verdikten sonra Uludağ Üniversitesi Mühendislik Fakültesi Makine Bölümü Yüksek Lisans programını kazandım. Halen yüksek lisans öğrencisiyim. En büyük tutkum araştırma yapmaktır. Hobilerim ise şiir yazmak, doğa yürüyüşü yapmak,…vs. Yaptığım tek spor masa tenisidir.

3 Yorum

918kiss login Yayın tarihi5:52 pm - Tem 30, 2018

It has been a very beautiful article

    Muhammed Kofoğlu
    Muhammed Kofoğlu Yayın tarihi10:39 pm - Tem 31, 2018

    Thank you

Mireya Yayın tarihi9:09 pm - Tem 31, 2018

Very good info. Lucky me I recently found your site by accident (stumbleupon).
I’ve saved as a favorite for later!