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):
Gedetailleerde architectuur (alleen Azure):
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 Lables
name
.
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:
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
Open op uw virtuele machine een Beheer istrator PowerShell-venster. Navigeer naar de map en voer deze
C:\ManufacturingOntologies-main\Deployment
uitCreateServicePrincipal
. De twee parameterssubscriptionID
entenantID
kunnen worden opgehaald uit Azure Portal.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. 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
uitSetupArc
.
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.
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:
- 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 policies
klikken op ,Create
selecteer deKeys, Secrets & Certificate Management
sjabloon, selecteerNext
uw eigen gebruikersidentiteit, selecteer en selecteer uw eigen gebruikersidentiteit, selecteerNext
, laat de sectie Toepassing leeg, selecteerNext
en ten slotteCreate
. - 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 basisresourceGroupName
van de geïmplementeerde referentieoplossing. - Implementeer Azure IoT Operations vanuit Azure Portal door te navigeren naar uw Kubernetes-cluster dat is verbonden met Arc, selecteer ,
Extensions
Add
selecteerAzure IoT Operations
en selecteerCreate
. Laat alles op de basispagina staan. Stel op de pagina Configuratie hetMQ Mode
in opAuto
. 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 deaz 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 voerenaz login
en vervolgens deaz iot ops init
opdracht uit te voeren met de argumenten uit de Azure-portal. Zodra de opdracht is voltooid, selecteertNext
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.
- Navigeer vanuit De Azure-portal naar De Azure Storage die in deze referentieoplossing is geïmplementeerd, open de
Storage browser
en vervolgensBlob 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:- 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.
- 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 dekeyVaultName
enestationName
van de 6 stations opleverde waarvoor u in de vorige stap een .der cert-bestand hebt gedownload.
- 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 deC:\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. - 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):
- 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). - Selecteer
Import CSV file
en open hetStationTags.csv
bestand in de map voor deC:\ManufacturingOntologies-main\Tools\FactorySimulation\Station
assettags.
- 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
- Navigeer vanuit De Azure-portal naar De Azure Storage die in deze referentieoplossing is geïmplementeerd, open de
Storage browser
en vervolgensBlob containers
. Navigeer voor elke gesimuleerde productielijn naar deapp/pki/rejected/certs
map en download het Azure IoT Operations-certificaatbestand. Verwijder vervolgens het bestand. Navigeer naar deapp/pki/trusted/certs
map en upload het Azure IoT Operations-certificaatbestand naar deze map. - 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. - Volg de instructies zoals hier wordt beschreven om te controleren of de gegevens afkomstig zijn van de simulatie van de productielijn.
- 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.
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
.
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:
Azure Managed Grafana Service inschakelen
Ga naar Azure Portal en zoek de service Grafana en selecteer de service Azure Managed Grafana.
Geef uw exemplaar een naam en laat de standaardopties ingeschakeld en maak de service.
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.
Navigeer naar Configuratie en voeg een nieuwe gegevensbron toe.
Zoek naar Azure Data Explorer en selecteer de service.
Configureer uw verbinding en gebruik de app-registratie (volg de handleiding die boven aan deze pagina wordt weergegeven).
Sla de verbinding onder aan de pagina op en test deze.
Een voorbeelddashboard importeren
U bent nu klaar om het opgegeven voorbeelddashboard te importeren.
Download hier het voorbeelddashboard: Voorbeeld van Grafana Manufacturing Dashboard.
Ga naar Dashboard en selecteer Importeren.
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.
Selecteer aan de linkerkant op Variabelen en werk de twee URL's bij met de URL van uw Azure Digital Twins-service.
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.
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.
Meld u aan bij uw Grafana-service en selecteer waarschuwingsregels in het menu.
Selecteer Waarschuwingsregel maken.
Geef uw waarschuwing een naam en selecteer 'Azure Data Explorer' als gegevensbron. Selecteer een query in het navigatiedeelvenster.
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)
Selecteer 'tabel' als uitvoer.
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.
Selecteer de map waarin u uw waarschuwingen wilt opslaan en configureer het gedrag waarschuwingsevaluatie. Selecteer de optie 'om de 2 minuten'.
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.
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:
Meld u aan bij de Power BI Desktop-app met behulp van de gebruiker met toegang tot het Power BI-abonnement.
Navigeer vanuit Azure Portal naar uw Azure Data Explorer-database-exemplaar (
ontologies
) en voeg machtigingen toeDatabase 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.Maak vanuit Power BI een nieuw rapport en selecteer tijdreeksgegevens van Azure Data Explorer als gegevensbron via
Get data
-Azure
> ->Azure Data Explorer (Kusto)
.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
Selecteer
Load
. Dit importeert de werkelijke cyclustijd van het assemblagestation van de productielijn van München voor het afgelopen uur.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.
Selecteer in de
Data view
kolom NodeValue de kolom NodeValue en selecteerDon't summarize
in hetSummarization
menu-item.Schakel over naar de
Report view
.Selecteer de
Line Chart
visualisatie onderVisualizations
.Verplaats
Visualizations
onder , verplaats deTimestamp
van deData
bron naar deX-axis
, selecteer erop en selecteerTimestamp
.Verplaats
Visualizations
onder , verplaats deNodeValue
van deData
bron naar deY-axis
, selecteer erop en selecteerMedian
.Sla het nieuwe rapport op.
Notitie
U kunt andere gegevens uit Azure Data Explorer op dezelfde manier toevoegen aan uw rapport.
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:
Ga naar Azure Portal en maak een nieuwe logische app.
Geef de logische Azure-app een naam, plaats deze in dezelfde resourcegroep als de referentieoplossing Manufacturing Ontologies.
Selecteer 'Werkstromen'.
Geef uw werkstroom een naam. Voor dit scenario gebruiken we het stateful statustype, omdat assets geen gegevensstromen zijn.
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.
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)
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
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.
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:
.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}
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.
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.
Selecteer Microsoft Dataverse als actie.
Voer de werkstroom uit en bekijk nieuwe waarschuwingen die worden gegenereerd in uw Dynamics 365 Field Service-dashboard: