Nazywanie tematów MQTT dla OEE: jeden wzorzec dla każdej linii
Najważniejsze wnioski
- Nazwij tematy od zakładu w dół: site, area, line, machine, potem wartość.
- Używaj stabilnych ID, nie nazw wyświetlanych, małymi literami i bez spacji.
- Plain MQTT pozwala wybrać strukturę drzewa. Sparkplug B narzuca własny format, umieszczając waszą hierarchię w ID.
- Trzymaj znacznik czasu w wiadomości, ostemplowany u źródła, nie w topicu.
- Publikuj tylko zmiany, aby broker przekazywał zdarzenia zamiast szumu.
MQTT przesyła dane zakładowe jako wiadomości na nazwanych topicach. Dla OEE nazwa topicu to sposób, w jaki każdy późniejszy system znajdzie stan maszyny i liczniki. Wybierz jeden wzorzec od zakładu w dół, stosuj go na każdej linii i nigdy nie zmieniaj nazwy topicu, gdy po nim już płyną dane.
Fabrico, oprogramowanie OEE i lekki MES z kamerami AI, rejestruje przestoje automatycznie z sygnału maszyny, bez względu na to, jak ten sygnał jest przesyłany. To, jak dane docierają do Fabrico w Twojej sieci, uzgadniasz z zespołem technicznym Fabrico. Ten przewodnik obejmuje neutralną względem dostawcy stronę nazewnictwa.
Dlaczego nazewnictwo topiców MQTT ma znaczenie dla OEE?
- Subskrybenci filtrują po topicu. Dobre drzewo pozwala jednemu subskrypcji zebrać każdy filler na danym site.
- Raporty łączą się po nazwach. ID linii i maszyny w topicach muszą pasować do tych w kalendarzu zmian.
- Historia podąża za topiciem. Zmienisz nazwę topicu i dane z zeszłego miesiąca wydają się należeć do innej maszyny.
Broker MQTT nie sprawdza nazw za Ciebie. Wzorzec użyty przez pierwszą bramkę staje się wzorcem zakładu — zdecyduj go zanim pierwsza linia zacznie działać.
Jakiego wzorca powinny używać tematy OEE?
Większość zakładów stosuje poziomy ISA-95, które też kształtują ideę zunifikowanej przestrzeni nazw: jedno wspólne drzewo dla całego site. Bramy edge często budują dokładnie takie drzewo z danych PLC.
| Level | Example | Rule |
|---|---|---|
| Site | plant2 | Stałe site ID, nigdy tylko nazwa miasta |
| Area | packaging | Jedno słowo na obszar |
| Line | line4 | ID używane w kalendarzu zmian |
| Machine | filler | Jedna nazwa na rolę maszyny |
| Value | state, total_count, fault_code | Jeden topic na wartość, te same nazwy na każdej maszynie |
Stąd stan filler na linii 4 znajduje się pod plant2/packaging/line4/filler/state. Nasz przewodnik po unified namespace omawia szerszą ideę.
Jakie zasady utrzymują nazwy topiców w porządku?
- Tylko małe litery. Topicy MQTT rozróżniają wielkość liter, więc Line4 i line4 to dwa różne topic.
- Brak spacji i specjalnych znaków. Używaj liter, cyfr i podkreślenia.
- Nigdy nie używaj + lub # w nazwie. To są wildcardy używane przez subskrybentów.
- Nie zaczynaj od ukośnika ani od $. Topicy zaczynające się od $ są zarezerwowane dla brokera.
- Używaj ID, które się nigdy nie zmieniają. "filler" pozostaje "filler", gdy maszyna zostanie wymieniona.
- Trzymaj jednostki poza nazwą. Umieść jednostkę w wiadomości lub na liście tagów, aby topic nie zmieniał się przy zmianie jednostki.
- Zapisz wzorzec na jednej stronie i przekaż go każdemu integratorowi zanim podłączą bramkę.
Plain MQTT czy Sparkplug B?
Z plain MQTT projektujesz całe drzewo samodzielnie, jak powyżej. Sparkplug B dodaje stały format topicu, format payload i stan sesji. Jego topicy mają postać spBv1.0/group_id/message_type/edge_node_id/device_id, a część namespace musi być spBv1.0.
W Sparkplug hierarchia zakładu trafia do ID. Grupa może być plant2_packaging, edge node line4_gw, a device filler. Wartości podróżują jako metryki wewnątrz wiadomości, a nie jako osobne topicy. Nasz przewodnik po Sparkplug B wyjaśnia wiadomości birth i death.
Przykład: topicy dla jednej linii
Przykładowa linia (liczby poglądowe, nie klient). Linia 4 ma trzy maszyny: filler, capper i labeller. Każda publikuje pięć wartości: state, total_count, reject_count, fault_code i sku. To 3 x 5 = 15 topiców.
- plant2/packaging/line4/filler/state
- plant2/packaging/line4/capper/fault_code
- plant2/packaging/line4/labeller/total_count
Jedna subskrypcja na plant2/packaging/+/+/state zbiera stan każdej maszyny w packaging. Wildcard + dopasowuje dokładnie jeden poziom.
A teraz wolumen. Polling wszystkich 15 wartości co sekundę wysyła 15 x 3,600 = 54 000 wiadomości na godzinę.
Zamiast tego publikuj stany, błędy i SKU tylko przy zmianie, około 100 wiadomości na godzinę. Wysyłaj dwa liczniki na każdej maszynie co 10 sekund: 3 x 2 x 360 = 2 160 wiadomości. To daje w przybliżeniu 2 260 wiadomości na godzinę, czyli około 96% mniej.
Jakie błędy nazewnictwa sprawiają problemy później?
- Nazwy wyświetlane w topicach, takie jak "Filler (new)", które zmieniają się, gdy ktoś edytuje ekran.
- Zmiana nazwy linii po zmianie układu, przez co historia dzieli się na dwie części.
- Mieszane języki lub pisownie między zakładami, przez co raport grupowy nie może ich połączyć.
- Jeden gigantyczny topic niosący cały zakład w jednej wiadomości, którego nikt nie potrafi filtrować.
- Brak znacznika czasu w wiadomości, więc zdarzenia dostają czas przybycia zamiast czasu zdarzenia.
Publikowanie tylko zmian to idea stojąca za report by exception. Nasz artykuł o report by exception vs polling omawia to, a MQTT in manufacturing opisuje protokół.
Gdzie pasuje Fabrico?
Fabrico to platforma Manufacturing Performance z wbudowanym computer vision. OEE i lekki MES są na pierwszym miejscu, na jednym zestawie nazw linii i maszyn.
- Automatyczne rejestrowanie przestojów z sygnału maszyny.
- Operator potwierdza powód jednym stuknięciem, ponieważ topic niesie stan, nie przyczynę.
- OEE na żywo według linii i zmiany, z każdą stratą wycenioną w pieniądzu.
- Jeden widok w skali zakładów, który działa tylko gdy nazwy pasują.
To warstwa OEE light MES. Zaczynasz na jednej linii, z linią bazową i uzgodnioną wcześniej datą decyzji. Nie ma darmowego planu i nie ma poziomów: każdy zakład otrzymuje wycenę.
Najczęściej zadawane pytania
Czym jest konwencja nazewnictwa topiców MQTT?
To stała reguła zakładu określająca, jak budowane są topicy, np. site, area, line, machine i value, w tej kolejności. Każda bramka ją stosuje. Dzięki temu każdy system może znaleźć dane maszyny po nazwie, a raport może połączyć linie i zakłady bez ręcznego mapowania.
Czy topicy MQTT powinny podążać za ISA-95?
Dla OEE to rozsądny wybór. Poziomy ISA-95: site, area, line i machine odpowiadają sposobowi, w jaki zakłady są prowadzone i raportowane. Większość projektów unified namespace używa tej kolejności. Najważniejsze to wybrać jeden wzorzec i stosować go wszędzie.
Jaki jest format topicu Sparkplug B?
Topicy Sparkplug B zaczynają się od spBv1.0, potem group ID, message type, edge node ID i device ID. Część namespace musi być spBv1.0. Hierarchia zakładu trafia do group, node i device ID, a wartości przesyłane są jako metryki w wiadomości.
Jak działają wildcardy MQTT?
Subskrybenci mogą używać dwóch wildcardów. Plus dopasowuje dokładnie jeden poziom, więc plant2/packaging/+/filler/state pasuje do filler na każdej linii packaging. Hash dopasowuje wszystkie pozostałe poziomy, więc plant2/# pasuje do wszystkiego w tym site.
Czy znacznik czasu powinien być w topicu czy w wiadomości?
W wiadomości. Topicy określają skąd pochodzą dane; nie powinny zmieniać się przy każdym zdarzeniu. Ostempluj każde zdarzenie zegarem PLC lub bramki w momencie jego wystąpienia. Umieść ten czas w payloadzie, aby opóźniona wiadomość zachowała swój rzeczywisty czas.
Przynieś drzewo topiców na demo
Przynieś listę linii w swoim zakładzie. Pokażemy zatrzymania i liczniki jednej linii, nazwane tak, jak działa twój zakład.
Powiązane artykuły
Najnowsze wiadomości z naszego bloga

Prawdziwe kafelki Fabrico, dane przykładowe.











