Samouczek: implementowanie architektury rozwiązania referencyjnego azure Industrial IoT

Producenci chcą wdrożyć ogólne rozwiązanie przemysłowe IoT na skalę globalną i połączyć wszystkie swoje zakłady produkcyjne z tym rozwiązaniem w celu zwiększenia wydajności dla każdej pojedynczej lokacji produkcyjnej.

Zwiększenie wydajności prowadzi do szybszej produkcji i niższego zużycia energii, co prowadzi do obniżenia kosztów produkowanych towarów przy jednoczesnym zwiększeniu ich jakości w większości przypadków.

Rozwiązanie musi być tak wydajne, jak to możliwe i włączyć wszystkie wymagane przypadki użycia, takie jak monitorowanie warunków, obliczanie OEE, prognozowanie i wykrywanie anomalii. Na podstawie szczegółowych informacji uzyskanych z tych przypadków użycia w drugim kroku można utworzyć cyfrową pętlę opinii, która może następnie stosować optymalizacje i inne zmiany w procesach produkcyjnych.

Współdziałanie jest kluczem do osiągnięcia szybkiego wdrożenia architektury rozwiązania i stosowania otwartych standardów, takich jak OPC UA, znacznie pomaga w osiągnięciu tego współdziałania.

IEC 62541 Open Platform Communications Unified Architecture (OPC UA)

To rozwiązanie używa protokołu IEC 62541 Open Platform Communications (OPC) Unified Architecture (UA) dla wszystkich danych technologii operacyjnych (OT). Ten standard został opisany tutaj.

Referencyjna architektura rozwiązania

Uproszczona architektura (opcje platformy Azure i sieci szkieletowej):

Diagram prostej architektury IIoT.

Szczegółowa architektura (tylko platforma Azure):

Diagram architektury IIoT.

Składniki

Oto składniki związane z tym rozwiązaniem:

Składnik opis
Zasoby przemysłowe Zestaw symulowanych linii produkcyjnych z obsługą OPC-UA hostowanych w kontenerach platformy Docker
Operacje usługi Azure IoT Operacje usługi Azure IoT to ujednolicona płaszczyzna danych dla krawędzi. Obejmuje ona zestaw modularnych, skalowalnych i wysoce dostępnych usług danych, które działają w klastrach Kubernetes z obsługą usługi Azure Arc.
Brama danych Ta brama łączy lokalne źródła danych (takie jak SAP) z usługą Azure Logic Apps w chmurze.
Azure Kubernetes Services Edge Essentials Ta implementacja platformy Kubernetes jest uruchamiana w przeglądarce Edge. Zapewnia on klastry Kubernetes z jednym i wieloma węzłami na potrzeby konfiguracji brzegowej odpornej na błędy. Obsługiwane są zarówno K3S, jak i K8S. Działa na sprzęcie osadzonym lub klasy pc, na przykład w bramie przemysłowej.
Azure Event Hubs Broker komunikatów w chmurze, który odbiera komunikaty OPC UA PubSub z bram brzegowych i przechowuje je do momentu pobrania przez subskrybentów.
Azure Data Explorer Baza danych szeregów czasowych i usługa pulpitu nawigacyjnego frontonu na potrzeby zaawansowanej analizy w chmurze, w tym wbudowane wykrywanie anomalii i przewidywania.
Azure Logic Apps Azure Logic Apps to platforma w chmurze, której można użyć do tworzenia i uruchamiania zautomatyzowanych przepływów pracy bez kodu.
Azure Arc Ta usługa w chmurze służy do zarządzania lokalnym klastrem Kubernetes na brzegu sieci. Nowe obciążenia można wdrażać za pośrednictwem platformy Flux.
Azure Storage Ta usługa w chmurze służy do zarządzania magazynem certyfikatów OPC UA i ustawieniami obciążeń usługi Edge Kubernetes.
Azure Managed Grafana Azure Managed Grafana to platforma wizualizacji danych oparta na oprogramowaniu Grafana firmy Grafana firmy Grafana Labs. Narzędzie Grafana jest tworzone jako w pełni zarządzana usługa, która jest hostowana i obsługiwana przez firmę Microsoft.
Microsoft Power BI Microsoft Power BI to kolekcja usług oprogramowania SaaS, aplikacji i łączników, które współpracują ze sobą, aby przekształcić niepowiązane źródła danych w spójne, wizualnie immersyjne i interaktywne szczegółowe informacje.
Microsoft Dynamics 365 Field Service Usługa Microsoft Dynamics 365 Field Service to gotowe rozwiązanie SaaS do zarządzania żądaniami usługa terenowa.
UA Cloud Commander Ta aplikacja referencyjna typu open source konwertuje komunikaty wysyłane do usługi Transport telemetrii kolejki komunikatów (MQTT) lub brokera platformy Kafka (ewentualnie w chmurze) do żądań klienta/serwera OPC UA dla połączonego serwera OPC UA. Aplikacja działa w kontenerze platformy Docker.
Akcja chmury UA Ta aplikacja w chmurze typu open source wysyła zapytanie do usługi Azure Data Explorer pod kątem określonej wartości danych. Wartość danych to ciśnienie w jednej z symulowanych maszyn linii produkcyjnych. Wywołuje funkcję UA Cloud Commander za pośrednictwem usługi Azure Event Hubs po osiągnięciu określonego progu (4000 mbar). Funkcja UA Cloud Commander wywołuje metodę OpenPressureReliefValve na maszynie za pośrednictwem OPC UA.
Biblioteka chmury UA Biblioteka chmury UA to sklep online modeli informacji OPC UA, hostowanych tutaj przez fundację OPC Foundation.
UA Edge Translator Ta aplikacja referencyjna łączności przemysłowej typu open source tłumaczy się z zastrzeżonych interfejsów zasobów na OPC UA przy użyciu W3C Web of Things (WoT) Thing Descriptions jako schematu opisujący interfejs zasobów przemysłowych.

