Freigeben über


Tutorial: Implementieren der Referenzlösungsarchitektur von Azure Industrial IoT

Hersteller möchten eine industrielle IoT-Gesamtlösung auf globaler Ebene bereitstellen und alle ihre Produktionsstandorte mit dieser Lösung verbinden, um die Effizienz jedes einzelnen Produktionsstandorts zu steigern.

Diese gesteigerte Effizienz führt zu einer schnelleren Produktion und einem geringeren Energieverbrauch, was wiederum die Kosten für die produzierten Güter senkt und in den meisten Fällen gleichzeitig deren Qualität erhöht.

Die Lösung muss so effizient wie möglich sein und alle erforderlichen Anwendungsfälle wie Zustandsüberwachung, OEE-Berechnung, Prognosen und Anomalieerkennung ermöglichen. Aus den aus diesen Anwendungsfällen gewonnenen Erkenntnissen kann in einem zweiten Schritt eine digitale Feedbackschleife erstellt werden, mit der dann Optimierungen und andere Änderungen auf die Produktionsprozesse angewendet werden können.

Interoperabilität ist der Schlüssel zum schnellen Rollout der Lösungsarchitektur, und die Verwendung offener Standards wie OPC UA trägt wesentlich dazu bei, diese Interoperabilität zu erreichen.

IEC 62541 der Open Platform Communications Unified Architecture (OPC UA)

Diese Lösung verwendet die Norm „IEC 62541“ der Open Platform Communications (OPC) Unified Architecture (UA) für alle Operational Technology-Daten (OT). Dieser Standard wird hier beschrieben.

Architektur der Referenzlösung

Vereinfachte Architektur (sowohl Azure- als auch Fabric-Optionen):

Diagramm: Einfache IoT-Architektur

Detaillierte Architektur (nur Azure):

Diagramm: IoT-Architektur

Komponenten

Folgende Komponenten sind Bestandteil dieser Lösung:

Komponente Beschreibung
Industrieanlagen Eine Reihe simulierter OPC UA-fähiger Produktionslinien, die in Docker-Containern gehostet werden
Azure IoT Einsatz Azure IoT Einsatz ist eine einheitliche Datenebene für den Edge. Umfasst eine Reihe modularer, skalierbarer und hochverfügbarer Datendienste, die auf Kubernetes-Edgeclustern mit Azure Arc-Unterstützung ausgeführt werden.
Datengateway Dieses Gateway verbindet Ihre lokalen Datenquellen (z. B. SAP) mit Azure Logic Apps in der Cloud.
Azure Event Hubs Der Cloudnachrichtenbroker, der OPC UA-PubSub-Nachrichten von Edgegateways empfängt und sie speichert, bis sie von Abonnenten abgerufen werden.
Azure Data Explorer Die Zeitreihendatenbank und der Front-End-Dashboarddienst für erweiterte Cloudanalysen, einschließlich integrierter Anomalieerkennung und Vorhersagen.
Azure Logic Apps Azure Logic Apps ist eine Cloudplattform, auf der Sie automatisierte Workflows mit wenig bis keinem Code erstellen und ausführen können.
Azure Arc Dieser Clouddienst wird verwendet, um den lokalen Kubernetes-Cluster am Edge zu verwalten. Neue Workloads können über Flux bereitgestellt werden.
Von Azure verwaltetes Grafana Azure Managed Grafana ist eine Datenvisualisierungsplattform, die auf der Grafana-Software von Grafana Labs basiert. Grafana ist ein vollständig verwalteter Dienst, den Microsoft hostet und unterstützt.
Microsoft Power BI Microsoft Power BI ist eine Sammlung von SaaS-Softwarediensten, Apps und Connectors, die zusammenarbeiten, um Ihre unabhängigen Datenquellen in kohärente, visuell ansprechende und interaktive Erkenntnisse zu verwandeln.
Microsoft Dynamics 365 Field Service Microsoft Dynamics 365 Field Service ist eine schlüsselfertige SaaS-Lösung zum Verwalten von Field Service-Anforderungen.
UA Cloud Commander Diese Open-Source-Referenzanwendung konvertiert Nachrichten, die an einen Message Queue Telemetry Transport (MQTT) oder Kafka-Broker (möglicherweise in der Cloud) gesendet werden, in OPC UA Client/Server-Anforderungen für einen verbundenen OPC UA-Server. Die Anwendung wird in einem Docker-Container ausgeführt.
UA Cloud-Aktion Diese Open-Source-Referenz-Cloudanwendung fragt den Azure Data Explorer nach einem bestimmten Datenwert ab. Bei dem Datenwert handelt es sich um den Druck in einer der simulierten Produktionslinienmaschinen. UA Cloud Commander wird über Azure Event Hubs aufgerufen, wenn ein bestimmter Schwellenwert erreicht wird (4.000 mbar). UA Cloud Commander ruft dann über OPC UA die OpenPressureReliefValve-Methode auf der Maschine auf.
UA-Cloudbibliothek Die UA-Cloudbibliothek ist ein Onlinespeicher von OPC UA-Informationsmodellen, der von der OPC Foundation hier gehostet wird.
UA Edge-Übersetzer Diese Open-Source-Referenzanwendung für industrielle Konnektivität übersetzt proprietäre Ressourcenschnittstellen in OPC UA und verwendet W3C Web of Things (WoT) Thing Descriptions als Schema zur Beschreibung der industriellen Ressourcenschnittstelle.

