Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[Teoria sterowania] Model matematyczny silnika PMSM w Matlab Simulink

26 Mar 2018 20:06 1530 2
  • Poziom 2  
    Witam!

    jestem w trakcie implementacji modelu silnika PMSM w pakiecie Simulink jako bloku FCN. Udało mi się uzyskać odpowiedni model za pomocą samych bloków simulinkowych (Rys1) i chciałbym otrzymać takie same odpowiedzi prądów id i iq za pomocą równań różnicowych.
    [Teoria sterowania] Model matematyczny silnika PMSM w Matlab Simulink
    Rys1

    Równania silnika z których korzystam
    $$
    \frac{di_d}{dt} = - \frac{R_s}{L_d} i_d + p\omega_r\frac{L_q}{L_d} i_q + \frac{u_d}{L_d}
    $$$$
    \frac{di_q}{dt} = - \frac{R_s}{L_q} i_q- p\omega_r(\frac{L_d}{L_q} i_d + \frac{\psi_f}{L_q}) + \frac{u_q}{L_q}
    $$$$
    \frac{d\omega_r}{dt} = \frac{3p}{2J}(\psi_fi_q+(L_d - L_q)i_di_q) - \frac{T_l}{J}
    $$
    gdzie:
    id,iq - prądy w osiach d i q,
    Ld, Lq - indukcja uzwojeń,
    ud, uq - napięcia w osiach d i q,
    omega - prędkość kątowa,
    psi - strumień od magnesów,
    p - liczba par biegunów,
    Rs - rezystancja uzwojeń,
    J - moment bezwładności,
    Tl - moment obciążenia.

    Blok Fcn (Rys3) działa w pętli sprzężenia zwrotnego układu regulacji (Rys2) pobierając z niego aktualne wartości prądów, napięć i przyspieszenia.
    [Teoria sterowania] Model matematyczny silnika PMSM w Matlab Simulink
    Rys2
    [Teoria sterowania] Model matematyczny silnika PMSM w Matlab Simulink
    Rys3

    Mój problem polega na tym, że nie wiem jak zaimplementować w równaniach blok integratora. Czy to ma być poprzednia wartość prądu id lub iq?, Czy może w równaniach jako wartości prądów, napięć i przyspieszenia dać wartość poprzedniej próbki?
  • Poziom 10  
    Witam. Na początek powiem, że nie za bardzo zrozumiałem to co napisałeś. Jeśli możesz to opisz to dokładniej, być może uda mi się Tobie pomóc. Kilka miesięcy temu wykonałem kilka modeli silników elektrycznych, w tym także silnik PMSM.

    Na początek kilka pytań:

    wozniak92 napisał:
    Udało mi się uzyskać odpowiedni model za pomocą samych bloków simulinkowych (Rys1)

    To znaczy sam to zrobiłeś czy znalazłeś model jakiegoś gotowca?

    wozniak92 napisał:
    Mój problem polega na tym, że nie wiem jak zaimplementować w równaniach blok integratora.

    Raczej na odwrót. To na podstawie równań robisz model matematyczny silnika. Powinno być raczej: jak na podstawie równań zaimplementować blok integratora. Zgadza się?

    Czy ma to być model silnika z liniową charakterystyką magnesowania? Z równań wynika, że tak. W ogóle to na podstawie tych równań można zrobić model silnika na podobnej zasadzie jak na Twoim pierwszym załączonym obrazku. Nie wiadome będą tylko prądy i prędkość kątowa. Może być pewien problem z zamodelowaniem strumienia, ale może gdzieś w literaturze bądź publikacjach znajdziesz jakiś wzór upraszczający
  • Poziom 2  
    Chciałbym uzyskać przebiegi prądów zbliżone do tych zaimplementowanych za pomocą bloków simulinkowych z Rys1, wykorzystując do tego celu równania( z mojego poprzedniego postu) zapisane w bloku Matlab Function, który działa w pętli sprzężenia zwrotnego układu. Wymuszeniem będzie np zadana prędkość, którą silnik osiągnie po jakimś tam czasie. Potrzebne mi to będzie aby móc w dalszej kolejności zaprojektować obserwator stanu.
    mateusz25109 napisał:
    To znaczy sam to zrobiłeś czy znalazłeś model jakiegoś gotowca?

    Model silnika wykonałem sam, a część układu regulacji pomagał mi zrobić wykładowca (blok odsprzęgania, uproszczony modulator i falownik).

    mateusz25109 napisał:
    Raczej na odwrót. To na podstawie równań robisz model matematyczny silnika. Powinno być raczej: jak na podstawie równań zaimplementować blok integratora. Zgadza się?

    Trochę pokrętnej logiki użyłem, tak zgadza się.

    mateusz25109 napisał:
    Czy ma to być model silnika z liniową charakterystyką magnesowania?

    Tak.

    mateusz25109 napisał:
    Może być pewien problem z zamodelowaniem strumienia, ale może gdzieś w literaturze bądź publikacjach znajdziesz jakiś wzór upraszczający

    Jako strumień ψ przyjmuję stałą wartość 0,075 Wb.

    Postaram się jeszcze dzisiaj dołączyć część kodu, który będzie starał się oddać to co chce uzyskać.

    Dodano po 2 [godziny] 49 [minuty]:

    Co do implementowania bloku integratora (całki) w bloku MATLAB fcn znalazłem taką odp na forum ML:
    Code:

    persistent xhat
    if isempty(xhat)
    xhat = 0;
    end
    ...
    xhat = xhat + xhatdot*dt;


    gdzie xhatdot - wartość "przed" integratorem
    xhat - wartość za integratorem.
    dt - krok integratora.

    Moja próba napisania kodu wygląda następująco:
    Code:
    function [idOut, iqOut] = EKF(idm, iqm, udm, uqm, omegam)
    

    %dane silnika

    Rs = 0.12;
    Ld = 0.9e-3;
    Lq = 1.05e-3;
    Jm = 0.19;
    Yf = 0.075;
    p = 9;
    Tl = 0;

    persistent xhat;
    if isempty (xhat)
    xhat = [0.1; 0.1; 10];
    end
    xhat(1) = (p * xhat(3) * xhat(1) * Lq + udm - Rs*xhat(2)) * 1/Ld; %id
    xhat(2) = (-p * xhat(3) * xhat(2) * Ld - Yf*p*xhat(3)+uqm-Rs*xhat(1))*1/Lq; %iq
    xhat(3) = (3*p)/(2*Jm) * (Yf*xhat(2) + (Ld-Lq)*xhat(1)*xhat(2)) - Tl/Jm; %omega

    % theta = p * omega; %theta

    xhat (1) = xhat(1) + idm;
    xhat (2) = xhat(2) + iqm;
    xhat (3) = xhat(3) + omegam;

    idOut = xhat(1)
    iqOut = xhat(2)

    [Teoria sterowania] Model matematyczny silnika PMSM w Matlab Simulink
    gdzie:
    id_m, iq_m wartości prądów zmierzone na wyjściu z silnika,
    udIN , uqIN wartości napięć zmierzone na wyjściu z regulatorów prądów id i iq,
    omega_m wartość prędkości kątowej zmierzonej na wyjściu z silnika.

    Niestety odpowiedzi układu nie są takie jak oczekiwałem . Jakieś podpowiedzi?