Uwaga

W rzeczywistym wdrożeniu coś tak krytycznego, jak otwarcie zaworu nadmiarowego ciśnienia byłoby wykonywane lokalnie. Jest to prosty przykład osiągnięcia cyfrowej pętli opinii.

Magazyn certyfikatów OPC UA oparty na chmurze i trwały magazyn

Gdy producenci uruchamiają aplikacje OPC UA, ich pliki konfiguracji OPC UA, klucze i certyfikaty muszą być utrwalane. Chociaż platforma Kubernetes ma możliwość utrwalania tych plików w woluminach, bezpieczniejsze miejsce dla nich to chmura, szczególnie w klastrach z jednym węzłem, w których wolumin zostanie utracony, gdy węzeł ulegnie awarii. W tym scenariuszu aplikacje OPC UA używane w tym rozwiązaniu przechowują pliki konfiguracji, klucze i certyfikaty w chmurze. Takie podejście zapewnia również jedną lokalizację dla wzajemnie zaufanych certyfikatów dla wszystkich aplikacji OPC UA.

Biblioteka chmury UA

Modele informacji OPC UA można odczytywać bezpośrednio z usługi Azure Data Explorer. Można to zrobić, importując węzły OPC UA zdefiniowane w modelu informacyjnym OPC UA do tabeli w celu wyszukania większej liczby metadanych w zapytaniach.

Najpierw skonfiguruj zasady objaśnień usługi Azure Data Explorer (ADX) dla biblioteki chmury UA, uruchamiając następujące zapytanie w klastrze ADX (upewnij się, że jesteś administratorem klastra ADX, konfigurowalnym w obszarze Uprawnienia na karcie ADX w witrynie Azure Portal):

.alter cluster policy callout @'[{"CalloutType": "webapi","CalloutUriRegex": "uacloudlibrary.opcfoundation.org","CanCall": true}]'

Następnie uruchom następujące zapytanie usługi Azure Data Explorer w witrynie Azure Portal:

let uri='https://uacloudlibrary.opcfoundation.org/infomodel/download/\<insert information model identifier from the UA Cloud Library here\>';
let headers=dynamic({'accept':'text/plain'});
let options=dynamic({'Authorization':'Basic \<insert your cloud library credentials hash here\>'});
evaluate http_request(uri, headers, options)
| project title = tostring(ResponseBody.['title']), contributor = tostring(ResponseBody.contributor.name), nodeset = parse_xml(tostring(ResponseBody.nodeset.nodesetXml))
| mv-expand UAVariable=nodeset.UANodeSet.UAVariable
| project-away nodeset
| extend NodeId = UAVariable.['@NodeId'], DisplayName = tostring(UAVariable.DisplayName.['#text']), BrowseName = tostring(UAVariable.['@BrowseName']), DataType = tostring(UAVariable.['@DataType'])
| project-away UAVariable
| take 10000

Musisz podać dwie elementy w tym zapytaniu:

  • Unikatowy identyfikator modelu informacji z biblioteki chmury UA i wprowadź go do <wstawiania identyfikatora modelu informacji z biblioteki chmury tutaj> pola zapytania ADX.
  • Poświadczenia biblioteki chmury UA (generowane podczas rejestracji) podstawowy skrót nagłówka autoryzacji i wstaw je do <wstawiania skrótu poświadczeń biblioteki chmury tutaj> w zapytaniu ADX. Użyj narzędzi, takich jak https://www.debugbear.com/basic-auth-header-generator , aby to wygenerować.

Aby na przykład renderować model informacyjny stacji symulacji linii produkcyjnej OPC UA Server w narzędziu Kusto Explorer dostępnym do pobrania tutaj, uruchom następujące zapytanie:

let uri='https://uacloudlibrary.opcfoundation.org/infomodel/download/1627266626';
let headers=dynamic({'accept':'text/plain'});
let options=dynamic({'Authorization':'Basic \<insert your cloud library credentials hash here\>'});
let variables = evaluate http_request(uri, headers, options)
    | project title = tostring(ResponseBody.['title']), contributor = tostring(ResponseBody.contributor.name), nodeset = parse_xml(tostring(ResponseBody.nodeset.nodesetXml))
    | mv-expand UAVariable = nodeset.UANodeSet.UAVariable
    | extend NodeId = UAVariable.['@NodeId'], ParentNodeId = UAVariable.['@ParentNodeId'], DisplayName = tostring(UAVariable['DisplayName']), DataType = tostring(UAVariable.['@DataType']), References = tostring(UAVariable.['References'])
    | where References !contains "HasModellingRule"
    | where DisplayName != "InputArguments"
    | project-away nodeset, UAVariable, References;
let objects = evaluate http_request(uri, headers, options)
    | project title = tostring(ResponseBody.['title']), contributor = tostring(ResponseBody.contributor.name), nodeset = parse_xml(tostring(ResponseBody.nodeset.nodesetXml))
    | mv-expand UAObject = nodeset.UANodeSet.UAObject
    | extend NodeId = UAObject.['@NodeId'], ParentNodeId = UAObject.['@ParentNodeId'], DisplayName = tostring(UAObject['DisplayName']), References = tostring(UAObject.['References'])
    | where References !contains "HasModellingRule"
    | project-away nodeset, UAObject, References;
let nodes = variables
    | project source = tostring(NodeId), target = tostring(ParentNodeId), name = tostring(DisplayName)
    | join kind=fullouter (objects
        | project source = tostring(NodeId), target = tostring(ParentNodeId), name = tostring(DisplayName)) on source
        | project source = coalesce(source, source1), target = coalesce(target, target1), name = coalesce(name, name1);
let edges = nodes;
edges
    | make-graph source --> target with nodes on source

Aby uzyskać najlepsze wyniki, zmień Layout opcję na Grouped i na Lablesname.

Wykres modelu informacji o stacji.

Symulacja linii produkcyjnej

Rozwiązanie korzysta z symulacji linii produkcyjnej składających się z kilku stacji przy użyciu modelu informacyjnego OPC UA i prostego systemu wykonywania produkcji (MES). Stacje i MES są konteneryzowane w celu łatwego wdrożenia.

Domyślna konfiguracja symulacji

Symulacja jest skonfigurowana tak, aby zawierała dwie linie produkcyjne. Domyślna konfiguracja to:

Linia produkcyjna Idealny czas cyklu (w sekundach)
Monachium 6
Seattle 10
Nazwa zmiany Rozpoczęcie Zakończenie
Rano 07:00 14:00
Po południu 15:00 22:00
W nocy 23:00 06:00

Uwaga

Czasy zmiany są w czasie lokalnym, w szczególności strefa czasowa maszyny wirtualnej hostująca symulację linii produkcyjnej jest ustawiona na wartość .

Identyfikatory węzłów OPC UA serwera OPC UA stacji

Następujące identyfikatory węzłów OPC UA są używane na serwerze OPC UA stacji do telemetrii w chmurze.

  • i=379 - wyprodukowany numer seryjny produktu
  • i=385 — liczba produktów wyprodukowanych
  • i=391 — liczba odrzuconych produktów
  • i=398 — czas wykonywania
  • i=399 — czas błędny
  • i=400 - stan (0=stacja gotowa do wykonania pracy, 1 =praca w toku, 2 =wykonane prace i dobra część wykonana, 3 =wykonane i złom wykonany, 4 =stacja w stanie uszkodzenia)
  • i=406 — zużycie energii
  • i=412 — idealny czas cyklu
  • i=418 — rzeczywisty czas cyklu
  • i=434 — ciśnienie

Cyfrowa pętla opinii za pomocą funkcji UA Cloud Commander i akcji chmury UA

Ta implementacja referencyjna implementuje "cyfrową pętlę sprzężenia zwrotnego", w szczególności wyzwalając polecenie na jednym z serwerów OPC UA w symulacji z chmury, na podstawie danych szeregów czasowych osiągających określony próg (symulowane ciśnienie). W regularnych odstępach czasu na pulpicie nawigacyjnym usługi Azure Data Explorer widać ciśnienie maszyny zestawów w linii produkcyjnej Seattle.

Instalowanie symulacji linii produkcyjnej i usług w chmurze

Kliknięcie przycisku umożliwia wdrożenie wszystkich wymaganych zasobów na platformie Microsoft Azure:

Wdróż na platformie Azure

Podczas wdrażania należy podać hasło maszyny wirtualnej używanej do hostowania symulacji linii produkcyjnej i bliźniaczej reprezentacji chmury UA. Hasło musi mieć trzy z następujących atrybutów: jeden znak małego litery, jeden znak wielkie litery, jedną cyfrę i jeden znak specjalny. Hasło musi mieć długość od 12 do 72 znaków.

Uwaga

Aby zaoszczędzić koszty, wdrożenie wdraża tylko jedną maszynę wirtualną z systemem Windows 11 Enterprise na potrzeby symulacji linii produkcyjnej i podstawowego systemu operacyjnego dla wystąpienia usługi Azure Kubernetes Services Edge Essentials. W scenariuszach produkcyjnych symulacja linii produkcyjnej nie jest wymagana i w przypadku podstawowego systemu operacyjnego dla wystąpienia podstawowego usługi Azure Kubernetes Services Edge zalecamy długoterminowy kanał obsługi systemu Windows IoT Enterprise (LTSC).

Po zakończeniu wdrażania nawiąż połączenie z wdrożoną maszyną wirtualną z systemem Windows za pomocą połączenia RDP (pulpitu zdalnego). Plik RDP można pobrać na stronie witryny Azure Portal dla maszyny wirtualnej w obszarze Połączenie opcji. Zaloguj się przy użyciu poświadczeń podanych podczas wdrażania, otwórz okno programu PowerShell Administracja istrator, przejdź do C:\ManufacturingOntologies-main\Deployment katalogu i uruchom polecenie:

New-AksEdgeDeployment -JsonConfigFilePath .\aksedge-config.json

Po zakończeniu polecenia instalacja azure Kubernetes Services Edge Essentials zostanie ukończona i można uruchomić symulację linii produkcyjnej.

Napiwek

Aby w dowolnym momencie pobrać dzienniki ze wszystkich obciążeń i usług Platformy Kubernetes, uruchom polecenie Get-AksEdgeLogs w oknie programu PowerShell Administracja istrator.

Aby sprawdzić wykorzystanie pamięci klastra Kubernetes, uruchom polecenie Invoke-AksEdgeNodeCommand -Command "sudo cat /proc/meminfo" w oknie programu PowerShell Administracja istrator.

Uruchamianie symulacji linii produkcyjnej

Z wdrożonej maszyny wirtualnej otwórz wiersz polecenia systemu Windows. Przejdź do C:\ManufacturingOntologies-main\Tools\FactorySimulation katalogu i uruchom polecenie StartSimulation , podając następujące parametry:

    StartSimulation <EventHubsCS> <StorageAccountCS> <AzureSubscriptionID> <AzureTenantID>