Hinweis

In einer realen Bereitstellung würde etwas so Kritisches wie das Öffnen eines Überdruckventils lokal vor Ort geschehen. Dies ist nur ein einfaches Beispiel dafür, wie die digitale Feedbackschleife erreicht werden kann.

UA-Cloudbibliothek

Um OPC UA Information Models direkt aus dem Azure Data Explorer zu lesen, können Sie die OPC UA-Knoten, die im OPC UA-Informationsmodell definiert sind, in eine Tabelle importieren. Sie können die importierten Informationen zum Nachschlagen weiterer Metadaten innerhalb von Abfragen verwenden.

Konfigurieren Sie zunächst eine ADX-Callout-Richtlinie (Azure Data Explorer) für die UA Cloud Library, indem Sie die folgende Abfrage auf Ihrem ADX-Cluster ausführen. Bevor Sie beginnen, stellen Sie sicher, dass Sie ADX-Clusteradministrator sind, was Sie im Azure-Portal konfigurieren können, indem Sie auf der Registerkarte ADX zu Berechtigungen navigieren.

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

Führen Sie dann die folgende Azure Data Explorer-Abfrage im Azure-Portal aus:

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

Sie müssen in dieser Abfrage zwei Dinge angeben:

  • Die eindeutige ID des Informationsmodells aus der UA-Cloudbibliothek – Geben Sie diese in das Feld <Informationsmodellbezeichner aus der Cloudbibliothek hier einfügen> der ADX-Abfrage ein.
  • Einfacher Autorisierungsheaderhash Ihrer Anmeldeinformationen für die UA-Cloudbibliothek (wird während der Registrierung generiert) – Fügen Sie diesen in das Feld <Cloudbibliothek-Anmeldeinformationshash hier einfügen> der ADX-Abfrage ein. Verwenden Sie Tools wie https://www.debugbear.com/basic-auth-header-generator, um den Hash zu generieren.

Um z. B. das Informationsmodell der Produktionsliniensimulation des Station OPC UA-Servers im Tool Kusto Explorer, das hier zum Download zur Verfügung steht, zu rendern, führen Sie die folgende Abfrage aus:

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

Um optimale Ergebnisse zu erzielen, ändern Sie die Option Layout in Grouped und die Option Labels in name.

Graph des Stationsinformationsmodells

Produktionsliniensimulation

Die Lösung umfasst eine Produktionsliniensimulation aus mehreren Stationen, die ein OPC UA-Informationsmodell sowie ein einfaches Manufacturing Execution System (MES) verwendet. Sowohl die Stationen als auch das MES sind für eine einfache Bereitstellung containerisiert.

Standardsimulationskonfiguration

Die Simulation ist so konfiguriert, dass sie zwei Produktionslinien enthält. Die Standardkonfiguration lautet:

Produktionslinie Ideale Zykluszeit (in Sekunden)
München 6
Seattle 10
Schichtname Start Ende
Morgenn 07:00 14:00
Nachmittags 15:00 22:00
Nacht 23:00 06:00

Hinweis

Die Schichtzeiten werden in der lokalen Uhrzeit angegeben, genauer gesagt in der Zeitzone, die auf der VM, die diese Produktionsliniensimulation hostet, festgelegt ist.

OPC UA-Knoten-IDs des Station OPC UA-Servers

Die folgenden OPC UA Knoten-IDs werden im Station OPC UA-Server für Telemetrie in der Cloud verwendet.

  • i = 379: Seriennummer des hergestellten Produkts
  • i = 385: Anzahl der hergestellten Produkte
  • i = 391: Anzahl der verworfenen Produkte
  • i = 398: Ausführungszeit
  • i = 399: Fehlerzeit
  • i = 400: Status (0 = Station betriebsbereit, 1 = laufende Arbeiten, 2 = Arbeit erledigt und gültiges Teil hergestellt, 3 = Arbeit erledigt und Ausschuss hergestellt, 4 = Station im Fehlerzustand)
  • i = 406: Energieverbrauch
  • i = 412: ideale Zykluszeit
  • i = 418: tatsächliche Zykluszeit
  • i = 434: Druck

Digitale Feedbackschleife mit UA Cloud Commander und UA Cloud Action

In diesem Abschnitt wird gezeigt, wie Sie eine „digitale Feedbackschleife“ implementieren. Um die Feedbackschleife zu erstellen, lösen Sie einen Befehl auf einem der OPC UA-Server in der Simulation aus der Cloud aus. Der Trigger basiert auf Zeitreihendaten, die einen bestimmten Schwellenwert für den simulierten Druck erreichen. Sie können den Druck des Assemblycomputers im Azure Data Explorer-Dashboard sehen. Der Druck wird in regelmäßigen Abständen für die Produktionslinie Seattle freigegeben.

Installieren der Produktionsliniensimulation und Clouddienste

Wählen Sie die Schaltfläche Bereitstellen aus, um alle erforderlichen Ressourcen in Microsoft Azure bereitzustellen:

Bereitstellung in Azure

Während der Bereitstellung müssen Sie ein Kennwort für eine Virtual Machine (VM), die zum Hosten der Produktionsliniensimulation und für UA Cloud Twin verwendet wird, angeben. Das Kennwort muss drei der folgenden Attribute enthalten: einen Kleinbuchstaben, einen Großbuchstaben, eine Zahl und ein Sonderzeichen. Das Kennwort muss zwischen 12 und 72 Zeichen lang sein.

Hinweis

Um Kosten zu sparen, stellt die Bereitstellung jeweils eine einzelne Windows 11 Enterprise-VM sowohl für die Produktionsliniensimulation als auch für die Edge-Infrastruktur bereit. In Produktionsszenarien ist die Produktionsliniensimulation nicht erforderlich, und als Basisbetriebssystem empfehlen wir Windows IoT Enterprise Long Term Servicing Channel (LTSC).

Stellen Sie nach Abschluss der Bereitstellung eine RDP-Verbindung (Remotedesktop) mit der bereitgestellten Windows-VM her. Die RDP-Datei kann auf der Seite Azure-Portal für den virtuellen Computer unter Verbinden heruntergeladen werden. Melden Sie sich mit den Anmeldeinformationen an, die Sie während der Bereitstellung angegeben haben, öffnen Sie eine Windows-Eingabeaufforderung, und installieren Sie das Windows-Subsystem für Linux (WSL) über:

    wsl --install

Nachdem der Befehl abgeschlossen ist, starten Sie ihren virtuellen Computer neu, und melden Sie sich erneut an. Eine Eingabeaufforderung schließt die Installation von WSL ab und Sie werden aufgefordert, einen neuen Benutzernamen und ein neues Kennwort für WSL einzugeben. Installieren Sie dann K3S, eine einfache Kubernetes-Runtime, über:

    curl -sfL https://get.k3s.io | sh

Sie können jetzt die Produktionsliniensimulation ausführen.

Ausführen der Produktionsliniensimulation

Führen Sie auf der bereitgestellten VM eine Windows-Eingabeaufforderung aus, geben Sie wsl ein, und drücken Sie die Eingabetaste. Navigieren Sie zum Verzeichnis /mnt/c/ManufacturingOntologies-main/Tools/FactorySimulation und führen Sie das StartSimulation-Shellskript aus:

    sudo ./StartSimulation.sh "<EventHubsCS>"

Hinweis

<EventHubCS> ist die Event Hubs-Namespace-Verbindungszeichenfolge, wie hier beschrieben wird.

Beispiel: StartSimulation „Endpoint=sb://ontologies.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=abcdefgh=“

Hinweis

Wenn die externe IP-Adresse eines Kubernetes-Diensts als <pending> angezeigt wird, können Sie ihm die externe IP-Adresse des traefik-Diensts über sudo kubectl patch service <theService> -n <the service's namespace> -p '{"spec": {"type": "LoadBalancer", "externalIPs":["<the traefik external IP address>"]}}' zuweisen.

Hinweis

Um zu verhindern, dass WSL (und K3s) automatisch heruntergefahren wird, lassen Sie die WSL-Eingabeaufforderung geöffnet.

Bereitstellen von Azure IoT Einsatz am Edge

Vergewissern Sie sich vor der Bereitstellung, dass Sie die Produktionsliniensimulation gestartet haben. Führen Sie dann die folgenden Schritte aus, wie hier beschrieben.

Zustandsüberwachung in Anwendungsfällen, OEE-Berechnung, Erkennung von Anomalien und Erstellen von Vorhersagen in Azure Data Explorer

Sie können auch die Dokumentation zu Azure Data Explorer besuchen, um zu erfahren, wie Sie ohne Programmieraufwand Dashboards für die Zustandsüberwachung, für Ertrags- oder Wartungsvorhersagen oder für die Anomalieerkennung erstellen. Wir haben hier ein Beispieldashboard bereitgestellt, das Sie im ADX-Dashboard bereitstellen können, indem wir die hier beschriebenen Schritte ausführen. Nach dem Import müssen Sie die Datenquelle des Dashboards aktualisieren, indem Sie in der oberen rechten Ecke des Dashboards den HTTPS-Endpunkt Ihrer ADX-Serverclusterinstanz im Format https://ADXInstanceName.AzureRegion.kusto.windows.net/ angeben.

Screenshot: Azure Data Explorer-Dashboard

Hinweis

Wenn Sie das OEE für eine bestimmte Schicht anzeigen möchten, wählen Sie Custom Time Range in der Time Range-Dropdownliste in der oberen linken Ecke des ADX-Dashboards aus, und geben Sie das Datum und die Uhrzeit des Anfangs und des Endes der gewünschten Schicht ein.

Rendern des integrierten Unified NameSpace (UNS) und ISA-95-Modellgraphen in Kusto Explorer

Diese Referenzlösung implementiert einen Unified NameSpace (UNS), basierend auf den OPC UA-Metadaten, die an die Zeitreihendatenbank in der Cloud (Azure Data Explorer) gesendet werden. Zu diesen OPC UA-Metadaten gehört auch die ISA-95-Ressourcenhierarchie. Der resultierende Graph kann einfach im Tool Kusto Explorer dargestellt werden, das in der hier zum Download zur Verfügung steht.

Fügen Sie eine neue Verbindung zu Ihrer Azure Data Explorer-Instanz hinzu, die in dieser Referenzlösung bereitgestellt wird, und führen Sie dann die folgende Abfrage in Kusto Explorer aus:

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

Um optimale Ergebnisse zu erzielen, ändern Sie die Option Layout in Grouped.

Graph einer ISA-95-Ressourcenhierarchie

Verwendung von Azure Managed Grafana

Sie können Grafana auch verwenden, um in Azure ein Dashboard für die in diesem Artikel beschriebene Lösung zu erstellen. Grafana wird in der Fertigung zum Erstellen von Dashboards verwendet, die Echtzeitdaten anzeigen. Azure bietet einen Dienst namens Azure Managed Grafana. Mit Grafana können Sie Cloud-Dashboards erstellen. In diesem Konfigurationshandbuch aktivieren Sie Grafana in Azure. Sie erstellen ein Dashboard mit Daten, die von Azure Data Explorer und vom Azure Digital Twins-Dienst abgefragt werden. Sie verwenden die simulierten Produktionsliniendaten aus dieser Referenzlösung.

