Zelfstudie: De azure Industrial IoT-referentieoplossingsarchitectuur implementeren

Fabrikanten willen een algemene Industriële IoT-oplossing op wereldwijde schaal implementeren en al hun productiesites verbinden met deze oplossing om de efficiëntie voor elke afzonderlijke productiesite te verhogen.

Deze verhoogde efficiëntie leidt tot een snellere productie en een lager energieverbruik, wat allemaal leidt tot het verlagen van de kosten voor de geproduceerde goederen en in de meeste gevallen hun kwaliteit verhogen.

De oplossing moet zo efficiënt mogelijk zijn en alle vereiste use cases mogelijk maken, zoals voorwaardebewaking, OEE-berekening, prognoses en anomaliedetectie. Uit de inzichten die zijn verkregen uit deze use cases, kan in een tweede stap een digitale feedbacklus worden gemaakt die vervolgens optimalisaties en andere wijzigingen in de productieprocessen kan toepassen.

Interoperabiliteit is de sleutel tot een snelle implementatie van de oplossingsarchitectuur en het gebruik van open standaarden zoals OPC UA helpt aanzienlijk bij het bereiken van deze interoperabiliteit.

IEC 62541 Open Platform Communications Unified Architecture (OPC UA)

Deze oplossing maakt gebruik van IEC 62541 Open Platform Communications (OPC) Unified Architecture (UA) voor alle OT-gegevens (Operational Technology). Deze standaard wordt hier beschreven.

Referentiearchitectuur voor de oplossing

Vereenvoudigde architectuur (zowel Azure- als Fabric-opties):

Diagram van een eenvoudige IIoT-architectuur.

Gedetailleerde architectuur (alleen Azure):

Diagram van een IIoT-architectuur.

Onderdelen

Dit zijn de onderdelen die betrokken zijn bij deze oplossing:

Onderdeel Beschrijving
Industriële activa Een set gesimuleerde OPC-UA-productielijnen die worden gehost in Docker-containers
Azure IoT-bewerkingen Azure IoT Operations is een geïntegreerd gegevensvlak voor de rand. Het bevat een set modulaire, schaalbare en maximaal beschikbare gegevensservices die worden uitgevoerd op Kubernetes-clusters met Azure Arc.
Gegevensgateway Deze gateway verbindt uw on-premises gegevensbronnen (zoals SAP) met Azure Logic Apps in de cloud.
Azure Kubernetes Services Edge Essentials Deze Kubernetes-implementatie wordt uitgevoerd op Edge. Het biedt Kubernetes-clusters met één en meerdere knooppunten voor een fouttolerante Edge-configuratie. Zowel K3S als K8S worden ondersteund. Het wordt uitgevoerd op ingesloten of pc-klasse hardware, zoals een industriële gateway.
Azure Event Hubs De cloudberichtbroker die OPC UA PubSub-berichten van edge-gateways ontvangt en opslaat totdat ze zijn opgehaald door abonnees.
Azure Data Explorer De tijdreeksdatabase en front-end dashboardservice voor geavanceerde cloudanalyses, waaronder ingebouwde anomaliedetectie en voorspellingen.
Azure Logic-apps Azure Logic Apps is een cloudplatform dat u kunt gebruiken om geautomatiseerde werkstromen te maken en uit te voeren met weinig tot geen code.
Azure Arc Deze cloudservice wordt gebruikt voor het beheren van het on-premises Kubernetes-cluster aan de rand. Nieuwe workloads kunnen worden geïmplementeerd via Flux.
Azure Storage Deze cloudservice wordt gebruikt voor het beheren van het OPC UA-certificaatarchief en de instellingen van de Edge Kubernetes-workloads.
Azure Managed Grafana Azure Managed Grafana is een platform voor gegevensvisualisatie dat is gebouwd op de Grafana-software van Grafana Labs. Grafana is gebouwd als een volledig beheerde service die wordt gehost en ondersteund door Microsoft.
Microsoft Power BI Microsoft Power BI is een verzameling SaaS-softwareservices, apps en connectors die samenwerken om uw niet-gerelateerde gegevensbronnen om te zetten in coherente, visueel meeslepende en interactieve inzichten.
Microsoft Dynamics 365 Field Service Microsoft Dynamics 365 Field Service is een kant-en-klare SaaS-oplossing voor het beheren van fieldservice aanvragen.
UA Cloud Commander Deze opensource-referentietoepassing converteert berichten die zijn verzonden naar een Message Queue Telemetry Transport (MQTT) of Kafka Broker (mogelijk in de cloud) naar OPC UA Client/Server-aanvragen voor een verbonden OPC UA-server. De toepassing wordt uitgevoerd in een Docker-container.
UA-cloudactie Met deze opensource-referentiecloudtoepassing wordt de Azure Data Explorer opgevraagd voor een specifieke gegevenswaarde. De gegevenswaarde is de druk in een van de gesimuleerde productielijnmachines. UA Cloud Commander wordt aanroepen via Azure Event Hubs wanneer een bepaalde drempelwaarde wordt bereikt (4.000 mbar). UA Cloud Commander roept vervolgens de methode OpenPressureReliefValve aan op de computer via OPC UA.
UA-cloudbibliotheek De UA Cloud Library is een online winkel van OPC UA Information Models, gehost door de OPC Foundation.
UA Edge-Vertalen Deze opensource-referentietoepassing voor industriële connectiviteit vertaalt van eigen assetinterfaces naar OPC UA met behulp van W3C Web of Things (WoT) Thing Descriptions als het schema om de industriële assetinterface te beschrijven.

Notitie

In een praktijkimplementatie zou iets zo kritiek zijn als het openen van een drukontlastklep on-premises. Dit is slechts een eenvoudig voorbeeld van het bereiken van de digitale feedbacklus.

Een op de cloud gebaseerd OPC UA-certificaatarchief en permanente opslag

Wanneer fabrikanten OPC UA-toepassingen uitvoeren, moeten hun OPC UA-configuratiebestanden, sleutels en certificaten behouden blijven. Hoewel Kubernetes de mogelijkheid heeft om deze bestanden in volumes te behouden, is de cloud veiliger, met name op clusters met één knooppunt waar het volume verloren zou gaan wanneer het knooppunt uitvalt. Dit scenario is waarom de OPC UA-toepassingen die in deze oplossing worden gebruikt, hun configuratiebestanden, sleutels en certificaten opslaan in de cloud. Deze aanpak biedt ook het voordeel van één locatie voor wederzijds vertrouwde certificaten voor alle OPC UA-toepassingen.

UA-cloudbibliotheek

U kunt OPC UA-informatiemodellen rechtstreeks lezen vanuit Azure Data Explorer. U kunt dit doen door de OPC UA-knooppunten te importeren die zijn gedefinieerd in het OPC UA-informatiemodel in een tabel voor het opzoeken van meer metagegevens in query's.

Configureer eerst een bijschriftbeleid voor Azure Data Explorer (ADX) voor de UA-cloudbibliotheek door de volgende query uit te voeren op uw ADX-cluster (zorg ervoor dat u een ADX-clusterbeheerder bent, configureerbaar onder Machtigingen op het tabblad ADX in Azure Portal):

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

Voer vervolgens de volgende Azure Data Explorer-query uit vanuit 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

U moet twee dingen opgeven in deze query:

  • De unieke id van het informatiemodel uit de UA-cloudbibliotheek en voer deze in bij de id van het <informatiemodel invoegen uit de cloudbibliotheek in dit> veld van de ADX-query.
  • Uw UA Cloud Library-referenties (gegenereerd tijdens de registratie) basishash voor autorisatieheaders en voeg deze in het <hash van uw cloudbibliotheekreferenties in dit> veld van de ADX-query in. Gebruik hulpprogramma's om https://www.debugbear.com/basic-auth-header-generator dit te genereren.

Als u bijvoorbeeld het opC UA Server-informatiemodel van het productielijnsimulatiestation OPC UA Server wilt weergeven in het kusto Explorer-hulpprogramma dat u hier kunt downloaden, voert u de volgende query uit:

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

Voor de beste resultaten wijzigt u de Layout optie in Grouped en in Lablesname.

Grafiek van het station infomodel.

Simulatie van productielijnen

De oplossing maakt gebruik van een productielijnsimulatie die bestaat uit verschillende stations, met behulp van een OPC UA-informatiemodel en een eenvoudig Manufacturing Execution System (MES). Zowel de stations als de MES worden in een container geplaatst voor eenvoudige implementatie.

Standaardsimulatieconfiguratie

De simulatie is geconfigureerd voor het opnemen van twee productielijnen. De standaardconfiguratie is:

Productielijn Ideale cyclustijd (in seconden)
München 6
Seattle 10
Shift-naam Starten End
Ochtend 07:00 14.00
Middag 15.00 22:00
Nacht 23:00 06:00

Notitie

Ploegentijden bevinden zich in lokale tijd, met name de tijdzone waarop de virtuele machine (VM) die als host fungeert voor de productielijnsimulatie, is ingesteld op.

