Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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 gebruiksvoorbeelden mogelijk maken, zoals bewaking van condities, totale OEE-berekeningen (doeltreffendheid van apparatuur), prognoses en anomaliedetectie. Door de inzichten uit deze use cases te gebruiken, kunt u vervolgens een digitale feedbacklus maken die vervolgens optimalisaties en andere wijzigingen in de productieprocessen kan toepassen.
Interoperabiliteit is de sleutel tot een snelle implementatie van de oplossingsarchitectuur. Het gebruik van open standaarden zoals OPC UA helpt deze interoperabiliteit aanzienlijk te realiseren.
In deze zelfstudie leert u hoe u een industriële IoT-oplossing implementeert met behulp van Azure-services. Deze oplossing maakt gebruik van de IEC 62541 Open Platform Communications (OPC) Unified Architecture (UA) voor alle operationele technologiegegevens (OT).
Vereisten
Als u de stappen in deze zelfstudie wilt uitvoeren, hebt u een Azure-abonnement nodig. Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.
Referentiearchitectuur voor de oplossing
In de volgende diagrammen ziet u de architectuur van de industriële IoT-oplossing:
Vereenvoudigde architectuur met opties voor Zowel Azure als Microsoft Fabric:
Gedetailleerde architectuur met de Azure-optie:
In de volgende tabel worden de belangrijkste onderdelen in deze oplossing beschreven:
| 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 edge. 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 Event Hubs | De cloudberichtbroker die OPC UA pub-/subberichten 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. |
| Azure Managed Grafana | Azure Managed Grafana is een platform voor gegevensvisualisatie dat is gebouwd op de Grafana-software van Grafana Labs. Grafana is een volledig beheerde service die door Microsoft wordt gehost en ondersteund. |
| 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 worden verzonden naar een 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 Cloud-actie | 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 Translator | Deze opensource-referentietoepassing voor industriële connectiviteit vertaalt van eigen assetinterfaces naar OPC UA. De oplossing maakt gebruik van de W3C Web of Things-beschrijvingen als het schema om de interface voor industriële activa te beschrijven. |
Notitie
In een praktijkimplementatie zou iets zo kritisch als het openen van een drukontlastklep ter plaatse gedaan worden. In dit voorbeeld ziet u eenvoudig hoe u de digitale feedbacklus bereikt.
Simulatie van productielijnen
De oplossing maakt gebruik van een productielijnsimulatie die bestaat uit verschillende stations, met behulp van het OPC UA-informatiemodel van station en een eenvoudig productie-uitvoeringssysteem (MES). Zowel de stations als de MES worden in een container geplaatst voor eenvoudige implementatie.
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 | Einde |
|---|---|---|
| Ochtend | 07:00 | 14.00 |
| Middag | 15.00 | 22:00 |
| Nacht | 23:00 | 06:00 |
Notitie
Ploegentijden zijn in lokale tijd, specifiek de tijdzone waarin de virtuele machine (VM) die de productielijnsimulatie host, is ingesteld.
Het station OPC UA-server gebruikt de volgende OPC UA-knooppunt-id's 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
De oplossing maakt gebruik van een digitale feedbacklus om de druk in een gesimuleerd station te beheren. Om de feedbacklus te implementeren, activeert de oplossing een opdracht vanuit de cloud op een van de OPC UA-servers in de simulatie. De trigger wordt geactiveerd wanneer gesimuleerde tijdreeksdrukgegevens een bepaalde drempelwaarde bereiken. U kunt de druk van de assemblymachine zien in het Azure Data Explorer-dashboard. De druk wordt regelmatig vrijgegeven voor de productielijn Seattle.
De productielijnsimulatie en cloudservices installeren
Selecteer de knop Implementeren om alle vereiste resources in uw Azure-abonnement te implementeren:
Tijdens het implementatieproces wordt u gevraagd een wachtwoord op te geven voor de virtuele machine (VM) die als host fungeert voor de simulatie van de productielijn en de Edge-infrastructuur. Het wachtwoord moet drie bevatten: een kleine letter, een hoofdletter, een getal en een speciaal teken. De wachtwoordlengte moet tussen 12 en 72 tekens lang zijn.
Notitie
Om de kosten te verlagen, maakt de implementatie één Virtuele Linux-machine voor zowel de simulatie van de productielijn als de edge-infrastructuur. In een productiescenario is de simulatie van de productielijn niet vereist en voor het basisbesturingssystemen moet u Azure Local gebruiken.
De simulatie van de productielijn uitvoeren
Gebruik SSH om eerst verbinding te maken met de geïmplementeerde VM met behulp van de referenties die u tijdens de implementatie hebt opgegeven (mogelijk moet u Just-In-Time-toegang inschakelen in Azure Portal). Navigeer naar de /opt/ManufacturingOntologies-main/Tools/FactorySimulation map en voer het StartSimulation-shellscript uit:
sudo ./StartSimulation.sh "<Your Event Hubs connection string>"
<Your Event Hubs connection string> is uw Event Hubs-naamruimte verbindingsreeks. Zie Een Event Hubs-verbindingsreeks ophalen voor meer informatie. Een verbindingsreeks ziet er als volgt uit:Endpoint=sb://ontologies.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=abcdefgh=
Tip
Als het externe IP-adres voor sommige Kubernetes-services wordt weergegeven als<pending>, gebruikt u de volgende opdracht om het externe IP-adres van de traefik service toe te wijzen: sudo kubectl patch service <theService> -n <the service's namespace> -p '{"spec": {"type": "LoadBalancer", "externalIPs":["<the traefik external IP address>"]}}'
UA-Cloud Library
Als u OPC UA-informatiemodellen rechtstreeks vanuit Azure Data Explorer wilt lezen, kunt u de OPC UA-knooppunten importeren die zijn gedefinieerd in een OPC UA-informatiemodel in een tabel. U kunt de geïmporteerde informatie gebruiken voor het opzoeken van meer metagegevens binnen query's.
Configureer eerst een calloutbeleid voor Azure Data Explorer voor de UA Cloud Library door de volgende query uit te voeren op uw Azure Data Explorer-cluster. Voordat u begint, moet u ervoor zorgen dat u lid bent van de rol AllDatabasesAdmin in het cluster, dat u in Azure Portal kunt configureren door naar de pagina Machtigingen voor uw Azure Data Explorer-cluster te gaan.
.alter cluster policy callout @'[{"CalloutType": "webapi","CalloutUriRegex": "uacloudlibrary.opcfoundation.org","CanCall": true}]'
Voer vervolgens de volgende Azure Data Explorer-query uit vanuit Azure Portal. In de query:
- Vervang door
<INFORMATION_MODEL_IDENTIFIER_FROM_THE_UA_CLOUD_LIBRARY>de unieke id van het informatiemodel dat u wilt importeren uit de UA-cloudbibliotheek. U vindt deze id in de URL van de pagina Informatiemodel in de UA-cloudbibliotheek. De ID van de knooppuntset die in deze zelfstudie wordt gebruikt, is bijvoorbeeld1627266626. - Vervang
<HASHED_CLOUD_LIBRARY_CREDENTIALS>door een basisautorisatie-header met uw UA Cloud Library-referenties. Gebruik een hulpprogramma zoals https://www.debugbear.com/basic-auth-header-generator om de hash te genereren. U kunt ook de volgende bash-opdracht gebruiken:echo -n 'username:password' | base64.
let uri='https://uacloudlibrary.opcfoundation.org/infomodel/download/<INFORMATION_MODEL_IDENTIFIER_FROM_THE_UA_CLOUD_LIBRARY>';
let headers=dynamic({'accept':'text/plain', 'Authorization':'Basic <HASHED_CLOUD_LIBRARY_CREDENTIALS>'});
evaluate http_request(uri, headers)
| 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
Als u een grafische weergave van een OPC UA-informatiemodel wilt weergeven, kunt u het hulpprogramma Kusto Explorer gebruiken. Voer de volgende query uit in Kusto Explorer om het stationmodel weer te geven. Wijzig voor de beste resultaten de Layout optie naar Grouped en Labels naar name.
let uri='https://uacloudlibrary.opcfoundation.org/infomodel/download/1627266626';
let headers=dynamic({'accept':'text/plain', 'Authorization':'Basic <HASHED_CLOUD_LIBRARY_CREDENTIALS>'});
let variables = evaluate http_request(uri, headers)
| 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)
| 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
Azure IoT-bewerkingen optioneel implementeren aan de rand
U kunt Azure IoT-bewerkingen op de edge gebruiken. Azure IoT Operations is een geïntegreerd gegevensvlak voor de edge. Het bevat een set modulaire, schaalbare en maximaal beschikbare gegevensservices die worden uitgevoerd op Kubernetes-clusters met Azure Arc.
Volg deze stappen in de implementatiedetails van Azure IoT Operations.
U kunt uw Azure IoT Operations-implementatie configureren met behulp van de webgebruikersinterface voor bewerkingen . Voeg de asseteindpunten, assets en gegevensstromen toe om de gegevens van de simulatie van de productielijn te verwerken en door te routeren naar de gegevenshub in uw Event Hubs-naamruimte.
Maak in uw Azure IoT Operations-implementatie asseteindpunten die verbindingen definiëren met de volgende OPC UA-servers in de productiesimulatie:
opc.tcp://assembly.munich/opc.tcp://test.munich/opc.tcp://packaging.munich/opc.tcp://assembly.seattle/opc.tcp://test.seattle/opc.tcp://packaging.seattle/
Gebruiksscenario's zoals conditiebewaking, OEE-berekening, anomaliedetectie en voorspellingen in Azure Data Explorer
Zie de Documentatie van Azure Data Explorer voor meer informatie over het maken van dashboards zonder code voor voorwaardebewaking, opbrengst of onderhoud of anomaliedetectie. Er is ook een voorbeelddashboard dat u kunt implementeren. Zie Gegevens visualiseren met Azure Data Explorer-dashboards > die zijn gemaakt op basis van een bestand voor meer informatie over het implementeren van een dashboard. Nadat u het dashboard hebt geïmporteerd, werkt u de bijbehorende gegevensbron bij. Geef het HTTPS-eindpunt van uw Azure Data Explorer-servercluster op in de rechterbovenhoek van het dashboard. Het HTTPS-eindpunt ziet er als volgt uit: https://<ADXInstanceName>.<AzureRegion>.kusto.windows.net/.
Notitie
Als u de OEE voor een specifieke dienst wilt weergeven, selecteert u Aangepast tijdsbereik in de vervolgkeuzelijst Tijdsbereik in de linkerbovenhoek van het Azure Data Explorer-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 Namespace (UNS) geïmplementeerd op basis van de OPC UA-metagegevens die zijn verzonden naar de tijdreeksdatabase van Azure Data Explorer in de cloud. Deze OPC UA-metagegevens bevatten de ISA-95-assethiërarchie. U kunt de resulterende grafiek visualiseren in het hulpprogramma Kusto Explorer.
Voeg een nieuwe verbinding toe aan uw Azure Data Explorer-exemplaar 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 gebruiken
U kunt Azure Managed Grafana ook gebruiken om een dashboard in Azure te maken voor de oplossing die in dit artikel wordt beschreven. Gebruik Grafana in productie om dashboards te maken die realtime gegevens weergeven. In de volgende stappen ziet u hoe u Grafana in Azure inschakelt en een dashboard maakt met de gesimuleerde productielijngegevens van Azure Data Explorer.
De Azure Managed Grafana-service inschakelen
Als u een Azure Managed Grafana-service wilt maken en deze wilt configureren met machtigingen voor toegang tot de ontologiedatabase:
Zoek in Azure Portal naar Grafana en selecteer vervolgens de service Azure Managed Grafana .
Als u de service wilt maken, voert u op de pagina Create Grafana Workspace een naam in voor uw instantie. Kies alle standaardopties.
Nadat de service is aangemaakt, zorg ervoor dat uw Grafana-exemplaar een door het systeem toegewezen beheeridentiteit heeft. Navigeer naar de Identity-blade van uw Azure Managed Grafana-exemplaar in Azure Portal. Als de door het systeem toegewezen beheerde identiteit niet is ingeschakeld, schakelt u deze in. Noteer de id-waarde van het object (principal). U hebt deze later nodig.
De beheerde identiteit toegang verlenen tot de ontologiedatabase in Azure Data Explorer:
- Navigeer naar het Machtigingsblad in uw Azure Data Explorer-exemplaar in de Azure portal.
- Selecteer Voeg toe > AllDatabasesViewer.
- Zoek en selecteer de waarde van de object-id (principal), die u eerder hebt genoteerd.
Een nieuwe gegevensbron toevoegen in Grafana
Voeg een nieuwe gegevensbron toe om verbinding te maken met Azure Data Explorer. In dit voorbeeld gebruikt u een door het systeem toegewezen beheerde identiteit om verbinding te maken met Azure Data Explorer. Voer de volgende stappen uit om de verificatie te configureren:
Voer de volgende stappen uit om de gegevensbron toe te voegen in Grafana:
Navigeer naar de eindpunt-URL voor uw Grafana-exemplaar. U vindt de eindpunt-URL op de pagina Azure Managed Grafana voor uw exemplaar in Azure Portal. Meld u vervolgens aan bij uw Grafana-exemplaar.
Selecteer in het Grafana-dashboard Verbindingen Data sources>, en selecteer vervolgens Nieuwe gegevensbron toevoegen. Schuif omlaag en selecteer Azure Data Explorer-gegevensbron.
Kies Beheerde identiteit als het verificatiemenu. Voeg vervolgens de URL van uw Azure Data Explorer-cluster toe. U kunt de URL vinden in het menu van het Azure Data Explorer-exemplaar in de Azure Portal bij URI.
Selecteer Opslaan en testen om de verbinding met de gegevensbron te controleren.
Een voorbeelddashboard importeren
U bent nu klaar om het voorbeelddashboard te importeren.
Download het voorbeeld van het Grafana Manufacturing-dashboard.
Navigeer in het Grafana-menu naar Dashboards en selecteer Nieuwe > import.
Selecteer Upload JSON-bestand en selecteer het samplegrafanadashboard.json bestand dat u eerder hebt gedownload. Selecteer Importeren.
Selecteer bewerken in het deelvenster OEE Station en selecteer vervolgens de Azure Data Explorer-gegevensbrondie u eerder hebt ingesteld. Selecteer daarna KQL in het queryvenster en voeg de volgende query toe:
print round (CalculateOEEForStation('${Station}', '${Location}', '${CycleTime}', '${__from:date:iso}', '${__to:date:iso}') * 100, 2). Selecteer Toepassen om uw wijzigingen toe te passen en terug te gaan naar het dashboard.Selecteer Bewerken in het deelvenster OEE Line en selecteer vervolgens de Azure Data Explorer-gegevensbrondie u eerder hebt ingesteld. Selecteer daarna KQL in het queryvenster en voeg de volgende query toe:
print round(CalculateOEEForLine('${Location}', '${CycleTime}', '${__from:date:iso}', '${__to:date:iso}') * 100, 2). Selecteer Toepassen om uw wijzigingen toe te passen en terug te gaan naar het dashboard.Selecteer bewerken in het deelvenster Genegeerde producten en selecteer vervolgens de Azure Data Explorer-gegevensbrondie u eerder hebt ingesteld. Selecteer daarna KQL in het queryvenster en voeg de volgende query toe:
opcua_metadata_lkv| where Name contains '${Station}'| where Name contains '${Location}'| join kind=inner (opcua_telemetry| where Name == "NumberOfDiscardedProducts"| where Timestamp > todatetime('${__from:date:iso}') and Timestamp < todatetime('${__to:date:iso}')) on DataSetWriterID| extend numProd = toint(Value)| summarize max(numProd). Selecteer Toepassen om uw wijzigingen toe te passen en terug te gaan naar het dashboard.Selecteer Bewerken in het deelvenster Producten vervaardigd en selecteer vervolgens de Azure Data Explorer-gegevensbrondie u eerder hebt ingesteld. Selecteer daarna KQL in het queryvenster en voeg de volgende query toe:
opcua_metadata_lkv| where Name contains '${Station}'| where Name contains '${Location}'| join kind=inner (opcua_telemetry| where Name == "NumberOfManufacturedProducts"| where Timestamp > todatetime('${__from:date:iso}') and Timestamp < todatetime('${__to:date:iso}')) on DataSetWriterID| extend numProd = toint(Value)| summarize max(numProd). Selecteer Toepassen om uw wijzigingen toe te passen en terug te gaan naar het dashboard.Selecteer Bewerken in het deelvenster Energieverbruik en selecteer vervolgens de Azure Data Explorer-gegevensbrondie u eerder hebt ingesteld. Selecteer daarna KQL in het queryvenster en voeg de volgende query toe:
opcua_metadata_lkv| where Name contains '${Station}'| where Name contains '${Location}'| join kind=inner (opcua_telemetry | where Name == "Pressure" | where Timestamp > todatetime('${__from:date:iso}') and Timestamp < todatetime('${__to:date:iso}')) on DataSetWriterID| extend energy = todouble(Value)| summarize avg(energy)); print round(toscalar(averageEnergyConsumption) * 1000, 2). Selecteer Toepassen om uw wijzigingen toe te passen en terug te gaan naar het dashboard.Selecteer Bewerken in het deelvenster Druk en selecteer vervolgens de gegevensbron van Azure Data Explorer die u eerder hebt ingesteld. Selecteer daarna KQL in het queryvenster en voeg de volgende query toe:
opcua_metadata_lkv| where Name contains '${Station}'| where Name contains '${Location}'| join kind=inner (opcua_telemetry | where Name == "Pressure" | where Timestamp > todatetime('${__from:date:iso}') and Timestamp < todatetime('${__to:date:iso}')) on DataSetWriterID| extend NodeValue = toint(Value)| project Timestamp1, NodeValue. Selecteer Toepassen om uw wijzigingen toe te passen en terug te gaan naar het dashboard.
Waarschuwingen configureren
In Grafana kunt u ook waarschuwingen maken. In dit voorbeeld maakt u een lage OEE-waarschuwing voor een van de productielijnen.
Navigeer in het Grafana-menu naar **Alerting>Waarschuwingsregels.
Selecteer Nieuwe waarschuwingsregel.
Geef uw waarschuwing een naam en selecteer Azure Data Explorer als gegevensbron. Selecteer KQL in het deelvenster Query en waarschuwingsvoorwaarde definiëren.
Voer in het queryveld de volgende query in. In dit voorbeeld wordt de productielijn Seattle gebruikt:
let oee = CalculateOEEForStation("assembly", "seattle", 10000, now(), now(-1h)); print round(oee * 100, 2)Selecteer Instellen als waarschuwingsvoorwaarde.
Schuif omlaag naar de sectie Expressies . Verwijder de reduce-expressie . U hebt deze niet nodig.
Selecteer A als invoer voor de drempelwaarde voor waarschuwingen. Selecteer IS HIERONDER en voer 10 in.
Schuif omlaag naar de sectie Evaluatiegedrag instellen. Maak een nieuwe map om uw waarschuwingen op te slaan. Maak een nieuwe evaluatiegroep en geef 2m op.
Selecteer de regel Opslaan en de knop Afsluiten in de rechterbovenhoek.
In het overzicht van uw waarschuwingen ziet u nu dat er een waarschuwing wordt geactiveerd wanneer uw OEE kleiner is dan 10.
De referentieoplossing verbinden met Microsoft Power BI
Als u de referentieoplossing Power BI wilt verbinden, hebt u toegang nodig tot een Power BI-abonnement.
Voer de volgende stappen uit om het Power BI-dashboard te maken:
Installeer de Power BI Desktop-app.
Meld u aan bij de Power BI Desktop-app met behulp van de gebruiker met toegang tot het Power BI-abonnement.
Navigeer in Azure Portal naar uw Azure Data Explorer-database met de naam ontologieën en voeg databasebeheerdersmachtigingen toe aan een Microsoft Entra ID-gebruiker met alleen toegang tot het abonnement dat wordt gebruikt voor uw geïmplementeerde exemplaar van deze referentieoplossing. Maak indien nodig een nieuwe gebruiker in Microsoft Entra ID.
Maak vanuit Power BI een nieuw rapport en selecteer tijdreeksgegevens van Azure Data Explorer als gegevensbron: Gegevens > ophalen in Azure > Data Explorer (Kusto).
Voer in het pop-upvenster het Azure Data Explorer-eindpunt van uw cluster (
https://<your cluster name>.<location>.kusto.windows.net), de databasenaam (ontologies) en de volgende query in: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, NodeValueMeld u aan bij Azure Data Explorer met behulp van de Microsoft Entra ID-gebruiker die u eerder hebt gemachtigd om toegang te krijgen tot de Azure Data Explorer-database.
Notitie
Als de kolom Timestamp dezelfde waarde voor alle rijen bevat, wijzigt u de laatste regel van de query als volgt:
| project Timestamp1, NodeValueKies Laden. Deze actie importeert de werkelijke cyclustijd van het assemblagestation van de productielijn van München voor het afgelopen uur.
Selecteer in de
Table viewde kolom NodeValue en selecteer Niet samenvatten in het menu-item Samenvatting.Schakel over naar de
Report view.Selecteer onder Visualisaties de visualisatie Lijndiagram .
Verplaats onder Visualisaties de
Timestampvan deDatabron naar deX-axisbron, selecteer deze en selecteer Tijdstempel.Onder Visualisaties, verplaats de
NodeValuevan deDatabron naar deY-axis, selecteer deze en kies Mediaan.Sla het nieuwe rapport op.
Tip
Gebruik dezelfde methode om andere gegevens uit Azure Data Explorer toe te voegen aan uw rapport.
De referentieoplossing verbinden met Microsoft Dynamics 365 Field Service
Deze integratie toont de volgende scenario's:
- Upload assets van de referentieoplossing voor productieonologieën naar Dynamics 365 Field Service.
- Waarschuwingen maken in Dynamics 365 Field Service wanneer een bepaalde drempelwaarde in de telemetriegegevens van de referentieoplossing voor productieontologieën wordt bereikt.
De integratie maakt gebruik van Azure Logics Apps. Met Logic Apps kunt u werkstromen zonder code gebruiken om bedrijfskritische apps en services te verbinden. In dit voorbeeld ziet u hoe u gegevens ophaalt uit Azure Data Explorer en acties activeert in Dynamics 365 Field Service.
Als u nog geen Dynamics 365 Field Service-klant bent, activeert u een proefversie van 30 dagen.
Tip
Als u wilt voorkomen dat verificatie tussen tenants moet worden geconfigureerd, gebruikt u dezelfde Microsoft Entra-id die u hebt gebruikt voor het implementeren van de referentieoplossing voor productie ontologieën.
Een Azure Logic Apps-werkstroom maken om assets te maken in Dynamics 365 Field Service
Assets uploaden vanuit de referentieoplossing voor productie ontologieën naar Dynamics 365 Field Service:
Ga naar Azure Portal en maak een nieuwe logische app-resource.
Geef de Azure Logic Apps een naam en plaats deze in dezelfde resourcegroep als de referentieoplossing voor productie ontologieën.
Selecteer Werkstromen.
Geef uw werkstroom een naam. Gebruik voor dit scenario het stateful statustype omdat assets geen gegevensstromen zijn.
Selecteer een trigger toevoegen in de werkstroomontwerper. Maak een herhalingstrigger die dagelijks wordt uitgevoerd. U kunt de trigger instellen om vaker plaats te vinden.
Voeg een actie toe na de herhalingstrigger. In Een actie toevoegen, zoek naar
Azure Data Exploreren selecteer de opdracht KQL-query uitvoeren. Laat de standaardverificatie OAuth staan. Voer de URL van uw Azure Data Explorer-cluster in enontologiesvoer de naam van de database in. In deze query controleert u wat voor soort assets u hebt. Gebruik de volgende query om assets op te halen uit de referentieoplossing voor productieonologieën:opcua_telemetry | join kind=inner ( opcua_metadata | distinct Name, DataSetWriterID | extend AssetList = split(Name, ';') | extend AssetName = tostring(AssetList[0]) ) on DataSetWriterID | project AssetName | summarize by AssetNameAls u uw assetgegevens wilt ophalen in Dynamics 365 Field Service, moet u verbinding maken met Microsoft Dataverse. In Een actie toevoegen, zoek
Dataverseen selecteer de opdracht Een nieuwe rij toevoegen. Laat de standaardverificatie OAuth staan. Maak verbinding met uw Dynamics 365 Field Service-exemplaar en gebruik de volgende configuratie:- Selecteer Klantassets in het veld Tabelnaam
- Selecteer in het Naamveld de optie Gegevens invoeren van een vorige stap, en selecteer vervolgens AssetName.
Sla uw werkstroom op en voer deze uit. U kunt zien dat de nieuwe assets worden gemaakt in Dynamics 365 Field Service:
Een Azure Logic Apps-werkstroom maken om waarschuwingen te maken in de Dynamics 365 Field-service
Deze werkstroom maakt waarschuwingen aan in Dynamics 365 Field Service wanneer de FaultyTime van een asset in de fabricageontologieën-referentieoplossing een drempelwaarde bereikt.
Als u de gegevens wilt ophalen, maakt u een Azure Data Explorer-functie. Voer in het queryvenster van Azure Data Explorer in Azure Portal de volgende code uit om een
FaultyFieldAssetsfunctie te maken in de ontologiedatabase :.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 statusvolle werkstroom in uw Logic App.
Maak in de werkstroomontwerper een terugkeertrigger die om de drie minuten wordt uitgevoerd. Voeg vervolgens een actie toe en selecteer de actie KQL-query uitvoeren.
Voer de URL van uw Azure Data Explorer-cluster in en voer ontologieën in als databasenaam en gebruik de
FaultyFieldAssetsfunctienaam als de query.Als u uw assetgegevens wilt ophalen in Dynamics 365 Field Service, moet u verbinding maken met Microsoft Dataverse. In Een actie toevoegen, zoek
Dataverseen selecteer de opdracht Een nieuwe rij toevoegen. Laat de standaardverificatie OAuth staan. Maak verbinding met uw Dynamics 365 Field Service-exemplaar en gebruik de volgende configuratie:- Selecteer IoT-waarschuwingen in het veld Tabelnaam
- In het veld Beschrijving gebruikt u Voer gegevens uit een vorige stap om een bericht te maken: "[AssetName] heeft een [Name] van [Value]". AssetName, Name en Value zijn de velden uit de vorige stap.
- Selecteer in het veld Waarschuwingstijd de optie Gegevens invoeren van een vorige stap, en selecteer Tijdstempel.
- Selecteer anomalie in het veld Waarschuwingstype.
Voer de werkstroom uit en bekijk nieuwe waarschuwingen die zijn gegenereerd in het IoT-waarschuwingen-dashboard van uw Dynamics 365 Field Service
.