Sztuczna inteligencja w diagnozowaniu maszyn - co model ustala

Diagnozą nazywa się ustalenie, co w maszynie przestaje działać poprawnie i z jakiego powodu. Monitoring odpowiada na prostsze pytanie, czyli czy dana wartość mieści się w dopuszczalnym zakresie. Prognoza szacuje z kolei, ile czasu zostało do awarii. Sztuczna inteligencja w diagnozowaniu maszyn dotyka wszystkich tych zadań, ale każde z nich wymaga innych danych i innego modelu.

Punktem wyjścia są zapisy, które zakład już wytwarza: odczyty czujników, historia zleceń serwisowych i daty wymiany części. Model uczy się na nich, jak wygląda praca urządzenia w stanie sprawnym, a odchylenia od tego wzorca traktuje jako sygnał do sprawdzenia. Zapis o naprawie, który wraca do modelu jako opis skutku, pozwala z czasem powiązać konkretny wzorzec odchylenia z konkretną przyczyną.

PodejścieMoment interwencjiOgraniczenie
Reaktywnepo wystąpieniu awariikoszt przestoju i ryzyko uszkodzenia sąsiednich podzespołów
Planowew stałych odstępach czasuczęść przeglądów jest zbędna, a część przychodzi za późno
Predykcyjne z AIpo wykryciu odchylenia od normywymaga danych z czujników i okresu uczenia modelu
Diagnostyka wspomagana AIpo wskazaniu prawdopodobnej przyczynywymaga opisanej historii napraw

Reguła: wykrycie anomalii nie jest diagnozą. Model bez opisanej historii napraw pokaże, że coś się zmieniło, ale nie nazwie przyczyny.

Ten tekst prowadzi od sygnału do zlecenia. Samo ustawianie progów alarmowych na hali opisuje artykuł o monitorowaniu pracy maszyn z AI, a rozwój diagnostyki od słuchu mechanika do algorytmów przedstawia tekst od intuicji do algorytmów. Ogólny kontekst technologii zbiera strona o sztucznej inteligencji w firmie.

Sygnały z maszyny i cechy używane przez model

Czujniki drgań rejestrują przyspieszenie albo prędkość drgań obudowy łożyska. Czujnik temperatury pokazuje nagrzewanie się węzła, a trzecim źródłem jest prąd pobierany przez silnik, który rośnie wraz z oporami ruchu. Każdy z tych sygnałów mówi o innym rodzaju zużycia.

Co ujawnia każdy sygnał

SygnałCo ujawniaCecha liczona z okna
Drganianiewyważenie wirnika, luz, uszkodzenie łożyskawartość skuteczna RMS, widmo FFT, kurtoza
Temperaturakłopot z chłodzeniem albo smarowaniemśrednia z okna i tempo narastania
Pobór prądurosnące opory ruchu bez montażu dodatkowego osprzętuśredni prąd względem obciążenia
Dźwięktarcie i kawitacja w pompachenergia w wybranych pasmach częstotliwości

Cechy zamiast surowych próbek

Model rzadko dostaje surowe próbki. Sygnał dzieli się na okna czasowe, a z każdego okna liczy się kilka cech. Częstotliwość próbkowania musi być co najmniej dwa razy wyższa niż najwyższa analizowana częstotliwość drgań, czyli spełniać kryterium Nyquista, bo inaczej widmo zostaje zafałszowane zjawiskiem aliasingu. Okno obejmujące pełną liczbę obrotów wału stabilizuje wynik.

static double Rms(ReadOnlySpan<double> okno)
{
    double suma = 0;
    foreach (var x in okno) suma += x * x;
    return Math.Sqrt(suma / okno.Length);
}

Wartość skuteczna rośnie, gdy rośnie energia drgań, więc jest prostym wskaźnikiem ogólnego stanu maszyny. Widmo FFT rozkłada ten sam sygnał na składowe częstotliwości i pozwala przypisać wzrost do konkretnego elementu, na przykład wału albo łożyska.

Operatorka w kasku dotyka dużego ekranu z interfejsem nadzoru maszyn w hali produkcyjnej
Stanowisko nadzoru z podglądem sygnałów - źródło danych dla etapu wyboru cech.

