Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski Diagnostyka procesów i systemów Prowadzący: Marcel Luzar 1 Laboratorium nr 2 Identyfikacja systemu i detekcja uszkodzeń na podstawie modelu 1 Cel ćwiczenia Celem podstawowym jest zapoznanie się z przybornikiem ntstool środowiska Matlab, przy pomocy którego dokonywana jest identyfikacja systemu na podstawie danych wejściowych i wyjściowych. Dane pomiarowe zostały zebrane w firmie MAZEL i opisują działanie układu 2 zbiorników (Rys. 1). Rysunek 1: Schemat działania systemu 2 zbiorników 1 Marcel Luzar, Instytut Sterowania i Systemów Informatycznych, Uniwersytet Zielonogórski, ul. Podgórna 50, 65-246 Zielona Góra, Poland. Email: m.luzar@issi.uz.zgora.pl 1
2 Program ćwiczenia 1. Należy wczytać do przestrzeni roboczej dane z pomiarów pracy układu dwóch zbiorników, udostępnione przez prowadzącego. 2. Następnie wpisać w linię komend Matlaba polecenie ntstool, które uruchomi przybornik mogący służyć do identyfikacji dynamicznych systemów nieliniowych z wykorzystaniem sztucznych sieci neuronowych (Rys. 2). Rysunek 2: Przybornik do identyfikacji systemów przy pomocy SSN 3. Ponieważ opisywany system jest dynamiczny, należy wybrać strukturę sieci neuronowej ze sprzężeniem od stanu. W przyborniku jest ona przedstawiona jako sieć NARX. 4. W kolejnym oknie należy podać, które pomiary są pomiarami wejściowymi a które wyjściowymi. W pierwszej kolejności dokonamy identyfikacji pracy czujników pomiarowych. Zatem jako wejście podajemy pomiary z pracy pompy nr 1, tj. U1, a jako wyjście pomiar z pierwszego czujnika Y1. Ponieważ dane pomiarowe zostały zebrane w postaci kolumny, należy wybrać w polu Select the time series format opcję Matrix row. (Rys. 3). 5. W kolejnym oknie należy wybrać wartości próbek, które posłużą za dane uczące sieci neuronowej a które za dane testujące. W pierwszej próbie uczenia sieci należy pozostawić wartości domyślne, tj. Training 70%, Validation 15%, Testing 15%. W przypadku, gdy sieć neuronowa źle dobierze swoje parametry, należy przeprowadzić próbę ponownie zmieniając wyżej wymienione wartości (Rys. 4). 2
Rysunek 3: Okno wyboru danych Rysunek 4: Okno ustalenia wartości próbek uczących i testujących 3
6. Kolejne okno umożliwia dobór odpowiedniej struktury sieci neuronowej, tzn. ile neuronów będzie w poszczególnej warstwie sieci. Wartość Number of Hidden Neurons oznacza liczbę neuronów w warstwie ukrytej, natomiast Number of delays d: określa stopień opóźnienia sprzężenia, który jest równoznaczny z rzędem identyfikowanego systemu. W tym przypadku, rząd układu 2 zbiorników wynosi 2. Liczbę neuronów w warstwie ukrytej dobierz dowolnie, z przedziału 5-15. (Rys. 5). Rysunek 5: Dobór struktury sieci 7. Po utworzeniu sieci i przejściu do kolejnego okna jest możliwość uczenia sieci. Przycisk Next nie jest dostępny. Należy wybrać przycisk Train, aby sieć modelowała proces na podstawie tylko danych wejściowych i wyjściowych (Rys. 6). 8. Po nauczeniu sieci wyświetli się okno pokazujące proces uczenia (Rys. 7). Wartości te mogą się różnić od pokazanych na rysunku w zależności od liczby użytych neuronów oraz podziału na próbki uczące i testujące. 9. Wracając do okna pokazanego na Rys. 6, po nauczeniu sieci, możemy wybrać opcję narysowania wykresu przedstawiającego dopasowanie odpowiedzi sieci neuronowej do oryginalnych danych wejściowych. W tym celu należy wybrać przycisk Plot response. Na rysunku (Rys. 8), oprócz porównania wyjść sieci i wyjść rzeczywistego systemu, możemy zaobserwować wartość błędu uczenia w poszczególnych chwilach czasu. 10. W kolejnym oknie (Rys. 9) można wybrać powtórzenie uczenia sieci w przypadku, gdy wynik nie jest zadowalający. Również w tym momencie można zwiększyć rozmiary sieci dodając 4
Rysunek 6: Uczenie sieci neuronowej Rysunek 7: Wyświetlenie postępu uczenia sieci neuronowej 5
Rysunek 8: Odpowiedzi sieci i rzeczywistego systemu oraz błąd stanowiący różnicę między jednym a drugim nowe neurony oraz załadować większą ilość danych pomiarowych. Natomiast jeżeli błąd uczenia pokazany na Rys. 8 oscyluje blisko wartości zerowej, należy przejść do następnego okna klikając przycisk Next. 11. Kolejne okno służy do zapisu danych otrzymanych przy pomocy przybornika ntstool. Do detekcji uszkodzeń czujnika pomiarowego potrzebne są tylko odpowiedzi sieci. Należy zatem odznaczyć wszystkie pola z wyjątkiem Save outputs to MATLAB matrix named: i podać nazwę wyjścia. Nazwiemy je nety1. (Rys. 10). Wciskamy przycisk Save Results i kończymy pracę z przybornikiem przyciskiem Finish. 12. W przestrzeni roboczej pojawiła się nowa zmienna nety1, która ma odzwierciedlać odczyty z czujnika poziomu cieczy nr 1. Należy narysować jej przebieg. Ponieważ jest ona typu komórkowego Cell, należy ją najpierw przekonwertować na typ macierzowy. Do tego celu służy polecenie cell2mat. Należy napisać poniższy skrypt : nety1=cell2mat(nety1); nety1=[nety1, 0, 0]; Pokazane polecenia zamieniają wartości z typu cell na typ double, który może być wyrysowany metodą plot. Dodanie dwóch wartości zerowych na końcu powoduje, że zmienna nety1 będzie zawierać taką samą ilość próbek jak zmienna Y1 i będzie można je wyrysować 6
Rysunek 9: Ponowne uczenie sieci Rysunek 10: Zapisywanie rezultatów pracy przybornika ntstool 7
na jednym wykresie. Dlaczego wyjścia sieci dały nam zmienną, której długość jest pomniejszona o 2 w odniesieniu do zmiennej oryginalnej? Ponieważ do sieci neuronowej są podawane 2 opóźnienia. Jeżeli więc jest np. 500 próbek, nie ma informacji o próbce 501 i 502. Dlatego ostatnią estymowaną próbką jest próbka 498, do obliczenia której pobierana jest informacja z próbki 499 i 500. 13. Aby porównać odpowiedz sieci z oryginalnym wyjściem, należy skorzystać z polecenia plot. Generowanie wykresu przedstawia kolejny skrypt: figure(1) plot(y1, Linewidth, 1); hold on plot(nety1, r, Linewidth, 1); legend( System output 1, Model output 1, Location, Southeast ); 14. Na narysowanym wykresie (Rys. 11) można zaobserwować różnice pomiędzy wyjściem z systemu a wyjściem z modelu. Rysunek 11: Porównanie wyjść z systemu oraz z modelu 15. Aby wyrysować sygnał residuum na wykresie, czyli różnicę pomiędzy wyjściem z systemu a wyjściem z modelu, należy zaimplementować poniższy skrypt, który najpierw tę różnicę obliczy, a następnie przedstawi ją na wykresie. figure(2) 8
res=y1 -nety1; plot(res) 16. Wyrysowany wykres (Rys. 12) przedstawia sygnał residuum, który w idealnym przypadku powinien być równy 0. Niestety, w związku z istniejącą tzw. niepewnością modelu, sygnał ten nigdy tej wartości nie osiągnie. Jednak wartości bliskie zeru oznaczają dobre dopasowanie modelu do rzeczywistego systemu. Rysunek 12: Sygnał residuum 17. W tym momencie należy zdecydować, w jaki sposób na podstawie sygnału residuum wykryć uszkodzenie. Przyjmijmy w tym celu, jako metodę detekcji uszkodzeń, metodę stałego progu decyzyjnego. Polega ona na wyznaczeniu górnego i dolnego progu, pomiędzy którymi powinien się mieścić sygnał residuum. Przekroczenie któregokolwiek z tych progów, oznacza wystąpienie uszkodzenia. 18. Aby odpowiednio dobrać wartości górnego i dolnego progu decyzyjnego, można skorzystać z reguł statystycznych, a konkretnie z metody trzech sigm. Reguła trzech sigm (odchyleń standardowych) mówi, że dla rozkładu normalnego 68,3% wartości cechy leży w odległości jednego odchylenia standardowego od średniej arytmetycznej; 95,5% wartości cechy leży w odległości dwóch odchyleń od średniej; a 99,7% wartości cechy leży w odległości trzech odchyleń standardowych od średniej arytmetycznej (Rys. 13), gdzie: x- średnia arytmetyczna, S - odchylenie standardowe. 9
Rysunek 13: Ilustracja reguły trzech sigm 19. Aby obliczyć wartość górnego i dolnego progu w Matlabie, należy zaimplementować poniższy skrypt: prog dol=ones(1,800)*mean(res)-3*std(res); prog gora=ones(1,800)*mean(res)+3*std(res); plot(prog gora, --r ) plot(prog dol, --r ) Powyższy skrypt, po uruchomieniu, powinien wygenerować wykres przedstawiony na Rys. 14. 20. W Rys. 14 możemy odnaleźć momenty, w których sygnał residuum przekracza progi decyzyjne, a więc mówimy, że wtedy wystąpiło uszkodzenie. Nasuwa się jednak pytanie, dlaczego w naszym przykładzie wykryto uszkodzenie, mimo tego, że jeszcze go nie zasymulowaliśmy? Jest to związane z wcześniej wspomnianą niepewnością modelu. Stałe progi decyzyjne nie są odporne na to zjawisko, przez co mogą występować fałszywe alarmy, które właśnie zaobserwować można na Rys. 14. Istnieją metody, które są odporne na to zjawisko, np. adaptacyjne progi decyzyjne, jednak ta metoda jest bardziej skomplikowana i jest pominięta w niniejszej instrukcji. 21. W tym kroku celowo zasymulujemy wystąpienie uszkodzenia czujnika pomiarowego. Załóżmy, że czujnik uległ całkowitemu uszkodzeniu, także każdy odczyt z czujnika będzie wska- 10
Rysunek 14: Sygnał residuum ograniczony przez górny i dolny próg decyzyjny zywał wartość 0. Aby zasymulować takie uszkodzenie w czujniku, właściwe wartości wyjść z systemu należy podmienić na wartości zerowe. W tym celu należy wykonać poniższy skrypt: uszkodzenie=zeros(100,1); Y1 uszkodzenie=[y1(1:500); uszkodzenie; Y1(601:800)]; figure(3) plot(y1, Linewidth, 2); hold on plot(y1 uszkodzenie, r, Linewidth, 1); 22. Dzięki temu uzyskamy wykres przedstawiony na Rys. 15, który przedstawia sygnał wyjściowy bez uszkodzenia i z uszkodzeniem. Widać wyraźnie, że w momencie próbkowania równym 500 czujnik wskazuje wartość 0. W punkcie próbkowania równym 600 czujnik powraca do prawidłowego działania. 23. Po wprowadzeniu uszkodzenia, należy wygenerować sygnał residuum, porównując wyjście z modelu z wyjściem uszkodzonego systemu. W tym celu należy napisać następujący skrypt: residuum uszkodzenie=nety1-y1 uszkodzenie ; plot(residuum uszkodzenie, Linewidth, 1); hold on 11
Rysunek 15: Sygnał wyjściowy bez uszkodzenia (niebieski) i z uszkodzeniem (czerwony) plot(prog gora, --r ) plot(prog dol, --r ) 24. Wykonanie skryptu spowoduje przedstawienie graficzne sygnału residuum oraz progi decyzyjne. Analizując Rys. 16, widać wyraźnie moment, w którym sygnał residuum znacznie przekracza wartość progu decyzyjnego i pozostaje poza tym obszarem przez dłuższy czas, niż to ma miejsce w przypadku fałszywych alarmów. Dzięki temu, możemy jednoznacznie określić, czy mamy do czynienia z uszkodzeniem czy z fałszywym alarmem. 3 Podsumowanie Przeprowadzone ćwiczenie jednoznacznie przedstawia sposób wykorzystania modelu systemu do diagnostyki uszkodzenia urządzeń wykonawczych. Dzięki sygnałowi residuum uzyskanym jako różnicę pomiędzy wyjściem systemu a wyjściem modelu można jednoznacznie stwierdzić, czy wystąpiło uszkodzenie. 4 Sprawozdanie Sprawozdanie należy przygotować w postaci pliku.pdf oraz dołączyć skrypt Matlaba (rozszerzenie *.m) wraz z niezbędnymi zmiennymi potrzebnymi do jego wykonania. Wszystkie pliki, skompre- 12
Rysunek 16: Sygnał residuum uszkodzonego czujnika sowane w archiwum WinRar, należy wysłać drogą mailową na adres prowadzącego zajęcia. Zadanie: Przeprowadzić analizę uszkodzenia czujnika pomiarowego nr 2 oraz urządzenia wykonawczego w sposób podobny, jak to było robione w zadaniach na laboratorium, tj. utworzyć model neuronowy systemu, zasymulować uszkodzenie, obliczyć progi decyzyjne metodą 3 sigm, dokonać detekcji uszkodzenia. 13