Parametry:

Parametr Opis
EventHubCS Skopiuj przestrzeń nazw usługi Event Hubs parametry połączenia zgodnie z opisem tutaj.
StorageAccountCS W witrynie Azure Portal przejdź do konta magazynu utworzonego przez to rozwiązanie. Wybierz pozycję "Klucze dostępu" z menu nawigacji po lewej stronie. Następnie skopiuj parametry połączenia dla klucza key1.
AzureSubscriptionID W witrynie Azure Portal przejrzyj swoje subskrypcje i skopiuj identyfikator subskrypcji używanej w tym rozwiązaniu.
AzureTenantID W witrynie Azure Portal otwórz stronę Identyfikator wpisu firmy Microsoft i skopiuj identyfikator dzierżawy.

W poniższym przykładzie pokazano polecenie ze wszystkimi parametrami:

    StartSimulation Endpoint=sb://ontologies.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=abcdefgh= DefaultEndpointsProtocol=https;AccountName=ontologiesstorage;AccountKey=abcdefgh==;EndpointSuffix=core.windows.net <your-subscription-id> <your-tenant-id>

Uwaga

Jeśli masz dostęp do kilku subskrypcji platformy Azure, warto najpierw zalogować się do witryny Azure Portal z maszyny wirtualnej za pośrednictwem przeglądarki internetowej. Dzierżawy usługi Active Directory można również przełączać za pomocą interfejsu użytkownika witryny Azure Portal (w prawym górnym rogu), aby upewnić się, że zalogowano się do dzierżawy używanej podczas wdrażania. Po zalogowaniu pozostaw otwarte okno przeglądarki. Dzięki temu skrypt StartSimulation może łatwiej nawiązać połączenie z odpowiednią subskrypcją.

W tym rozwiązaniu magazyn certyfikatów aplikacji OPC UA dla wydawcy chmury UA oraz symulowane magazyny MES i poszczególnych maszyn linii produkcyjnej znajdują się w chmurze na wdrożonym koncie usługi Azure Storage.

Włączanie klastra Kubernetes na potrzeby zarządzania za pośrednictwem usługi Azure Arc

  1. Na maszynie wirtualnej otwórz okno programu PowerShell Administracja istrator. Przejdź do C:\ManufacturingOntologies-main\Deployment katalogu i uruchom polecenie CreateServicePrincipal. Te dwa parametry subscriptionID można tenantID pobrać z witryny Azure Portal.

  2. Uruchom polecenie notepad aksedge-config.json i podaj następujące informacje:

    Atrybut opis
    Lokalizacja Lokalizacja platformy Azure grupy zasobów. Tę lokalizację można znaleźć w witrynie Azure Portal w grupie zasobów wdrożonej dla tego rozwiązania, ale usunąć spacje w nazwie. Obecnie obsługiwane regiony to eastus, eastus2, westus2, westus2, westus3, westeurope i northeurope.
    SubscriptionId Identyfikator subskrypcji. W witrynie Azure Portal wybierz subskrypcję, której używasz, i skopiuj/wklej identyfikator subskrypcji.
    TenantId Identyfikator dzierżawy. W witrynie Azure Portal wybierz pozycję Azure Active Directory i skopiuj/wklej identyfikator dzierżawy.
    ResourceGroupName Nazwa grupy zasobów platformy Azure, która została wdrożona dla tego rozwiązania.
    ClientId Nazwa wcześniej utworzonej jednostki usługi platformy Azure. Usługa Azure Kubernetes Services używa tej jednostki usługi do łączenia klastra z usługą Arc.
    ClientSecret Hasło jednostki usługi platformy Azure.
  3. Zapisz plik, zamknij okno programu PowerShell i otwórz nowe okno programu PowerShell Administracja istrator. Wróć do C:\ManufacturingOntologies-main\Deployment katalogu i uruchom polecenie SetupArc.

Teraz możesz zarządzać klastrem Kubernetes z chmury za pośrednictwem nowo wdrożonego wystąpienia usługi Azure Arc. W witrynie Azure Portal przejdź do wystąpienia usługi Azure Arc i wybierz pozycję Obciążenia. Wymagany token usługi można pobrać z Get-AksEdgeManagedServiceTokenokna programu PowerShell Administracja istrator na maszynie wirtualnej.

Zrzut ekranu przedstawiający usługę Azure Arc w witrynie Azure Portal.

Wdrażanie operacji usługi Azure IoT na urządzeniach brzegowych

Upewnij się, że uruchomiono już symulację linii produkcyjnej i włączono klaster Kubernetes do zarządzania za pośrednictwem usługi Azure Arc zgodnie z opisem w poprzednich akapitach. Następnie należy wykonać poniższe czynności:

  1. W witrynie Azure Portal przejdź do usługi Key Vault wdrożonej w tym rozwiązaniu referencyjnym i dodaj własną tożsamość do zasad dostępu, klikając pozycję , wybierz szablon, wybierz Nextpozycję , wyszukaj i wybierz własną tożsamość użytkownika, wybierz pozycję , pozostaw sekcję Aplikacja pustą, wybierz Nexti na koniec Create.NextKeys, Secrets & Certificate ManagementCreateAccess policies
  2. Włącz lokalizacje niestandardowe dla klastra Kubernetes połączonego z usługą Arc (nazywanego ontologies_cluster), logując się najpierw do subskrypcji platformy Azure za pośrednictwem okna az loginprogramu PowerShell Administracja istrator, a następnie uruchamiając az connectedk8s enable-features -n "ontologies_cluster" -g "<resourceGroupName>" --features cluster-connect custom-locationsresourceGroupName polecenie z wdrożonego rozwiązania referencyjnego.
  3. W witrynie Azure Portal wdróż operacje usługi Azure IoT, przechodząc do klastra kubernetes połączonego z usługą Arc, wybierz pozycję Extensions, wybierz pozycję Azure IoT Operationsi wybierz pozycję CreateAdd. Na stronie Podstawowa pozostaw wszystko tak, jak jest. Na stronie Konfiguracja ustaw wartość MQ ModeAuto. Nie musisz wdrażać symulowanego programowalnego kontrolera logiki (PLC), ponieważ to rozwiązanie referencyjne zawiera już znacznie bardziej znaczącą symulację linii produkcyjnej. Na stronie Automatyzacja wybierz usługę Key Vault wdrożona dla tego rozwiązania referencyjnego, a następnie skopiuj az iot ops init automatycznie wygenerowane polecenie. Z wdrożonej maszyny wirtualnej otwórz nowe okno programu PowerShell Administracja istrator, zaloguj się do właściwej subskrypcji platformy Azure, uruchamiając az loginaz iot ops init polecenie z argumentami w witrynie Azure Portal. Po zakończeniu działania polecenia wybierz Next polecenie , a następnie zamknij kreatora.