OPC UA-knooppunt-id's van station OPC UA-server

De volgende OPC UA-knooppunt-id's worden gebruikt in station OPC UA Server voor telemetrie naar de cloud.

  • i=379 - serienummer van vervaardigd product
  • i=385 - aantal geproduceerde producten
  • i=391 - aantal verwijderde producten
  • i=398 - lopende tijd
  • i=399 - defecte tijd
  • i=400 - status (0=station gereed om werk te doen, 1 = werk in uitvoering, 2 = werk gedaan en goed deel vervaardigd, 3 = werk gedaan en schroot vervaardigd, 4 = station in fouttoestand)
  • i=406 - energieverbruik
  • i=412 - ideale cyclustijd
  • i=418 - werkelijke cyclustijd
  • i=434 - druk

Digitale feedbacklus met UA Cloud Commander en UA Cloud Action

Deze referentie-implementatie implementeert een 'digitale feedbacklus', met name het activeren van een opdracht op een van de OPC UA-servers in de simulatie vanuit de cloud, op basis van tijdreeksgegevens die een bepaalde drempelwaarde bereiken (de gesimuleerde druk). U ziet dat de druk van de assemblymachine in de productielijn Seattle regelmatig wordt vrijgegeven in het Azure Data Explorer-dashboard.

De productielijnsimulatie en cloudservices installeren

Als u op de knop klikt, worden alle vereiste resources geïmplementeerd in Microsoft Azure:

Implementeren op Azure

Tijdens de implementatie moet u een wachtwoord opgeven voor een VM die wordt gebruikt voor het hosten van de productielijnsimulatie en voor UA Cloud Twin. Het wachtwoord moet drie van de volgende kenmerken hebben: één kleine letter, één hoofdletter, één cijfer en één speciaal teken. Het wachtwoord moet tussen de 12 en 72 tekens lang zijn.

Notitie

Om kosten te besparen, implementeert de implementatie slechts één Virtuele Windows 11 Enterprise-machine voor zowel de productielijnsimulatie als het basisbesturingssysteem voor het Azure Kubernetes Services Edge Essentials-exemplaar. In productiescenario's is de simulatie van de productielijn niet vereist en voor het basisbesturingssysteem voor het Azure Kubernetes Services Edge Essentials-exemplaar raden we Windows IoT Enterprise Long Term Servicing Channel (LTSC) aan.

Zodra de implementatie is voltooid, maakt u verbinding met de geïmplementeerde Windows-VM met een RDP-verbinding (extern bureaublad). U kunt het RDP-bestand downloaden op de azure-portalpagina voor de VIRTUELE machine, onder de Verbinding maken opties. Meld u aan met de referenties die u hebt opgegeven tijdens de implementatie, open een Beheer istrator PowerShell-venster, navigeer naar de C:\ManufacturingOntologies-main\Deployment map en voer het volgende uit:

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

Nadat de opdracht is voltooid, is de installatie van Azure Kubernetes Services Edge Essentials voltooid en kunt u de simulatie van de productielijn uitvoeren.

Tip

Als u op elk gewenst moment logboeken van al uw Kubernetes-workloads en -services wilt ophalen, voert u uit Get-AksEdgeLogs vanuit een powershell-venster van Beheer istrator.

Als u het geheugengebruik van uw Kubernetes-cluster wilt controleren, voert u deze uit Invoke-AksEdgeNodeCommand -Command "sudo cat /proc/meminfo" vanuit een Beheer istrator PowerShell-venster.

De simulatie van de productielijn uitvoeren

Open vanaf de geïmplementeerde VM een Windows-opdrachtprompt. Navigeer naar de C:\ManufacturingOntologies-main\Tools\FactorySimulation map en voer de opdracht StartSimulation uit door de volgende parameters op te geven:

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

Parameters:

Parameter Description
EventHubCS Kopieer de Event Hubs-naamruimte verbindingsreeks zoals hier wordt beschreven.
StorageAccountCS Navigeer in Azure Portal naar het opslagaccount dat door deze oplossing is gemaakt. Selecteer Toegangssleutels in het navigatiemenu aan de linkerkant. Kopieer vervolgens de verbindingsreeks voor key1.
AzureSubscriptionID Blader in Azure Portal door uw abonnementen en kopieer de id van het abonnement dat in deze oplossing wordt gebruikt.
AzureTenantID Open in Azure Portal de pagina Microsoft Entry ID en kopieer uw tenant-id.

