Oprogramowanie przemysłowe działa obok hardware’u, ale nie oznacza to, że cała aplikacja powinna mówić słownikiem specyficznym dla urządzeń.
Kiedy MES konsumuje stan maszyny, preferuję najpierw zdefiniować kontrakt na poziomie aplikacji: stany, zdarzenia, timestampy, identyfikatory i gwarancje jakości, których software rzeczywiście potrzebuje. Dostawca PLC lub infrastruktury może następnie mapować sygnały konkretnego urządzenia na ten kontrakt.
Dlaczego ta granica ma znaczenie
Bez kontraktu niskopoziomowe szczegóły szybko się rozlewają. Widoki zaczynają zależeć od pojedynczych sygnałów. Logika planowania poznaje konwencje nazewnicze urządzeń. Testy wymagają fixture’ów ukształtowanych jak hardware. Zmiana PLC staje się zmianą całej aplikacji.
Stabilny kontrakt odwraca tę zależność.
MES może rozumować na pojęciach takich jak dostępność, aktywna operacja, liczniki czy alarmy, podczas gdy warstwa integracyjna odpowiada za tłumaczenie z infrastruktury fizycznej.
Specyfikuj także niepewność
Przydatny kontrakt machine-state powinien opisywać coś więcej niż nazwy pól. Powinien także definiować:
- semantykę timestampów;
- zachowanie przy nieświeżych danych;
- zachowanie po reconnect;
- stan nieznany lub częściowy;
- oczekiwania dotyczące idempotencji;
- gwarancje kolejności, gdy są istotne.
W produkcji te warunki brzegowe zwykle okazują się ważniejsze niż happy-path payload.
Zasada praktyczna
Integruj się z granicą maszyny, a nie z każdym szczegółem maszyny. Utrzymuj stabilny model operacyjny i spraw, by translacja zależna od infrastruktury była wymienna.