BartÅ‚omiej Piekarski 171160 Data utworzenia: 01.06.2010r. Aukasz Tkacz 171032 Aukasz Przywarty 171018 Zadanie projektowe: Niezawodność i diagnostyka ukÅ‚adów cyfrowych Temat: Ocena niezawodnoÅ›ci systemu pomiarowego typu '2z3' z zawod- nym ukÅ‚adem diagnostyki ProwadzÄ…cy: dr inż. Kazimierz KapÅ‚on Strona 1 Spis treÅ›ci I. Szczegółowy opis zadania projektowego . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3 II. Koncepcja symulacji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 a) Wykresy czasowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 b) Tabela stanów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 c) Graf stanów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6 d) Schemat blokowy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 III. Implementacja programowa modelu symulacyjnego w Å›rodowisku Matlab . . . . . . . . . . . . 9 a) Listing kodu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 b) Wyniki symulacji. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 IV. Szacowanie charakterystyk niezawodnoÅ›ciowych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 V. Podsumowanie i wnioski. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 VI. Bibliografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Strona 2 I. Szczegółowy opis zadania projektowego W projekcie należy okreÅ›lić charakterystyki niezawodnoÅ›ciowe systemu pomiarowego, który skÅ‚ada siÄ™ z trzech elementów pomiarowych (czujników) i ukÅ‚adu diagnostyki i przeÅ‚Ä…czania. Czujniki sÄ… funkcjonalne i niezawodnoÅ›ciowo takie same. Do poprawnej pracy systemu pomiarowego konieczna jest sprawność co najmniej dwóch czujników. System wykonuje swojÄ… pracÄ™ w sposób ciÄ…gÅ‚y. W ujÄ™ciu niezawodnoÅ›ciowym wszystkie elementy sÄ… zawodne i napra- wialne. Znane sÄ…: rozkÅ‚ad prawdopodobieÅ„stwa czasu poprawnej pracy czujnika do uszkodzenia F (t) i ukÅ‚adu diagnostyki F (t) oraz rozkÅ‚ady G (t) i odpowiednio G (t) czasu do zakoÅ„czenia c d c d naprawy. Elementy systemu sÄ… naprawiane przez K ekip remontowych. Ponadto: " ukÅ‚ad diagnostyki i przeÅ‚Ä…czania czujników w stanie uszkodzenia nie zakłóca pracy czujników (tzn. nastÄ™puje utrata zdolnoÅ›ci do wykrywania uszkodzeÅ„ i przeÅ‚Ä…czania elementów, ale jeÅ›li co najmniej 2 z 3 czujników sÄ… w stanie sprawnoÅ›ci, to system nadal poprawnie wykonuje pomiary), " czasy do uszkodzenia elementu Ä , Ä majÄ… rozkÅ‚ady wykÅ‚adnicze o parametrach , c d c d " czasy naprawy Åš , Åš majÄ… rozkÅ‚ady normalne obciÄ™te (Åš > 0) o parametrach ź , à , ź , à c d c c d d (wartoÅ›ci dobrać indywidualnie) W ramach projektu należy: " opracować model symulacyjny dziaÅ‚ania systemu uwzglÄ™dniajÄ…cy wystÄ™powanie uszkodzeÅ„ i napraw elementów (przedstawić ten model w postaci schematu blokowego) " opracować implementacjÄ™ programowÄ… modelu symulacyjnego w Å›rodowisku Matlab, " dla wybranych wartoÅ›ci parametrów wykonać na modelu niezbÄ™dnÄ… liczbÄ™ eksperymentów " na podstawie otrzymanych wyników oszacować charakterystyki niezawodnoÅ›ci badanego systemu II. Koncepcja symulacji Zadanie polega na utworzeniu modelu symulacyjnego systemu '2z3' z zawodnym ukÅ‚adem diagnostyki. Szczegółowe zaÅ‚ożenia projektowe zawarte sÄ… w punkcie I. niniejszej pracy. Na samym poczÄ…tku należy przyjrzeć siÄ™ zachowaniu systemu w poszczególnych chwilach czasu. ZakÅ‚adajÄ…c, że dostÄ™pny jest jeden konserwator, w jednej chwili czasu może on naprawiać tylko jeden element systemu. W momencie gdy uszkodzi siÄ™ inny element, a konserwator bÄ™dzie zajÄ™ty, element pozostaje uszkodzony i czeka na naprawÄ™. Szczególnie traktujemy ukÅ‚ad diagnostyki: naprawiamy go w pierwszej kolejnoÅ›ci (gdy jest dostÄ™pny konserwator, który takÄ… naprawÄ™ może Strona 3 wykonać. W przeciwnym razie ukÅ‚ad naprawiany jest zaraz po ukoÅ„czeniu naprawy innego elementu). a) Wykresy czasowe Przedstawimy teraz przykÅ‚adowe wykresy czasowe, zakÅ‚adajÄ…c, że korzystamy z usÅ‚ug jednego konserwatora a stany elementów systemu oznaczone sÄ… nastÄ™pujÄ…co: " 0 sprawny " 1 - uszkodzony w naprawie " 2 uszkodzony bez naprawy Na rysunku poniżej c c c oznaczajÄ… kolejne czujniki, natomiast D ukÅ‚ad diagnostyki 1, 2, 3, Rysunek 1: Wykresy czasowe dla rozpatrywanego systemu Jak można zauważyć na Rys. 1 uzyskaliÅ›my wstÄ™pne wyniki symulacji dla konkretnych zdarzeÅ„ Strona 4 (uszkodzeÅ„ i napraw). OznaczyliÅ›my literÄ… Q czasy naprawy, natomiast literÄ… Ä czasy miÄ™dzy uszkodzeniami. b) Tabela stanów Pomocne bÄ™dzie rozpatrzenie wszystkich kombinacji stanów poszczególnych elementów wraz z uwzglÄ™dnieniem stanu caÅ‚ego systemu. Niestety, wiele z kombinacji jest niemożliwych, tzn., że nie speÅ‚niajÄ… warunków okreÅ›lonych w treÅ›ci zadania projektowego. Kombinacje stanów przedstawimy w postaci tabeli. Kolorem szarym zaznaczono niemożliwe kombinacje stanów poszczególnych elementów., wyróżniono natomiast stany możliwe. ZakÅ‚adamy, że K = 1. Stan Stan Stan S Stan elementu Stan S Stan elementu sys sys systemu systemu D S1 S2 S3 D S1 S2 S3 S 0 0 0 0 0 S 0 0 1 0 0 0000 0010 S 0 0 0 1 0 S 0 0 1 1 0001 0011 S 0 0 0 2 S 0 0 1 2 1 0002 0012 S 0 0 2 0 S 1 1 2 1 0020 1121 S 0 0 2 1 1 S 1 1 2 2 0021 1122 S 0 0 2 2 S 1 2 0 0 0 0022 1200 S 0 1 0 0 0 S 1 2 0 1 0100 1201 S 0 1 0 1 S 1 2 0 2 1 0101 1202 S 0 1 0 2 1 S 1 2 1 0 0102 1210 S 0 1 1 0 S 1 2 1 1 0110 1211 S 0 1 1 1 S 1 2 1 2 0111 1212 S 0 1 1 2 S 1 2 2 0 1 0112 1220 S 0 1 2 0 1 S 1 2 2 1 0120 1221 S 0 1 2 1 S 1 2 2 2 1 0121 1222 S 0 1 2 2 1 S 2 0 0 0 0122 2000 S 0 2 0 0 S 2 0 0 1 0 0200 2001 S 0 2 0 1 1 S 2 0 0 2 0201 2002 S 0 2 0 2 S 2 0 1 0 0 0202 2010 S 0 2 1 0 1 S 2 0 1 1 0210 2011 S 0 2 1 1 S 2 0 1 2 1 0211 2012 S 0 2 1 2 1 S 2 0 2 0 0212 2020 S 0 2 2 0 S 2 0 2 1 1 0220 2021 Strona 5 Stan Stan Stan S Stan elementu Stan S Stan elementu sys sys systemu systemu S 0 2 2 1 1 S 2 0 2 2 0221 2022 S 0 2 2 2 S 2 1 0 0 0 0222 2100 S 1 0 0 0 0 S 2 1 0 1 1000 2101 S 1 0 0 1 S 2 1 0 2 1 1001 2102 S 1 0 0 2 0 S 2 1 1 0 1002 2110 S 1 0 1 0 S 2 1 1 1 1010 2111 S 1 0 1 1 S 2 1 1 2 1011 2112 S 1 0 1 2 S 2 1 2 0 1 1012 2120 S 1 0 2 0 0 S 2 1 2 1 1020 2121 S 1 0 2 1 S 2 1 2 2 1 1021 2122 S 1 0 2 2 1 S 2 2 0 0 1022 2200 S 1 1 0 0 S 2 2 0 1 1 1100 2201 S 1 1 0 1 S 2 2 0 2 1101 2202 S 1 1 0 2 S 2 2 1 0 1 1102 2210 S 1 1 1 0 S 2 2 1 1 1110 2211 S 1 1 1 1 S 2 2 1 2 1 1111 2212 S 1 1 1 2 S 2 2 2 0 1112 2220 S 1 1 2 0 S 2 2 2 1 1 1120 2221 S 2 2 2 2 2222 Tabela 1: Tabela stanów systemu Okazuje siÄ™, że wiÄ™kszość kombinacji jest niepoprawna. Możliwe zestawienia stanów elementów sÄ… mniej liczne. Nasz system, przy zaÅ‚ożeniu, że korzystamy z usÅ‚ug jednego konserwatora przez wiÄ™ksza część czasu pozostaje niesprawny. Stan sprawnoÅ›ci systemu zachodzi tylko w 11 przypadkach. c) Graf stanów Aby lepiej zobrazować zachowanie systemu w momencie naprawy lub uszkodzenia elementu przedstawimy graf stanów. Graf stanów przedstawia tylko możliwe stany systemu, oznaczone kółkiem, w którym widnieje nazwa stanu. Poszczególne przejÅ›cia miÄ™dzy stanami oznaczone sÄ… strzaÅ‚kami. Adnotacje przy strzaÅ‚kach (n lub u ) oznaczajÄ… naprawÄ™ lub uszkodzenie i i poszczególnych elementów. Stan sprawnoÅ›ci caÅ‚ego systemu wyróżniono pogrubieniem stanów. Stany niesprawnoÅ›ci zaznaczono przerywanÄ… liniÄ…. Strona 6 Rysunek 2: Graf stanów ZależnoÅ›ci miÄ™dzy stanami sÄ… dość skomplikowane, ale jednoznaczne. W momencie uszkodzenia lub naprawy elementu przechodzimy do kolejnego stanu. Procedura ta powtarza siÄ™ przez caÅ‚y czas trwania symulacji. c) Schemat blokowy algorytmu symulacji W tym miejscu możemy skupić siÄ™ na algorytmie symulacji w postaci schematu blokowego. Schemat blokowy zawiera wyczerpujÄ…ce dane na temat dziaÅ‚ania systemu. Strona 7 Rysunek 3: Model symulacyjny systemu - schemat blokowy Strona 8 Legenda: " F (t) oraz F (t) - rozkÅ‚ad prawdopodobieÅ„stwa czasu poprawnej pracy do uszkodzenia c d czujnika oraz ukÅ‚adu diagnostyki " G (t) oraz G (t) - rozkÅ‚ad prawdopodobieÅ„stwa czasu naprawy czujnika i ukÅ‚adu c d diagnostyki " K liczba konserwatorów " T caÅ‚kowity czas symulacji sym " L liczba symulacji sym " T , T , T oraz T moment uszkodzenia poszczególnych czujników oraz ukÅ‚adu 1 2 3 d diagnostyki " T czas najbliższego uszkodzenia (wydarzenia) x " S oraz S stany czujników i ukÅ‚adu diagnostyki x d " L 0 liczba oczekujÄ…cych na naprawÄ™ Opiszemy pokrótce algorytm dziaÅ‚ania systemu. Na samym poczÄ…tku okreÅ›lamy niezbÄ™dne parametry, takie jak rozkÅ‚ady prawdopodobieÅ„stw, liczba symulacji itd. Losujemy czasy poprawnej pracy i wybieramy minimum z tych czasów. W momencie gdy uszkodzeniu ulegÅ‚ konkretny element systemu naprawiamy go, zakÅ‚adajÄ…c, ze sÄ… dostÄ™pni konserwatorzy. Priorytet (jeÅ›li chodzi o kolejność wykonywanych napraw) ma ukÅ‚ad diagnostyki. Czas naprawy jest również parametrem losowym. Gdy nie ma dostÄ™pnych konserwatorów zwiÄ™kszamy liczbÄ™ oczekujÄ…cych na naprawÄ™ i staramy siÄ™ o rozpoczÄ™cie naprawy w innym momencie czasu. JeÅ›li wszystkie elementy zostaÅ‚y naprawione zwiÄ™kszamy czas od startu symulacji i zmniejszamy czasy uszkodzeÅ„. Wyniki poszczególnych prób zapisujemy w postaci plików wyjÅ›ciowych o konkretnym numerze. Wszystkie kroki powtarzamy do momentu aż przekroczymy maksymalny czas symulacji i maksymalnÄ… ilość symulacji. DokÅ‚adny opis dziaÅ‚ania symulatora znajduje siÄ™ w punkcie IV niniejszej pracy. IV. Implementacja programowa modelu symulacyjnego w Å›rodowisku Matlab Program symulacyjny oprócz tego, że generuje losowe zdarzenia (uszkodzenia, naprawy) bÄ™dzie także obliczaÅ‚ nastÄ™pujÄ…ce miary niezawodnoÅ›ciowe: " TTF czas do uszkodzenia, " TTR czas do naprawy, " MTBF Å›redni czas miÄ™dzy uszkodzeniami, Strona 9 " MTTF Å›redni czas do uszkodzenia, " MTTR Å›redni czas do naprawy. a) Listing kodu Opiszemy dziaÅ‚anie symulatora na podstawie doÅ‚Ä…czonych fragmentów kodu. Na samym poczÄ…tku ustalamy maksymalny czas symulacji oraz liczbÄ™ tych symulacji. Dobieramy również rozkÅ‚ady prawdopodobieÅ„stwa dla czasów poprawnej pracy i czasów naprawy. clear Tsym = 500; Lsym = 1000; F = 13; G = 10; Listing 1: Podstawowe parametry Ustalamy Å›cieżki zapisu plików zawierajÄ…cych czasy do uszkodzenia TTF oraz czasy do naprawy TTR. W tych plikach przechowywać bÄ™dziemy obliczone w dalszej części programu wartoÅ›ci. sciezka_ttf = sprintf('wyniki\\ttf.txt'); [file_ttf, message] = fopen(sciezka_ttf,'w'); %Sprawdzenie poprawnoÅ›ci otwarcia if file_ttf == -1 disp(wiadomosc) return; end; sciezka_ttr = sprintf('wyniki\\ttr.txt'); [file_ttr, wiadomosc] = fopen(sciezka_ttr,'w'); if file_ttr == -1 disp(wiadomosc) return; end; Listing 2: Åšcieżki zapisu plików ttf i ttr W tym miejscu możemy zaimplementować schemat blokowy dziaÅ‚ania systemu w postaci kilku zagnieżdżonych pÄ™tli 'for'. Definiujemy zmienne i losujemy momenty uszkodzenia for L = 1:Lsym %Inicjalizacja zmiennych. K = 1; %liczba konserwatorów Strona 10 T = 0; %czas symulacji tx = 0; %bieżąca chwila (minimum z wylosowanych momentów) LO = 0; %liczba oczekujÄ…cych na naprawÄ™ S = [0,0,0,0]; %stany poszczególnych elementów systemu - pierwszy ukÅ‚ad %diagnostyki, nastÄ™pnie czujniki Tx = [1,2,3,10]; %czasy uszkodzenia (najbliższego wydarzenia) %Losowanie momentów uszkodzenia for i = 1:4 Tx(i) = exprnd(F); end Listing 3: Zmienne i momenty uszkodzenia Sprawdzimy również czy system jest sprawny. Wykorzystamy do tego celu dodatkowÄ… zmiennÄ… sprawne, która bÄ™dzie przechowywaÅ‚a liczbÄ™ elementów sprawnych. %Zmienna przechowujÄ…ca ilość elementów sprawnych sprawne = 0; for i = 2:4 %JeÅ›li stan elementu jest równy 0 (jest sprawny) zwiÄ™kszamy %zmiennÄ… sprawne o 1 if S(i) == 0 sprawne = sprawne + 1; end end %W przypadku gdy liczba czujników sprawnych jest równa przynajmniej 2 %caÅ‚y system jest sprawny (zasada '2z3') if sprawne > 1 stan = 0; %w przeciwnym wypadku ukÅ‚ad jest niesprawny else stan = 1; end Listing 4: Sprawdzenie stanu systemu MajÄ…c stany poszczególnych elementów jak i caÅ‚ego systemu możemy zapisać wyniki do pliku. Definiujemy Å›cieżkÄ™ zapisu pliku i wpisujemy do niego wartoÅ›ci: Strona 11 %Ustalenie Å›cieżki zapisu dla plików wynikowych symulacji sciezka_proba = sprintf('wyniki\\sym%d.txt',L); [file_proba, wiadomosc] = fopen(sciezka_proba,'w'); if file_proba == -1 disp(wiadomosc) return; end; %Zapisujemy wyniki do pliku w postaci: stan systemu, stan ukÅ‚adu %diagnostyki, stany czujników, czas od momentu startu symulacji. fprintf(file_proba,'%d\t%d\t%d\t%d\t%d\t%f\r\n', stan, S(1), S(2), S(3), S(4),T); Listing 5: Zapis stanów elementów i systemu do pliku Dochodzimy do najważniejszej części programu symulacji. Dopóki czas jest mniejszy od maksymalnego czasu symulacji wykonujemy procedury zobrazowane w schemacie blokowym. Rozpoczynamy od wyszukania minimum z czasów uszkodzeÅ„. while T < Tsym %zwiÄ™kszamy bieżącÄ… chwilÄ™ tx = 2 * Tsym; %Szukamy minimum z czasów uszkodzeÅ„ for i = 1:4 if Tx(i) < tx x = i; tx = Tx(i); end end Listing 6: Szukanie minimum z czasów uszkodzeÅ„ NastÄ™pnie sprawdzamy czy urzÄ…dzenie w chwili tx_ byÅ‚o sprawne. JeÅ›li tak sprawdzamy czy ukÅ‚ad diagnostyki byÅ‚ sprawny i czy liczba konserwatorów jest wiÄ™ksza od 0. W przypadku uzyskania twierdzÄ…cej odpowiedzi wiemy, że urzÄ…dzenie ulegÅ‚o uszkodzeniu, musimy je wiÄ™c naprawić. Zmniejszamy liczbÄ™ dostÄ™pnych konserwatorów i losujemy czas naprawy. Zaznaczamy stan elementu jako 1 (w naprawie). W przeciwnym razie zwiÄ™kszamy liczbÄ™ oczekujÄ…cych na naprawÄ™ i oznaczamy stan elementu jako 2 (czekajÄ…cy na naprawÄ™). if S(x) == 0 if S(1) == 0 && K>0 Strona 12 K = K-1; Tx(x) = exprnd(G) + tx; S(x) = 1; else Tx(x) = 5 * Tsym; LO = LO + 1; S(x) = 2; end Listing 7: Sprawdzenie sprawnoÅ›ci w chwili tx_ JeÅ›li element w chwili tx_ byÅ‚ uszkodzony losujemy czas poprawnej pracy, zwiÄ™kszamy liczbÄ™ konserwatorów i oznaczamy stan elementu jako 0 (sprawny) else K = K+1; Tx(x) = exprnd(F) + tx; S(x) = 0; end Listing 8: Sprawdzenie sprawnoÅ›ci w chwili tx_ c.d. Szczególnie traktujemy ukÅ‚ad diagnostyki. JeÅ›li ukÅ‚ad ten oczekuje na naprawÄ™ i sÄ… dostÄ™pni konserwatorzy naprawiamy go w pierwszej kolejnoÅ›ci. if S(1) == 2 && K > 0 K = K - 1; Tx(1) = exprnd(G) + tx; S(1) = 1; LO = LO - 1; end Listing 8: Próba naprawy ukÅ‚adu diagnostyki Nie tylko ukÅ‚ad diagnostyki ulega uszkodzeniu. Podobnie dzieje siÄ™ z czujnikami, dopóki liczba oczekujÄ…cych na naprawÄ™ czujników jest wiÄ™ksza od 0, ukÅ‚ad diagnostyki jest sprawny i sÄ… dostÄ™pni konserwatorzy, naprawiamy poszczególne elementy w kolejnoÅ›ci 1-wszy, 2-gi, 3-ci czujnik. i = 2; while LO > 0 && S(1) == 0 && K > 0 if S(i) == 2 K = K - 1; Tx(i) = exprnd(G) + tx; S(i) = 1; Strona 13 LO = LO - 1; end i = i + 1; end Listing 9: Naprawa poszczególnych czujników systemu Możemy teraz zwiÄ™kszyć czas od startu systemu a także zmniejszyć czasy najbliższego wydarzenia i kolejny raz policzyć ile elementów jest sprawnych. OkreÅ›lenie liczby sprawnych elementów systemu wyglÄ…da identycznie jak w Listingu 4, wiÄ™c pominiemy ten fragment kodu. Wyniki zapisujemy do pliku w sposób zaprezentowany w koÅ„cowej części Listingu 5. %ZwiÄ™kszamy czas od startu systemu T = T + tx; %Zmniejszamy czasy najbliższego wydarzenia for i = 1:4 Tx(i) = Tx(i) - tx; end Listing 10: Korekta czasów Nasz symulator wygenerowaÅ‚ do tej pory uszkodzenia i naprawy a także czasy tych zdarzeÅ„. MajÄ…c do dyspozycji te dane jesteÅ›my w stanie obliczyć parametry TTF oraz TTR. Rezultaty zapisujemy do plików tekstowych. %Otwieramy plik z wynikami konkretnej próby [file_proba, wiadomosc] = fopen(sciezka_proba,'r'); if file_proba == -1 disp(wiadomosc) return; end %Z pliku zczytujemy wartoÅ›ci do tablicy tab = fscanf(file_proba,'%d%d%d%d%d%f',[ 6 inf ]); fclose(file_proba); tab = tab'; rozmiar = size(tab,1); ostatniStan = tab(1,1); %Pierwszy stan systemu ostatniRazSprawny = 0; %Moment ostatniej sprawnoÅ›ci ostatniRazUszkodzony = 0;%Moment ostatniego uszkodzenia %W tym miejscu obliczymy poszczególne czasy do uszkodzenia i czasy do Strona 14 %naprawy - TTF oraz TTR for i = 2:rozmiar %Zczytujemy czas od momentu startu symulacji czas = tab(i,6); %oraz stan systemu stan = tab(i,1); %JeÅ›li ostatni odczytany stan różni siÄ™ od bieżącego sprawdzamy czy %jest równy 1 jeÅ›li tak zapisujemy do pliku obliczonÄ… wartość TTF. %W przeciwnym razie - wartość TTR if ostatniStan ~= stan if stan == 1 czasSprawnego = (czas - ostatniRazSprawny); ostatniRazUszkodzony = czas; fprintf(file_ttf,'%f\r\n', czasSprawnego); else czasUszkodzonego = (czas - ostatniRazUszkodzony); ostatniRazSprawny = czas; fprintf(file_ttr,'%f\r\n', czasUszkodzonego); end end ostatniStan = stan; end end fclose(file_ttf); fclose(file_ttr); Listing 11: Obliczenie parametrów TTF i TTR Aby umożliwić pózniejszÄ… analizÄ™ wyników umieÅ›cimy wartoÅ›ci TTF oraz TTR w tablicach: %Otwieramy pliki z wartoÅ›ciami TTF oraz TTR sciezka_ttf = sprintf('wyniki\\ttf.txt'); [file_ttf, wiadomosc] = fopen(sciezka_ttf,'r'); if file_ttf == -1 disp(wiadomosc) return; end; sciezka_ttr = sprintf('wyniki\\ttr.txt'); [file_ttr, wiadomosc] = fopen(sciezka_ttr,'r'); if file_ttr == -1 disp(wiadomosc) Strona 15 return; end; %Zapisujemy wartoÅ›ci TTF oraz TTR w tablicy ttf = fscanf(file_ttf,'%f', [ 1 inf ]); ttf = ttf'; ttr = fscanf(file_ttr,'%f',[ 1 inf ]); ttr = ttr'; fclose(file_ttf); fclose(file_ttr); Listing 12: Zapis wartoÅ›ci TTF i TTR w tablicach Na samym koÅ„cu obliczamy pozostaÅ‚e parametry MTBF, MTTF, MTTR fprintf('MTBF: %f\n',mean(ttf) + mean(ttr)); fprintf('MTTF: %f\n',mean(ttf)); fprintf('MTTR: %f\n',mean(ttr)); Listing 13: Obliczenie pozostaÅ‚ych parametrów niezawodnoÅ›ciowych. b) Wyniki symulacji UruchamiajÄ…c program uzyskaliÅ›my pliki wynikowe, których fragmenty przedstawiono w Tabeli 2. Stan Stan Stan 1. Stan 2. Stan 3. Czas od TBF MTBF MTTF MTTR ukÅ‚adu diagno- czujni- czujni- czujni- poczÄ…tku styki ka ka ka symulacji 0 0 0 0 0 0.000000 - 0 1 0 0 0 7.687255 - 0 0 0 0 0 8.781624 - 0 0 0 1 0 9.834445 - 0 2 0 1 0 9.864509 - 1 2 2 1 0 17.490966 17.490966 0 1 2 0 0 29.341057 - 0 0 1 0 0 32.566749 - 36.870919 8.776564 28.094354 1 0 1 0 2 37.286037 19.795071 1 0 1 2 2 37.961525 0.675488 1 0 0 1 2 44.649317 6.687792 0 0 0 0 1 55.324184 - 1 0 2 0 1 56.910808 12.261491 1 2 2 0 1 58.083068 1.172260 1 2 2 2 1 66.521111 8.438043 1 1 2 2 0 70.361735 3.840624 Tabela 2: Fragment plików wynikowych Strona 16 IV. Szacowanie charakterystyk niezawodnoÅ›ciowych Podsumujmy nasze dotychczasowe dziaÅ‚ania: analizujÄ…c treść zadania projektowego utworzyliÅ›my schemat blokowy dziaÅ‚ania systemu. Na tej podstawie napisaliÅ›my program w Å›rodowisku Matlab. Program symuluje dziaÅ‚anie systemu, zapisuje wyniki do poszczególnych plików i oblicza wartoÅ›ci TTF oraz TTR. Wykorzystamy je do szacowania charakterystyk niezawodnoÅ›ciowych. Aby ukazać z jakÄ… czÄ™stoÅ›ciÄ… pojawiajÄ… siÄ™ kolejne wartoÅ›ci TTF i TTR wykorzystamy histogramy. Histogram w programie Matlab można utworzyć wydajÄ…c polecenie: hist(dane). JeÅ›li w miejsce danych podstawimy ttf uzyskamy wykres: Rysunek 4: Histogram czÄ™stoÅ›ci wystÄ…pieÅ„ wartoÅ›ci TTF PostÄ™pujÄ…c podobnie w przypadku ttr wyÅ›wietlimy drugi histogram: Rysunek 5: Histogram czÄ™stoÅ›ci wystÄ…pieÅ„ wartoÅ›ci TTR Strona 17 Z Rys. 4 oraz Rys. 5 wynika, że zdecydowanie częściej wystÄ™pujÄ… maÅ‚e wartoÅ›ci TTF oraz TTR. Im wiÄ™ksza wartość tym rzadziej ona wystÄ™puje. WiedzÄ…c jak wyglÄ…dajÄ… histogramy wartoÅ›ci TTF i TTR możemy przystÄ…pić do wÅ‚aÅ›ciwej części zadania dopasowywania rozkÅ‚adów. W trakcie poszukiwaÅ„ informacji na temat dopasowywania rozkÅ‚adów do zmiennych losowych natrafiliÅ›my na bardzo pomocne narzÄ™dzie zaimplementowane w programie Matlab dfittool. Na podstawie danych (w naszym przypadku tablic z wartoÅ›ciami TTF oraz TTR) generuje histogramy, do których można dopasować funkcje rozkÅ‚adu np. Weibulla, gamma, normalnego. NarzÄ™dzie korzysta z odrÄ™bnego graficznego interfejsu użytkownika, wszystkie operacje wykonujemy za pomocÄ… dostÄ™pnych przycisków. Dfittool automatycznie generuje wykresy oraz potrzebne parametry np. dla rozkÅ‚adu Weibulla parametr skali oraz ksztaÅ‚tu (odpowiednio a i b w programie Matlab). Użycie narzÄ™dzia jest bardzo proste wystarczy wpisać (np. w oknie poleceÅ„): dfittool(dane) w naszym przypadku: dfittool(ttf) lub dfittool(ttr) Po uruchomieniu narzÄ™dzia otwiera siÄ™ osobne okno przedstawione na Rys. 6. Okno to zawiera kilka ważnych elementów. Najistotniejsze dla nas sÄ… przyciski znajdujÄ…ce siÄ™ nad wykresem. Aby zaimportować zbiór danych należy skorzystać z przycisku Data. Kolejny raz wyÅ›wietli siÄ™ nowe okno, które pozwala wybrać, do któr- ych zmiennych dopasowywać bÄ™dziemy rozkÅ‚ady. Operacje dodawania danych akceptu- jemy przyciskiem Create data set. Przycisk New Fit... po- Rysunek 6: Główne okno narzÄ™dzia dfittool zwala dodać nowe dopaso- wanie. Podobnie jak w przypadku tworzenia zbioru zmiennych korzystamy z odrÄ™bnego okna wyboru, które umożliwia nazwanie konkretnego dopasowania (Fit name) oraz zdefiniowanie po- żądanego rozkÅ‚adu (Distribution). Warto zaznaczyć, że do jednego wykresu możemy dodać wiele dopasowaÅ„, pozwala to Å‚atwiej okreÅ›lić, który rozkÅ‚ad jest najbardziej odpowiedni. Przyciski Manage fits... sÅ‚użą do zarzÄ…dzania dopasowaniami, natomiast Evaluate... Strona 18 oraz Exclude... kolejno do badania konkretnych zmiennych oraz wykluczania wartoÅ›ci, których nie chcemy obejmować dopasowywaniem. Ważnym elementem okna narzÄ™dzia dfittol jest również pole Display type. Pozwala ono wybrać sposób wyÅ›wietlania wykresów np.Density oznacza wyÅ›wietlanie w postaci funkcji gÄ™stoÅ›ci prawdopodobieÅ„stwa natomiast Cumulative probability funkcji rozkÅ‚adu prawdopodobieÅ„stwa. Spróbujemy teraz dopasować histogram wartoÅ›ci TTF oraz TTR do kilku rozkÅ‚adów. UznaliÅ›my, że najodpowiedniejsze bÄ™dÄ… rozkÅ‚ady: " normalny, " eksponencjalny, " Weibulla. UzyskaliÅ›my nastÄ™pujÄ…ce rezultaty (w postaci funkcji gÄ™stoÅ›ci prawdopodobieÅ„stwa): Rysunek 7: Dopasowania rozkÅ‚adów do wartoÅ›ci TTF Z analizy przeprowadzonego doÅ›wiadczenia (Rys. 7 oraz Rys. 8) wynika , że najlepiej dopasowany do histogramu jest rozkÅ‚ad eksponencjalny. RozkÅ‚ad normalny kompletnie nie pasuje, natomiast rozkÅ‚ad Weibulla osiÄ…ga zbyt duże gÄ™stoÅ›ci. Strona 19 Rysunek 8: Dopasowania rozkÅ‚adów do wartoÅ›ci TTR NarzÄ™dzie dfittol wygenerowaÅ‚o dla rozkÅ‚adów nastÄ™pujÄ…ce parametry: " dla rozkÅ‚adu normalnego: mu (Å›rednia ź) 8.77656 sigma (odchylenie standardowe Ã) 9.48085 " dla rozkÅ‚adu Weibulla a (parametr skali ) 8.45563 b (parametr ksztaÅ‚tu k) - 0.92366 " dla rozkÅ‚adu eksponencjalnego mu (parametr ) 8.77656 Niestety tylko na podstawie dopasowaÅ„ do histogramów nie możemy jednoznacznie okreÅ›lić, który rozkÅ‚ad najlepiej pasuje do naszych wartoÅ›ci. Przedstawimy wiÄ™c te same dane i rozkÅ‚ady na wykresie funkcji prawdopodobieÅ„stwa. W tym celu w polu Display type narzÄ™dzia dfittol wybieramy opcjÄ™ Probability plot. Strona 20 Rysunek 9: Wykres probabilistyczny dla wartoÅ›ci TTF i rozkÅ‚adu eksponencjalnego Rysunek 10: Wykres probabilistyczny dla wartoÅ›ci TTR i rozkÅ‚adu eksponencjalnego Widzimy, że o ile dla wartoÅ›ci TTF rozkÅ‚ad eksponencjalny jest dość dobrze dopasowany to dla wartoÅ›ci TTR nie (linia czerwona oznacza dopasowanie idealne). Porównamy wiÄ™c wyniki z pozostaÅ‚ymi rozkÅ‚adami. Strona 21 RozkÅ‚ad normalny: Rysunek 11: Wykres probabilistyczny dla wartoÅ›ci TTF i rozkÅ‚adu normalnego Rysunek 12: Wykres probabilistyczny dla wartoÅ›ci TTR i rozkÅ‚adu normalnego Podobnie jak w przypadku dopasowania do histogramu rozkÅ‚ad normalny odrzucamy, ze wzglÄ™du na to, że zdecydowanie odbiega od ideaÅ‚u (Rys. 11 oraz Rys 12) Strona 22 RozkÅ‚ad Weibulla: Rysunek 13: Wykres probabilistyczny dla wartoÅ›ci TTF i rozkÅ‚adu Weibulla Rysunek 14: Wykres probabilistyczny dla wartoÅ›ci TTR i rozkÅ‚adu Weibulla W tym momencie pojawia siÄ™ problem. Z analizy dopasowaÅ„ do histogramu wynika, że nasz rozkÅ‚ad najlepiej przybliża rozkÅ‚ad eksponencjalny. Zaprzeczeniem tego sÄ… wykresy Strona 23 probabilistyczne, na których jednoznacznie widać, że najbardziej dopasowany jest rozkÅ‚ad Weibulla (Rys. 12 oraz Rys. 13). Uznajemy wiÄ™c, że rozkÅ‚ad Weibulla bÄ™dzie najlepszym wyborem. V. Podsumowanie i wnioski W ramach projektu opracowaliÅ›my model symulacyjny systemu uwzglÄ™dniajÄ…cy wystÄ™powanie uszkodzeÅ„ i napraw elementów. Model ten zostaÅ‚ przedstawiony w postaci schematu blokowego. Na tej podstawie utworzyliÅ›my implementacjÄ™ programowÄ… modelu w Å›rodowisku Matlab. Poszczególne zdarzenia uszkodzenia i naprawy wygenerowaliÅ›my funkcjami programu Matlab. Symulator tworzy pliki wynikowe z rezultatami, które sÄ… nastÄ™pnie opracowywane w postaci histogramów i wykresów a także miar niezawodnoÅ›ciowych TTF, TTR, MTBF, MTTF, MTTR. Szacowanie charakterystyk niezawodnoÅ›ciowych pozwoliÅ‚o okreÅ›lić, że najlepiej dopasowanym rozkÅ‚adem jest rozkÅ‚ad Weibulla. Funkcje rozkÅ‚adów prawdopodobieÅ„stwa liczone sÄ… wedÅ‚ug nastÄ™pujÄ…cych wzorów: " dla rozkÅ‚adu eksponencjalnego: f śąxźą=ÁÄ…e-ÁÄ… x , dla x ‡Ä…0 gdzie: - parametr f śąxźą=0, dla x"Ä…0 " dla rozkÅ‚adu normalnego -śąx-Âąźą2 1 2 ÈÄ…2 f śą xźą= e , dla x‡Ä…0 gdzie ź Å›rednia, à odchylenie standardowe ÈÄ… ćą 2Ćą f śąxźą=0, dla x"Ä…0 " dla rozkÅ‚adu Weibulla p-1 f śąxźą=ÁÄ…k śąÁÄ… xźą e-śąÁÄ… xźąk , dla x‡Ä…0 gdzie parametr skali, k parametr ksztaÅ‚tu f śąxźą=0, dla x"Ä…0 Uwaga 1: W pracy czÄ™sto pojawia siÄ™ pojÄ™cie 'uszkodzenia' systemu. Przypominamy: system jest niesprawny gdy nie dziaÅ‚a wiÄ™cej niż jeden czujnik lub ukÅ‚ad diagnostyki jest niesprawny. Niesprawność systemu oznaczaliÅ›my zawsze cyfrÄ… 1, sprawność 0. Uwaga 2: Kod w postaci pliku Matlab`owego oraz sprawozdanie w wersji elektronicznej sÄ… zawarte na doÅ‚Ä…czonej do projektu pÅ‚ycie CD. Strona 24 VI. Bibliografia Podczas tworzenia niniejszego projektu korzystaliÅ›my z nastÄ™pujÄ…cych zródeÅ‚: 1. Jarnicki J. WykÅ‚ad o estymacji rozkÅ‚adów zmiennych losowych 2. Praca zbiorowa, Niezawodność i eksploatacja systemów , pod redakcjÄ… W. Zamojskie- go, WrocÅ‚aw 1981 3. Pratap R., Matlab 7 dla naukowców i inżynierów , Warszawa 2006 Miejsce na pÅ‚ytÄ™ CD Strona 25