Esercitazione: Implementare l'architettura della soluzione di riferimento IoT industriale di Azure

I produttori vogliono distribuire una soluzione IoT industriale complessiva su scala globale e connettere tutti i siti di produzione a questa soluzione per aumentare l'efficienza per ogni singolo sito di produzione.

Questi incrementi di efficienza portano a una produzione più rapida e a un consumo energetico più basso, il che comporta una riduzione dei costi per i beni prodotti, aumentando al contempo la loro qualità nella maggior parte dei casi.

La soluzione deve essere il più efficiente possibile e abilitare tutti i casi d'uso necessari, ad esempio il monitoraggio delle condizioni, il calcolo O edizione Enterprise, la previsione e il rilevamento anomalie. Dai dati analitici ottenuti da questi casi d'uso, in un secondo passaggio è possibile creare un ciclo di feedback digitale che può quindi applicare ottimizzazioni e altre modifiche ai processi di produzione.

L'interoperabilità è la chiave per ottenere un'implementazione rapida dell'architettura della soluzione e l'uso di standard aperti come OPC UA contribuisce notevolmente a ottenere questa interoperabilità.

IEC 62541 Open Platform Communications Unified Architecture (OPC UA)

Questa soluzione usa IEC 62541 Open Platform Communications (OPC) Unified Architecture (UA) per tutti i dati della tecnologia operativa (OT). Questo standard è descritto qui.

Architettura della soluzione di riferimento

Architettura semplificata (opzioni di Azure e infrastruttura):

Diagramma di una semplice architettura IIoT.

Architettura dettagliata (solo Azure):

Diagramma di un'architettura IIoT.

Componenti

Ecco i componenti coinvolti in questa soluzione:

Componente Descrizione
Asset industriali Set di linee di produzione abilitate per OPC-UA simulate ospitate nei contenitori Docker
Operazioni di Azure IoT Le operazioni IoT di Azure sono un piano dati unificato per la rete perimetrale. Include un set di servizi dati modulari, scalabili e a disponibilità elevata eseguiti nei cluster Kubernetes perimetrali abilitati per Azure Arc.
Gateway dati Questo gateway connette le origini dati locali (ad esempio SAP) a App per la logica di Azure nel cloud.
Servizio Azure Kubernetes s Edge Essentials Questa implementazione di Kubernetes viene eseguita in Edge. Fornisce cluster Kubernetes a nodo singolo e multinodo per una configurazione perimetrale a tolleranza di errore. Sono supportati sia K3S che K8S. Viene eseguito su hardware incorporato o di classe PC, ad esempio un gateway industriale.
Hub eventi di Azure Gestore di messaggi cloud che riceve i messaggi OPC UA PubSub dai gateway perimetrali e li archivia fino a quando non vengono recuperati dai sottoscrittori.
Esplora dati di Azure Il database time series e il servizio dashboard front-end per l'analisi cloud avanzata, incluse le stime e il rilevamento anomalie predefiniti.
App per la logica di azure App per la logica di Azure è una piattaforma cloud che è possibile usare per creare ed eseguire flussi di lavoro automatizzati con poco o nessun codice.
Azure Arc Questo servizio cloud viene usato per gestire il cluster Kubernetes locale nella rete perimetrale. I nuovi carichi di lavoro possono essere distribuiti tramite Flux.
Archiviazione di Azure Questo servizio cloud viene usato per gestire l'archivio certificati OPC UA e le impostazioni dei carichi di lavoro Kubernetes Edge.
Grafana con gestione Azure Grafana con gestione Azure è una piattaforma di visualizzazione dei dati basata sul software Grafana di Grafana Labs. Grafana viene creato come servizio completamente gestito ospitato e supportato da Microsoft.
Microsoft Power BI Microsoft Power BI è una raccolta di servizi software, app e connettori SaaS che interagiscono per trasformare le origini di dati non correlate in informazioni dettagliate coerenti, visivamente immersive e interattive.
Microsoft Dynamics 365 Field Service Microsoft Dynamics 365 Field Service è una soluzione SaaS chiavi in mano per la gestione delle richieste di assistenza sul campo.
Comandante UA Cloud Questa applicazione di riferimento open source converte i messaggi inviati a un broker MQTT (Message Queue Telemetry Transport) o Kafka (possibilmente nel cloud) in richieste client/server OPC UA connesse per un server OPC UA connesso. L'applicazione viene eseguita in un contenitore Docker.
Azione cloud UA Questa applicazione cloud di riferimento open source esegue una query sul Esplora dati di Azure per un valore di dati specifico. Il valore dei dati è la pressione in uno dei computer della linea di produzione simulati. Chiama UA Cloud Commander tramite Hub eventi di Azure quando viene raggiunta una determinata soglia (4.000 mbar). UA Cloud Commander chiama quindi il metodo OpenPressureReliefValve nel computer tramite OPC UA.
Libreria cloud UA La libreria cloud UA è un archivio online di modelli informativi OPC UA, ospitati da OPC Foundation qui.
Traduttore di UA Edge Questa applicazione di riferimento alla connettività industriale open source si traduce da interfacce di asset proprietarie a OPC UA usando descrizioni delle cose W3C Web of Things (WoT) come schema per descrivere l'interfaccia degli asset industriali.

Nota

In una distribuzione reale, qualcosa di fondamentale come l'apertura di una valvola di sollievo a pressione verrebbe eseguita in locale. Questo è solo un semplice esempio di come ottenere il ciclo di feedback digitale.

Un archivio certificati OPC UA basato sul cloud e una risorsa di archiviazione persistente

Quando i produttori eseguono applicazioni OPC UA, è necessario rendere persistenti i file di configurazione, le chiavi e i certificati OPC UA. Anche se Kubernetes ha la possibilità di rendere persistenti questi file in volumi, un posto più sicuro per loro è il cloud, soprattutto nei cluster a nodo singolo in cui il volume andrebbe perso quando il nodo non riesce. Questo scenario è il motivo per cui le applicazioni OPC UA usate in questa soluzione archiviano i file di configurazione, le chiavi e i certificati nel cloud. Questo approccio offre anche il vantaggio di fornire un'unica posizione per i certificati reciprocamente attendibili per tutte le applicazioni OPC UA.

Libreria cloud UA

È possibile leggere I modelli di informazioni OPC UA direttamente da Azure Esplora dati. A tale scopo, importare i nodi OPC UA definiti nel modello di informazioni OPC UA in una tabella per la ricerca di più metadati all'interno delle query.

Prima di tutto, configurare un criterio di callout di Azure Esplora dati (ADX) per UA Cloud Library eseguendo la query seguente nel cluster ADX (assicurarsi di essere un amministratore del cluster ADX, configurabile in Autorizzazioni nella scheda ADX nel portale di Azure):

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

Eseguire quindi la query di Azure Esplora dati seguente dal portale di Azure:

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

È necessario fornire due elementi in questa query:

  • L'ID univoco del modello informativo della libreria cloud UA e immetterlo nel campo inserisci l'identificatore del <modello di informazioni dalla libreria cloud qui> della query ADX.
  • Le credenziali della libreria cloud UA (generate durante la registrazione) hash dell'intestazione di autorizzazione di base e inserirle nel campo inserire l'hash <delle credenziali della libreria cloud qui> del query ADX. Usare strumenti come https://www.debugbear.com/basic-auth-header-generator per generare questo.

Ad esempio, per eseguire il rendering del modello informativo della stazione OPC UA Server della linea di produzione nello strumento Kusto Explorer disponibile per il download, eseguire la query seguente:

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

Per ottenere risultati ottimali, modificare l'opzione Layout in Grouped e in Lablesname.

Grafico del modello di informazioni sulla stazione.

Simulazione di linee di produzione

La soluzione usa una simulazione di linee di produzione costituita da diverse stazioni, usando un modello informativo OPC UA e un semplice mes (Manufacturing Execution System). Sia le stazioni che mes sono incluse in contenitori per semplificare la distribuzione.

Configurazione di simulazione predefinita

La simulazione è configurata per includere due linee di produzione. La configurazione predefinita è:

Linea di produzione Tempo ciclo ideale (in secondi)
Monaco 6
Seattle 10
Nome maiuscole/i Inizia Fine
Morning 07:00 14:00:00
Afternoon 15:00:00 22:00
Notte 23:00 06:00

Nota

Gli orari di turno sono nell'ora locale, in particolare il fuso orario su cui è impostata la macchina virtuale che ospita la simulazione della linea di produzione.

ID nodo OPC UA del server OPC UA della stazione

Gli ID nodo OPC UA seguenti vengono usati nel server OPC UA della stazione per la telemetria nel cloud.

  • i=379 - Numero di serie prodotto prodotto
  • i=385 - Numero di prodotti prodotti
  • i=391 - Numero di prodotti scartati
  • i=398 - Tempo di esecuzione
  • i=399 - Ora difettosa
  • i=400 - stato (0=stazione pronta per svolgere il lavoro, 1=lavoro in corso, 2=lavoro fatto e buona parte prodotto, 3=lavoro fatto e rottami prodotti, 4=stazione in stato di guasto)
  • i=406 - Consumo energetico
  • i=412 - Tempo del ciclo ideale
  • i=418 - Tempo effettivo del ciclo
  • i=434 - pressione

