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):
Szczegółowa architektura (tylko platforma Azure):
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 Lables
name
.
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:
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
Na maszynie wirtualnej otwórz okno programu PowerShell Administracja istrator. Przejdź do
C:\ManufacturingOntologies-main\Deployment
katalogu i uruchom polecenieCreateServicePrincipal
. Te dwa parametrysubscriptionID
możnatenantID
pobrać z witryny Azure Portal.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. Zapisz plik, zamknij okno programu PowerShell i otwórz nowe okno programu PowerShell Administracja istrator. Wróć do
C:\ManufacturingOntologies-main\Deployment
katalogu i uruchom polecenieSetupArc
.
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-AksEdgeManagedServiceToken
okna programu PowerShell Administracja istrator na maszynie wirtualnej.
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:
- 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
Next
pozycję , wyszukaj i wybierz własną tożsamość użytkownika, wybierz pozycję , pozostaw sekcję Aplikacja pustą, wybierzNext
i na koniecCreate
.Next
Keys, Secrets & Certificate Management
Create
Access policies
- 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 login
programu PowerShell Administracja istrator, a następnie uruchamiającaz connectedk8s enable-features -n "ontologies_cluster" -g "<resourceGroupName>" --features cluster-connect custom-locations
resourceGroupName
polecenie z wdrożonego rozwiązania referencyjnego. - 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 Operations
i wybierz pozycjęCreate
Add
. Na stronie Podstawowa pozostaw wszystko tak, jak jest. Na stronie Konfiguracja ustaw wartośćMQ Mode
Auto
. 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 skopiujaz 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ącaz login
az iot ops init
polecenie z argumentami w witrynie Azure Portal. Po zakończeniu działania polecenia wybierzNext
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.
- W witrynie Azure Portal przejdź do usługi Azure Storage wdrożonej w tym rozwiązaniu referencyjnym, otwórz element
Storage browser
, a następnieBlob 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:- 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.
- Zaloguj się do subskrypcji platformy Azure za pośrednictwem okna
az login
programu PowerShell Administracja istrator, a następnie uruchom polecenieaz keyvault secret set --name "<stationName>-der" --vault-name <keyVaultName> --file .<stationName>.der --encoding hex --content-type application/pkix-cert
, podająckeyVaultName
wartości istationName
każdej z 6 stacji, dla których pobrano plik .der cert w poprzednim kroku.
- 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 wC:\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. - 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):
- 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). - W przypadku tagów zasobów wybierz
Import CSV file
i otwórzStationTags.csv
plik znajdujący się wC:\ManufacturingOntologies-main\Tools\FactorySimulation\Station
katalogu.
- 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
- W witrynie Azure Portal przejdź do usługi Azure Storage wdrożonej w tym rozwiązaniu referencyjnym, otwórz element
Storage browser
, a następnieBlob containers
. Dla każdej symulowanej linii produkcyjnejapp/pki/rejected/certs
przejdź do folderu i pobierz plik certyfikatu Operacje usługi Azure IoT. Następnie usuń plik. Przejdź doapp/pki/trusted/certs
folderu i przekaż plik certyfikatu operacji usługi Azure IoT do tego katalogu. - 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. - Postępuj zgodnie z instrukcjami opisanymi tutaj , aby sprawdzić, czy dane przepływają z symulacji linii produkcyjnej.
- 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.
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
.
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:
Włączanie usługi Azure Managed Grafana
Przejdź do witryny Azure Portal i wyszukaj usługę "Grafana" i wybierz usługę "Azure Managed Grafana".
Nadaj wystąpieniu nazwę i pozostaw opcje standardowe — i utwórz usługę.
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.
Przejdź do obszaru "Konfiguracja" i dodaj nowe źródło danych.
Wyszukaj pozycję Azure Data Explorer i wybierz usługę.
Skonfiguruj połączenie i użyj rejestracji aplikacji (postępuj zgodnie z instrukcjami podanymi w górnej części tej strony).
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.
Pobierz przykładowy pulpit nawigacyjny tutaj: Przykładowy pulpit nawigacyjny produkcji narzędzia Grafana.
Przejdź do obszaru "Pulpit nawigacyjny" i wybierz pozycję "Importuj".
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.
Wybierz po lewej stronie pozycję "Zmienne" i zaktualizuj dwa adresy URL przy użyciu adresu URL usługi Azure Digital Twins.
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.
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.
Zaloguj się do usługi Grafana i wybierz pozycję Reguły alertów w menu.
Wybierz pozycję "Utwórz regułę alertu".
Nadaj alertowi nazwę i wybierz pozycję "Azure Data Explorer" jako źródło danych. Wybierz zapytanie w okienku nawigacji.
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)
Wybierz pozycję "tabela" jako dane wyjściowe.
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.
Wybierz folder, w którym chcesz zapisać alerty, i skonfiguruj zachowanie "Ocena alertu". Wybierz opcję "co 2 minuty".
Wybierz przycisk "Zapisz i zakończ".
W przeglądzie alertów możesz teraz zobaczyć wyzwalany alert, gdy OEE jest poniżej "10".
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:
Zainstaluj aplikację Power BI Desktop z tego miejsca.
Zaloguj się do aplikacji Power BI Desktop przy użyciu użytkownika z dostępem do subskrypcji usługi Power BI.
W witrynie Azure Portal przejdź do wystąpienia bazy danych usługi Azure Data Explorer (
ontologies
) i dodajDatabase 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.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
->>Azure
Azure Data Explorer (Kusto)
.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
Wybierz opcję
Load
. Importuje rzeczywisty czas cyklu stacji montażowej linii produkcyjnej Monachium w ciągu ostatniej godziny.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.
W elemencie
Data view
wybierz kolumnę NodeValue i wybierz pozycjęDon't summarize
w elemencieSummarization
menu.Przejdź do .
Report view
W obszarze
Visualizations
wybierz wizualizacjęLine Chart
.W obszarze
Visualizations
przenieś elementTimestamp
zeData
źródła doX-axis
elementu , wybierz go i wybierz pozycjęTimestamp
.W obszarze
Visualizations
przenieś elementNodeValue
zeData
źródła doY-axis
elementu , wybierz go i wybierz pozycjęMedian
.Zapisz nowy raport.
Uwaga
Możesz dodać inne dane z usługi Azure Data Explorer do raportu podobnie.
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:
Przejdź do witryny Azure Portal i utwórz nową aplikację logiki.
Nadaj aplikacji logiki platformy Azure nazwę, umieść ją w tej samej grupie zasobów co rozwiązanie referencyjne Manufacturing Onlogies.
Wybierz pozycję "Przepływy pracy".
Nadaj przepływowi pracy nazwę — w tym scenariuszu używamy typu stanu stanowego, ponieważ zasoby nie są przepływami danych.
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.
W obszarze akcji wyszukaj
Azure Data Explorer
i wybierzRun 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)
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
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.
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:
.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}
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.
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.
Wybierz pozycję Microsoft Dataverse jako akcję.
Uruchom przepływ pracy i wyświetl nowe alerty generowane na pulpicie nawigacyjnym usługi Dynamics 365 Field Service: