wykorzystanie interfejsu ethernetowego do sterowania silnikiem

Transkrypt

wykorzystanie interfejsu ethernetowego do sterowania silnikiem
mgr inż. Daniel Lewandowski
mgr inż. Grzegorz Lisowski
Instytut Automatyki PŁ
ul. Stefanowskiego 18/22, 90-924 Łódź
[email protected], [email protected]
2006
Poznańskie Warsztaty Telekomunikacyjne
Poznań 7 - 8 grudnia 2006
WYKORZYSTANIE INTERFEJSU ETHERNETOWEGO DO
STEROWANIA SILNIKIEM ASYNCHRONICZNYM W CZASIE
RZECZYWISTYM
Streszczenie: Artykuł przedstawia stworzone w Instytucie Automatyki Politechniki Łódzkiej stanowisko do badań nad algorytmami sterowania silnikiem asynchronicznym z wykorzystaniem interfejsu ethernetowego. Prace były prowadzone w ramach grantu nr 1265/T10/2005/28 “Sterowanie
wybranymi układami elektromechanicznymi przy
wykorzystaniu sieci komputerowych”.
• realizowany moment napędowy
Koncepcja wykorzystania interfejsu ethernetowego została zrealizowana przy okazji budowania stanowiska laboratoryjnego służącego do badania stanów
przejściowych w sterowniku silnika asynchronicznego
przeznaczonego do napędów trakcyjnych.
2.
1.
OPIS STANOWISKA
WPROWADZENIE
W dzisiejszych czasach coraz większe znaczenie
ma zdalne sterowanie procesami przemysłowymi. W
sieciach przemysłowych istnieje wiele rozwiązań protokołów przesyłu danych opartych na sprzętowych liniach RS-485 lub CAN takich jak:
• Modbus
• Profibus
• CANopen
• DeviceNet
Mają one swoje zalety jak np. łatwość implementacji w istniejących sterownikach (Modbus) lub
pewność przesyłania danych (CANopen, DeviceNet).
Żadne z tych rozwiązań nie jest w stanie przesyłać
dane z prędkością większą niż 500 kbit/s. Dlatego coraz częściej producenci sterowników przemysłowych
zwracają się w kierunku protokołów opartych na sieciach ethernetowych. W związku z tym powstała myśl
zbudowania stanowiska badawczego realizującego sterowanie silnikiem asynchronicznym w czasie rzeczywistym z wykorzystaniem protokołu TCP/IP. Zadaniem tego stanowiska jest nie tylko nadrzędne sterowanie, ale również rejestrowanie (wizualizacja) rozmaitych sygnałów związanych z tym procesem, takich
jak:
• prąd i napięcie obwodu pośredniczącego
• prądy i napięcia fazowe silnika
• stany regulatorów procesu sterowania
Elementem wykonawczym jest sterownik napędu, w którym wykorzystano procesor DSP firmy Texas Instruments TMS320F240 wraz z falownikiem napięciowym (3 kW) oraz silnikiem (0.55 kW) wyposażonym w przetwornik impulsowy do pomiaru prędkości obrotowej wału. Ponieważ wyżej wymieniony
procesor jest przeznaczony przede wszystkim do realizacji funkcji napędowych, trudno za jego pomocą jednocześnie sterować napędem oraz obsługiwać
interfejs ethernetowy. Dlatego drugie zadanie zostało zrealizowane przez osobny moduł mikroprocesorowym MMnet01. Do transmisji danych między procesorem DSP, a modułem ethernetowym postanowiono
wykorzystać interfejs szeregowy SPI.
Rysunek 1: Schemat blokowy stanowiska laboratoryjnego
Sterowanie nadrzędne jest realizowane za pomocą komputera PC przy pomocy programu “Satyna”
napisanego przez autorów, który umożliwia sterowanie momentem oraz archiwizację danych przesyłanych
w czasie rzeczywistym ze sterownika. Schemat blokowy stanowiska przedstawiono na rysunku nr (1).
3.
STEROWNIK NAPĘDU
Sterowanie trójfazowego silnika indukcyjnego
oparte jest na algorytmie wektorowym o tak zwanej orientacji wektora prądu stojana - rysunek (2)
(wszystkie zmienne silnika - napięcie i strumień magnetyczny wirnika odniesione są do układu współrzędnych wirującego synchronicznie z wektorem prądu). Sygnałami wyjściowymi układu sterowania są
chwilowe wartości napięć Ua , Ub , Uc realizowane
przez falownik napięciowy w postaci fal PWM. Algorytm wektorowy realizowany jest na podstawie wartości zadanej momentu mieszczącej się w przedziale
(–0.99, 0.99) momentu znamionowego.
3. Przekształcenie zmierzonych wielkości fazowych
prądu na ich reprezentację wektorową.
4. Wyznaczenie, na podstawie sygnału zadanego
(moment), nowego stanu elektromagnetycznego
silnika (moduł wektora prądu oraz jego położenie).
5. Przekształcenie pomierzonego wektora prądu z
układu stacjonarnego do układu wirującego synchronicznie z zadanym wektorem prądu.
6. Wyznaczenie wektora napięcia na podstawie regulatora kompensującego błąd wektora pomierzonego prądu i wektora wyznaczonego w punkcie 4.
7. Przekształcenie wektora napięcia do układu stacjonarnego.
8. Przekształcenie wektora napięcia na wartości
chwilowe PWM w poszczególnych fazach (realizacja tzw. SVPWM ).
9. Realizacja algorytmu stanów magnetycznych silnika takich jak: wyłączenie, praca, wzbudzenie,
odwzbudzenie, opisanych w [3].
10. Przygotowanie do komunikacji z modułem ethernetowym.
Rysunek 2: Reprezentacja wektorowa zmiennych prądu i strumienia w układzie wirującym
Program wykorzystuje ideę stymulatora stanu
opisanego w szerzej w [1], [2] opartego na równaniach
opisujących silnik indukcyjny w układzie biegunowym
(wzory (1) i (2)). Na wyjściu stymulatora otrzymujemy zmienne w postaci pulsacji poślizgu oraz modułu
wektora prądu wykorzystywane do realizacji zadanego momentu.
Tr
d ∗
Ψ = −Ψ∗r + Lm Is∗ cos ϕ∗Ψ
dt r
d ∗
1
1
ϕ = − Lm Is∗ ∗ sin ϕ∗Ψ + Ω∗r
dt Ψ
Tr
Ψr
(1)
(2)
Realizacja fali PWM o częstotliwości 2.5 kHz determinuje wykonywanie algorytmu sterowania wektorowego dokładnie co 400 µs. Działanie algorytmu zostaje zapoczątkowane dokładnie w chwili gdy realizowany jest zerowy wektor napięcia. Jest to związane z
minimalizacją zakłóceń w analogowym torze pomiarowym prądu.
Algorytm wygląda następująco:
1. Pomiar wielkości analogowych.
2. Pomiar prędkości obrotowej oraz wyznaczenie
kąta położenia wału.
Na wykonanie wszystkich kroków algorytmu procesor DSP potrzebuje ok. 100 µs. Pozostały czas może zostać przeznaczony na komunikację szeregową z
modułem ethernetowym. Ze względu na wspomniane
reżimy czasowe sterownik napędu narzuca przedział
czasowy, w trakcie którego można wykonać transmisję
danych. Zezwolenie na transmisję jest sygnalizowane
opadającym zboczem sygnału przerwania zewnętrznego.
4.
MODUŁ ETHERNETOWY
Do stworzenia modułu ethernetowego, pośredniczącego między aplikacją sterującą uruchomioną na
komputerze PC a falownikiem, wykorzystano układ
MMnet01. Moduł ten jest odmianą Ethernut’a [4]
- projektu otwartego oprogramowania mającego na
celu stworzenie referencyjnej platformy sprzętowej i
programowej dla systemów wbudowanych. Wraz z
projektem fizycznego układu dostępny jest również
system operacyjny Nut/OS. System jest dostarczany
w postaci biblioteki i plików nagłówkowych, które są
wykorzystywane w kodzie źródłowym programu użytkownika. W wyniku kompilacji otrzymuje się gotowy
plik, który można wgrać do pamięci flash mikrokontrolera. Programowanie mikroprocesora może się również odbywać z wykorzystaniem interfejsu ethernetowego.
System Nut/OS zawiera implementację stosu
TCP/IP pozwalającą na komunikację za pośrednictwem protokołu TCP, UDP lub z wykorzystaniem
dowolnych ramek ethernetowych. Ostatnia możliwość nie jest jednak zalecana, ze względu na trudne do przewidzenia zachowanie innych elementów sieci ethernetowej (inteligentnych przełączników i ruterów). Użycie z kolei protokołu TCP lub UDP pozwala
na łatwą integrację z aplikacjami użytkownika uruchamianymi na zwykłym komputerze.
Sercem modułu MMnet01 jest 8-bitowy mikrokontroler ATmega128 firmy Atmel. Za komunikację
ethernetową odpowiada układ RTL8019AS, który został przyłączony do mikroprocesora poprzez szynę
adresową i szynę danych. Ponieważ aplikacje korzystające ze stosu TCP/IP wymagają znacznie więcej
pamięci RAM niż posiada mikrokontroler, w module
umieszczono dodatkowe 64 kB zewnętrznej pamięci
RAM.
Pewnym utrudnieniem jest umieszczenie rejestrów układu ethernetowego w innym obszarze pamięci, niż ma to miejsce w referencyjnej platformie.
Wymaga to modyfikacji plików konfiguracyjnych systemu Nut/OS. Poza tym moduł posiada funkcjonalność porównywalną z oryginalnym Ethernut’em.
Dla modułu MMnet01 stworzono z wykorzystaniem systemu Nut/OS program o nazwie “Orzeszek”,
który został podzielony na dwa główne procesy:
• Odbiornik - odpowiada za odbieranie pakietów z
komputera sterującego, którego adres IP jest jednym z zarejestrowanych w programie adresów.
Aby zapobiec sytuacji przypadkowego uruchomienia jednocześnie dwóch lub więcej kopii programu sterującego “Satyna” zastosowano programową blokadę. Polega ona na analizowaniu pakietów UDP o jednym z możliwych adresów źródłowych IP. Każdy poprawnie odebrany pakiet
blokuje komunikację z urządzeniami o innych adresach na 60 sekund.
• Nadajnik - odpowiada za przygotowanie pakietów UDP do wysłania. Pakiet z danymi zawiera znaczniki i potwierdzenia znaczników czasu,
które pozwalają na wyznaczenie wskaźnika RTT.
Większą cześć pakietu stanowią ramki z aktualnymi wartościami wybranych sygnałów otrzymanych z falownika za pośrednictwem interfejsu
SPI. Pakiety posiadają zmienną wielkość zależną od ilości ramek z danymi otrzymanymi z sterownika napędu od czasu wysłania poprzedniego
pakietu UDP.
Komunikacja z programem operatora odbywa
się z wykorzystaniem protokołu UDP o porcie źródłowym i docelowym równym 17671. Wykorzystanie
standardowego protokołu pozwoliło np. na zamknięcie pętli sterującej poprzez uczelnianą sieć komputerową.
Komunikacja z procesorem DSP umieszczona została w procedurze obsługi zewnętrznego przerwania, które jest zgłaszane przez sterownik i traktowane
przez mikrokontroler ATmega128 jako zezwolenie na
rozpoczęcie transmisji (rysunek (3)).
Rysunek 3: Komunikacja między mikroprocesorem
ATmega128 i TMS320F240 z wykorzystaniem interfejsu SPI. Od góry: dane wysyłane z ATmega128, dane wysyłane z TMS320F240, sygnał zegara SPI, sygnał zezwolenia na transmisję.
Wymiana danych odbywa się z wykorzystaniem
interfejsu SPI pracującego z zegarem 2 MHz. Z powodu braku buforów sprzętowych konieczne jest stosowanie programowych opóźnień o czasie trwania 1µs
pomiędzy kolejnymi bajtami. Zwiększa to czas transmisji o 25% i powoduje pewną stratę mocy obliczeniowej mikrokontrolera. Dodatkowo, ze względu na
zachowanie ciągłości transmisji, nie jest możliwe wykorzystanie do tego celu przerwań związanych z interfejsem SPI. W efekcie powoduje to, że komunikacja ze sterownikiem napędu zajmuje 30% czasu pracy
mikrokontrolera. Pomimo takiego reżimu prosty procesor 8-bitowy wykonuje wyznaczone mu zadanie w
sposób bardzo dobry, biorąc pod uwagę jego niewielką moc obliczeniową.
W przypadku utraty komunikacji z wykorzystaniem interfejsu ethernetowego “Orzeszek” wysyła do
sterownika napędu polecenie wyłączenia falownika.
Awaryjne wyłączenie ma miejsce po upływie ok. 3
sek. od otrzymania ostatniego pakietu UDP.
Dodatkową funkcją “Orzeszka” jest sterowanie
momentem obciążenia, który jest wytwarzany przez
prądnicę obcowzbudną prądu stałego. Wartość prądu
płynącego w tworniku jest proporcjonalna do momentu wytwarzanego na wale maszyny. Sygnałem zadającym wartość prądu jest stopień wypełnienia sygnału PWM generowanego przez licznik mikroprocesora
ATmega128. Poprzez kształtowanie chwilowej wartości prądu w tworniku możliwe jest realizowanie obciążenia o różnorodnych charakterystykach.
5.
PROGRAM STERUJĄCY
Nadzór i sterowanie pracą napędu odbywa się
poprzez panel sterujący uruchomiony na komputerze
operatora. W tym celu stworzono program “Satyna”
pozwalający na sterowanie i archiwizację danych z
sterownika w czasie rzeczywistym. Aplikacja została napisana w języku Ada 2005 z użyciem biblioteki
GtkAda [5]. Biblioteka ta pozwala wykorzystać stwo-
rzony w języku C pakiet narzędziowy Gtk [6], który
umożliwia wygodne budowanie graficznego interfejsu
użytkownika. Użycie powyższych narzędzi pozwoliło
na stworzenie programu, który można uruchomić zarówno na platformie Windows jak i Linux.
Język Ada 2005 jest przeznaczony do tworzenia aplikacji czasu rzeczywistego i aplikacji dla systemów dedykowanych [7]. Zawiera konstrukcje językowe wspomagające tworzenie wielowątkowych programów, np. typ zadaniowy będący samodzielnym procesem, system synchronizacji w postaci asymetrycznych
spotkań oraz chronione obiekty i procedury pozwalające na bezpieczną wymianę danych [8].
Program “Satyna” został podzielony na współpracujące ze sobą procesy (ang. threads):
• Odbiornik - odpowiada za odbierania pakietów
UDP z “Orzeszka” i zapisywanie danych do pliku
dziennika, gdzie są archiwizowane otrzymywane
dane.
• Nadajnik - odpowiada za wysyłanie pakietów
sterujących UDP do “Orzeszka”.
• Skryba - odpowiada za wykonywanie skryptu
użytkownika, który pozwala na programowe formowanie zadawanego momentu napędowego.
• Program główny - odpowiada za obsługę graficznego interfejsu użytkownika oraz uruchamianie i zatrzymywanie powyższych procesów. Interfejs użytkownika pozwala na zmianę zadawanego
momentu napędowego oraz momentu oporowego. Wyświetlane są również paski wizualizujące
chwilowe wartości wybranych sygnałów sterujących oraz sygnałów realizowanych przez sterownik napędu.
Do komunikacji z równolegle wykonywanymi
procesami wykorzystano wbudowany w język Ada
2005 mechanizm obiektów i procedur chronionych.
Wydzielenie niezależnych procesów pozwoliło na
uproszczenie struktury programu.
Wygląd okna programu w trakcie poprawnie nawiązanej łączności przestawiono na rysunku (4). Interfejs użytkownika został podzielony na 4 bloki sterujące i 2 bloki informacyjne.
Blok przycisków sterujących pozwala na nawiązanie komunikacji z “Orzeszkiem”, włączenie i wyłączenie falownika, oraz zamknięcie programu “Satyna”.
Blok ustawień pozwala na wprowadzenie adresu
IP lub nazwy internetowej “Orzeszka”, wprowadzenie
nazwy pliku dziennika oraz nazwy pliku zawierającego skrypt. Dostępne są również opcje uaktywniające
zapisywanie pliku dziennika oraz rozpoczynające wykonywanie skryptu. Język skryptu składa się z kilku
prostych poleceń, które umożliwiają modyfikację zadawanego momentu wzorem liczników stosowanych w
mikrokontrolerach. W skład poleceń wchodzą instrukcje:
• loop - rozpoczyna pętlę, która jest wykonywana
przez 60 sekund
Rysunek 4: Panel sterujący
• loop timeout wartość - rozpoczyna pętlę, która jest wykonywana przez podany w sekundach
przedział czasu
• end - kończy odpowiadający mu pętlę
• exit torque wartość - kończy najbliższą pętlę, gdy
wartość realizowanego momentu różni się od podanej wartości o co najwyżej 0.01
• exit speed wartość - działa podobnie jak w przypadku instrukcji powyżej, z tą różnicą, że sprawdzana jest wartość prędkości
• set torque wartość - przypisuje zadawanemu momentowi napędowemu wskazaną wartość
• increment torque wartość - zwiększa zadawany
moment o podaną wartość
• decrement torque wartość - zmniejsza zadawany
moment o podaną wartość
• delay wartość - wstrzymuje wykonanie skryptu o
podany interwał czasu
Należy zwrócić uwagę na fakt, że moment mieści
się w przedziale (−0.99, 0.99) i w przypadku wyjścia
poza ten przedział wartość momentu jest ograniczana do najbliższej dopuszczalnej wartości. Natomiast
prędkość zawsze pochodzi z przedziału (−2.0, 2.0)
prędkości znamionowej i oczywiście nie może być
zmieniana bezpośrednio z poziomu skryptu. Ze względu na zachowanie prostoty interpretera zrezygnowano na obecnym etapie badań z możliwości tworzenia
własnych zmiennych i wykonywania na nich operacji arytmetyczno - logicznych. Nie stworzono również
możliwości tworzenia rozgałęzień w kodzie skryptu.
Rysunek 5: Panel sterujący - błąd komunikacji
Pomimo skromnej listy instrukcji skrypt użytkownika może służyć do tworzenia złożonych przebiegów sygnałów sterujących np. generator fali trapezowej o różnym współczynniku narastania i opadania.
Skrypt realizujący opisany przebieg przedstawiono na
listingu (1).
set torque 0.0
loop
loop
increment torque 0.01
exit torque 0.8
delay 0.1
end
zadawania obciążenia. Ponieważ rzeczywistym obciążeniem silnika jest prądnica prądu stałego możliwe
jest tylko tworzenie momentu oporowego przeciwnego do momentu napędowego. Minusem tego rozwiązania jest niewielki zakres możliwego do uzyskania momentu oporowego dla małych prędkości obrotowych
silnika.
Pozostałe bloki funkcjonalne pełnią już tylko rolę informacyjną. Blok statusu prezentuje aktualny
stan falownika oraz stan procesów komunikacyjnych.
Przejście falownika w dany stan sygnalizowane jest
ikoną czerwonej lampki obok etykiety (rysunek (4)).
Natomiast stan procesów odbiornika i nadajnika sygnalizowany jest za pomocą ikon połączonych wtyczek przy poprawnie nawiązanej komunikacji. Ikona
ostrzeżenia w postaci wykrzyknika na żółtym tle jest
wspólna dla całego bloku i oznacza sytuację gdy nie
ma nawiązanej komunikacji z “Orzeszkiem”, a tym samym nie ma żadnych wiarygodnych danych na temat
stanu napędu. Sytuację taką przedstawia rysunek (5).
Ostatni blok - blok wartości rzeczywistych prezentuje wybrane sygnały w postaci paska postępu. Ze
względu na niewielką prędkość aktualizowania danych
(co 100 ms) elementy te pełnią jedynie rolę wizualizacyjną.
6.
PRÓBY LABORATORYJNE
Poprawność algorytmu sterowania sprawdzono
w trzech różnych konfiguracjach sieci komputerowej.
Pierwsze próby przeprowadzono przy bezpośrednim
podłączeniu komputera sterującego do modułu ethernetowego. Po uzyskaniu poprawnych wyników dokonano prób sterowania poprzez sieć lokalną instytutu
oraz sieć rozległą uczelni pomiędzy dwiema jednostkami oddalonymi od siebie o kilka kilometrów. Wyniki tych prób wypadły pomyślnie.
delay 1.0
loop
decrement torque 0.1
exit torque 0.1
delay 0.1
end
delay 1.0
end
Listing 1: Skrypt formujący trapezowy sygnał momentu napędowego
Blok zadawania momentu napędowego umożliwia precyzyjną zmianę wartości zadanej o 0.05 lub
0.01. Dodatkowo można wykonywać skokową zmianę
momentu pomiędzy skrajnymi wartościami oraz wartością zerową. Podobną funkcjonalność posiada blok
Rysunek 6: Przebiegi zadawanego momentu, prędkości obrotowej oraz prądów fazowych zmierzonych
przez sterownik napędu
Na rysunku (6) przedstawiono przebiegi czasowe wybranych sygnałów archiwizowanych w trakcie
procesu sterowania z uruchomionym skryptem użytkownika przedstawionym na listingu (1). Uzyskane
pomiary pozwalają na odtworzenie stanu elektromagnetycznego napędu. Umożliwia to udoskonalanie al-
gorytmu sterowania wektorowego zarówno w stanach
dynamicznych jak i w stanach ustalonych.
7.
WNIOSKI
Próby laboratoryjne pokazały, że jest możliwe
sterowanie w czasie rzeczywistym, procesami przemysłowymi o szybkozmiennych sygnałach poprzez interfejs ethernetowy przy pomocy 8-bitowego mikrokontrolera jednoukładowego. Planuje się przeprowadzenie badań nad regulatorem prędkości zaimplementowanym w programie uruchamianym na komputerze
PC z zamkniętą pętlą sprzężenia zwrotnego poprzez
interfejs ethernetowy. Taki układ pozwoli na zbadanie
wpływu opóźnień wprowadzanych przez sieć komputerową oraz opracowanie algorytmów zapewniających
poprawne sterowanie w takim systemie.
Poprzez możliwość archiwizowania danych pomiarowych i zmiennych procesu mikrokontrolera sterującego silnikiem, stworzone stanowisko bardzo dobrze nadaje się do testowania i analizy algorytmów
związanych z napędem. Otrzymywane dane pozwalają na odtworzenie procesów zachodzących w napędzie
bez ingerencji w normalną pracę sterownika.
Ponieważ autorzy dostrzegli niedogodności czasowe związane z przysyłaniem danych z wykorzystaniem interfejsu SPI, rozważane jest wykorzystanie
programowalnych układów logicznych CPLD. Zaimplementowanie sprzętowych buforów typu FIFO pozwoli na przeniesienie funkcji wymiany danych do
układu CPLD. Rozważane też jest zastosowanie 32bitowego procesora AT91R40008 firmy Atmel, który
zastąpi stosowany do tej pory 8-bitowy mikrokontroler jednoukładowy. Pozwoli to zwiększyć ilość danych
przesyłanych siecią komputerową oraz zaimplementować nowe funkcje.
Literatura
[1] Dębowski A.: Sterowanie pośrednie momentem
i strumieniem w falownikowym napędzie tramwaju. Mat. X Ogólnopolskiej Konferencji Naukowej „Semtrak 2002”, Zakopane-Kościelisko,
2002, s.145-154.
[2] Chudzik P., Dębowski A., Kobos W., Lisowski
G., Szafran J.: Asynchroniczny napęd tramwajowy ze sterowaniem wektorowym – zasada działania (1). Technika Transportu Szynowego, 2004,
nr 3, s.52-55.
[3] Dębowski A., Chudzik P., Lisowski G.: State
transitions in vector controlled AC tram drive.
Proceedings of Int. Conf. on Power Electronics
and Motion Control, PEMC, Portoroz (Słowenia), August 30 – September 1, 2006.
[4] http://www.ethernut.de
[5] https://libre2.adacore.com/GtkAda
[6] http://www.gtk.org
[7] John Barnes: “Programming in ADA 2005”, Addison Wesley, Bk&CD-Rom edition (June 30,
2006)
[8] Ada 2005 Language Reference Manual