Ciclo di feedback digitale con UA Cloud Commander e UA Cloud Action

Questa implementazione di riferimento implementa un "ciclo di feedback digitale", attivando in particolare un comando su uno dei server OPC UA nella simulazione dal cloud, in base ai dati delle serie temporali che raggiungono una determinata soglia (pressione simulata). È possibile visualizzare la pressione del computer di assemblaggio nella linea di produzione di Seattle rilasciata a intervalli regolari nel dashboard di Azure Esplora dati.

Installare la simulazione della linea di produzione e i servizi cloud

Facendo clic sul pulsante vengono distribuite tutte le risorse necessarie in Microsoft Azure:

Distribuisci in Azure

Durante la distribuzione, è necessario specificare una password per una macchina virtuale usata per ospitare la simulazione della linea di produzione e per UA Cloud Twin. La password deve avere tre degli attributi seguenti: un carattere minuscolo, un carattere maiuscolo, un numero e un carattere speciale. La password deve avere una lunghezza compresa tra 12 e 72 caratteri.

Nota

Per risparmiare sui costi, la distribuzione distribuisce solo una singola macchina virtuale Windows 11 Enterprise sia per la simulazione della linea di produzione che per il sistema operativo di base per l'istanza di servizio Azure Kubernetes s Edge Essentials. Negli scenari di produzione, la simulazione della linea di produzione non è necessaria e per il sistema operativo di base per l'istanza di servizio Azure Kubernetes s Edge Essentials, è consigliabile windows IoT Enterprise Long Term Servicing Channel (LTSC).

Al termine della distribuzione, connettersi alla macchina virtuale Windows distribuita con una connessione RDP (Desktop remoto). È possibile scaricare il file RDP nella pagina portale di Azure per la macchina virtuale, sotto le opzioni di Connessione. Accedere usando le credenziali specificate durante la distribuzione, aprire una finestra di PowerShell Amministrazione istrator, passare alla C:\ManufacturingOntologies-main\Deployment directory ed eseguire:

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

Al termine del comando, l'installazione di servizio Azure Kubernetes s Edge Essentials è stata completata ed è possibile eseguire la simulazione della riga di produzione.

Suggerimento

Per ottenere i log da tutti i carichi di lavoro e i servizi Kubernetes in qualsiasi momento, eseguire Get-AksEdgeLogs da una finestra di PowerShell Amministrazione istrator.

Per controllare l'utilizzo della memoria del cluster Kubernetes, eseguire Invoke-AksEdgeNodeCommand -Command "sudo cat /proc/meminfo" da una finestra di PowerShell Amministrazione istrator.

Eseguire la simulazione della linea di produzione

Dalla macchina virtuale distribuita aprire un prompt dei comandi di Windows. Passare alla C:\ManufacturingOntologies-main\Tools\FactorySimulation directory ed eseguire il comando StartSimulation specificando i parametri seguenti:

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

Parametri:

Parametro Descrizione
EventHubCS Copiare lo spazio dei nomi di Hub eventi stringa di connessione come descritto qui.
Archiviazione AccountCS Nella portale di Azure passare all'account Archiviazione creato da questa soluzione. Selezionare "Chiavi di accesso" dal menu di spostamento a sinistra. Copiare quindi il stringa di connessione per key1.
AzureSubscriptionID In portale di Azure esplorare le sottoscrizioni e copiare l'ID della sottoscrizione usata in questa soluzione.
AzureTenantID In portale di Azure aprire la pagina ID voce Microsoft e copiare l'ID tenant.

L'esempio seguente mostra il comando con tutti i parametri:

    StartSimulation Endpoint=sb://ontologies.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=abcdefgh= DefaultEndpointsProtocol=https;AccountName=ontologiesstorage;AccountKey=abcdefgh==;EndpointSuffix=core.windows.net <your-subscription-id> <your-tenant-id>

Nota

Se si ha accesso a più sottoscrizioni di Azure, vale la pena accedere al portale di Azure dalla macchina virtuale tramite il Web browser. È anche possibile cambiare tenant di Active Directory tramite l'interfaccia utente di portale di Azure (nell'angolo superiore destro) per assicurarsi di aver eseguito l'accesso al tenant usato durante la distribuzione. Dopo aver eseguito l'accesso, lasciare aperta la finestra del browser. In questo modo, lo script StartSimulation può connettersi più facilmente alla sottoscrizione corretta.

In questa soluzione, l'archivio certificati dell'applicazione OPC UA per UA Cloud Publisher e l'archivio MES e dei singoli computer della linea di produzione simulato si trova nel cloud nell'account di Archiviazione di Azure distribuito.

Abilitare il cluster Kubernetes per la gestione tramite Azure Arc

  1. Nella macchina virtuale aprire una finestra di PowerShell Amministrazione istrator. Passare alla C:\ManufacturingOntologies-main\Deployment directory ed eseguire CreateServicePrincipal. I due parametri subscriptionID e tenantID possono essere recuperati dal portale di Azure.

  2. Eseguire notepad aksedge-config.json e fornire le informazioni seguenti:

    Attributo Descrizione
    Ubicazione Posizione di Azure del gruppo di risorse. È possibile trovare questo percorso nel portale di Azure nel gruppo di risorse distribuito per questa soluzione, ma rimuovere gli spazi nel nome. Attualmente le aree supportate sono eastus, eastus2, westus2, westus2, westus3, westeurope e northeurope.
    SubscriptionId ID sottoscrizione personale. Nella portale di Azure selezionare la sottoscrizione in uso e copiare/incollare l'ID sottoscrizione.
    TenantId ID tenant. Nella portale di Azure selezionare Azure Active Directory e copiare/incollare l'ID tenant.
    ResourceGroupName Nome del gruppo di risorse di Azure distribuito per questa soluzione.
    ClientId Nome dell'entità servizio di Azure creata in precedenza. servizio Azure Kubernetes usa questa entità servizio per connettere il cluster ad Arc.
    ClientSecret Password per l'entità servizio di Azure.
  3. Salvare il file, chiudere la finestra di PowerShell e aprire una nuova finestra di PowerShell Amministrazione istrator. Tornare alla C:\ManufacturingOntologies-main\Deployment directory ed eseguire SetupArc.

È ora possibile gestire il cluster Kubernetes dal cloud tramite l'istanza di Azure Arc appena distribuita. Nella portale di Azure passare all'istanza di Azure Arc e selezionare Carichi di lavoro. Il token di servizio richiesto può essere recuperato tramite Get-AksEdgeManagedServiceToken una finestra di PowerShell Amministrazione istrator nella macchina virtuale.

Screenshot di Azure Arc nella portale di Azure.

Distribuzione di operazioni IoT di Azure sul perimetro

Assicurarsi di aver già avviato la simulazione della linea di produzione e di abilitare il cluster Kubernetes per la gestione tramite Azure Arc, come descritto nei paragrafi precedenti. Effettuare quindi i seguenti passaggi:

  1. Dal portale di Azure passare all'insieme di credenziali delle chiavi distribuito in questa soluzione di riferimento e aggiungere la propria identità ai criteri di accesso facendo clic su Access policies, Createselezionare il Keys, Secrets & Certificate Management modello, selezionare Next, cercare e selezionare la propria identità utente, selezionare , lasciare Nextvuota la sezione Applicazione, selezionare Next e infine Create.
  2. Abilitare percorsi personalizzati per il cluster Kubernetes connesso ad Arc (denominato ontologies_cluster) accedendo prima alla sottoscrizione di Azure tramite az login una finestra di PowerShell Amministrazione istrator e quindi eseguendo az connectedk8s enable-features -n "ontologies_cluster" -g "<resourceGroupName>" --features cluster-connect custom-locations, fornendo dalla resourceGroupName soluzione di riferimento distribuita.
  3. Dalla portale di Azure distribuire le operazioni IoT di Azure passando al cluster Kubernetes connesso ad Arc, selezionare in Extensions, , selezionare e selezionare Azure IoT OperationsCreate. Add Nella pagina Basic lasciare invariati tutti gli elementi. Nella pagina Configurazione impostare su MQ ModeAuto. Non è necessario distribuire un controller per la logica programmabile simulato (PLC), perché questa soluzione di riferimento contiene già una simulazione della linea di produzione molto più sostanziale. Nella pagina Automazione selezionare l'insieme di credenziali delle chiavi distribuito per questa soluzione di riferimento e quindi copiare il az iot ops init comando generato automaticamente. Dalla macchina virtuale distribuita aprire una nuova finestra di PowerShell di Amministrazione istrator, accedere alla sottoscrizione di Azure corretta eseguendo az login e quindi eseguire il az iot ops init comando con gli argomenti del portale di Azure. Al termine del comando, selezionare Next e quindi chiudere la procedura guidata.

Configurazione della sicurezza e della connettività OPC UA per le operazioni di Azure IoT

Assicurarsi di aver distribuito correttamente le operazioni Di Azure IoT e che tutti i carichi di lavoro Kubernetes siano operativi passando alla risorsa Kubernetes abilitata per Arc nella portale di Azure.

  1. Dal portale di Azure passare alla Archiviazione di Azure distribuita in questa soluzione di riferimento, aprire e Storage browser quindi Blob containers. Qui è possibile accedere all'archivio certificati OPC UA basato sul cloud usato in questa soluzione. Le operazioni di Azure IoT usano Azure Key Vault come archivio certificati OPC UA basato sul cloud in modo che i certificati debbano essere copiati:
    1. Dall'interno dei contenitori BLOB del browser Archiviazione di Azure, per ogni linea di produzione simulata passare alla cartella app/pki/trusted/certs, selezionare l'assembly, la creazione di pacchetti e il file di certificato di test e scaricarlo.
    2. Accedere alla sottoscrizione di Azure tramite az login una finestra di PowerShell di Amministrazione istrator e quindi eseguire az keyvault secret set --name "<stationName>-der" --vault-name <keyVaultName> --file .<stationName>.der --encoding hex --content-type application/pkix-cert, specificando e keyVaultNamestationName di ognuna delle 6 stazioni per cui è stato scaricato un file con estensione der cert nel passaggio precedente.
  2. Dalla macchina virtuale distribuita aprire un prompt dei comandi di Windows ed eseguire kubectl apply -f secretsprovider.yaml con il file di risorse del provider di segreti aggiornato fornito nella C:\ManufacturingOntologies-main\Tools\FactorySimulation\Station directory, specificando il nome dell'insieme di credenziali delle chiavi, l'ID tenant di Azure e i nomi dei file del certificato della stazione e gli alias caricati in precedenza in Azure Key Vault.
  3. Da un Web browser accedere a https://iotoperations.azure.com, selezionare la directory di Azure corretta (angolo superiore destro) e iniziare a creare asset dalla simulazione della linea di produzione. La soluzione include due linee di produzione (Monaco di Baviera e Seattle) costituite da tre stazioni (assemblaggio, test e imballaggio):
    1. Per gli endpoint asset, immettere opc.tcp://assembly.monaco nel campo URL broker OPC UA per la stazione di montaggio della linea di produzione di Monaco e così via. Selezionare Do not use transport authentication certificate (autenticazione reciproca basata su certificato OPC UA tra operazioni IoT di Azure e qualsiasi server OPC UA connesso ancora in uso).
    2. Per i tag di asset, selezionare Import CSV file e aprire il StationTags.csv file che si trova nella C:\ManufacturingOntologies-main\Tools\FactorySimulation\Station directory.
  4. Dal portale di Azure passare alla Archiviazione di Azure distribuita in questa soluzione di riferimento, aprire e Storage browser quindi Blob containers. Per ogni riga di produzione simulata, passare alla app/pki/rejected/certs cartella e scaricare il file del certificato di Azure IoT Operations. Eliminare quindi il file. Passare alla app/pki/trusted/certs cartella e caricare il file del certificato di Azure IoT Operations in questa directory.
  5. Dalla macchina virtuale distribuita aprire un prompt dei comandi di Windows e riavviare la simulazione della riga di produzione passando alla C:\ManufacturingOntologies-main\Tools\FactorySimulation directory ed eseguire il comando StopSimulation, seguito dal comando StartSimulation.
  6. Seguire le istruzioni descritte qui per verificare che i dati vengano trasmessi dalla simulazione della linea di produzione.
  7. Come ultimo passaggio, connettere le operazioni IoT di Azure agli hub eventi distribuiti in questa soluzione di riferimento, come descritto qui.

Monitoraggio delle condizioni dei casi d'uso, calcolo di O edizione Enterprise, rilevamento delle anomalie e esecuzione di stime in Azure Esplora dati

È anche possibile visitare la documentazione di Azure Esplora dati per informazioni su come creare dashboard senza codice per il monitoraggio delle condizioni, la produzione o la manutenzione o il rilevamento delle anomalie. Qui è stato fornito un dashboard di esempio per la distribuzione nel dashboard ADX seguendo i passaggi descritti qui. Dopo l'importazione, è necessario aggiornare l'origine dati del dashboard specificando l'endpoint HTTPS dell'istanza del cluster del server ADX nel formato https://ADXInstanceName.AzureRegion.kusto.windows.net/ nell'angolo superiore destro del dashboard.

