Na bazie około 18mc doświadczeń w opracowywaniu rozwiązania pod nazwą SimpleMES powstała finalna kompilacja pod nazwą SpecMES. Idea pozostała ciągle ta sama – ma to być lekkie rozwiązanie klasy MES (Manufacturing Execution System), zaprojektowane z myślą o lokalnej pracy w środowisku produkcyjnym bez konieczności korzystania z usług chmurowych. System oparty na lokalnym serwerze PostgreSQL i rozwijany w technologii C# wspiera zarządzanie zleceniami produkcyjnymi oraz nadzorowanie realizacji procesów na stanowiskach pracy. Jego kluczową cechą jest pełna identyfikowalność produkcji opartej na numerach seryjnych, co pozwala dokładnie śledzić historię każdego wyrobu, operatora oraz użytych narzędzi.
Dzięki możliwości integracji z urządzeniami pomiarowymi, w tym sprzętem wykorzystującym protokół AGILENT, SpecMES umożliwia automatyczne gromadzenie danych z testów i procesów produkcyjnych. Takie podejście nie tylko zwiększa kontrolę jakości, ale również wspiera analizę i dokumentowanie wyników pomiarów. System został stworzony z myślą o przedsiębiorstwach wymagających wysokiego poziomu nadzoru nad procesem produkcyjnym i zgodności z normami jakościowymi, takimi jak ISO 22163 czy IATF 16949. SpecMES wspiera realizację wymagań dotyczących identyfikowalności, jakości i zgodności regulacyjnej, stanowiąc praktyczne narzędzie dla nowoczesnych zakładów produkcyjnych. Źródła rozwiązania są dostępne pod tym linkiem na GIT hubie.
Obecne rozwiązania LLM świetnie potrafią zsyntetyzować kod więc zakres dokumentacji jest pokryty w bardzo wysokim stopniu względem kodu -> opis w języku PL i ENG w formie tekstu lub pliku Word dostępny pod tym linkiem. W dalszej części znajduje się kilka skopiowanych elementów z opisu aby można było się zapoznać ze sposobem pracy systemu oraz jego architekturą. Co warto podkreślić – terminale produkcyjne utworzono z pomocą elementów graficznych dostępnych pod Windows jak i Linux -> rozwiązanie na produkcje nie jest przypisane na sztywno do jednego systemu. Kod jest na licencji BSD więc można go samemu skompilować i wyregulować do swoich potrzeb, jeżeli potrzebujesz pliku wykonywalnego – daj znać.
Poniżej kilka screenów z pracującej aplikacji – moduł zarządzania



Moduł pracujący na linuxie (Lubuntu) – SpecAPP (terminal produkcyjny)

I element w trakcie pracy na systemie windows po zalogowaniu

Przeznaczenie i zakres
System rejestruje przebieg produkcji każdej sztuki wyrobu (traceability): kto, kiedy, na którym stanowisku, jakim narzędziem i z jakim wynikiem wykonał każdy krok procesu, jakie materiały i części składowe zostały użyte oraz jakie decyzje podjął dział jakości.
System składa się z trzech programów:
| Program | Dla kogo | Do czego służy |
| SpecInstall | administrator | jednorazowe założenie struktury bazy danych i wygenerowanie plików konfiguracyjnych setup.ini |
| SpecManagment | planista, technolog, jakość, administrator danych | definiowanie wyrobów, marszrut, zleceń, materiałów, narzędzi i użytkowników; decyzje jakości; KPI; eksport |
| SpecAPP | operator produkcji | praca na stanowisku: skan numeru seryjnego, wykonanie kroku, zapis wyniku OK/NOK |
Poza zakresem systemu są: drukowanie etykiet z numerami seryjnymi, sam program pomiarowy (np. pomiar.exe – dostarcza go użytkownik) oraz integracja z systemem ERP (pole „WARTOŚĆ ERP” jest wpisywane ręcznie).
Architektura systemu

Rysunek 1. Architektura systemu
Najważniejsze zasady działania:
• Jedna baza, jeden schemat na firmę. Każda instalacja tworzy w bazie PostgreSQL osobny schemat o 5-znakowej nazwie (np. prod1). Na jednym serwerze może działać wiele niezależnych instalacji.
• Trzy role bazodanowe. <prefiks>_owner (właściciel tabel, bez prawa logowania), <prefiks>_mgmt (SpecManagment) i <prefiks>_prod (SpecAPP – tylko odczyt konfiguracji, dopisywanie wyników i zmiana stanu sztuki).
• Marszruta zamrażana przy starcie zlecenia. W chwili „Start produkcji” bieżąca marszruta wyrobu jest kopiowana do zlecenia. Późniejsze zmiany marszruty dotyczą dopiero kolejnych zleceń.
• Formularz stanowiska powstaje z konfiguracji kroku. SpecAPP nie ma ekranów „na sztywno” – pola materiałów, pomiaru i części składowej pojawiają się zgodnie z definicją kroku.
• Wyniki są tylko dopisywane. Wyniku kroku ani wpisu audytu nie można zmienić ani usunąć; korekta to zawsze nowy wpis.
Role i uprawnienia
Każdy użytkownik ma dokładnie jedną rolę. Rola decyduje, do którego programu można się zalogować i które zakładki SpecManagment są widoczne.
| Moduł | Produkcja | Planista | Technolog | Jakość | MasterDATA |
| SpecAPP (stanowisko) | ✔ | – | – | – | ✔ |
| Wyroby | – | zapis | podgląd | podgląd | zapis |
| Marszruty | – | podgląd | zapis | podgląd | zapis |
| Zlecenia | – | zapis | podgląd | podgląd | zapis |
| Dashboard KPI | – | ✔ | ✔ | ✔ | ✔ |
| Jakość | – | – | – | zapis | zapis |
| Eksport | – | ✔ | ✔ | ✔ | ✔ |
| Materiały | – | zapis | zapis | podgląd | zapis |
| Narzędzia | – | podgląd | zapis | zapis | zapis |
| Użytkownicy | – | – | – | – | zapis |
„Podgląd” oznacza, że zakładka jest widoczna (z dopiskiem „(podgląd)”), ale przyciski zapisu są nieaktywne. „–” oznacza brak zakładki.
Zasady logowania:
• Po 5 nieudanych próbach konto jest blokowane na 5 minut. Zapisanie użytkownika w zakładce „Użytkownicy” zdejmuje blokadę.
• Nowe lub zresetowane hasło wymusza zmianę przy pierwszym logowaniu. Hasło musi mieć co najmniej 4 znaki i różnić się od poprzedniego.
• W systemie musi pozostać co najmniej jeden aktywny użytkownik o roli MasterDATA.
Słownik pojęć i opis pól
Numer seryjny i definicja wyrobu
Każdy wyrób ma własny wzorzec numeru seryjnego:
[PREFIX][WARTOŚĆ ERP][Num++][SUFIX]
| Pole | Obowiązkowe | Długość | Opis |
| PREFIX | tak | 1–50 znaków | Stała część początkowa numeru, zwykle nazwa rodziny wyrobu wraz z separatorem, np. TELEFON/ lub TELEFON-. Separator (ukośnik, myślnik) jest częścią PREFIX-u – system niczego nie dokleja sam. |
| WARTOŚĆ ERP | nie | 0–50 znaków | Stała część środkowa, zwykle indeks lub oznaczenie wariantu z systemu ERP, np. NOKIA10/. Wpisywana ręcznie. |
| Num++ | tak | 3–6 cyfr | Licznik sztuk. Podaje się tylko liczbę cyfr; numer jest uzupełniany zerami z lewej (0001). Licznik zaczyna od 1 i rośnie o 1 dla każdej sztuki. |
| SUFIX | nie | 0–50 znaków | Stała część końcowa, np. wersja oprogramowania FW1.00. Spacje są dozwolone i są częścią numeru. |
Przykłady:
| PREFIX | WARTOŚĆ ERP | Num++ | SUFIX | Pierwszy numer |
| TELEFON/ | NOKIA10/ | 4 | FW1.00 | TELEFON/NOKIA10/0001 FW1.00 |
| TELEFON- | (puste) | 4 | (puste) | TELEFON-0001 |
Zasady, o których trzeba pamiętać:
• Znaki niedozwolone we wszystkich polach tekstowych: $ % ^ & ; # oraz znaki sterujące.
• Pojemność licznika wynosi 10^n − 1 sztuk: 3 cyfry = 999, 4 cyfry = 9 999, 5 cyfr = 99 999, 6 cyfr = 999 999. Licznik jest wspólny dla wszystkich zleceń danego wyrobu i nigdy się nie cofa. Zlecenia, które przekroczyłoby pojemność, system nie utworzy – trzeba zdefiniować nowy wyrób (np. z innym PREFIX-em lub dłuższym Num++).
• Wyrobu nie można zmienić ani usunąć. Wybranie wyrobu z listy kopiuje jego dane do formularza; po zmianie zapisuje się go jako nowy wyrób. Kombinacja PREFIX + WARTOŚĆ ERP + SUFIX + długość Num++ musi być unikalna.
• Numer seryjny jest unikalny w całym systemie. Jeśli dwa wyroby dałyby ten sam numer, zlecenie nie zostanie utworzone.
• Skan numeru na stanowisku usuwa wyłącznie końcowe CR/LF. Spacje – także końcowe – są częścią numeru, więc etykieta musi odwzorować numer co do znaku.
Zlecenie produkcyjne
| Pole | Opis |
| Numer zlecenia | Nadawany automatycznie: ZP-RRRRMMDD-NNN (data utworzenia i kolejny numer w danym dniu), np. ZP-20261110-001. |
| Wyrób | Na liście są tylko wyroby ze zdefiniowaną marszrutą. |
| Wersja BOM | Obowiązkowa, do 25 znaków. Informacja opisowa o wersji listy materiałowej, zapisywana przy zleceniu i widoczna na stanowisku oraz w eksporcie. |
| Ilość do produkcji | Liczba sztuk > 0. Tyle numerów seryjnych zostanie wygenerowanych od razu przy tworzeniu zlecenia. |
| Przewidywana data startu / ukończenia | Informacyjne; data startu nie może być późniejsza niż data ukończenia. |
| Notatki | Do 1000 znaków. |
Stany zlecenia:

Rysunek 2. Stany zlecenia produkcyjnego
• Utworzone – numery seryjne istnieją, ale stanowiska odrzucają ich skan („zlecenie nie zostało jeszcze wystartowane”).
• Aktywne – jedyny stan, w którym można pracować nad sztukami i podejmować decyzje jakości.
• Zamknięte / Anulowane – operacja nieodwracalna. Niedokończone sztuki zamkniętego zlecenia są trwale zablokowane.
Marszruta i krok
Marszruta to uporządkowana lista kroków wyrobu. Kroki wykonuje się kolejno według numerów; nie ma rozgałęzień.
| Pole kroku | Opis |
| Numer kroku | Liczba > 0. Zaleca się wielokrotności 10 (10, 20, 30 …), aby można było wstawić krok pomiędzy; przycisk „Nowy krok – podpowiedz numer” proponuje kolejną dziesiątkę. |
| Opis kroku | Obowiązkowy tytuł, do 50 znaków. |
| Treść kroku | Instrukcja dla operatora wyświetlana na stanowisku, do 500 znaków. |
| Step duration [s] | Planowany czas kroku w sekundach. Służy wyłącznie do porównania plan/rzeczywistość w KPI. |
| Work Instructions | Ścieżka do pliku instrukcji widziana ze stanowiska (do 500 znaków). Na stanowisku pojawia się przycisk „Instrukcja stanowiskowa…”, który otwiera plik domyślnym programem systemu. |
| Manual measurement | Pomiar ręczny jednej wartości. Wymaga: LSL ≤ USL, wskazania narzędzia; jednostka (Unit) do 10 znaków. Operator skanuje numer miernika i wpisuje wartość. |
| Automatic Measurement | Pomiar wykonywany przez zewnętrzny program (rozdz. 9). Wymaga: ścieżki programu, timeoutu > 0 s, narzędzia oraz 1–10 zdefiniowanych wyników. Wyklucza pomiar ręczny, materiały i Consumes. |
| Narzędzie | Przy pomiarze ręcznym – miernik, którego numer operator musi zeskanować. Przy pomiarze automatycznym – ToolID, który musi zwrócić program pomiarowy. |
| Wyniki 1–10 | Tylko dla pomiaru automatycznego, wypełniane kolejno od 1 bez przerw. Typ „Liczba”: wymagane LSL ≤ USL. Typ „Tekst”: wymagany tekst oczekiwany; porównanie jest dokładne, z rozróżnieniem wielkości liter. |
| Material declaration | Do 10 materiałów w kroku: zaznaczenie „Is used?”, materiał z listy, ilość > 0. |
| Consumes | Operator skanuje numer części składowej wbudowywanej w sztukę (np. numer PCB). |
| Repeatable Step? | Krok powtarzalny: wynik NOK nie blokuje sztuki, operator od razu ponawia krok. |
| Final Step? | Krok finalny: wynik OK kończy produkcję sztuki. Marszruta musi mieć dokładnie jeden krok finalny i musi on mieć najwyższy numer. |
Ograniczenia: granice LSL/USL są traktowane włącznie (wartość równa granicy jest poprawna). Łączna liczba akcji w kroku (materiały + pomiar ręczny + Consumes) nie może przekroczyć 10.
Przyciski: Add dodaje nowy krok (numer nie może już istnieć), Update aktualizuje istniejący krok o podanym numerze, Usuń krok usuwa go z marszruty bieżącej. Kroku finalnego nie da się usunąć, dopóki inny krok nie zostanie oznaczony jako finalny.
Materiał
| Pole | Opis |
| Nazwa | Obowiązkowa, unikalna, do 100 znaków. |
| Jednostka miary | Do 10 znaków, np. g, szt. |
| Ilość domyślna | Podpowiadana przy dodawaniu materiału do kroku. |
| Wzorzec partii | Opcjonalny wzorzec numeru partii: * zastępuje dowolny ciąg znaków, ? jeden znak. Przykład: KLEJ* przyjmie KLEJ-2026-11, odrzuci SR-4471. Pusty wzorzec = dowolny numer partii. Wielkość liter ma znaczenie. |