Konfigurowanie zabezpieczeń i łączności OPC UA dla operacji usługi Azure IoT

Upewnij się, że pomyślnie wdrożono operacje usługi Azure IoT, a wszystkie obciążenia Kubernetes są uruchomione, przechodząc do zasobu Kubernetes z obsługą usługi Arc w witrynie Azure Portal.

  1. W witrynie Azure Portal przejdź do usługi Azure Storage wdrożonej w tym rozwiązaniu referencyjnym, otwórz element Storage browser , a następnie Blob containers. W tym miejscu możesz uzyskać dostęp do opartego na chmurze magazynu certyfikatów OPC UA używanego w tym rozwiązaniu. Operacje usługi Azure IoT używają usługi Azure Key Vault jako magazynu certyfikatów OPC UA opartego na chmurze, więc należy skopiować certyfikaty:
    1. Z poziomu kontenerów obiektów blob przeglądarki Usługi Azure Storage dla każdej symulowanej linii produkcyjnej przejdź do folderu app/pki/trusted/certs, wybierz zestaw, pakowanie i plik certyfikatu testowego i pobierz go.
    2. Zaloguj się do subskrypcji platformy Azure za pośrednictwem okna az loginprogramu PowerShell Administracja istrator, a następnie uruchom polecenie az keyvault secret set --name "<stationName>-der" --vault-name <keyVaultName> --file .<stationName>.der --encoding hex --content-type application/pkix-cert, podając keyVaultName wartości i stationName każdej z 6 stacji, dla których pobrano plik .der cert w poprzednim kroku.
  2. Z wdrożonej maszyny wirtualnej otwórz wiersz polecenia systemu Windows i uruchom kubectl apply -f secretsprovider.yaml polecenie ze zaktualizowanym plikiem zasobów dostawcy wpisów tajnych podanym w C:\ManufacturingOntologies-main\Tools\FactorySimulation\Station katalogu, podając nazwę usługi Key Vault, identyfikator dzierżawy platformy Azure oraz nazwy i aliasy certyfikatu stacji przekazane wcześniej do usługi Azure Key Vault.
  3. W przeglądarce internetowej zaloguj się do https://iotoperations.azure.comwitryny , wybierz odpowiedni katalog platformy Azure (prawy górny róg) i rozpocznij tworzenie zasobów na podstawie symulacji linii produkcyjnej. Rozwiązanie jest wyposażone w dwie linie produkcyjne (Monachium i Seattle) składające się z trzech stacji (montaż, test i pakowanie):
    1. W przypadku punktów końcowych zasobów wprowadź wartość opc.tcp://assembly.munich w polu Adres URL brokera OPC UA dla stacji montażowej linii produkcyjnej Monachium itp. Wybierz Do not use transport authentication certificate opcję (wzajemne uwierzytelnianie oparte na certyfikatach OPC UA między operacjami usługi Azure IoT i dowolnym połączonym serwerem OPC UA jest nadal używane).
    2. W przypadku tagów zasobów wybierz Import CSV file i otwórz StationTags.csv plik znajdujący się w C:\ManufacturingOntologies-main\Tools\FactorySimulation\Station katalogu.
  4. W witrynie Azure Portal przejdź do usługi Azure Storage wdrożonej w tym rozwiązaniu referencyjnym, otwórz element Storage browser , a następnie Blob containers. Dla każdej symulowanej linii produkcyjnej app/pki/rejected/certs przejdź do folderu i pobierz plik certyfikatu Operacje usługi Azure IoT. Następnie usuń plik. Przejdź do app/pki/trusted/certs folderu i przekaż plik certyfikatu operacji usługi Azure IoT do tego katalogu.
  5. Z wdrożonej maszyny wirtualnej otwórz wiersz polecenia systemu Windows i uruchom ponownie symulację wiersza produkcji, przechodząc do C:\ManufacturingOntologies-main\Tools\FactorySimulation katalogu i uruchamiając polecenie StopSimulation, a następnie polecenie StartSimulation.
  6. Postępuj zgodnie z instrukcjami opisanymi tutaj , aby sprawdzić, czy dane przepływają z symulacji linii produkcyjnej.
  7. W ostatnim kroku połącz operacje usługi Azure IoT z usługą Event Hubs wdrożonym w tym rozwiązaniu referencyjnym zgodnie z opisem tutaj.

Monitorowanie warunków przypadków użycia, obliczanie OEE, wykrywanie anomalii i przewidywanie w usłudze Azure Data Explorer

Możesz również odwiedzić dokumentację usługi Azure Data Explorer, aby dowiedzieć się, jak tworzyć pulpity nawigacyjne bez kodu na potrzeby monitorowania warunków, przewidywania wydajności lub konserwacji lub wykrywania anomalii. W tym miejscu udostępniliśmy przykładowy pulpit nawigacyjny do wdrożenia na pulpicie nawigacyjnym usługi ADX, wykonując kroki opisane tutaj. Po zaimportowaniu należy zaktualizować źródło danych pulpitu nawigacyjnego, określając punkt końcowy HTTPS wystąpienia klastra serwera ADX w formacie https://ADXInstanceName.AzureRegion.kusto.windows.net/ w prawym górnym rogu pulpitu nawigacyjnego.

Zrzut ekranu przedstawiający pulpit nawigacyjny usługi Azure Data Explorer.

Uwaga

Jeśli chcesz wyświetlić producenta OEE dla określonej zmiany, wybierz Custom Time Range z listy rozwijanej w Time Range lewym górnym rogu pulpitu nawigacyjnego usługi ADX i wprowadź datę i godzinę od początku do końca interesującej Cię zmiany.

Renderuj wbudowany wykres modelu Unified NameSpace (UNS) i ISA-95 w Eksploratorze Kusto

To rozwiązanie referencyjne implementuje ujednoliconą nazwęSapce (UNS) na podstawie metadanych OPC UA wysyłanych do bazy danych szeregów czasowych w chmurze (Azure Data Explorer). Te metadane OPC UA zawierają również hierarchię zasobów ISA-95. Wynikowy graf można łatwo wizualizować w narzędziu Kusto Explorer dostępnym do pobrania tutaj.

Dodaj nowe połączenie do wystąpienia usługi Azure Data Explorer wdrożonego w tym rozwiązaniu referencyjnym, a następnie uruchom następujące zapytanie w narzędziu Kusto Explorer:

let edges = opcua_metadata_lkv
| project source = DisplayName, target = Workcell
| join kind=fullouter (opcua_metadata_lkv
    | project source = Workcell, target = Line) on source
    | join kind=fullouter (opcua_metadata_lkv
        | project source = Line, target = Area) on source
        | join kind=fullouter (opcua_metadata_lkv
            | project source = Area, target = Site) on source
            | join kind=fullouter (opcua_metadata_lkv
                | project source = Site, target = Enterprise) on source
                | project source = coalesce(source, source1, source2, source3, source4), target = coalesce(target, target1, target2, target3, target4);
let nodes = opcua_metadata_lkv;
edges | make-graph source --> target with nodes on DisplayName

Aby uzyskać najlepsze wyniki, zmień Layout opcję na Grouped.

Wykres przedstawiający hierarchię zasobów ISA-95.

Korzystanie z usługi Azure Managed Grafana

Możesz również użyć narzędzia Grafana, aby utworzyć pulpit nawigacyjny na platformie Azure dla rozwiązania opisanego w tym artykule. Aplikacja Grafana jest używana w ramach produkcji do tworzenia pulpitów nawigacyjnych, które wyświetlają dane w czasie rzeczywistym. Platforma Azure oferuje usługę o nazwie Azure Managed Grafana. Dzięki temu można tworzyć pulpity nawigacyjne w chmurze. W tym podręczniku konfiguracji włączysz narzędzie Grafana na platformie Azure i utworzysz pulpit nawigacyjny z danymi, które są odpytywane z usług Azure Data Explorer i Azure Digital Twins przy użyciu symulowanych danych linii produkcyjnych z tego rozwiązania referencyjnego.

Poniższy zrzut ekranu przedstawia pulpit nawigacyjny:

Zrzut ekranu przedstawiający pulpit nawigacyjny narzędzia Grafana.

Włączanie usługi Azure Managed Grafana

  1. Przejdź do witryny Azure Portal i wyszukaj usługę "Grafana" i wybierz usługę "Azure Managed Grafana".

    Zrzut ekranu przedstawiający włączanie narzędzia Grafana w witrynie Marketplace.

  2. Nadaj wystąpieniu nazwę i pozostaw opcje standardowe — i utwórz usługę.

  3. Po utworzeniu usługi przejdź do adresu URL, pod którym uzyskujesz dostęp do wystąpienia narzędzia Grafana. Adres URL można znaleźć na stronie głównej usługi.

Dodawanie nowego źródła danych w narzędziu Grafana

Po pierwszym zalogowaniu należy dodać nowe źródło danych do usługi Azure Data Explorer.

  1. Przejdź do obszaru "Konfiguracja" i dodaj nowe źródło danych.

  2. Wyszukaj pozycję Azure Data Explorer i wybierz usługę.

  3. Skonfiguruj połączenie i użyj rejestracji aplikacji (postępuj zgodnie z instrukcjami podanymi w górnej części tej strony).

  4. Zapisz i przetestuj połączenie w dolnej części strony.

Importowanie przykładowego pulpitu nawigacyjnego

