Altair Compose – Altair PSIM Entegrasyonu Başlangıç Kılavuzu 1: PsimSimulate

Altair PSIM, güç elektroniği, motor sürücüleri ve güç dönüştürme sistemleri için bir simülasyon ve tasarım yazılımıdır. Altair Compose, matematik hesaplamaları yapmak, verileri işlemek, iş akışlarını otomatikleştirmek ve çok daha fazlası için matris tabanlı ileri seviye nümeri hesaplama dili (OML- Open Matrix Language) ve ortamıdır.

Altair Compose’da 2022.3‘ten itibaren yeni ve güçlü bir kütüphane olan PSIM Integration kütüphanesi yayınlanmıştır. Bu kütüphane, simülasyonları toplu modda (batch) çalıştırmak, daha fazla kullanım için sonuçları çıkarmak, işlemek ve yazmak ve genel olarak PSIM’deki tasarım ve simülasyon görevlerinde zamandan ve emekten tasarruf etmek için her iki aracı entegre eden iş akışlarını sorunsuz bir şekilde oluşturmaya olanak tanır.

Bu yazı dizisinde, yeni eklenen özellikleri kısaca inceleyeceğiz, böylece bir PSIM kullanıcısıysanız Altair Compose‘dan nasıl yararlanacağınız konusunda bir başlangıç yapabilirsiniz veya tam tersi. Takip etmek için bilgisayarınızda Compose ve PSIM‘in (her ikisi de v2022.3) kurulu olması yeterlidir. ( Her iki yazılımı ek ücret ödemeden aynı lisansla kullanabilirsiniz. Patentli Altair UNIT lisans sistemi hakkında ayrıntılı bilgiyi burada bulabilirsiniz.)

PSIM Şeması

Kullanacağımız PSIM Şematik dosyası (.psimsch) basit bir buck dönüştürücüdür: Güç elektroniğinde çok yaygın olan bir DC – DC dönüştürücü. Bir yüke uygulanan voltajı girişine göre düşürürken akımı artırır.

Simülasyon 2 milisaniye boyunca çalışır ve üretilen sonuçlar;
I(L): İndüktörden geçen akım,
I(R): Dirençten geçen akım ve
Vout: Gerilim probundaki gerilim.
Devrede tanımlanabilecek parametreler;
Vin: Giriş gerilimi,
C: Kapasitans,
L: İndüktans,
R: Yük direnci ve
Fsw: MOSFET için anahtarlama frekansı.
Bu yazı dizisi boyunca bu model ile çalışacağız.

PsimSimulate

Bu kütüphanedeki en temel fonksiyonla başlayalım: PsimSimulate. Bu komut, verilen parametrelerle tek bir simülasyon çalıştırır ve sonuç grafiğini döndürür. Aşağıdaki şekilde kullanılabilir:

İlk olarak, çalıştırmak istediğimiz PSIM şematik dosyasına (yani devre modeline) giden dosya yolunu tanımlarız. Simülasyonun nasıl çalıştırılacağını tanımlamanın yolu, üç alan içeren bir yapı (bu durumda input_var olarak adlandırılır) tanımlamaktır: FilePath: Kullanılacak şematik dosya, GraphFilePath: Sonuç çıktısının adı ve konumu ve Parameters: Simülasyonun çalıştırılacağı parametreler. Bu noktada tanımlayacağımız tek şey simüle etmek istediğimiz modeldir.

Ayrıca daha sonra dahil etmek üzere bazı sabit parametreler ve birkaç çalıştırma boyunca değiştireceğimiz bir dizi değer (linspace ile) tanımlayalım. Ayrıca, yürütme başka bir komuta ulaşana kadar geçen süreyi ölçmek için dahili bir saat ayarlayan tic komutuna da dikkat edin: toc (bunu daha sonra kullanacağız). Birkaç simülasyon sonucunu çizeceğimiz için, bir şekil oluşturalım ve hold, grid ve legend seçeneklerini açalım ve eksen etiketlerini ayarlayalım.

close all, clear, clc

% Start measuring time elapsed running script
tic;

% Define input .psimsch file
input_var.FilePath = '..\buck.psimsch';
% Fixed parameters
C = 50e-6;
Fsw = 200e3;
R = 2.5;
Vin = 120;

% Design parameter
Lspace = linspace(50e-6, 200e-6, 10);

% Create figure & format
figure; hold on, grid on, legend on
xlabel('Time [ms]');
ylabel('Output Voltage [V]');

Bu modelin birkaç simülasyonunu çalıştırmanın basit bir yolu, diğer her şeyi aynı tutarak L‘nin tüm endüktans değerleri üzerinde yineleyebileceğimiz bir for döngüsü kullanmaktır. Bu noktada, çıktı dosyası GraphFilePath‘i ve sprintf kullanılarak biçimlendirilmiş bir dize olarak tanımlanan kullanılacak parametreleri bildirebiliriz.

% Run simulation with each value of L
for i = 1:numel(Lspace)
        L = Lspace(i);

      % Define output .smv graph file
      input_var.GraphFilePath = sprintf('.\\Results\\buck_L_%1.2g.smv', L);

      % Create parameters text for simulation
      parametersTxt = sprintf('L = %e\nC = %e\nFsw = %e\nR = %e\nVin = %e', L, C, Fsw, R, Vin);
      input_var.Parameters = parametersTxt;

Artık PsimSimulate ile simülasyonu çalıştırmaya hazırız, gerekli tek girdi daha önce kurduğumuz input_var yapısıdır ve çıktı (simResults), sonuçlar (.smv) dosyasına yazılan tüm sinyalleri içeren bir yapıdır. Bu sonuçlar Graph alanı ve her bir öğesine küme parantezleri { } kullanılarak erişilmesi gereken bir hücre dizisi olan Values alt alanı altında yer alır.

% Run PSIM simulation
simResults = PsimSimulate(input_var);

% Extract graph results
t = simResults.Graph.Values{1};
IL = simResults.Graph.Values{2};
IR = simResults.Graph.Values{3};
Vout = simResults.Graph.Values{4};

Son olarak, L parametresinin yanıtı nasıl etkilediğini görselleştirebilmek için tüm sonuçları tek bir grafikte üst üste bindirelim. toc çağrısı, tüm bu simülasyonları kurmak ve çalıştırmak için geçen süreyi döndürür. Bir sonraki yazıda önemli hale gelecektir, şimdilik sadece tüm bunların ne kadar sürdüğü hakkında bir fikir edinin. Bu örnek için 0,966 saniye sürdü.

      % Plot & set legend with L value
      lineHandle = plot(t,Vout);
      leg = sprintf('L = %1.2e', L);
      set(lineHandle, 'displayname', leg);

end

toc

Sonuçlara bir göz atalım:

Bu grafikten, daha yüksek bir endüktansın daha yüksek bir yerleşme süresi pahasına daha az aşma ile sonuçlandığını görebiliriz. Bunu kendi şemalarınızda kullanın ve tüm bu simülasyonları eşzamanlı olarak nasıl çalıştıracağınızı öğrenmek için bir sonraki yazımızla devam edin!

Altair PSIM ve Altair Compose yazılımlarını Altair ONE Marketplace‘den indirerek deneyebilirsiniz. Öğrenciler için ücretsiz eksiksiz versiyonu buradan indirebilirsiniz.