Jakość danych z czujników

Model jest tak dobry, jak dane, które dostaje. Pierwszym problemem jest czas: odczyty z kilku czujników muszą leżeć na wspólnej osi czasu, bo porównanie drgań z prądem sprzed dwóch sekund daje inny obraz niż porównanie z tej samej chwili. Rozjazd zegarów urządzeń zbierających dane rzędu kilku sekund wystarcza, by zniekształcić zależności przy szybkich zdarzeniach.

Drugim problemem są luki. Utrata łączności z bramką pomiarową zostawia w danych puste okna, których nie wolno wypełniać zerem, bo zero jest poprawną wartością pomiaru. Puste okno oznacza się osobną flagą i pomija przy liczeniu normy.

Tabela pomiarów w SQL Server

Odczyty przybywają w jednym kierunku, czyli wraz z czasem. Indeks klastrowy po maszynie i czasie zapisu grupuje pomiary jednej maszyny obok siebie, więc zapytanie o ostatni miesiąc czyta ciągły zakres stron zamiast wielu rozproszonych.

CREATE TABLE dbo.pomiar_drgan (
    id_maszyny   int          NOT NULL,
    data_pomiaru datetime2(0) NOT NULL,
    rms_mm_s     float        NOT NULL,
    tryb_pracy   tinyint      NOT NULL,
    jakosc       tinyint      NOT NULL DEFAULT 0,
    CONSTRAINT pk_pomiar_drgan PRIMARY KEY CLUSTERED (id_maszyny, data_pomiaru)
);

Kolumna jakości pozwala odfiltrować odczyty oznaczone jako niewiarygodne, a kolumna trybu pracy przechowuje podział norm. Przy dużej liczbie punktów pomiarowych starsze dane agreguje się do średnich godzinowych w zadaniu SQL Agent, żeby tabela nie rosła bez ograniczeń.

Wykrywanie anomalii na podstawie modelu normalnej pracy

Model normalnej pracy buduje się osobno dla każdej maszyny, a często także dla każdego trybu obciążenia. Ta sama prasa daje inne drgania pod pełnym naciskiem, a inne na biegu jałowym. Wspólny próg dla obu stanów wygenerowałby fałszywe alarmy albo przeoczył usterkę.

Próg statystyczny

Najprostsza metoda porównuje bieżący odczyt ze średnią i odchyleniem standardowym z ostatnich tygodni. Poniższe zapytanie w T-SQL wybiera odczyty z ostatniej godziny, które przekraczają średnią o trzy odchylenia.

WITH baza AS (
    SELECT id_maszyny,
           AVG(rms_mm_s)   AS srednia,
           STDEV(rms_mm_s) AS odchylenie
    FROM dbo.pomiar_drgan
    WHERE data_pomiaru >= DATEADD(DAY, -30, SYSDATETIME())
    GROUP BY id_maszyny
)
SELECT p.id_maszyny, p.data_pomiaru, p.rms_mm_s
FROM dbo.pomiar_drgan AS p
JOIN baza AS b ON b.id_maszyny = p.id_maszyny
WHERE p.data_pomiaru >= DATEADD(HOUR, -1, SYSDATETIME())
  AND p.rms_mm_s > b.srednia + 3 * b.odchylenie;

Nazwy tabel i kolumn są przykładowe. Próg trzech odchyleń jest punktem startowym, a nie regułą: rozkład drgań rzadko jest normalny, więc wartość trzeba dobrać na danych konkretnego zakładu.

Modele uczone bez etykiet

Gdy zależności między sygnałami są zbyt złożone dla pojedynczego progu, stosuje się modele uczone bez etykiet. Przykładem jest las izolacji, który wyodrębnia rzadkie punkty krótszą ścieżką w drzewach decyzyjnych. Opis algorytmu i jego parametrów podaje dokumentacja klasy IsolationForest w bibliotece scikit-learn. Parametr contamination określa oczekiwany udział anomalii w danych i bezpośrednio wpływa na liczbę alarmów.

  • Okno bazowe - długość historii, z której liczona jest norma; zbyt krótkie okno uczy się awarii jako stanu normalnego.
  • Próg - odległość od normy, po przekroczeniu której odczyt uznaje się za odchylenie.
  • Liczba kolejnych przekroczeń - ile następujących po sobie okien musi przekroczyć próg, zanim powstanie alarm.
  • Tryb pracy - podział norm według obciążenia albo receptury, żeby nie mieszać różnych stanów maszyny.