Im folgenden Screenshot ist das Dashboard dargestellt:

Screenshot: Grafana-Dashboard

Aktivieren des Azure Managed Grafana-Diensts

  1. Wechseln Sie zum Azure-Portal, und suchen Sie nach dem Dienst „Grafana“, und wählen Sie den Dienst Azure Managed Grafana aus.

    Screenshot: Aktivierung von Grafana im Marketplace

  2. Geben Sie Ihrer Instanz einen Namen, lassen Sie die Standardoptionen aktiviert, und erstellen Sie den Dienst.

  3. Navigieren Sie nach dem Erstellen des Diensts zu der URL, über die Sie auf Ihre Grafana-Instanz zugreifen. Sie finden die URL auf der Homepage des Diensts.

Hinzufügen einer neuen Datenquelle in Grafana

Nachdem Sie sich zum ersten Mal angemeldet haben, müssen Sie Azure Data Explorer eine neue Datenquelle hinzufügen.

  1. Navigieren Sie zu „Konfiguration“, und fügen Sie eine neue Datenquelle hinzu.

  2. Suchen Sie nach Azure Data Explorer, und wählen Sie den Dienst aus.

  3. Konfigurieren Sie Ihre Verbindung, und verwenden Sie die App-Registrierung (folgen Sie der Anleitung, die oben auf dieser Seite angegeben wird).

  4. Speichern und testen Sie Ihre Verbindung am unteren Rand der Seite.

Verwenden eines Beispieldashboards

Jetzt können Sie das bereitgestellte Beispieldashboard importieren.

  1. Laden Sie das Beispieldashboard hier herunter: Sample Grafana Manufacturing Dashboard.

  2. Navigieren Sie zu Dashboard und wählen Sie Importieren aus.

  3. Wählen Sie die Quelle aus, die Sie heruntergeladen haben, und wählen Sie Speichern aus. Sie erhalten einen Fehler auf der Seite, da zwei Variablen noch nicht festgelegt sind. Wechseln Sie zur Einstellungsseite des Dashboards.

  4. Wählen Sie Variablen aus und aktualisieren Sie die beiden URLs mit der URL Ihres Azure Digital Twins-Diensts.

  5. Navigieren Sie zurück zum Dashboard, und wählen Sie die Schaltfläche „Aktualisieren“ aus. Jetzt sollten Daten angezeigt werden (vergessen Sie nicht, im Dashboard auf die Schaltfläche „Speichern“ zu klicken).

    Die Standortvariable oben auf der Seite wird automatisch mit Daten aus Azure Digital Twins (den Bereichsknoten aus ISA95) gefüllt. Hier können Sie die verschiedenen Speicherorte auswählen und die verschiedenen Datenpunkte der einzelnen Fabriken sehen.

  6. Wenn im Dashboard keine Daten angezeigt werden, navigieren Sie zu den einzelnen Bereichen, und überprüfen Sie, ob die richtige Datenquelle ausgewählt ist.

Konfigurieren von Warnungen

In Grafana ist es auch möglich, Warnungen zu erstellen. In diesem Beispiel erstellen wir eine OEE-Warnung für eine der Produktionslinien.

  1. Melden Sie sich bei Ihrem Grafana-Dienst an, und wählen Sie im Menü Warnungsregeln aus.

    Screenshot: Navigation zu einer Warnungen

  2. Wählen Sie Warnungsregel erstellen aus.

    Screenshot: Erstellen einer Warnungsregel.

  3. Geben Sie Ihrer Warnung einen Namen, und wählen Sie Azure Data Explorer als Datenquelle aus. Wählen Sie die Abfrage im Navigationsbereich aus.

    Screenshot: Erstellen einer Warnungsabfrage

  4. Geben Sie im Abfragefeld die folgende Abfrage ein. In diesem Beispiel verwenden wir die Produktionslinie „Seattle“.

    let oee = CalculateOEEForStation("assembly", "seattle", 6, 6);
    print round(oee * 100, 2)
    
  5. Wählen Sie Tabelle als Ausgabe aus.

  6. Scrollen Sie nach unten zum nächsten Abschnitt. Hier konfigurieren Sie den Warnungsschwellenwert. In diesem Beispiel verwenden wir „unter 10“ als Schwellenwert. In Produktionsumgebungen kann dieser Wert jedoch höher sein.

    Screenshot: Schwellenwertwarnung

  7. Wählen Sie den Ordner aus, in dem Sie Ihre Warnungen speichern möchten, und konfigurieren Sie das Verhalten der Warnungsauswertung. Wählen Sie die Option „alle 2 Minuten“ aus.

  8. Wählen Sie die Schaltfläche Speichern und beenden aus.

In Ihrer Warnungsübersicht können Sie jetzt sehen, dass eine Warnung ausgelöst wird, wenn Ihr OEE bei weniger als 10 liegt.

Screenshot: Warnungsübersicht

Sie können dieses Setup beispielsweise in Microsoft Dynamics Field Services integrieren.

Verbinden der Referenzlösung mit Microsoft Power BI

Um die Referenzlösung mit Power BI verbinden zu können, benötigen Sie Zugriff auf ein Power BI-Abonnement.

Führen Sie die folgenden Schritte aus:

  1. Installieren Sie die Power BI Desktop-App von hier aus.

  2. Melden Sie sich mit dem Benutzerkonto, das Zugriff auf das Power BI-Abonnement hat, bei der Power BI Desktop-App an.

  3. Navigieren Sie im Azure-Portal zu Ihrer Azure Data Explorer-Datenbankinstanz (ontologies), und fügen Sie einem Azure Active Directory-Benutzerkonto, das nur Zugriff auf ein einzelnes Azure-Abonnement hat, Database Admin-Berechtigungen hinzu. Es muss sich um das Abonnement handeln, das für Ihre bereitgestellte Instanz dieser Referenzlösung verwendet wird. Erstellen Sie ein neues Benutzerkonto in Azure Active Directory, falls erforderlich.

  4. Erstellen Sie in Power BI einen neuen Bericht und wählen Sie Azure Data Explorer-Zeitreihendaten als Datenquelle über Abrufen von Daten > Azure > Azure Data Explorer (Kusto) aus.

  5. Geben Sie im Popupfenster den Azure Data Explorer-Endpunkt Ihrer Instanz (z. B https://erichbtest3adx.eastus2.kusto.windows.net), den Datenbanknamen (ontologies) und die folgende Abfrage ein:

    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. Wählen Sie Laden aus. Diese Aktion wird die tatsächliche Zykluszeit der Montagestation der Produktionslinie „Munich“ für die letzte Stunde importiert.

  7. Melden Sie sich bei Azure Data Explorer mit dem Azure Active Directory-Benutzerkonto an, dem Sie zuvor Berechtigungen zum Zugriff auf die Azure Data Explorer-Datenbank erteilt haben.

  8. Wählen Sie in Data view die Spalte NodeValue aus, und wählen Sie Im Menüelement Zusammenfassung nicht zusammenfassen aus.

  9. Wechseln Sie zur Report view.

  10. Wählen Sie unter Visualisierungen die Visualisierung mit Liniendiagramm aus.

  11. Verschieben Sie unter Visualisierungen die Timestamp aus der Data-Quelle in die X-axis, wählen Sie sie aus, und wählen Sie Zeitstempel aus.

  12. Verschieben Sie unter Visualisierungen die NodeValue aus der Data-Quelle in die Y-axis, wählen Sie sie aus, und wählen Sie Median aus.

  13. Speichern Sie Ihren neuen Bericht.

    Hinweis

    Sie können Ihrem Bericht auch andere Daten aus Azure Data Explorer hinzufügen.

    Screenshot: Power BI-Ansicht

Verbinden der Referenzlösung mit Microsoft Dynamics 365 Field Service

Diese Integration veranschaulicht die folgenden Szenarien:

  • Hochladen von Ressourcen aus der Referenzlösung Manufacturing Ontologies in Dynamics 365 Field Service.
  • Erstellen Sie Warnungen in Dynamics 365 Field Service, wenn ein bestimmter Schwellenwert für Telemetriedaten der Referenzlösung Manufacturing Ontologies erreicht wird.

Die Integration verwendet Azure Logics Apps. Mit Logik-Apps können unternehmenskritische Apps und Dienste über Workflows ohne Code verbunden werden. Wir rufen Informationen aus Azure Data Explorer ab und lösen Aktionen in Dynamics 365 Field Service aus.

Wenn Sie Dynamics 365 Field Service noch nicht besitzen, aktivieren Sie hier eine 30 Tage gültige Testversion. Denken Sie daran, dieselbe Microsoft Entra ID-Instanz (vormals Azure Active Directory) zu verwenden, die beim Bereitstellen der Referenzlösung für Manufacturing Ontologies verwendet worden ist. Andernfalls müssen Sie die mandantenübergreifende Authentifizierung konfigurieren, die nicht Teil dieser Anleitung ist.

Erstellen eines Azure Logic App-Workflows zur Ressourcenerstellung in Dynamics 365 Field Service

Beginnen wir mit dem Hochladen von Ressourcen aus der Referenzlösung Manufacturing Ontologies in Dynamics 365 Field Service:

  1. Wechseln Sie zum Azure-Portal, und erstellen Sie eine neue Logik-App.

  2. Weisen Sie der Azure Logic App einen Namen zu, und platzieren Sie sie in derselben Ressourcengruppe wie die Referenzlösung „Manufacturing Ontologies“.

  3. Wählen Sie Workflows aus.

  4. Geben Sie Ihrem Workflow einen Namen. Für dieses Szenario verwenden wir den zustandsbehafteten Statustyp, da Ressourcen keine Datenflüsse sind.

  5. Erstellen Sie einen neuen Trigger. Wir beginnen mit dem Erstellen eines Serientriggers. Dadurch wird die Datenbank täglich daraufhin überprüft, ob neue Ressourcen erstellt worden sind. Sie können den Trigger so ändern, dass er häufiger auslöst.

  6. Suchen Sie in den Aktionen nach Azure Data Explorer, und wählen Sie den Befehl Run KQL-Abfrage aus. In dieser Abfrage überprüfen wir, welche Art von Ressourcen wir haben. Verwenden Sie die folgende Abfrage, um Ressourcen abzurufen, und fügen Sie diese in das Abfragefeld ein:

    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. Um Ihre Bestandsdaten in Dynamics 365 Field Service zu übertragen, müssen Sie eine Verbindung mit Microsoft Dataverse herstellen. Stellen Sie eine Verbindung mit Ihrer Dynamics 365 Field Service-Instanz her, und verwenden Sie die folgende Konfiguration:

    • Verwenden Sie den Tabellennamen „Customer Assets“.
    • Fügen Sie „AssetName“ in das Feld „Name“ ein.
  8. Speichern Sie Ihren Workflow, und führen Sie ihn aus. Sie sehen in einigen Sekunden später, dass neue Ressourcen in Dynamics 365 Field Service erstellt werden.

Erstellen eines Azure Logic App-Workflows zum Erstellen von Warnungen in Dynamics 365 Field Service

Dieser Workflow erstellt Warnungen in Dynamics 365 Field Service, insbesondere wenn ein bestimmter Schwellenwert für „FaultyTime“ für eine Ressource der Referenzlösung „Manufacturing Ontologies“ erreicht wird.

  1. Erstellen Sie zunächst eine Azure Data Explorer-Funktion, um die richtigen Daten abzurufen. Wechseln Sie im Azure-Portal zum Azure Data Explorer-Abfragebereich, und führen Sie den folgenden Code aus, um eine Funktion namens FaultyFieldAssets zu erstellen:

    Screenshot: Erstellen einer ADX-Funktionsabfrage

    .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. Erstellen Sie einen neuen Workflow in der Azure-Logik-App. Erstellen Sie einen Serienauslöser, der alle 3 Minuten gestartet werden soll. Erstellen Sie als Aktion „Azure Data Explorer“, und wählen Sie KQL-Abfrage ausführen aus.

  3. Geben Sie Ihre Azure Data Explorer Cluster-URL ein, wählen Sie dann Ihre Datenbank aus, und verwenden Sie den Funktionsnamen, der in Schritt 1 als Abfrage erstellt wurde.

  4. Wählen Sie Microsoft Dataverse als Aktion aus.

  5. Führen Sie den Workflow aus. Daraufhin sehen Sie neue Warnungen, die in Ihrem Dynamics 365 Field Service-Dashboard generiert werden:

    Screenshot: Warnungen in Dynamics 365 FS