In het volgende voorbeeld ziet u de opdracht met alle parameters:

    StartSimulation Endpoint=sb://ontologies.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=abcdefgh= DefaultEndpointsProtocol=https;AccountName=ontologiesstorage;AccountKey=abcdefgh==;EndpointSuffix=core.windows.net 9dd2eft0-3dad-4aeb-85d8-c3adssd8127a 6e660ce4-d51a-4585-80c6-58035e212354

Notitie

Als u toegang hebt tot verschillende Azure-abonnementen, is het de moeite waard om u eerst via de webbrowser aan te melden bij Azure Portal vanuit de virtuele machine. U kunt ook schakelen tussen Active Directory-tenants via de gebruikersinterface van Azure Portal (in de rechterbovenhoek) om ervoor te zorgen dat u bent aangemeld bij de tenant die tijdens de implementatie wordt gebruikt. Nadat u bent aangemeld, laat u het browservenster geopend. Dit zorgt ervoor dat het StartSimulation-script gemakkelijker verbinding kan maken met het juiste abonnement.

In deze oplossing bevindt het CERTIFICAATarchief van de OPC UA-toepassing voor UA Cloud Publisher en het gesimuleerde mes en de opslag van afzonderlijke machines zich in de cloud in het geïmplementeerde Azure Storage-account.

Het Kubernetes-cluster inschakelen voor beheer via Azure Arc

  1. Open op uw virtuele machine een Beheer istrator PowerShell-venster. Navigeer naar de map en voer deze C:\ManufacturingOntologies-main\Deployment uit CreateServicePrincipal. De twee parameters subscriptionID en tenantID kunnen worden opgehaald uit Azure Portal.

  2. Voer de volgende gegevens uit notepad aksedge-config.json en geef deze op:

    Kenmerk Beschrijving
    Locatie De Azure-locatie van uw resourcegroep. U vindt deze locatie in Azure Portal onder de resourcegroep die voor deze oplossing is geïmplementeerd, maar verwijder de spaties in de naam. Momenteel ondersteunde regio's zijn eastus, eastus2, westus2, westus3, westeurope en northeurope.
    SubscriptionId Uw abonnement-id. Selecteer in Azure Portal het abonnement dat u gebruikt en kopieer/plak de abonnements-id.
    TenantId Uw tenant-id. Selecteer in Azure Portal de optie in Azure Active Directory en kopieer/plak de tenant-id.
    ResourceGroupName De naam van de Azure-resourcegroep die voor deze oplossing is geïmplementeerd.
    ClientId De naam van de Azure-service-principal die u eerder hebt gemaakt. Azure Kubernetes Services maakt gebruik van deze service-principal om uw cluster te verbinden met Arc.
    ClientSecret Het wachtwoord voor de Azure-service-principal.
  3. Sla het bestand op, sluit het PowerShell-venster en open een nieuw Beheer istrator PowerShell-venster. Ga terug naar de map en voer deze C:\ManufacturingOntologies-main\Deployment uit SetupArc.

U kunt uw Kubernetes-cluster nu vanuit de cloud beheren via het zojuist geïmplementeerde Azure Arc-exemplaar. Blader in Azure Portal naar het Azure Arc-exemplaar en selecteer Workloads. Het vereiste servicetoken kan worden opgehaald uit Get-AksEdgeManagedServiceToken een Beheer istrator PowerShell-venster op uw virtuele machine.

Schermopname van Azure Arc in Azure Portal.

Azure IoT-bewerkingen implementeren aan de rand

Zorg ervoor dat u de productielijnsimulatie al hebt gestart en het Kubernetes-cluster hebt ingeschakeld voor beheer via Azure Arc, zoals beschreven in de vorige alinea's. Volg daarna deze stappen:

  1. Navigeer in Azure Portal naar de Key Vault die in deze referentieoplossing is geïmplementeerd en voeg uw eigen identiteit toe aan het toegangsbeleid door te Access policiesklikken op , Createselecteer de Keys, Secrets & Certificate Management sjabloon, selecteer Nextuw eigen gebruikersidentiteit, selecteer en selecteer uw eigen gebruikersidentiteit, selecteer Next, laat de sectie Toepassing leeg, selecteer Next en ten slotte Create.
  2. Schakel aangepaste locaties in voor uw Met Arc verbonden Kubernetes-cluster (ontologies_cluster genoemd) door u eerst aan te melden bij uw Azure-abonnement via az login een Beheer istrator PowerShell-venster en vervolgens uit te voerenaz connectedk8s enable-features -n "ontologies_cluster" -g "<resourceGroupName>" --features cluster-connect custom-locations, op basis resourceGroupName van de geïmplementeerde referentieoplossing.
  3. Implementeer Azure IoT Operations vanuit Azure Portal door te navigeren naar uw Kubernetes-cluster dat is verbonden met Arc, selecteer , ExtensionsAddselecteer Azure IoT Operationsen selecteer Create. Laat alles op de basispagina staan. Stel op de pagina Configuratie het MQ Mode in op Auto. U hoeft geen gesimuleerde programmeerbare logische controller (PLC) te implementeren, omdat deze referentieoplossing al een veel grotere simulatie van productielijnen bevat. Selecteer op de pagina Automation de Sleutelkluis die is geïmplementeerd voor deze referentieoplossing en kopieer vervolgens de az iot ops init automatisch gegenereerde opdracht. Open vanuit uw geïmplementeerde VM een nieuw Beheer istrator PowerShell-venster, meld u aan bij het juiste Azure-abonnement door de opdracht uit te voeren az login en vervolgens de az iot ops init opdracht uit te voeren met de argumenten uit de Azure-portal. Zodra de opdracht is voltooid, selecteert Next en sluit u de wizard.

OPC UA-beveiliging en -connectiviteit configureren voor Azure IoT-bewerkingen

Zorg ervoor dat u Azure IoT-bewerkingen hebt geïmplementeerd en dat alle Kubernetes-workloads actief zijn door te navigeren naar de Kubernetes-resource met Arc in Azure Portal.

  1. Navigeer vanuit De Azure-portal naar De Azure Storage die in deze referentieoplossing is geïmplementeerd, open de Storage browser en vervolgens Blob containers. Hier hebt u toegang tot het cloudgebaseerde OPC UA-certificaatarchief dat in deze oplossing wordt gebruikt. Azure IoT Operations maakt gebruik van Azure Key Vault als het cloudgebaseerde OPC UA-certificaatarchief, zodat de certificaten moeten worden gekopieerd:
    1. Navigeer vanuit de Blob-containers van de Azure Storage-browser voor elke gesimuleerde productielijn naar de map app/pki/trusted/certs, selecteer het assembly-, verpakkings- en testcertificaatbestand en download het.
    2. Meld u aan bij uw Azure-abonnement via az login een Beheer istrator PowerShell-venster en voer deze uitaz keyvault secret set --name "<stationName>-der" --vault-name <keyVaultName> --file .<stationName>.der --encoding hex --content-type application/pkix-cert, waarbij u de keyVaultName ene stationName van de 6 stations opleverde waarvoor u in de vorige stap een .der cert-bestand hebt gedownload.
  2. Open vanaf de geïmplementeerde VM een Windows-opdrachtprompt en voer deze uit kubectl apply -f secretsprovider.yaml met het bijgewerkte resourcebestand van de geheimenprovider dat is opgegeven in de C:\ManufacturingOntologies-main\Tools\FactorySimulation\Station map, waarbij u de key vault-naam, de Azure-tenant-id en de namen en aliassen van het stationcertificaat ophaalt die u eerder hebt geüpload naar Azure Key Vault.
  3. Meld u in een webbrowser aan https://iotoperations.azure.com, kies de juiste Azure-directory (rechterbovenhoek) en begin met het maken van assets uit de simulatie van de productielijn. De oplossing wordt geleverd met twee productielijnen (München en Seattle) bestaande uit drie stations elk (assemblage, test en verpakking):
    1. Voer voor de asseteindpunten opc.tcp://assembly.münchen in het veld OPC UA Broker URL voor het assemblystation van de productielijn van München, enzovoort. Selecteren Do not use transport authentication certificate (wederzijdse verificatie op basis van OPC UA-certificaten tussen Azure IoT Operations en een verbonden OPC UA-server wordt nog steeds gebruikt).
    2. Selecteer Import CSV file en open het StationTags.csv bestand in de map voor de C:\ManufacturingOntologies-main\Tools\FactorySimulation\Station assettags.
  4. Navigeer vanuit De Azure-portal naar De Azure Storage die in deze referentieoplossing is geïmplementeerd, open de Storage browser en vervolgens Blob containers. Navigeer voor elke gesimuleerde productielijn naar de app/pki/rejected/certs map en download het Azure IoT Operations-certificaatbestand. Verwijder vervolgens het bestand. Navigeer naar de app/pki/trusted/certs map en upload het Azure IoT Operations-certificaatbestand naar deze map.
  5. Open vanaf de geïmplementeerde VM een Windows-opdrachtprompt en start de simulatie van de productielijn opnieuw door naar de C:\ManufacturingOntologies-main\Tools\FactorySimulation map te navigeren en de Opdracht StopSimulation uit te voeren, gevolgd door de opdracht StartSimulation.
  6. Volg de instructies zoals hier wordt beschreven om te controleren of de gegevens afkomstig zijn van de simulatie van de productielijn.
  7. Als laatste stap verbindt u Azure IoT-bewerkingen met de Event Hubs die in deze referentieoplossing zijn geïmplementeerd, zoals hier wordt beschreven.

