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ście | Moment interwencji | Ograniczenie |
|---|---|---|
| Reaktywne | po wystąpieniu awarii | koszt przestoju i ryzyko uszkodzenia sąsiednich podzespołów |
| Planowe | w stałych odstępach czasu | część przeglądów jest zbędna, a część przychodzi za późno |
| Predykcyjne z AI | po wykryciu odchylenia od normy | wymaga danych z czujników i okresu uczenia modelu |
| Diagnostyka wspomagana AI | po wskazaniu prawdopodobnej przyczyny | wymaga 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 ujawnia | Cecha liczona z okna |
|---|---|---|
| Drgania | niewyważenie wirnika, luz, uszkodzenie łożyska | wartość skuteczna RMS, widmo FFT, kurtoza |
| Temperatura | kłopot z chłodzeniem albo smarowaniem | średnia z okna i tempo narastania |
| Pobór prądu | rosnące opory ruchu bez montażu dodatkowego osprzętu | średni prąd względem obciążenia |
| Dźwięk | tarcie i kawitacja w pompach | energia 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.

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 sygnale | Typowa przyczyna | Co potwierdza diagnozę |
|---|---|---|
| Wzrost składowej 1x obrotów | niewyważenie wirnika | drgania rosną wraz z prędkością obrotową |
| Wzrost składowej 2x obrotów | niewspółosiowość sprzęgła | wysoki poziom drgań osiowych |
| Składowe łożyskowe w widmie | uszkodzenie bieżni lub elementów tocznych | rosnąca kurtoza i temperatura łożyska |
| Wzrost temperatury bez wzrostu drgań | problem ze smarowaniem lub chłodzeniem | kontrola poziomu i stanu środka smarnego |
| Wzrost prądu przy stałym obciążeniu | rosnące opory ruchu | poró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ą.

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źnik | Definicja | Jak czytać wynik |
|---|---|---|
| Precyzja alarmów | udział alarmów potwierdzonych naprawą we wszystkich alarmach | niska wartość wskazuje na zbyt czuły próg |
| Czułość | udział awarii poprzedzonych alarmem we wszystkich awariach | niska wartość oznacza awarie przechodzące niezauważone |
| Czas wyprzedzenia | odstęp między alarmem a awarią lub naprawą | zbyt krótki uniemożliwia zaplanowanie prac |
| MTBF | średni czas między awariami maszyny | wzrost po wdrożeniu potwierdza skuteczność |
| MTTR | średni czas naprawy od zgłoszenia do przywrócenia sprawności | spadek 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.