Alarm, który znika po jednym oknie, zwykle jest zakłóceniem, a nie usterką. Wymóg kilku kolejnych przekroczeń tłumi takie zdarzenia kosztem opóźnienia wykrycia. Ustawienie jest więc kompromisem między liczbą fałszywych alarmów a czasem reakcji.

Od anomalii do przyczyny

Alarm mówi tylko tyle, że coś się zmieniło. Przyczynę zawęża się, zestawiając wzorzec widma z typowymi mechanizmami uszkodzeń. Wzrost składowej o częstotliwości obrotowej wału zwykle wskazuje na niewyważenie, a silna składowa przy dwukrotności tej częstotliwości na niewspółosiowość. Uszkodzenia łożysk ujawniają się przy częstotliwościach wynikających z geometrii łożyska.

Objaw w sygnaleTypowa przyczynaCo potwierdza diagnozę
Wzrost składowej 1x obrotówniewyważenie wirnikadrgania rosną wraz z prędkością obrotową
Wzrost składowej 2x obrotówniewspółosiowość sprzęgławysoki poziom drgań osiowych
Składowe łożyskowe w widmieuszkodzenie bieżni lub elementów tocznychrosnąca kurtoza i temperatura łożyska
Wzrost temperatury bez wzrostu drgańproblem ze smarowaniem lub chłodzeniemkontrola poziomu i stanu środka smarnego
Wzrost prądu przy stałym obciążeniurosnące opory ruchuporównanie z prądem sprzed kilku tygodni

Klasyfikator przyczyn uczy się dopiero na zamkniętych zleceniach. Technik zamykający zlecenie wpisuje faktyczną przyczynę i wykonaną czynność, a ten zapis staje się etykietą dla odczytów sprzed naprawy. Bez takiego sprzężenia zwrotnego system pozostaje detektorem odchyleń.

Reguła: zlecenie zamyka się opisem faktycznej przyczyny, bo model uczy się z tego pola, a nie z komentarza wpisanego w pośpiechu.

Rzadkie przyczyny mają mało przykładów w historii. Dla nich klasyfikator zaczyna od reguł opartych na tabeli powyżej, a model uczony przejmuje zadanie dopiero wtedy, gdy zbierze się wystarczająco dużo zamkniętych zleceń z daną przyczyną.

Dłoń w niebieskiej rękawicy montuje element na zespole tarczowym przy stanowisku naprawczym
Naprawa i wpis o wykonanej czynności zamykają pętlę: opis przyczyny wraca do modelu jako etykieta.

Zlecenie serwisowe w CMMS po alarmie

System CMMS przejmuje wynik diagnozy. W schemacie opisanym dla Studio TCS.net tworzy zlecenie serwisowe, przypisuje je do technika z odpowiednimi kwalifikacjami i sprawdza dostępność części zamiennych. Rolę tej klasy oprogramowania omawia tekst o roli CMMS, a zmianę w utrzymaniu ruchu opisuje artykuł CMMS w utrzymaniu ruchu i Przemyśle 4.0. Dane z czujników trafiają do systemu przez integrację opisaną w tekście o integracji maszyn z systemami IoT.

Deduplikacja alarmów

Ten sam stan maszyny daje alarm w każdym oknie pomiarowym. Bez kontroli w kolejce zleceń pojawiłyby się dziesiątki duplikatów. Procedura tworząca zlecenie sprawdza więc, czy dla danej maszyny i typu alarmu istnieje już zlecenie otwarte.

IF NOT EXISTS (
    SELECT 1 FROM dbo.zlecenie_serwisowe
    WHERE id_maszyny = @id_maszyny
      AND typ_alarmu = N'drgania_rms'
      AND status IN (N'nowe', N'przydzielone', N'w_realizacji'))
BEGIN
    INSERT INTO dbo.zlecenie_serwisowe (id_maszyny, typ_alarmu, status, data_utworzenia)
    VALUES (@id_maszyny, N'drgania_rms', N'nowe', SYSDATETIME());