Use cases condition monitoring, het berekenen van OEE, het detecteren van afwijkingen en het maken van voorspellingen in Azure Data Explorer

U kunt ook de Documentatie van Azure Data Explorer raadplegen voor meer informatie over het maken van dashboards zonder code voor voorwaardebewaking, opbrengst- of onderhoudsvoorspellingen of anomaliedetectie. We hebben hier een voorbeelddashboard gegeven dat u kunt implementeren in het ADX-dashboard door de stappen te volgen die hier worden beschreven. Na het importeren moet u de gegevensbron van het dashboard bijwerken door het HTTPS-eindpunt van uw ADX-serverclusterexemplaren op te geven in de indeling https://ADXInstanceName.AzureRegion.kusto.windows.net/ in de rechterbovenhoek van het dashboard.

Schermopname van een Azure Data Explorer-dashboard.

Notitie

Als u de OEE voor een specifieke dienst wilt weergeven, selecteert u Custom Time Range de Time Range vervolgkeuzelijst in de linkerbovenhoek van het ADX-dashboard en voert u de datum en tijd in van het begin tot het einde van de dienst waarin u geïnteresseerd bent.

De ingebouwde UNS-modelgrafiek (Unified NameSpace) en ISA-95-modelgrafiek weergeven in Kusto Explorer

Met deze referentieoplossing wordt een Unified NameSapce (UNS) geïmplementeerd op basis van de OPC UA-metagegevens die zijn verzonden naar de tijdreeksdatabase in de cloud (Azure Data Explorer). Deze OPC UA-metagegevens bevatten ook de ISA-95-assethiërarchie. De resulterende grafiek kan eenvoudig worden gevisualiseerd in het Kusto Explorer-hulpprogramma dat u hier kunt downloaden.

Voeg een nieuwe verbinding toe met uw Azure Data Explorer-exemplaar dat in deze referentieoplossing is geïmplementeerd en voer vervolgens de volgende query uit in 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

Voor de beste resultaten wijzigt u de Layout optie in Grouped.

Grafiek met een ISA-95-assethiërarchie.

Azure Managed Grafana Service gebruiken

U kunt Grafana ook gebruiken om een dashboard in Azure te maken voor de oplossing die in dit artikel wordt beschreven. Grafana wordt in productie gebruikt om dashboards te maken die realtime gegevens weergeven. Azure biedt een service met de naam Azure Managed Grafana. Hiermee kunt u clouddashboards maken. In deze configuratiehandleiding schakelt u Grafana in Azure in en maakt u een dashboard met gegevens die worden opgevraagd vanuit Azure Data Explorer en de Azure Digital Twins-service, met behulp van de gesimuleerde productielijngegevens uit deze referentieoplossing.

In de volgende schermopname ziet u het dashboard:

Schermopname van een Grafana-dashboard.

Azure Managed Grafana Service inschakelen

  1. Ga naar Azure Portal en zoek de service Grafana en selecteer de service Azure Managed Grafana.

    Schermopname van het inschakelen van Grafana in Marketplace.

  2. Geef uw exemplaar een naam en laat de standaardopties ingeschakeld en maak de service.

  3. Nadat de service is gemaakt, gaat u naar de URL waar u toegang hebt tot uw Grafana-exemplaar. U vindt de URL op de startpagina van de service.

Een nieuwe gegevensbron toevoegen in Grafana

Nadat u zich voor het eerst hebt aangemeld, moet u een nieuwe gegevensbron toevoegen aan Azure Data Explorer.

  1. Navigeer naar Configuratie en voeg een nieuwe gegevensbron toe.

  2. Zoek naar Azure Data Explorer en selecteer de service.

  3. Configureer uw verbinding en gebruik de app-registratie (volg de handleiding die boven aan deze pagina wordt weergegeven).

  4. Sla de verbinding onder aan de pagina op en test deze.

Een voorbeelddashboard importeren

U bent nu klaar om het opgegeven voorbeelddashboard te importeren.

  1. Download hier het voorbeelddashboard: Voorbeeld van Grafana Manufacturing Dashboard.

  2. Ga naar Dashboard en selecteer Importeren.

  3. Selecteer de bron die u hebt gedownload en selecteer Opslaan. Er wordt een fout weergegeven op de pagina, omdat er nog geen twee variabelen zijn ingesteld. Ga naar de instellingenpagina van het dashboard.

  4. Selecteer aan de linkerkant op Variabelen en werk de twee URL's bij met de URL van uw Azure Digital Twins-service.

  5. Ga terug naar het dashboard en druk op de knop Vernieuwen. U ziet nu gegevens (vergeet niet om op de knop Opslaan op het dashboard te drukken).

    De locatievariabele boven aan de pagina wordt automatisch gevuld met gegevens van Azure Digital Twins (de gebiedsknooppunten van ISA95). Hier kunt u de verschillende locaties selecteren en de verschillende gegevenspunten van elke fabriek bekijken.

  6. Als er geen gegevens worden weergegeven in uw dashboard, gaat u naar de afzonderlijke deelvensters en controleert u of de juiste gegevensbron is geselecteerd.

Waarschuwingen configureren

In Grafana is het ook mogelijk om waarschuwingen te maken. In dit voorbeeld maken we een lage OEE-waarschuwing voor een van de productielijnen.

  1. Meld u aan bij uw Grafana-service en selecteer waarschuwingsregels in het menu.

    Schermopname van navigatie naar waarschuwingen.

  2. Selecteer Waarschuwingsregel maken.

    Schermopname van het maken van een waarschuwingsregel.

  3. Geef uw waarschuwing een naam en selecteer 'Azure Data Explorer' als gegevensbron. Selecteer een query in het navigatiedeelvenster.

    Schermopname van het maken van een waarschuwingsquery.

  4. Voer in het queryveld de volgende query in. In dit voorbeeld gebruiken we de productielijn 'Seattle'.

    let oee = CalculateOEEForStation("assembly", "seattle", 6, 6);
    print round(oee * 100, 2)
    
  5. Selecteer 'tabel' als uitvoer.

  6. Schuif omlaag naar de volgende sectie. Hier configureert u de drempelwaarde voor waarschuwingen. In dit voorbeeld gebruiken we 'lager dan 10' als drempelwaarde, maar in productieomgevingen kan deze waarde hoger zijn.

    Schermopname van een drempelwaardewaarschuwing.

  7. Selecteer de map waarin u uw waarschuwingen wilt opslaan en configureer het gedrag waarschuwingsevaluatie. Selecteer de optie 'om de 2 minuten'.

  8. Selecteer de knop Opslaan en afsluiten.

In het overzicht van uw waarschuwingen ziet u nu dat er een waarschuwing wordt geactiveerd wanneer uw OEE lager is dan 10.

Schermopname van een waarschuwingsoverzicht.

U kunt deze installatie integreren met bijvoorbeeld Microsoft Dynamics Field Services.

Verbinding maken van de referentieoplossing voor Microsoft Power BI

Als u de referentieoplossing Power BI wilt verbinden, hebt u toegang nodig tot een Power BI-abonnement.

Voltooi de volgende stappen:

  1. Installeer hier de Power BI Desktop-app.

  2. Meld u aan bij de Power BI Desktop-app met behulp van de gebruiker met toegang tot het Power BI-abonnement.

  3. Navigeer vanuit Azure Portal naar uw Azure Data Explorer-database-exemplaar (ontologies) en voeg machtigingen toe Database Admin aan een Azure Active Directory-gebruiker met toegang tot slechts één Azure-abonnement, met name het abonnement dat wordt gebruikt voor uw geïmplementeerde exemplaar van deze referentieoplossing. Maak indien nodig een nieuwe gebruiker in Azure Active Directory.

  4. Maak vanuit Power BI een nieuw rapport en selecteer tijdreeksgegevens van Azure Data Explorer als gegevensbron via Get data -Azure> ->Azure Data Explorer (Kusto).

  5. Voer in het pop-upvenster het Azure Data Explorer-eindpunt van uw exemplaar in (bijvoorbeeld https://erichbtest3adx.eastus2.kusto.windows.net), de databasenaam (ontologies) en de volgende query:

    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. Selecteer Load. Dit importeert de werkelijke cyclustijd van het assemblagestation van de productielijn van München voor het afgelopen uur.

  7. Meld u aan bij Azure Data Explorer met behulp van de Azure Active Directory-gebruiker die u eerder hebt gemachtigd om toegang te krijgen tot de Azure Data Explorer-database.

  8. Selecteer in de Data viewkolom NodeValue de kolom NodeValue en selecteer Don't summarize in het Summarization menu-item.

  9. Schakel over naar de Report view.

  10. Selecteer de Line Chart visualisatie onderVisualizations.

  11. Verplaats Visualizationsonder , verplaats de Timestamp van de Data bron naar de X-axis, selecteer erop en selecteer Timestamp.

  12. Verplaats Visualizationsonder , verplaats de NodeValue van de Data bron naar de Y-axis, selecteer erop en selecteer Median.

  13. Sla het nieuwe rapport op.

    Notitie

    U kunt andere gegevens uit Azure Data Explorer op dezelfde manier toevoegen aan uw rapport.

    Schermopname van een Power BI-weergave.

Verbinding maken de referentieoplossing voor Microsoft Dynamics 365 Field Service

Deze integratie toont de volgende scenario's:

  • Assets uploaden van de referentieoplossing Manufacturing Ontologies naar Dynamics 365 Field Service.
  • Waarschuwingen maken in Dynamics 365 Field Service wanneer een bepaalde drempelwaarde voor de telemetriegegevens van de productie ontologieoplossing wordt bereikt.

De integratie maakt gebruik van Azure Logics Apps. Met Logic Apps-bussiness-critcal-apps en -services kunnen worden verbonden via werkstromen zonder code. We halen informatie op uit Azure Data Explorer en activeren acties in Dynamics 365 Field Service.

Activeer eerst een proefversie van 30 dagen als u nog geen Dynamics 365 Field Service-klant bent. Vergeet niet om dezelfde Microsoft Entra-id (voorheen Azure Active Directory) te gebruiken die is gebruikt bij het implementeren van de referentieoplossing Manufacturing Ontologies. Anders moet u verificatie tussen tenants configureren die geen deel uitmaakt van deze instructies.

Een Azure Logic App-werkstroom maken om assets te maken in Dynamics 365 Field Service

Laten we beginnen met het uploaden van assets van de Manufacturing Ontologies naar Dynamics 365 Field Service:

  1. Ga naar Azure Portal en maak een nieuwe logische app.

  2. Geef de logische Azure-app een naam, plaats deze in dezelfde resourcegroep als de referentieoplossing Manufacturing Ontologies.

  3. Selecteer 'Werkstromen'.

  4. Geef uw werkstroom een naam. Voor dit scenario gebruiken we het stateful statustype, omdat assets geen gegevensstromen zijn.

  5. Maak een nieuwe trigger. We beginnen met het maken van een trigger 'Terugkeerpatroon'. Hiermee wordt elke dag de database gecontroleerd als er nieuwe assets worden gemaakt. U kunt dit vaker wijzigen.

  6. Zoek en selecteer de Run KQL query opdracht in actiesAzure Data Explorer. Binnen deze query controleren we welk soort assets we hebben. Gebruik de volgende query om assets op te halen en in het queryveld te plakken:

    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. Als u uw assetgegevens wilt ophalen in Dynamics 365 Field Service, moet u verbinding maken met Microsoft Dataverse. Verbinding maken naar uw Dynamics 365 Field Service-exemplaar en gebruik de volgende configuratie:

    • De tabelnaam Klantactiva gebruiken
    • Plaats de AssetName in het veld Naam
  8. Sla uw werkstroom op en voer deze uit. U ziet over enkele seconden later dat er nieuwe assets worden gemaakt in Dynamics 365 Field Service.

Een Azure Logic App-werkstroom maken om waarschuwingen te maken in Dynamics 365 Field Service

Deze werkstroom maakt waarschuwingen in Dynamics 365 Field Service, met name wanneer een bepaalde drempelwaarde FaultyTime voor een asset van de referentieoplossing Manufacturing Ontologies wordt bereikt.

  1. We moeten eerst een Azure Data Explorer-functie maken om de juiste gegevens op te halen. Ga naar het queryvenster van Azure Data Explorer in Azure Portal en voer de volgende code uit om een FaultyFieldAssets-functie te maken:

    Schermopname van het maken van een functie ADX-query.

    .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. Maak een nieuwe werkstroom in azure Logic App. Maak een trigger Terugkeerpatroon om elke 3 minuten te starten. Maak als actie 'Azure Data Explorer' en selecteer de KQL-query uitvoeren.

  3. Voer de URL van uw Azure Data Explorer-cluster in en selecteer vervolgens uw database en gebruik de functienaam die u in stap 1 hebt gemaakt als de query.

  4. Selecteer Microsoft Dataverse als actie.

  5. Voer de werkstroom uit en bekijk nieuwe waarschuwingen die worden gegenereerd in uw Dynamics 365 Field Service-dashboard:

    Schermopname van waarschuwingen in Dynamics 365 FS.