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