Screenshot di un dashboard di Azure Esplora dati.

Nota

Se si desidera visualizzare l'O edizione Enterprise per uno spostamento specifico, selezionare Custom Time Range nell'elenco a discesa nell'angolo Time Range in alto a sinistra del dashboard ADX e immettere la data e l'ora dall'inizio alla fine del turno a cui si è interessati.

Eseguire il rendering del grafico del modello Unified NameSpace (UNS) e ISA-95 in Kusto Explorer

Questa soluzione di riferimento implementa un unified NameSapce (UNS), in base ai metadati OPC UA inviati al database time series nel cloud (Azure Esplora dati). Questi metadati OPC UA includono anche la gerarchia di asset ISA-95. Il grafico risultante può essere facilmente visualizzato nello strumento Kusto Explorer disponibile per il download qui.

Aggiungere una nuova connessione all'istanza di Azure Esplora dati distribuita in questa soluzione di riferimento e quindi eseguire la query seguente 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

Per ottenere risultati ottimali, modificare l'opzione Layout in Grouped.

Grafico che mostra una gerarchia di asset ISA-95.

Usare il servizio Grafana gestito di Azure

È anche possibile usare Grafana per creare un dashboard in Azure per la soluzione descritta in questo articolo. Grafana viene usato all'interno della produzione per creare dashboard che visualizzano dati in tempo reale. Azure offre un servizio denominato Grafana gestito di Azure. A questo scopo, è possibile creare dashboard cloud. In questo manuale di configurazione si abilita Grafana in Azure e si crea un dashboard con dati sottoposti a query dal servizio Azure Esplora dati e Gemelli digitali di Azure usando i dati della linea di produzione simulati di questa soluzione di riferimento.

Lo screenshot seguente mostra il dashboard:

Screenshot che mostra un dashboard di Grafana.

Abilitare il servizio Grafana gestito di Azure

  1. Passare al portale di Azure e cercare il servizio "Grafana" e selezionare il servizio "Grafana gestito di Azure".

    Screenshot dell'abilitazione di Grafana nel Marketplace.

  2. Assegnare un nome all'istanza e lasciare attiva le opzioni standard e creare il servizio.

  3. Dopo aver creato il servizio, passare all'URL in cui si accede all'istanza di Grafana. È possibile trovare l'URL nella home page del servizio.

Aggiungere una nuova origine dati in Grafana

Dopo il primo accesso, è necessario aggiungere una nuova origine dati ad Azure Esplora dati.

  1. Passare a "Configurazione" e aggiungere una nuova origine dati.

  2. Cercare Azure Esplora dati e selezionare il servizio.

  3. Configurare la connessione e usare la registrazione dell'app (seguire il manuale fornito nella parte superiore di questa pagina).

  4. Salvare e testare la connessione nella parte inferiore della pagina.

Importare un dashboard di esempio

