MODELOWANIE UKŁADU NAPĘDOWEGO Z UWZGLĘDNIENIEM

Transkrypt

MODELOWANIE UKŁADU NAPĘDOWEGO Z UWZGLĘDNIENIEM
Nr 62
Prace Naukowe Instytutu Maszyn, Napędów i Pomiarów Elektrycznych
Politechniki Wrocławskiej
Nr 62
Studia i Materiały
Nr 28
2008
maszyny asynchroniczne
modelowanie, diagnostyka
Adam SOŁBUT*
MODELOWANIE UKŁADU NAPĘDOWEGO
Z UWZGLĘDNIENIEM WYBRANYCH USZKODZEŃ
SILNIKA KLATKOWEGO
Niniejszy artykuł jest prezentacją metody modelowania numerycznego układu napędowego
uwzględniającego algorytmy sterowania w układzie ze sprzężeniami zwrotnymi z jednoczesnym modelowaniem uszkodzeń silnika. Budowa prezentowanej aplikacji opiera się na wykorzystaniu technik programowania obiektowego z wykorzystaniem oryginalnej biblioteki klas. Dzięki wykorzystaniu języka
C++ prezentowane metody umożliwiają testowanie algorytmów używanych bezpośrednio do programowania procesorów sterujących pracą falownika. Prezentowane rozwiązania poparto wynikami modelowania numerycznego układu napędowego sterowanego metodą orientacji wektora pola (FOC).
1. WSTĘP
Algorytmy sterowania współczesnych napędów z maszynami asynchronicznymi
opierają się zwykle na wykorzystaniu modeli matematycznych maszyn. Często wykorzystują pomiary prądów i prędkości obrotowej pracując w zamkniętym układzie regulacji automatycznej. Sprawdzenie zachowania się takiego układu w sytuacji awarii
maszyny asynchronicznej jest ważnym zagadnienie praktycznym. Modelowanie takie
niezbędne jest zarówno do budowy algorytmów sterowania, które nie tracą swoich
właściwości dynamicznych w sytuacji wystąpienia awarii silnika, jak i do opracowania i testowania algorytmów wykrywających uszkodzenia. Proponowana budowa
aplikacji symulacyjnych opiera się na wykorzystaniu technik programowania obiektowego dając możliwość stosunkowo łatwego i szybkiego tworzenia programu. Dzięki
wykorzystaniu języka C++ prezentowane metody umożliwiają testowanie algorytmów
używanych bezpośrednio do programowania procesorów sterujących pracą falownika.
__________
* Politechnika Białostocka, Wiejska 45d, 15-351 Białystok, [email protected]
438
2. OPIS MUDUŁU SYMULACYJNEGO
Struktura modułu symulacyjnego [4] wynika z przyjętych założeń:
– procedury numerycznego rozwiązywania równań są niedostępne dla użytkownika,
– równania stanu, jako niezbędne do modelowania, mają być zapisywane w postaci
zbliżonej do notacji matematycznej, łącznie z możliwością zapisu macierzowego,
– musi być możliwość niezależnego opisu równań stanu silnika i układów sterujących,
– analiza wyników modelowania musi być dostępna dla niezależnego programu
(Anagraf_win), z możliwością podglądu wybranych zmiennych w czasie wykonywania symulacji.
Założenia powyższe doprowadziły do obiektowej budowy narzędzi wspomagających tworzenie programów symulacyjnych. Budowa aplikacji opiera się na zestawie
kilku klas języka C++, nazwanych modułem symulacyjnym. W jego składzie występuje klasa ZMIENNA_STANU. Obiekty tej klasy przechowują informacje niezbędne
do numerycznego rozwiązywania równań różniczkowych. Klasa ta została wyposażona w przeciążone operatory matematyczne, dzięki czemu zapis równań stanu jest zbliżony do notacji matematycznej. W celu ułatwienia korzystania z wyników modelowania obiekty tej klasy przechowują także nazwę zmiennej. Zapisu równań stanu można
dokonać także na bazie dowolnych innych klas. Jedynym wymogiem jest istnienie
wewnątrz wykorzystywanych obiektów zmiennej typu zmiennoprzecinkowego. Wygodne jest użycie klasy MATRIX_AS, której obiekty są macierzami.
Równania stanu można zapisać w postaci zbliżonej do notacji matematycznej.
W prezentowanym przypadku zapis równań stanu silnika asynchronicznego
w naturalnym układzie odniesienia [2] przyjmuje postać:
dI=1/L*(U–(R+dL*pulsacja)*I);
mom=(!I)*dL*I*0.5;
pulsacja^=(Me–Mo)/J;
kat^=pulsacja;
gdzie:
pulsacja – wartość chwilowa prędkości wirnika
kat – kąt obrotu wirnika
Me – moment elektromagnetyczny silnika
Mo – moment obciążenia
J – moment bezwładności
I – macierz prądów silnika
L – macierz indukcyjności silnika
R – macierz rezystancji silnika
dI – macierz pochodnych prądu
dL – macierz pochodnych indukcyjności względem kąta położenia wirnika
439
Konstruktor klasy ZMIENNA_STANU zapisuje informacje związane z tym obiektem w kolekcji StateVect typu vector [1]. Kolekcja ta umieszczona jest jako obiekt
statyczny klasy TModel. W klasie tej ukryte są procedury numerycznego rozwiązywania równań różniczkowych, procedury zapisu wyników modelowania do pliku, konfiguracja procesu symulacji itp. Rozwiązanie takie ułatwia budowę modelu symulacyjnego. Użytkownik opisywanej biblioteki nie musi w jawny sposób wpisywać swoich
zmiennych do kolekcji – robi to za niego konstruktor klasy ZMIENNA_STANU. Dla
ułatwienia analiz wyników modelowania należy w jawny sposób podać jedynie nazwę
zmiennej stanu i ewentualnie jej wartość początkową.
Do pliku wynikowego są zapisywanie nie tylko wartości zmiennych stanu w kolejnych krokach obliczeń, lecz także inne wielkości tzw. zmienne wyjściowe. W bibliotece stworzono klasę ZMIENNA, której obiekty zachowują się podobnie jak obiekty
typ ZMIENNA_STANU, lecz ich adresy i nazwy przechowuje kolekcja VarVect. Wykorzystanie biblioteki polega na przygotowaniu procedury obliczającej pochodne
zmiennych stanu poprzez wykorzystanie wymienionych wyżej klas. Procedura ta powinna być przygotowana w klasie dziedziczącej klasę TModel.
virtual void Eq()=0;
Metoda tak zadeklarowana powoduje, że użycie klasy TModel możliwe jest jedynie wówczas, gdy w klasie pochodnej taka funkcja zostanie zdefiniowana (klasa abstrakcyjna).
Poza deklaracją metody Eq() niezbędne jest podanie informacji związanych z wyborem metody całkowania numerycznego oraz czasu zakończenia modelowania:
Set_Method(int metoda);
Set_Max_time(double time)
Rozpoczęcie symulacji polega na uruchomieniu procedury:
Symul_to();
Klasa zawiera wiele różnych metod przydatnych do budowy rozbudowanych aplikacji symulacyjnych. Możliwe jest np. ustawienie procesu modelowania dokładnie
w wyznaczonym czasie lub w przypadku osiągnięcia przez wybrane zmienne stanu
określonej wartości. Rozwiązania takie są wygodne do modelowania obiektów nieliniowych.
Ważnym składnikiem modułu jest procedura wirtualna Interrupt_dt(). Procedura ta
umożliwia szybkie przygotowanie aplikacji symulacyjnej modelującej sterowanie
z wykorzystaniem procesorów. Standardowym sposobem budowy programów sterujących pracą urządzeń z poziomu różnych procesorów jest wykorzystanie przerwań zegarowych. Co stały okres czasu następuje wykonywanie procedury polegającej na
odczycie przetworników wejściowych, wykonanie algorytmu i wyprowadzenie sygnałów na układy wyjściowe. Procedura wirtualna Interrupt_dt() wywoływana jest przed
moduł dokładnie w czasie wyznaczonym przez okres podawany przed rozpoczęciem
modelowania procedurą Set_dt(double t);
440
2. MODELOWANIE NUMERYCZNE USZKODZEŃ KLAKI WIRNIKA
Zastosowanie do modelowania maszyny asynchronicznej równań w naturalnym
układzie odniesienia powoduje, że stosunkowo łatwe jest zamodelowanie np. pęknięć
prętów lub pierścieni zwierających klatki wirnika. Możliwe jest to poprzez zmianę
wartości rezystancji w macierzy wykorzystywanej do obliczeń. Zastosowany moduł
symulacyjny daje możliwość bezpośredniego wykorzystania kodu sterującego pracą
falowników. W opisywanym przypadku wykorzystano procedury sterowania metodą
orientacji wektora pola (rys.1). Kod źródłowy wykorzystany w procedurach symulacyjnych jest kodem bezpośrednio skopiowanym z programu sterowania wykorzystywanego w stanowisku laboratoryjnym [6].
Rys. 1. Układ sterowania DFOC z liniowymi regulatorami prądu w każdej fazie
Fig. 1. DFOC control method with linear current controllers in the natural coordinates system
Na rys. 2 przedstawiono wartość skuteczną ruchomą [5] wektora prądu stojana
w przypadku następujących po sobie pęknięć prętów klatki wirnika. Widoczne są tu
pulsacje tej wielkości występujące w stanie awaryjnym. Wartym podkreślenia jest
fakt wykonywania obliczeń wartości skutecznej ruchomej w kodzie obiektowym wykorzystywanym do badań diagnostycznych wykorzystujących procesor sygnałowy
SHARK 21065 firmy Analog Devices. Metody diagnostyki związane z sygnałem wartości skutecznej ruchomej prezentowane w [5] wykazały przydatność ich użycia
w diagnostyce silnika zasilanego z falowników sterowanych prostymi metodami
w układzie otwartym (bez sprzężeń zwrotnych). Prezentowany przypadek pokazuje,
że możliwe jest wykorzystanie tego sygnału także w przypadku wykorzystania sprzężeń zwrotnych. W algorytmie DFOC wykorzystano m.in. regulatory strumienia typu PI. Cechą takiego rozwiązania jest zanikanie uchybu w stanie ustalonym. Stan taki
występuje jedynie w przypadku pracy z silnikiem bez uszkodzeń. Uszkodzenia klatki
441
wirnika powodują, że w uchybie strumienia pojawiają się oscylacje (rys. 3) wynikające z awarii maszyny. Jest to wynikiem stosowania do estymacji strumienia mechanizmów opartych na liniowym modelu matematycznym silnika.
Rys. 2. Układ Wartość skuteczna ruchoma prądu fazowego stojana
Fig. 2. Moving RMS stator phase current waveform
Rys. 3. Przebieg uchybu strumienia wirnika
Fig. 3. Rotor flux deviation waveform
442
2. ZAKOŃCZENIE
Przedstawiona w pracy metoda tworzenia programów symulacyjnych jest sposobem wygodnego i szybkiego przygotowywania aplikacji umożliwiającej modelowanie
układu napędowego z uwzględnieniem uszkodzeń maszyny asynchronicznej. Dzięki
wykorzystaniu technik programowania obiektowego w języku C++, możliwe jest niezależne przygotowanie modelu maszyny, `algorytmów sterujących i diagnostycznych.
Uwzględnienie innych typów awarii wymaga jedynie zmian procedur obliczających
wartości poszczególnych macierzy [3] występujących w równaniach stanu. Zmiany
algorytmów sterowania można dokonać bez zmian kodu dotyczącego modelu silnika.
Proponowane rozwiązanie jest narzędziem umożliwiającym badanie wpływu uszkodzeń na pracę układów napędowych. Możliwe jest także modelowanie algorytmów
tolerujących awarie jak i algorytmów diagnostycznych pracujących w czasie normalnej eksploatacji.
LITERATURA
[1] DATTATRI K., Język C++. Efektywne programowanie obiektowe, Helion, Gliwice 2005.
[2] DIDIER G., RAZIK H., ABED A., On Space Harmonic Model Of A Three Squirrel Cage Induction
Motor For Diagnosis Purpose, EPE-PEMC, Dubrownik & Cavtat, 2002.
[3] SOBCZYK T.J. Metodyczne aspekty modelowania matematycznego maszyn indukcyjnych,. WNT,
Warszawa 2004
[4] SOŁBUT A., Modeling of electromechanical converters using object oriented programming techniques, XV International Symposium Micromachines & Servosystems, Białowieża – Soplicowo
2006, s. 164–169.
[5] SOŁBUT A., Możliwości automatycznej oceny stanu układu napędowego z maszyną asynchroniczną,
Diagnostyka nr 35 (2005), s. 13–16.
[6] SOŁBUT T., Stanowisko laboratoryjne z mikroprocesorem ADSP21061 do badania właściwości
metody sterowania FOC w falowniku napędowym, Praca dyplomowa magisterska, Politechnika Białostocka, Białystok 2007.
MOTOR DRIVE MODELING INCLUDING CHOSEN
SQUIRREL-CAGE MOTOR DAMAGES
Numerical modeling of a motor drive controlled with well known control method, with simultaneous motor
damages is presented in the paper. Presented application is based on object programming techniques, using
original class library. Owing to C++ language usage, built methods enable testing of some algorithms that
can be directly used in a processor for controlling an inverter. Presented solutions are by the results of numerical modeling of a motor drive controlled with the field-oriented control (FOC) method.
Artykuł został opracowany w ramach pracy własnej W/WE/7/06