Teraz możesz zaimportować udostępniony przykładowy pulpit nawigacyjny.

  1. Pobierz przykładowy pulpit nawigacyjny tutaj: Przykładowy pulpit nawigacyjny produkcji narzędzia Grafana.

  2. Przejdź do obszaru "Pulpit nawigacyjny" i wybierz pozycję "Importuj".

  3. Wybierz pobrane źródło i wybierz pozycję "Zapisz". Na stronie występuje błąd, ponieważ dwie zmienne nie są jeszcze ustawione. Przejdź do strony ustawień pulpitu nawigacyjnego.

  4. Wybierz po lewej stronie pozycję "Zmienne" i zaktualizuj dwa adresy URL przy użyciu adresu URL usługi Azure Digital Twins.

  5. Wróć do pulpitu nawigacyjnego i naciśnij przycisk odświeżenia. Powinny być teraz widoczne dane (nie zapomnij nacisnąć przycisku Zapisz na pulpicie nawigacyjnym).

    Zmienna lokalizacji w górnej części strony jest automatycznie wypełniana danymi z usługi Azure Digital Twins (węzłów obszaru z isA95). W tym miejscu możesz wybrać różne lokalizacje i zobaczyć różne punkty danych każdej fabryki.

  6. Jeśli dane nie są wyświetlane na pulpicie nawigacyjnym, przejdź do poszczególnych paneli i sprawdź, czy wybrano odpowiednie źródło danych.

Konfiguruj alerty

W programie Grafana można również tworzyć alerty. W tym przykładzie utworzymy alert OEE o niskiej wartości dla jednej z linii produkcyjnych.

  1. Zaloguj się do usługi Grafana i wybierz pozycję Reguły alertów w menu.

    Zrzut ekranu przedstawiający nawigację do alertów.

  2. Wybierz pozycję "Utwórz regułę alertu".

    Zrzut ekranu przedstawiający sposób tworzenia reguły alertu.

  3. Nadaj alertowi nazwę i wybierz pozycję "Azure Data Explorer" jako źródło danych. Wybierz zapytanie w okienku nawigacji.

    Zrzut ekranu przedstawiający tworzenie zapytania alertu.

  4. W polu zapytania wprowadź następujące zapytanie. W tym przykładzie używamy linii produkcyjnej "Seattle".

    let oee = CalculateOEEForStation("assembly", "seattle", 6, 6);
    print round(oee * 100, 2)
    
  5. Wybierz pozycję "tabela" jako dane wyjściowe.

  6. Przewiń w dół do następnej sekcji. W tym miejscu skonfigurujesz próg alertu. W tym przykładzie użyjemy wartości "poniżej 10" jako progu, ale w środowiskach produkcyjnych ta wartość może być wyższa.

    Zrzut ekranu przedstawiający alert progu.

  7. Wybierz folder, w którym chcesz zapisać alerty, i skonfiguruj zachowanie "Ocena alertu". Wybierz opcję "co 2 minuty".

  8. Wybierz przycisk "Zapisz i zakończ".

W przeglądzie alertów możesz teraz zobaczyć wyzwalany alert, gdy OEE jest poniżej "10".

Zrzut ekranu przedstawiający przegląd alertu.

Tę konfigurację można zintegrować z usługami Microsoft Dynamics Field Services.

Połączenie rozwiązania referencyjnego do usługi Microsoft Power BI

Aby połączyć rozwiązanie referencyjne usługi Power BI, musisz mieć dostęp do subskrypcji usługi Power BI.

Zakończ poniższe kroki:

  1. Zainstaluj aplikację Power BI Desktop z tego miejsca.

  2. Zaloguj się do aplikacji Power BI Desktop przy użyciu użytkownika z dostępem do subskrypcji usługi Power BI.

  3. W witrynie Azure Portal przejdź do wystąpienia bazy danych usługi Azure Data Explorer (ontologies) i dodaj Database Admin uprawnienia do użytkownika usługi Azure Active Directory z dostępem do tylko jednej subskrypcji platformy Azure, w szczególności subskrypcji używanej dla wdrożonego wystąpienia tego rozwiązania referencyjnego. Utwórz nowego użytkownika w usłudze Azure Active Directory, jeśli musisz.

  4. W usłudze Power BI utwórz nowy raport i wybierz pozycję Dane szeregów czasowych usługi Azure Data Explorer jako źródło danych za pośrednictwem - Get data ->>AzureAzure Data Explorer (Kusto).

  5. W oknie podręcznym wprowadź punkt końcowy usługi Azure Data Explorer wystąpienia (na przykład https://erichbtest3adx.eastus2.kusto.windows.net), nazwę bazy danych (ontologies) i następujące zapytanie:

    let _startTime = ago(1h);
    let _endTime = now();
    opcua_metadata_lkv
    | where Name contains "assembly"
    | where Name contains "munich"
    | join kind=inner (opcua_telemetry
        | where Name == "ActualCycleTime"
        | where Timestamp > _startTime and Timestamp < _endTime
    ) on DataSetWriterID
    | extend NodeValue = todouble(Value)
    | project Timestamp, NodeValue
    
  6. Wybierz opcję Load. Importuje rzeczywisty czas cyklu stacji montażowej linii produkcyjnej Monachium w ciągu ostatniej godziny.

  7. Po wyświetleniu monitu zaloguj się do usługi Azure Data Explorer przy użyciu użytkownika usługi Azure Active Directory, do którego udzielono wcześniej uprawnień dostępu do bazy danych usługi Azure Data Explorer.

  8. W elemencie Data viewwybierz kolumnę NodeValue i wybierz pozycję Don't summarize w elemencie Summarization menu.

  9. Przejdź do .Report view

  10. W obszarze Visualizationswybierz wizualizację Line Chart .

  11. W obszarze Visualizationsprzenieś element Timestamp ze Data źródła do X-axiselementu , wybierz go i wybierz pozycję Timestamp.

  12. W obszarze Visualizationsprzenieś element NodeValue ze Data źródła do Y-axiselementu , wybierz go i wybierz pozycję Median.

  13. Zapisz nowy raport.

    Uwaga

    Możesz dodać inne dane z usługi Azure Data Explorer do raportu podobnie.

    Zrzut ekranu przedstawiający widok usługi Power BI.

Połączenie rozwiązania referencyjnego do usługi Microsoft Dynamics 365 Field Service

Ta integracja przedstawia następujące scenariusze:

  • Przekazywanie zasobów z rozwiązania referencyjnego Manufacturing Ontologies do usługi Dynamics 365 Field Service.
  • Utwórz alerty w usłudze Dynamics 365 Field Service, gdy zostanie osiągnięty określony próg danych telemetrycznych rozwiązania do analizy danych telemetrycznych rozwiązania Manufacturing Onlogies.

Integracja korzysta z usługi Azure Logics Apps. Dzięki aplikacjom i usługom analizy biznesowej usługi Logic Apps można łączyć za pośrednictwem przepływów pracy bez kodu. Pobieramy informacje z usługi Azure Data Explorer i wyzwalamy akcje w usłudze Dynamics 365 Field Service.

Najpierw, jeśli nie jesteś jeszcze klientem usługi Dynamics 365 Field Service, aktywuj 30-dniową wersję próbną tutaj. Pamiętaj, aby użyć tego samego identyfikatora Entra firmy Microsoft (dawniej Azure Active Directory) używanego podczas wdrażania rozwiązania referencyjnego Manufacturing Ontologies. W przeciwnym razie należy skonfigurować uwierzytelnianie między dzierżawami, które nie jest częścią tych instrukcji.

Tworzenie przepływu pracy aplikacji logiki platformy Azure w celu utworzenia zasobów w usłudze Dynamics 365 Field Service

Zacznijmy od przekazywania zasobów z obszaru Manufacturing Ontologies do usługi Dynamics 365 Field Service:

  1. Przejdź do witryny Azure Portal i utwórz nową aplikację logiki.

  2. Nadaj aplikacji logiki platformy Azure nazwę, umieść ją w tej samej grupie zasobów co rozwiązanie referencyjne Manufacturing Onlogies.

  3. Wybierz pozycję "Przepływy pracy".

  4. Nadaj przepływowi pracy nazwę — w tym scenariuszu używamy typu stanu stanowego, ponieważ zasoby nie są przepływami danych.

  5. Utwórz nowy wyzwalacz. Zaczynamy od utworzenia wyzwalacza "Cykl". Sprawdza to bazę danych codziennie, jeśli tworzone są nowe zasoby. Tę zmianę można zmienić częściej.

  6. W obszarze akcji wyszukaj Azure Data Explorer i wybierz Run KQL query polecenie . W ramach tego zapytania sprawdzamy, jakiego rodzaju zasoby mamy. Użyj następującego zapytania, aby pobrać zasoby i wkleić je w polu zapytania:

    let ADTInstance =  "PLACE YOUR ADT URL";let ADTQuery = "SELECT T.OPCUAApplicationURI as AssetName, T.$metadata.OPCUAApplicationURI.lastUpdateTime as UpdateTime FROM DIGITALTWINS T WHERE IS_OF_MODEL(T , 'dtmi:digitaltwins:opcua:nodeset;1') AND T.$metadata.OPCUAApplicationURI.lastUpdateTime > 'PLACE DATE'";evaluate azure_digital_twins_query_request(ADTInstance, ADTQuery)
    
  7. Aby uzyskać dane zasobów w usłudze Dynamics 365 Field Service, musisz nawiązać połączenie z usługą Microsoft Dataverse. Połączenie do wystąpienia usługi Dynamics 365 Field Service i użyj następującej konfiguracji:

    • Użyj nazwy tabeli "Zasoby klienta"
    • Umieść element "AssetName" w polu Nazwa
  8. Zapisz przepływ pracy i uruchom go. Zobaczysz w ciągu kilku sekund później, że nowe zasoby zostaną utworzone w usłudze Dynamics 365 Field Service.

Tworzenie przepływu pracy aplikacji logiki platformy Azure w celu utworzenia alertów w usłudze Dynamics 365 Field Service

Ten przepływ pracy tworzy alerty w usłudze Dynamics 365 Field Service, w szczególności w przypadku osiągnięcia określonego progu błędu w zasobie rozwiązania referencyjnego Manufacturing Onlogies.

  1. Najpierw musimy utworzyć funkcję usługi Azure Data Explorer, aby uzyskać odpowiednie dane. Przejdź do panelu zapytań usługi Azure Data Explorer w witrynie Azure Portal i uruchom następujący kod, aby utworzyć funkcję FaultyFieldAssets:

    Zrzut ekranu przedstawiający tworzenie zapytania ADX funkcji.

    .create-or-alter function  FaultyFieldAssets() {  
    let Lw_start = ago(3d);
    opcua_telemetry
    | where Name == 'FaultyTime'
    and Value > 0
    and Timestamp between (Lw_start .. now())
    | join kind=inner (
        opcua_metadata
        | extend AssetList =split (Name, ';')
        | extend AssetName=AssetList[0]
        ) on DataSetWriterID
    | project AssetName, Name, Value, Timestamp}
    
  2. Utwórz nowy przepływ pracy w aplikacji logiki platformy Azure. Utwórz wyzwalacz "Cykl", aby rozpocząć — co 3 minuty. Utwórz jako akcję "Azure Data Explorer" i wybierz pozycję Uruchom zapytanie KQL.

  3. Wprowadź adres URL klastra usługi Azure Data Explorer, a następnie wybierz bazę danych i użyj nazwy funkcji utworzonej w kroku 1 jako zapytania.

  4. Wybierz pozycję Microsoft Dataverse jako akcję.

  5. Uruchom przepływ pracy i wyświetl nowe alerty generowane na pulpicie nawigacyjnym usługi Dynamics 365 Field Service:

    Zrzut ekranu przedstawiający alerty w usłudze Dynamics 365 FS.