A questo momento è possibile importare il dashboard di esempio fornito.

  1. Scaricare il dashboard di esempio qui: Dashboard di produzione Grafana di esempio.

  2. Passare a "Dashboard" e selezionare "Importa".

  3. Selezionare l'origine scaricata e selezionare "Salva". Viene visualizzato un errore nella pagina, perché due variabili non sono ancora impostate. Passare alla pagina delle impostazioni del dashboard.

  4. Selezionare a sinistra "Variabili" e aggiornare i due URL con l'URL del servizio Gemelli digitali di Azure.

  5. Tornare al dashboard e premere il pulsante Aggiorna. Verranno ora visualizzati i dati (non dimenticare di premere il pulsante Salva nel dashboard).

    La variabile di posizione nella parte superiore della pagina viene compilata automaticamente con i dati di Gemelli digitali di Azure (i nodi dell'area di ISA95). Qui è possibile selezionare le diverse posizioni e visualizzare i diversi punti dati di ogni factory.

  6. Se i dati non vengono visualizzati nel dashboard, passare ai singoli pannelli e verificare se è selezionata l'origine dati corretta.

Configura avvisi

All'interno di Grafana è anche possibile creare avvisi. In questo esempio viene creato un avviso O edizione Enterprise basso per una delle linee di produzione.

  1. Accedere al servizio Grafana e selezionare Regole di avviso nel menu.

    Screenshot che mostra lo spostamento agli avvisi.

  2. Selezionare 'Crea regola di avviso'.

    Screenshot che mostra come creare una regola di avviso.

  3. Assegnare un nome all'avviso e selezionare "Azure Esplora dati" come origine dati. Selezionare query nel riquadro di spostamento.

    Screenshot della creazione di una query di avviso.

  4. Nel campo della query immettere la query seguente. In questo esempio viene usata la linea di produzione "Seattle".

    let oee = CalculateOEEForStation("assembly", "seattle", 6, 6);
    print round(oee * 100, 2)
    
  5. Selezionare 'table' come output.

  6. Scorrere verso il basso fino alla sezione successiva. In questo caso viene configurata la soglia di avviso. In questo esempio viene usato "sotto 10" come soglia, ma negli ambienti di produzione questo valore può essere superiore.

    Screenshot che mostra un avviso soglia.

  7. Selezionare la cartella in cui salvare gli avvisi e configurare il "Comportamento di valutazione degli avvisi". Selezionare l'opzione "ogni 2 minuti".

  8. Selezionare il pulsante "Salva e esci".

Nella panoramica degli avvisi è ora possibile visualizzare un avviso attivato quando il valore O edizione Enterprise è inferiore a '10'.

Screenshot che mostra una panoramica degli avvisi.

È possibile integrare questa configurazione con, ad esempio, Microsoft Dynamics Field Services.

Connessione la soluzione di riferimento a Microsoft Power BI

Per connettere la soluzione di riferimento Power BI, è necessario accedere a una sottoscrizione di Power BI.

Effettuare i passaggi seguenti:

  1. Installare l'app Power BI Desktop da qui.

  2. Accedere all'app Power BI Desktop usando l'utente con accesso alla sottoscrizione di Power BI.

  3. Dal portale di Azure passare all'istanza del database di Azure Esplora dati (ontologies) e aggiungere Database Admin autorizzazioni a un utente di Azure Active Directory con accesso a una sola sottoscrizione di Azure, in particolare la sottoscrizione usata per l'istanza distribuita di questa soluzione di riferimento. Creare un nuovo utente in Azure Active Directory, se necessario.

  4. Da Power BI creare un nuovo report e selezionare Azure Esplora dati dati delle serie temporali come origine dati tramite Get data -Azure> ->Azure Data Explorer (Kusto).

  5. Nella finestra popup immettere l'endpoint di Azure Esplora dati dell'istanza , ad esempio https://erichbtest3adx.eastus2.kusto.windows.net, il nome del database (ontologies) e la query seguente:

    let _startTime = ago(1h);
    let _endTime = now();
    opcua_metadata_lkv
    | where Name contains "assembly"
    | where Name contains "munich"
    | join kind=inner (opcua_telemetry
        | where Name == "ActualCycleTime"
        | where Timestamp > _startTime and Timestamp < _endTime
    ) on DataSetWriterID
    | extend NodeValue = todouble(Value)
    | project Timestamp, NodeValue
    
  6. Selezionare Load. Questo importa il tempo effettivo del ciclo della stazione di assemblaggio della linea di produzione di Monaco per l'ultima ora.

  7. Quando richiesto, accedere ad Azure Esplora dati usando l'utente di Azure Active Directory autorizzato ad accedere al database di Azure Esplora dati in precedenza.

  8. Data viewNella colonna , selezionare la colonna NodeValue e selezionare Don't summarize nella Summarization voce di menu.

  9. Passare a Report view.

  10. In Visualizationsselezionare la Line Chart visualizzazione.

  11. In Visualizationsspostare l'oggetto Timestamp dall'origine all'oggetto DataX-axis, selezionarlo e selezionare Timestamp.

  12. In Visualizationsspostare l'oggetto NodeValue dall'origine all'oggetto DataY-axis, selezionarlo e selezionare Median.

  13. Salvare il nuovo report.

    Nota

    È possibile aggiungere altri dati da Azure Esplora dati al report in modo analogo.

    Screenshot di una visualizzazione di Power BI.

Connessione la soluzione di riferimento a Microsoft Dynamics 365 Field Service

Questa integrazione illustra gli scenari seguenti:

  • Caricamento di asset dalla soluzione di riferimento Onlogies di produzione in Dynamics 365 Field Service.
  • Creare avvisi in Dynamics 365 Field Service quando viene raggiunta una determinata soglia sui dati di telemetria della soluzione di riferimento sulle ontologie di produzione.

L'integrazione usa App per la logica di Azure. Con le app per la logica è possibile connettere app e servizi in modo crittoco alle app per la logica tramite flussi di lavoro senza codice. Le informazioni vengono recuperate da Azure Esplora dati e vengono attivate azioni in Dynamics 365 Field Service.

In primo luogo, se non si è già un cliente di Dynamics 365 Field Service, attivare una versione di valutazione di 30 giorni qui. Ricordarsi di usare lo stesso ID Microsoft Entra (in precedenza Azure Active Directory) usato durante la distribuzione della soluzione di riferimento Sulle ontribuzioni di produzione. In caso contrario, è necessario configurare l'autenticazione tra tenant che non fa parte di queste istruzioni.

Creare un flusso di lavoro di App per la logica di Azure per creare asset in Dynamics 365 Field Service

Si inizierà con il caricamento di asset dagli onlogi di produzione in Dynamics 365 Field Service:

  1. Passare alla portale di Azure e creare una nuova app per la logica.

  2. Assegnare un nome all'app per la logica di Azure, inserirlo nello stesso gruppo di risorse della soluzione di riferimento Onlogi di produzione.

  3. Selezionare "Flussi di lavoro".

  4. Assegnare un nome al flusso di lavoro: per questo scenario viene usato il tipo di stato con stato, perché gli asset non sono flussi di dati.

  5. Creare un nuovo trigger. Si inizia con la creazione di un trigger "Ricorrenza". In questo modo il database viene controllato ogni giorno se vengono creati nuovi asset. È possibile modificare questa situazione in modo che accada più spesso.

  6. Nelle azioni cercare Azure Data Explorer e selezionare il Run KQL query comando . All'interno di questa query viene verificato il tipo di asset disponibili. Usare la query seguente per ottenere gli asset e incollarlo nel campo della query:

    let ADTInstance =  "PLACE YOUR ADT URL";let ADTQuery = "SELECT T.OPCUAApplicationURI as AssetName, T.$metadata.OPCUAApplicationURI.lastUpdateTime as UpdateTime FROM DIGITALTWINS T WHERE IS_OF_MODEL(T , 'dtmi:digitaltwins:opcua:nodeset;1') AND T.$metadata.OPCUAApplicationURI.lastUpdateTime > 'PLACE DATE'";evaluate azure_digital_twins_query_request(ADTInstance, ADTQuery)
    
  7. Per ottenere i dati degli asset in Dynamics 365 Field Service, è necessario connettersi a Microsoft Dataverse. Connessione all'istanza di Dynamics 365 Field Service e usare la configurazione seguente:

    • Usare il nome della tabella "Customer Assets"
    • Inserire "AssetName" nel campo Nome
  8. Salvare il flusso di lavoro ed eseguirlo. Si noterà in pochi secondi che i nuovi asset vengono creati in Dynamics 365 Field Service.

Creare un flusso di lavoro di App per la logica di Azure per creare avvisi in Dynamics 365 Field Service

Questo flusso di lavoro crea avvisi in Dynamics 365 Field Service, in particolare quando viene raggiunta una determinata soglia di FaultyTime in un asset della soluzione di riferimento Onlogies di produzione.

  1. Prima di tutto è necessario creare una funzione di Esplora dati di Azure per ottenere i dati corretti. Passare al pannello di query di Azure Esplora dati nel portale di Azure ed eseguire il codice seguente per creare una funzione FaultyFieldAssets:

    Screenshot della creazione di una query ADX per le funzioni.

    .create-or-alter function  FaultyFieldAssets() {  
    let Lw_start = ago(3d);
    opcua_telemetry
    | where Name == 'FaultyTime'
    and Value > 0
    and Timestamp between (Lw_start .. now())
    | join kind=inner (
        opcua_metadata
        | extend AssetList =split (Name, ';')
        | extend AssetName=AssetList[0]
        ) on DataSetWriterID
    | project AssetName, Name, Value, Timestamp}
    
  2. Creare un nuovo flusso di lavoro nell'app per la logica di Azure. Creare un trigger "Ricorrenza" da avviare ogni 3 minuti. Creare come azione "Azure Esplora dati" e selezionare esegui query KQL.

  3. Immettere l'URL del cluster di Azure Esplora dati, quindi selezionare il database e usare il nome della funzione creato nel passaggio 1 come query.

  4. Selezionare Microsoft Dataverse come azione.

  5. Eseguire il flusso di lavoro e visualizzare i nuovi avvisi generati nel dashboard di Dynamics 365 Field Service:

    Screenshot degli avvisi in Dynamics 365 FS.