END

Przy dużym ruchu między sprawdzeniem a wstawieniem może wejść drugi wątek, dlatego w środowisku produkcyjnym warunek zabezpiecza się dodatkowo unikalnym indeksem filtrowanym na otwartych statusach.

Statusy zlecenia i części zamienne

Zlecenie utworzone przez alarm przechodzi przez ustalony cykl. Każdy status ma właściciela i warunek przejścia, dzięki czemu kierownik utrzymania ruchu widzi, na którym etapie zatrzymało się zgłoszenie.

  • Nowe - zlecenie z alarmu czeka na przydział; system sprawdza w tym momencie stan magazynu części dla wskazanej przyczyny.
  • Przydzielone - technik o właściwych kwalifikacjach przyjął zlecenie i widzi historię odczytów sprzed alarmu.
  • W realizacji - trwa naprawa, a pobrane części i wypożyczone narzędzia zapisują się w karcie zlecenia.
  • Zamknięte - technik wpisał przyczynę i wykonaną czynność, co tworzy etykietę dla modelu.

Brak części zamiennej blokuje naprawę dłużej niż sama usterka. Sprawdzenie dostępności w chwili tworzenia zlecenia pozwala złożyć zamówienie, zanim technik dotrze do maszyny, a nie dopiero po demontażu.

Narzędzia specjalistyczne przy zleceniu

Gdy naprawa wymaga narzędzia z narzędziowni, jego wypożyczenie zapisuje się w karcie tego samego zlecenia. Rozliczenie czasu naprawy i zużycia sprzętu opiera się wtedy na jednym dokumencie. Zasady wydań opisuje tekst o wypożyczaniu narzędzi z magazynu, a ten sam mechanizm w odniesieniu do narzędzi i odzieży rozwija strona AI w narzędziowni i odzieży roboczej.

Ocena skuteczności i utrzymanie modelu w pracy

Skuteczność modelu ocenia się na zamkniętych zleceniach, a nie na liczbie wygenerowanych alarmów. Alarm potwierdzony naprawą zwiększa precyzję, a awaria bez wcześniejszego alarmu obniża czułość. Oba wskaźniki trzeba czytać razem, bo próg obniżony do zera daje idealną czułość i bezużyteczną precyzję.

Ocenę wstecz wykonuje się na danych z okresu, którego model nie widział: odczyty sprzed znanej awarii przepuszcza się przez model i sprawdza, czy alarm pojawił się z wyprzedzeniem. Test na tych samych danych, na których model się uczył, zawyża wynik, bo model zna już odpowiedź.

WskaźnikDefinicjaJak czytać wynik
Precyzja alarmówudział alarmów potwierdzonych naprawą we wszystkich alarmachniska wartość wskazuje na zbyt czuły próg
Czułośćudział awarii poprzedzonych alarmem we wszystkich awariachniska wartość oznacza awarie przechodzące niezauważone
Czas wyprzedzeniaodstęp między alarmem a awarią lub naprawązbyt krótki uniemożliwia zaplanowanie prac
MTBFśredni czas między awariami maszynywzrost po wdrożeniu potwierdza skuteczność
MTTRśredni czas naprawy od zgłoszenia do przywrócenia sprawnościspadek wskazuje na trafniejszą diagnozę

Model starzeje się razem z maszyną. Wymiana łożyska, zmiana receptury albo remont przesuwają normę, więc po takim zdarzeniu okno bazowe trzeba wyzerować albo oznaczyć jako okres ponownego uczenia. Bez tego model przez kilka tygodni porównuje nowy stan maszyny ze starą normą.

Wdrożenie zaczyna się od maszyn, których przestój zatrzymuje produkcję. Kilka miesięcy danych z jednej linii pozwala ocenić skuteczność modelu, zanim algorytm obejmie cały park maszynowy. Sposób uruchomienia diagnostyki w narzędziowni opisuje też strona diagnozowanie maszyn ze sztuczną inteligencją oraz jej odpowiednik w serwisie produktowym: diagnozowanie maszyn w Studio TCS.net.

Koszt przestojów, które ta diagnostyka ma ograniczać, omawia tekst utrzymanie ruchu jako koszt i inwestycja.