Självstudie: Implementera Azure Industrial IoT-referenslösningsarkitekturen
Tillverkarna vill distribuera en övergripande industriell IoT-lösning i global skala och ansluta alla sina produktionsplatser till den här lösningen för att öka effektiviteten för varje enskild produktionsplats.
Dessa ökade effektivitetsvinster leder till snabbare produktion och lägre energiförbrukning, vilket leder till lägre kostnader för de producerade varorna samtidigt som kvaliteten i de flesta fall ökar.
Lösningen måste vara så effektiv som möjligt och aktivera alla nödvändiga användningsfall som villkorsövervakning, OEE-beräkning, prognostisering och avvikelseidentifiering. Från insikterna från dessa användningsfall kan du i ett andra steg skapa en digital feedbackloop som sedan kan tillämpa optimeringar och andra ändringar i produktionsprocesserna.
Samverkan är nyckeln till att uppnå en snabb distribution av lösningsarkitekturen och användningen av öppna standarder som OPC UA bidrar avsevärt till att uppnå denna samverkan.
IEC 62541 Open Platform Communications Unified Architecture (OPC UA)
Den här lösningen använder IEC 62541 Open Platform Communications (OPC) Unified Architecture (UA) för alla ot-data (Operational Technology). Den här standarden beskrivs här.
Referenslösningsarkitektur
Förenklad arkitektur (både Azure- och Infrastrukturalternativ):
Detaljerad arkitektur (endast Azure):
Komponenter
Här är de komponenter som ingår i den här lösningen:
Komponent | beskrivning |
---|---|
Industriella tillgångar | En uppsättning simulerade OPC-UA-aktiverade produktionslinjer i Docker-containrar |
Azure IoT-åtgärder | Azure IoT Operations är ett enhetligt dataplan för gränsen. Den innehåller en uppsättning modulära, skalbara och högtillgängliga datatjänster som körs på Azure Arc-aktiverade Kubernetes-gränskluster. |
Data Gateway | Den här gatewayen ansluter dina lokala datakällor (till exempel SAP) till Azure Logic Apps i molnet. |
Azure Kubernetes Services Edge Essentials | Den här Kubernetes-implementeringen körs på Gränsen. Den tillhandahåller Kubernetes-kluster med en och flera noder för en feltolerant Edge-konfiguration. Både K3S och K8S stöds. Den körs på inbäddad maskinvara eller maskinvara i PC-klass, som en industriell gateway. |
Azure Event Hubs | Molnmeddelandekoordinatorn som tar emot OPC UA PubSub-meddelanden från edge-gatewayer och lagrar dem tills de hämtas av prenumeranter. |
Azure-datautforskaren | Tidsseriedatabasen och frontend-instrumentpanelstjänsten för avancerad molnanalys, inklusive inbyggd avvikelseidentifiering och förutsägelser. |
Azure Logic App-appar | Azure Logic Apps är en molnplattform som du kan använda för att skapa och köra automatiserade arbetsflöden med lite eller ingen kod. |
Azure Arc | Den här molntjänsten används för att hantera det lokala Kubernetes-klustret vid gränsen. Nya arbetsbelastningar kan distribueras via Flux. |
Azure Storage | Den här molntjänsten används för att hantera OPC UA-certifikatarkivet och inställningarna för Edge Kubernetes-arbetsbelastningarna. |
Azure Managed Grafana | Azure Managed Grafana är en plattform för datavisualisering som bygger på Grafana-programvaran från Grafana Labs. Grafana skapas som en fullständigt hanterad tjänst som hanteras och stöds av Microsoft. |
Microsoft Power BI | Microsoft Power BI är en samling SaaS-programvarutjänster, appar och anslutningsappar som fungerar tillsammans för att omvandla dina orelaterade datakällor till sammanhängande, visuellt uppslukande och interaktiva insikter. |
Microsoft Dynamics 365 Field Service | Microsoft Dynamics 365 Field Service är en nyckelfärdig SaaS-lösning för att hantera fältservice begäranden. |
UA Cloud Commander | Det här referensprogrammet med öppen källkod konverterar meddelanden som skickas till en MQTT (Message Queue Telemetry Transport) eller Kafka Broker (eventuellt i molnet) till OPC UA-klient-/serverbegäranden för en ansluten OPC UA-server. Programmet körs i en Docker-container. |
UA-molnåtgärd | Det här referensmolnprogrammet med öppen källkod frågar Azure Data Explorer efter ett specifikt datavärde. Datavärdet är trycket i en av de simulerade produktionslinjedatorerna. Den anropar UA Cloud Commander via Azure Event Hubs när ett visst tröskelvärde nås (4 000 mbar). UA Cloud Commander anropar sedan metoden OpenPressureReliefValve på datorn via OPC UA. |
UA-molnbibliotek | UA Cloud Library är en onlinebutik med OPC UA Information Models som hanteras av OPC Foundation här. |
UA Edge Translator | Det här referensprogrammet för industriell anslutning med öppen källkod översätts från patentskyddade tillgångsgränssnitt till OPC UA med W3C Web of Things (WoT) Sakbeskrivningar som schema för att beskriva gränssnittet för industriella tillgångar. |
Kommentar
I en verklig distribution skulle något så viktigt som att öppna en tryckreduceringsventil göras lokalt. Det här är bara ett enkelt exempel på hur du uppnår den digitala feedbackloopen.
Ett molnbaserat OPC UA-certifikatarkiv och sparad lagring
När tillverkare kör OPC UA-program måste deras OPC UA-konfigurationsfiler, nycklar och certifikat bevaras. Kubernetes har möjlighet att spara dessa filer i volymer, men en säkrare plats för dem är molnet, särskilt på kluster med en nod där volymen skulle gå förlorad när noden misslyckas. Det här scenariot är anledningen till att de OPC UA-program som används i den här lösningen lagrar sina konfigurationsfiler, nycklar och certifikat i molnet. Den här metoden har också fördelen att tillhandahålla en enda plats för ömsesidigt betrodda certifikat för alla OPC UA-program.
UA-molnbibliotek
Du kan läsa OPC UA Information Models direkt från Azure Data Explorer. Du kan göra detta genom att importera OPC UA-noderna som definierats i OPC UA Information Model till en tabell för sökning efter fler metadata i frågor.
Konfigurera först en ADX-pratbubblaprincip (Azure Data Explorer) för UA Cloud Library genom att köra följande fråga i DITT ADX-kluster (kontrollera att du är ADX-klusteradministratör och konfigurerbar under Behörigheter på fliken ADX i Azure-portalen):
.alter cluster policy callout @'[{"CalloutType": "webapi","CalloutUriRegex": "uacloudlibrary.opcfoundation.org","CanCall": true}]'
Kör sedan följande Azure Data Explorer-fråga från Azure-portalen:
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
Du måste ange två saker i den här frågan:
- Informationsmodellens unika ID från UA-molnbiblioteket och ange det i <fältet Infoga informationsmodellidentifierare från molnbiblioteket i> ADX-frågan.
- Autentiseringsuppgifterna för UA-molnbiblioteket (som genererades under registreringen) hash för grundläggande auktoriseringshuvud och infoga den i <hashen infoga dina autentiseringsuppgifter för molnbiblioteket här> i ADX-frågan. Använd verktyg som https://www.debugbear.com/basic-auth-header-generator för att generera detta.
Kör till exempel följande fråga för att återge produktionslinjesimuleringen Station OPC UA Server's Information Model i kusto Explorer-verktyget som är tillgängligt för nedladdning här:
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
För bästa resultat ändrar du alternativet Layout
till Grouped
och Lables
till name
.
Simulering av produktionslinje
Lösningen använder en produktionslinjesimulering som består av flera stationer, med hjälp av en OPC UA-informationsmodell och ett enkelt tillverkningskörningssystem (MES). Både Stationerna och MES är containerbaserade för enkel distribution.
Standardkonfiguration för simulering
Simuleringen är konfigurerad att innehålla två produktionslinjer. Standardkonfigurationen är:
Produktionslinje | Ideal cykeltid (i sekunder) |
---|---|
München | 6 |
Seattle | 10 |
Skiftnamn | Början | Sluta |
---|---|---|
Morgon | 07:00 | 14:00:00 |
Eftermiddag | 15:00:00 | 22:00 |
Natt | 23:00 | 06:00 |
Kommentar
Skifttiderna är i lokal tid, särskilt tidszonen som den virtuella datorn (VM) som är värd för produktionslinjesimuleringen är inställd på.
OPC UA-nod-ID:n för Station OPC UA-servern
Följande OPC UA-nod-ID:n används i Station OPC UA Server för telemetri till molnet.
- i=379 – tillverkat produktserienummer
- i=385 – antal tillverkade produkter
- i=391 – antal kasserade produkter
- i=398 – körningstid
- i=399 – felaktig tid
- i= 400 - status (0 = station redo att göra arbete, 1 = pågående arbete, 2 = utfört arbete och bra del tillverkas, 3 = arbete gjort och skrot tillverkas, 4 = station i feltillstånd)
- i=406 – energiförbrukning
- i=412 – idealisk cykeltid
- i=418 – faktisk cykeltid
- i=434 - tryck
Digital feedback-loop med UA Cloud Commander och UA Cloud Action
Den här referensimplementeringen implementerar en "digital feedback-loop" som specifikt utlöser ett kommando på en av OPC UA-servrarna i simuleringen från molnet, baserat på tidsseriedata som når ett visst tröskelvärde (det simulerade trycket). Du kan se trycket från sammansättningsdatorn på produktionslinjen i Seattle som släpps regelbundet i Azure Data Explorer-instrumentpanelen.
Installera produktionslinjesimuleringen och molntjänsterna
När du klickar på knappen distribueras alla nödvändiga resurser i Microsoft Azure:
Under distributionen måste du ange ett lösenord för en virtuell dator som används som värd för produktionslinjesimuleringen och för UA Cloud Twin. Lösenordet måste ha tre av följande attribut: Ett gemener, ett versaler, ett tal och ett specialtecken. Lösenordet måste vara mellan 12 och 72 tecken långt.
Kommentar
För att spara kostnader distribuerar distributionen bara en enda virtuell Windows 11 Enterprise-dator för både produktionslinjesimuleringen och basoperativsystemet för Azure Kubernetes Services Edge Essentials-instansen. I produktionsscenarier krävs inte produktionslinjesimuleringen och för basoperativsystemet för Azure Kubernetes Services Edge Essentials-instansen rekommenderar vi Windows IoT Enterprise Long Term Servicing Channel (LTSC).
När distributionen är klar ansluter du till den distribuerade virtuella Windows-datorn med en RDP-anslutning (fjärrskrivbord). Du kan ladda ned RDP-filen på azure-portalsidan för den virtuella datorn under alternativen för Anslut. Logga in med de autentiseringsuppgifter som du angav under distributionen, öppna ett Powershell-administratörsfönster, navigera till C:\ManufacturingOntologies-main\Deployment
katalogen och kör:
New-AksEdgeDeployment -JsonConfigFilePath .\aksedge-config.json
När kommandot är klart är installationen av Azure Kubernetes Services Edge Essentials klar och du kan köra simuleringen av produktionslinjen.
Dricks
Om du vill hämta loggar från alla dina Kubernetes-arbetsbelastningar och -tjänster när som helst kör du Get-AksEdgeLogs
från ett Powershell-administratörsfönster.
Om du vill kontrollera minnesanvändningen för kubernetes-klustret kör du Invoke-AksEdgeNodeCommand -Command "sudo cat /proc/meminfo"
från ett Powershell-administratörsfönster.
Köra produktionslinjesimuleringen
Öppna en Windows-kommandotolk från den distribuerade virtuella datorn. Gå till C:\ManufacturingOntologies-main\Tools\FactorySimulation
katalogen och kör kommandot StartSimulation genom att ange följande parametrar:
StartSimulation <EventHubsCS> <StorageAccountCS> <AzureSubscriptionID> <AzureTenantID>
Parametrar:
Parameter | Description |
---|---|
EventHubCS | Kopiera Event Hubs-namnområdet anslutningssträng enligt beskrivningen här. |
StorageAccountCS | I Azure-portalen går du till lagringskontot som skapats av den här lösningen. Välj "Åtkomstnycklar" på den vänstra navigeringsmenyn. Kopiera sedan anslutningssträng för key1. |
AzureSubscriptionID | I Azure-portalen bläddrar du i dina prenumerationer och kopierar ID:t för prenumerationen som används i den här lösningen. |
AzureTenantID | Öppna sidan Microsoft Entry ID i Azure-portalen och kopiera ditt klientorganisations-ID. |
I följande exempel visas kommandot med alla parametrar:
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
Kommentar
Om du har åtkomst till flera Azure-prenumerationer är det värt att först logga in på Azure-portalen från den virtuella datorn via webbläsaren. Du kan också växla Active Directory-klienter via Azure-portalens användargränssnitt (i det övre högra hörnet) för att se till att du är inloggad på den klientorganisation som användes under distributionen. När du har loggat in lämnar du webbläsarfönstret öppet. Detta säkerställer att StartSimulation-skriptet enklare kan ansluta till rätt prenumeration.
I den här lösningen finns OPC UA-programcertifikatarkivet för UA Cloud Publisher och den simulerade produktionslinjens MES- och enskilda datorarkiv i molnet i det distribuerade Azure Storage-kontot.
Aktivera Kubernetes-klustret för hantering via Azure Arc
Öppna ett PowerShell-fönster för administratör på den virtuella datorn. Gå till
C:\ManufacturingOntologies-main\Deployment
katalogen och körCreateServicePrincipal
. De två parametrarnasubscriptionID
ochtenantID
kan hämtas från Azure-portalen.Kör
notepad aksedge-config.json
och ange följande information:Attribut beskrivning Location Azure-platsen för resursgruppen. Du hittar den här platsen i Azure-portalen under resursgruppen som distribuerades för den här lösningen, men ta bort blankstegen i namnet! Regioner som stöds för närvarande är eastus, eastus2, westus, westus2, westus3, westeurope och northeurope. SubscriptionId Ditt prenumerations-ID. I Azure-portalen väljer du den prenumeration du använder och kopierar/klistrar in prenumerations-ID:t. TenantId Ditt klientorganisations-ID. I Azure-portalen väljer du i Azure Active Directory och kopierar/klistrar in klientorganisations-ID:t. ResourceGroupName Namnet på den Azure-resursgrupp som distribuerades för den här lösningen. ClientId Namnet på azure-tjänstens huvudnamn som skapades tidigare. Azure Kubernetes Services använder tjänstens huvudnamn för att ansluta klustret till Arc. ClientSecret Lösenordet för Azure-tjänstens huvudnamn. Spara filen, stäng PowerShell-fönstret och öppna ett nytt powershell-fönster för administratör. Gå tillbaka till
C:\ManufacturingOntologies-main\Deployment
katalogen och körSetupArc
.
Nu kan du hantera ditt Kubernetes-kluster från molnet via den nyligen distribuerade Azure Arc-instansen. I Azure-portalen bläddrar du till Azure Arc-instansen och väljer Arbetsbelastningar. Den nödvändiga tjänsttoken kan hämtas via Get-AksEdgeManagedServiceToken
från ett Powershell-administratörsfönster på den virtuella datorn.
Distribuera Azure IoT-åtgärder på gränsen
Kontrollera att du redan har startat produktionslinjesimuleringen och aktiverat Kubernetes-klustret för hantering via Azure Arc enligt beskrivningen i föregående stycken. Sedan följer du de här stegen:
- Från Azure-portalen går du till Key Vault som distribueras i den här referenslösningen och lägger till din egen identitet i åtkomstprinciperna genom att
Access policies
klicka på ,Create
välj mallenKeys, Secrets & Certificate Management
, väljaNext
, söka efter och välja din egen användaridentitet, väljaNext
, lämna avsnittet Program tomt, väljaNext
och slutligenCreate
. - Aktivera anpassade platser för ditt Arc-anslutna Kubernetes-kluster (kallas ontologies_cluster) genom att först logga in på din Azure-prenumeration via
az login
från ett PowerShell-administratörsfönster och sedan köraaz connectedk8s enable-features -n "ontologies_cluster" -g "<resourceGroupName>" --features cluster-connect custom-locations
och tillhandahållaresourceGroupName
från den distribuerade referenslösningen. - I Azure-portalen distribuerar du Azure IoT Operations genom att gå till ditt Arc-anslutna kubernetes-kluster, välja på
Extensions
, , väljAzure IoT Operations
och väljCreate
Add
. Lämna allt som det är på sidan Grundläggande. På sidan Konfiguration anger duMQ Mode
tillAuto
. Du behöver inte distribuera en simulerad programmerbar logikkontrollant (PLC), eftersom den här referenslösningen redan innehåller en mycket mer omfattande produktionslinjesimulering. På sidan Automation väljer du nyckelvalvet som distribuerats för den här referenslösningenaz iot ops init
och kopierar sedan kommandot som genereras automatiskt. Från den distribuerade virtuella datorn öppnar du ett nytt PowerShell-administratörsfönster, loggar in på rätt Azure-prenumeration genom att köraaz login
kommandotaz iot ops init
med argumenten från Azure-portalen. När kommandot har slutförts väljer duNext
och stänger sedan guiden.
Konfigurera OPC UA-säkerhet och -anslutning för Azure IoT Operations
Kontrollera att du har distribuerat Azure IoT Operations och att alla Kubernetes-arbetsbelastningar är igång genom att gå till den Arc-aktiverade Kubernetes-resursen i Azure-portalen.
- Från Azure-portalen går du till Azure Storage som distribueras i den här referenslösningen
Storage browser
, öppnar och sedanBlob containers
. Här kan du komma åt det molnbaserade OPC UA-certifikatarkivet som används i den här lösningen. Azure IoT Operations använder Azure Key Vault som molnbaserat OPC UA-certifikatarkiv så att certifikaten måste kopieras:- Från Azure Storage-webbläsarens blobcontainrar går du till mappen app/pki/trusted/certs för varje simulerad produktionslinje, väljer sammansättningen, paketerar och testar certifikatfilen och laddar ned den.
- Logga in på din Azure-prenumeration via
az login
från ett PowerShell-administratörsfönster och köraz keyvault secret set --name "<stationName>-der" --vault-name <keyVaultName> --file .<stationName>.der --encoding hex --content-type application/pkix-cert
sedan och förkeyVaultName
var ochstationName
en av de 6 stationer som du laddade ned en .der cert-fil för i föregående steg.
- Från den distribuerade virtuella datorn öppnar du en Windows-kommandotolk och kör
kubectl apply -f secretsprovider.yaml
med den uppdaterade resursfilen för hemlighetsprovidernC:\ManufacturingOntologies-main\Tools\FactorySimulation\Station
som finns i katalogen, med key vault-namnet, Azure-klient-ID:t och filnamnen och aliasen för stationscertifikat som du laddade upp till Azure Key Vault tidigare. - Från en webbläsare loggar du in https://iotoperations.azure.compå , väljer rätt Azure-katalog (övre högra hörnet) och börjar skapa tillgångar från produktionslinjesimuleringen. Lösningen levereras med två produktionslinjer (München och Seattle) som består av tre stationer vardera (montering, testning och förpackning):
- För tillgångsslutpunkterna anger du opc.tcp://assembly.münchen i fältet OPC UA Broker URL för monteringsstationen för produktionslinjen i München osv. Välj
Do not use transport authentication certificate
(OPC UA-certifikatbaserad ömsesidig autentisering mellan Azure IoT Operations och alla anslutna OPC UA-servrar används fortfarande). - För tillgångstaggar väljer du
Import CSV file
och öppnarStationTags.csv
filen som finns iC:\ManufacturingOntologies-main\Tools\FactorySimulation\Station
katalogen.
- För tillgångsslutpunkterna anger du opc.tcp://assembly.münchen i fältet OPC UA Broker URL för monteringsstationen för produktionslinjen i München osv. Välj
- Från Azure-portalen går du till Azure Storage som distribueras i den här referenslösningen
Storage browser
, öppnar och sedanBlob containers
. För varje simulerad produktionslinje går du tillapp/pki/rejected/certs
mappen och laddar ned Azure IoT Operations-certifikatfilen. Ta sedan bort filen. Gå tillapp/pki/trusted/certs
mappen och ladda upp Azure IoT Operations-certifikatfilen till den här katalogen. - Från den distribuerade virtuella datorn öppnar du en Windows-kommandotolk och startar om produktionslinjesimuleringen genom att navigera till
C:\ManufacturingOntologies-main\Tools\FactorySimulation
katalogen och köra kommandot StopSimulation följt av kommandot StartSimulation. - Följ anvisningarna nedan för att kontrollera att data flödar från produktionslinjesimuleringen.
- Som det sista steget ansluter du Azure IoT Operations till händelsehubbar som distribueras i den här referenslösningen enligt beskrivningen här.
Användningsfall villkorar övervakning, beräknar OEE, identifierar avvikelser och gör förutsägelser i Azure Data Explorer
Du kan också gå till Dokumentationen för Azure Data Explorer för att lära dig hur du skapar instrumentpaneler utan kod för villkorsövervakning, förutsägelser om avkastning eller underhåll eller avvikelseidentifiering. Vi har angett en exempelinstrumentpanel här där du kan distribuera till ADX-instrumentpanelen genom att följa stegen som beskrivs här. Efter importen måste du uppdatera instrumentpanelens datakälla genom att ange HTTPS-slutpunkten för ADX-serverklusterinstansen i formatet https://ADXInstanceName.AzureRegion.kusto.windows.net/
i det övre högra hörnet på instrumentpanelen.
Kommentar
Om du vill visa OEE för ett visst skift väljer du Custom Time Range
i Time Range
listrutan i det övre vänstra hörnet på ADX-instrumentpanelen och anger datum och tid från början till slutet av det skift som du är intresserad av.
Rendera det inbyggda modelldiagrammet Unified NameSpace (UNS) och ISA-95 i Kusto Explorer
Den här referenslösningen implementerar en Unified NameSapce (UNS), baserat på OPC UA-metadata som skickas till tidsseriedatabasen i molnet (Azure Data Explorer). Dessa OPC UA-metadata innehåller även tillgångshierarkin ISA-95. Det resulterande diagrammet kan enkelt visualiseras i Kusto Explorer-verktyget som är tillgängligt för nedladdning här.
Lägg till en ny anslutning till din Azure Data Explorer-instans som distribuerats i den här referenslösningen och kör sedan följande fråga i 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
För bästa resultat ändrar du alternativet Layout
till Grouped
.
Använda Azure Managed Grafana Service
Du kan också använda Grafana för att skapa en instrumentpanel i Azure för lösningen som beskrivs i den här artikeln. Grafana används inom tillverkningsindustrin för att skapa instrumentpaneler som visar realtidsdata. Azure erbjuder en tjänst med namnet Azure Managed Grafana. Med detta kan du skapa molninstrumentpaneler. I den här konfigurationshandboken aktiverar du Grafana i Azure och skapar en instrumentpanel med data som efterfrågas från Azure Data Explorer och Azure Digital Twins-tjänsten med hjälp av simulerade produktionslinjedata från den här referenslösningen.
Följande skärmbild visar instrumentpanelen:
Aktivera Azure Managed Grafana Service
Gå till Azure-portalen och sök efter tjänsten Grafana och välj tjänsten "Azure Managed Grafana".
Ge instansen ett namn och lämna standardalternativen på – och skapa tjänsten.
När tjänsten har skapats navigerar du till den URL där du kommer åt grafanainstansen. Du hittar URL:en på tjänstens startsida.
Lägga till en ny datakälla i Grafana
Efter din första inloggning måste du lägga till en ny datakälla i Azure Data Explorer.
Gå till Konfiguration och lägg till en ny datakälla.
Sök efter Azure Data Explorer och välj tjänsten.
Konfigurera anslutningen och använd appregistreringen (följ den manual som finns överst på den här sidan).
Spara och testa anslutningen längst ned på sidan.
Importera en exempelinstrumentpanel
Nu är du redo att importera den angivna exempelinstrumentpanelen.
Ladda ned exempelinstrumentpanelen här: Exempel på Grafana Manufacturing Dashboard.
Gå till Instrumentpanelen och välj Importera.
Välj den källa som du har laddat ned och välj på Spara. Du får ett fel på sidan eftersom två variabler inte har angetts än. Gå till inställningssidan på instrumentpanelen.
Välj till vänster på Variabler och uppdatera de två URL:erna med URL:en för din Azure Digital Twins-tjänst.
Gå tillbaka till instrumentpanelen och tryck på uppdateringsknappen. Nu bör du se data (glöm inte att trycka på knappen Spara på instrumentpanelen).
Platsvariabeln överst på sidan fylls automatiskt med data från Azure Digital Twins (områdesnoderna från ISA95). Här kan du välja de olika platserna och se de olika datapunkterna för varje fabrik.
Om data inte visas på instrumentpanelen går du till de enskilda panelerna och ser om rätt datakälla har valts.
Konfigurera aviseringar
I Grafana är det också möjligt att skapa aviseringar. I det här exemplet skapar vi en låg OEE-avisering för en av produktionsraderna.
Logga in på Grafana-tjänsten och välj Aviseringsregler på menyn.
Välj Skapa aviseringsregel.
Ge aviseringen ett namn och välj "Azure Data Explorer" som datakälla. Välj fråga i navigeringsfönstret.
I frågefältet anger du följande fråga. I det här exemplet använder vi produktionslinjen "Seattle".
let oee = CalculateOEEForStation("assembly", "seattle", 6, 6); print round(oee * 100, 2)
Välj "tabell" som utdata.
Rulla ned till nästa avsnitt. Här konfigurerar du aviseringströskelvärdet. I det här exemplet använder vi "under 10" som tröskelvärde, men i produktionsmiljöer kan det här värdet vara högre.
Välj den mapp där du vill spara aviseringarna och konfigurera beteendet För aviseringsutvärdering. Välj alternativet "var 2:e minut".
Välj knappen Spara och avsluta.
I översikten över dina aviseringar kan du nu se en avisering som utlöses när din OEE är under "10".
Du kan integrera den här konfigurationen med till exempel Microsoft Dynamics Field Services.
Anslut referenslösningen till Microsoft Power BI
Om du vill ansluta referenslösningen Power BI behöver du åtkomst till en Power BI-prenumeration.
Slutför följande steg:
Installera Power BI Desktop-appen härifrån.
Logga in på Power BI Desktop-appen med användaren med åtkomst till Power BI-prenumerationen.
Från Azure-portalen går du till din Azure Data Explorer-databasinstans (
ontologies
) och lägger tillDatabase Admin
behörigheter till en Azure Active Directory-användare med åtkomst till bara en enda Azure-prenumeration, särskilt den prenumeration som används för din distribuerade instans av den här referenslösningen. Skapa en ny användare i Azure Active Directory om du behöver.Från Power BI skapar du en ny rapport och väljer Tidsseriedata i Azure Data Explorer som datakälla via
Get data
->Azure
->Azure Data Explorer (Kusto)
.I popup-fönstret anger du Azure Data Explorer-slutpunkten för din instans (till exempel
https://erichbtest3adx.eastus2.kusto.windows.net
), databasnamnet (ontologies
) och följande fråga: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
Välj
Load
. Detta importerar den faktiska cykeltiden för monteringsstationen för Münchens produktionslinje under den senaste timmen.När du uppmanas att göra det loggar du in på Azure Data Explorer med den Azure Active Directory-användare som du gav behörighet att komma åt Azure Data Explorer-databasen tidigare.
I väljer
Data view
du kolumnen NodeValue och väljerDon't summarize
iSummarization
menyalternativet.Växla till
Report view
.Under
Visualizations
väljer duLine Chart
visualiseringen.Under
Visualizations
flyttar duTimestamp
frånData
källan tillX-axis
, väljer på den och väljerTimestamp
.Under
Visualizations
flyttar duNodeValue
frånData
källan tillY-axis
, väljer på den och väljerMedian
.Spara den nya rapporten.
Kommentar
Du kan lägga till andra data från Azure Data Explorer i rapporten på samma sätt.
Anslut referenslösningen till Microsoft Dynamics 365 Field Service
Den här integreringen visar följande scenarier:
- Ladda upp tillgångar från referenslösningen För tillverknings ontologier till Dynamics 365 Field Service.
- Skapa aviseringar i Dynamics 365 Field Service när ett visst tröskelvärde för telemetridata för tillverknings ontologier nås.
Integreringen använder Azure Logics Apps. Med Logic Apps kan bussiness-critcal-appar och tjänster anslutas via arbetsflöden utan kod. Vi hämtar information från Azure Data Explorer och utlöser åtgärder i Dynamics 365 Field Service.
Om du inte redan är dynamics 365 Field Service-kund aktiverar du först en 30-dagars utvärderingsversion här. Kom ihåg att använda samma Microsoft Entra-ID (tidigare Azure Active Directory) som användes när du distribuerade referenslösningen Manufacturing Ontologies. Annars skulle du behöva konfigurera autentisering mellan klientorganisationer som inte ingår i dessa instruktioner!
Skapa ett Azure Logic App-arbetsflöde för att skapa tillgångar i Dynamics 365 Field Service
Vi börjar med att ladda upp tillgångar från Tillverknings ontologier till Dynamics 365 Field Service:
Gå till Azure-portalen och skapa en ny logikapp.
Ge Azure Logic App ett namn och placera den i samma resursgrupp som referenslösningen För tillverknings ontologier.
Välj "Arbetsflöden".
Ge arbetsflödet ett namn – för det här scenariot använder vi tillståndskänslig tillståndstyp eftersom tillgångar inte är dataflöden.
Skapa en ny utlösare. Vi börjar med att skapa en upprepningsutlösare. Detta kontrollerar databasen varje dag om nya tillgångar skapas. Du kan ändra detta så att det sker oftare.
I åtgärder söker
Azure Data Explorer
du efter och väljer kommandotRun KQL query
. I den här frågan kontrollerar vi vilken typ av tillgångar vi har. Använd följande fråga för att hämta tillgångar och klistra in den i frågefältet: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)
För att få tillgångsdata till Dynamics 365 Field Service måste du ansluta till Microsoft Dataverse. Anslut till din Dynamics 365 Field Service-instans och använd följande konfiguration:
- Använd tabellnamnet "Kundtillgångar"
- Placera "AssetName" i fältet Namn
Spara arbetsflödet och kör det. Om några sekunder senare ser du att nya tillgångar skapas i Dynamics 365 Field Service.
Skapa ett Azure Logic App-arbetsflöde för att skapa aviseringar i Dynamics 365 Field Service
Det här arbetsflödet skapar aviseringar i Dynamics 365 Field Service, särskilt när ett visst tröskelvärde för FaultyTime på en tillgång i referenslösningen Manufacturing Ontologies nås.
Vi måste först skapa en Azure Data Explorer-funktion för att få rätt data. Gå till azure datautforskarens frågepanel i Azure-portalen och kör följande kod för att skapa en FaultyFieldAssets-funktion:
.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}
Skapa ett nytt arbetsflöde i Azure Logic App. Skapa en upprepningsutlösare för att starta – var 3:e minut. Skapa som åtgärd "Azure Data Explorer" och välj Kör KQL-fråga.
Ange din Azure Data Explorer-kluster-URL och välj sedan databasen och använd funktionsnamnet som skapades i steg 1 som fråga.
Välj Microsoft Dataverse som åtgärd.
Kör arbetsflödet och för att se nya aviseringar som genereras på instrumentpanelen för Dynamics 365 Field Service: