Partilhar via


Tutorial: Implementar a arquitetura da solução de referência do Azure Industrial IoT

Os fabricantes querem implantar uma solução global de IoT industrial em escala global e conectar todos os seus locais de produção a essa solução para aumentar a eficiência de cada local de produção individual.

Estes ganhos de eficiência acrescidos conduzem a uma produção mais rápida e a um menor consumo de energia, o que conduz à redução do custo dos bens produzidos e, na maioria dos casos, aumenta a sua qualidade.

A solução deve ser o mais eficiente possível e permitir todos os casos de uso necessários, como monitoramento de condições, cálculo de OEE, previsão e deteção de anomalias. A partir dos insights obtidos a partir desses casos de uso, em uma segunda etapa pode ser criado um ciclo de feedback digital que pode então aplicar otimizações e outras mudanças nos processos de produção.

A interoperabilidade é a chave para alcançar uma implantação rápida da arquitetura da solução e o uso de padrões abertos, como o OPC UA, ajuda significativamente a alcançar essa interoperabilidade.

IEC 62541 Arquitetura unificada de comunicações de plataforma aberta (OPC UA)

Esta solução utiliza a Arquitetura Unificada (UA) IEC 62541 Open Platform Communications (OPC) para todos os dados de Tecnologia Operacional (OT). Esta norma é descrita aqui.

Arquitetura de soluções de referência

Arquitetura simplificada (opções do Azure e da malha):

Diagrama de uma arquitetura IIoT simples.

Arquitetura detalhada (somente Azure):

Diagrama de uma arquitetura IIoT.

Componentes

Aqui estão os componentes envolvidos nesta solução:

Componente Description
Ativos Industriais Um conjunto de linhas de produção simuladas habilitadas para OPC UA hospedadas em contêineres do Docker
Operações do Azure IoT O Azure IoT Operations é um plano de dados unificado para a borda. Ele inclui um conjunto de serviços de dados modulares, escaláveis e altamente disponíveis que são executados em clusters Kubernetes de borda habilitados para Azure Arc.
Gateway de dados Esse gateway conecta suas fontes de dados locais (como SAP) aos Aplicativos Lógicos do Azure na nuvem.
Azure Kubernetes Services Edge Essentials Esta implementação do Kubernetes é executada na borda. Ele fornece clusters Kubernetes de um e vários nós para uma configuração de Borda tolerante a falhas. Tanto o K3S como o K8S são suportados. Ele é executado em hardware incorporado ou de classe PC, como um gateway industrial.
Hubs de Eventos do Azure O agente de mensagens na nuvem que recebe mensagens OPC UA PubSub de gateways de borda e as armazena até serem recuperadas pelos assinantes.
Azure Data Explorer O banco de dados de séries cronológicas e o serviço de painel front-end para análises avançadas na nuvem, incluindo deteção e previsões de anomalias integradas.
Azure Logic Apps As Aplicações Lógicas do Azure são uma plataforma na nuvem que pode utilizar para criar e executar fluxos de trabalho automatizados com pouco ou nenhum código.
Azure Arc Esse serviço de nuvem é usado para gerenciar o cluster Kubernetes local na borda. Novas cargas de trabalho podem ser implantadas via Flux.
Armazenamento do Azure Este serviço de nuvem é usado para gerenciar o armazenamento de certificados OPC UA e as configurações das cargas de trabalho do Kubernetes de Borda.
Azure Managed Grafana O Azure Managed Grafana é uma plataforma de visualização de dados criada sobre o software Grafana da Grafana Labs. Grafana é construído como um serviço totalmente gerenciado que é hospedado e suportado pela Microsoft.
Microsoft Power BI O Microsoft Power BI é uma coleção de serviços, aplicativos e conectores de software SaaS que trabalham juntos para transformar suas fontes de dados não relacionadas em insights coerentes, visualmente imersivos e interativos.
Serviço de Campo do Microsoft Dynamics 365 O Microsoft Dynamics 365 Field Service é uma solução SaaS pronta para uso para gerenciar solicitações de serviço de campo.
UA Cloud Commander Este aplicativo de referência de código aberto converte mensagens enviadas para um Transporte de Telemetria de Fila de Mensagens (MQTT) ou agente Kafka (possivelmente na nuvem) em solicitações OPC UA Client/Server para um servidor OPC UA conectado. O aplicativo é executado em um contêiner do Docker.
Ação na nuvem da UA Este aplicativo de nuvem de referência de código aberto consulta o Azure Data Explorer para obter um valor de dados específico. O valor dos dados é a pressão em uma das máquinas da linha de produção simulada. Ele chama o UA Cloud Commander por meio dos Hubs de Eventos do Azure quando um determinado limite é atingido (4.000 mbar). O UA Cloud Commander então chama o método OpenPressureReliefValve na máquina via OPC UA.
Biblioteca na nuvem da UA A UA Cloud Library é uma loja online de OPC UA Information Models, hospedada pela OPC Foundation aqui.
Tradutor UA Edge Este aplicativo de referência de conectividade industrial de código aberto se traduz de interfaces de ativos proprietários para OPC UA usando W3C Web of Things (WoT) Thing Descriptions como o esquema para descrever a interface de ativos industriais.

Nota

Em uma implantação no mundo real, algo tão crítico quanto abrir uma válvula de alívio de pressão seria feito localmente. Este é apenas um exemplo simples de como alcançar o ciclo de feedback digital.

Um armazenamento de certificados OPC UA baseado em nuvem e armazenamento persistente

Quando os fabricantes executam aplicativos OPC UA, seus arquivos de configuração, chaves e certificados OPC UA devem ser mantidos. Embora o Kubernetes tenha a capacidade de persistir esses arquivos em volumes, um lugar mais seguro para eles é a nuvem, especialmente em clusters de nó único, onde o volume seria perdido quando o nó falhasse. Esse cenário é o motivo pelo qual os aplicativos OPC UA usados nesta solução armazenam seus arquivos de configuração, chaves e certificados na nuvem. Essa abordagem também tem a vantagem de fornecer um único local para certificados mutuamente confiáveis para todos os aplicativos OPC UA.

Biblioteca na nuvem da UA

Você pode ler os Modelos de Informações do OPC UA diretamente do Azure Data Explorer. Você pode fazer isso importando os nós OPC UA definidos no OPC UA Information Model para uma tabela para pesquisa de mais metadados dentro de consultas.

Primeiro, configure uma política de texto explicativo do Azure Data Explorer (ADX) para a UA Cloud Library executando a seguinte consulta em seu cluster ADX (verifique se você é um administrador de cluster ADX, configurável em Permissões na guia ADX no portal do Azure):

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

Em seguida, execute a seguinte consulta do Azure Data Explorer a partir do portal do 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

Você precisa fornecer duas coisas nesta consulta:

  • O ID exclusivo do Modelo de Informações da UA Cloud Library e insira-o <no campo inserir identificador de modelo de informações da biblioteca de nuvem aqui> da consulta ADX.
  • Suas credenciais da UA Cloud Library (geradas durante o registro) hash de cabeçalho de autorização básica e insira-o <no campo inserir suas credenciais de biblioteca de nuvem aqui> da consulta ADX. Use ferramentas como https://www.debugbear.com/basic-auth-header-generator para gerar isso.

Por exemplo, para renderizar a simulação de linha de produção Station OPC UA Server's Information Model na ferramenta Kusto Explorer disponível para download aqui, execute a seguinte consulta:

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

Para obter melhores resultados, altere a Layout opção para Grouped e para Lables name.

Gráfico do modelo de informações da estação.

Simulação de linha de produção

A solução utiliza uma simulação de linha de produção composta por várias estações, utilizando um modelo de informação OPC UA, e um simples Manufacturing Execution System (MES). Tanto as estações quanto o MES são conteinerizados para facilitar a implantação.

Configuração de simulação padrão

A simulação é configurada para incluir duas linhas de produção. A configuração padrão é:

Linha de Produção Tempo de ciclo ideal (em segundos)
Munique 6
Porto 10
Nome do turno Iniciar Fim
Manhã 07:00 14:00
Tarde 15:00 22:00
Noite 23:00 06:00

Nota

Os horários de turno estão no horário local, especificamente o fuso horário para o qual a máquina virtual (VM) que hospeda a simulação da linha de produção está definida.

IDs de nó OPC UA do servidor Station OPC UA

Os seguintes IDs de nó OPC UA são usados no Station OPC UA Server para telemetria para a nuvem.

  • i=379 - número de série do produto fabricado
  • I=385 - Número de produtos manufaturados
  • I=391 - Número de produtos fora de uso
  • i=398 - tempo de execução
  • i=399 - tempo defeituoso
  • i=400 - estado (0=estação pronta a trabalhar, 1=trabalho em curso, 2=trabalho realizado e boa parte fabricada, 3=trabalho realizado e sucata fabricada, 4=estação em estado de avaria)
  • i=406 - consumo de energia
  • i=412 - tempo de ciclo ideal
  • i=418 - tempo de ciclo real
  • i=434 - pressão

Ciclo de feedback digital com UA Cloud Commander e UA Cloud Action

Esta implementação de referência implementa um "loop de feedback digital", acionando especificamente um comando em um dos servidores OPC UA na simulação a partir da nuvem, com base em dados de séries temporais que atingem um determinado limite (a pressão simulada). Você pode ver a pressão da máquina de montagem na linha de produção de Seattle sendo liberada em intervalos regulares no painel do Azure Data Explorer.

Instale a simulação da linha de produção e os serviços na nuvem

Clicar no botão implanta todos os recursos necessários no Microsoft Azure:

Implementar no Azure

Durante a implantação, você deve fornecer uma senha para uma VM usada para hospedar a simulação da linha de produção e para o UA Cloud Twin. A senha deve ter três dos seguintes atributos: um caractere minúsculo, um caractere maiúsculo, um número e um caractere especial. A palavra-passe deve ter entre 12 e 72 caracteres.

Nota

Para economizar custos, a implantação implanta apenas uma única VM do Windows 11 Enterprise para a simulação da linha de produção e o sistema operacional base para a instância do Azure Kubernetes Services Edge Essentials. Em cenários de produção, a simulação da linha de produção não é necessária e, para o SO base da instância do Azure Kubernetes Services Edge Essentials, recomendamos o Windows IoT Enterprise Long Term Servicing Channel (LTSC).

Quando a implantação for concluída, conecte-se à VM do Windows implantada com uma conexão RDP (área de trabalho remota). Você pode baixar o arquivo RDP na página do portal do Azure para a VM, nas opções Conectar. Entre usando as credenciais fornecidas durante a implantação, abra uma janela do Powershell do administrador, navegue até o C:\ManufacturingOntologies-main\Deployment diretório e execute:

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

Após a conclusão do comando, a instalação do Azure Kubernetes Services Edge Essentials será concluída e você poderá executar a simulação da linha de produção.

Gorjeta

Para obter logs de todas as suas cargas de trabalho e serviços do Kubernetes a qualquer momento, execute Get-AksEdgeLogs a partir de uma janela do Powershell do administrador.

Para verificar a utilização da memória do cluster Kubernetes, execute Invoke-AksEdgeNodeCommand -Command "sudo cat /proc/meminfo" a partir de uma janela do Powershell do administrador.

Executar a simulação da linha de produção

Na VM implantada, abra um prompt de comando do Windows. Navegue até o C:\ManufacturingOntologies-main\Tools\FactorySimulation diretório e execute o comando StartSimulation fornecendo os seguintes parâmetros:

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

Parâmetros:

Parâmetro Description
EventHubCS Copie a cadeia de conexão do namespace Hubs de Eventos conforme descrito aqui.
StorageAccountCS No portal do Azure, navegue até a Conta de Armazenamento criada por esta solução. Selecione "Teclas de acesso" no menu de navegação à esquerda. Em seguida, copie a cadeia de conexão para key1.
AzureSubscriptionID No portal do Azure, navegue pelas suas Subscrições e copie o ID da subscrição utilizada nesta solução.
AzureTenantID No portal do Azure, abra a página ID de Entrada da Microsoft e copie sua ID de Locatário .

O exemplo a seguir mostra o comando com todos os parâmetros:

    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 você tiver acesso a várias assinaturas do Azure, vale a pena primeiro fazer logon no portal do Azure a partir da VM por meio do navegador da Web. Você também pode alternar locatários do Ative Directory por meio da interface do usuário do portal do Azure (no canto superior direito), para garantir que você esteja conectado ao locatário usado durante a implantação. Uma vez conectado, deixe a janela do navegador aberta. Isso garante que o script StartSimulation possa se conectar mais facilmente à assinatura correta.

Nesta solução, o armazenamento de certificados de aplicativos OPC UA para o UA Cloud Publisher e o MES da linha de produção simulada e o armazenamento de máquinas individuais estão localizados na nuvem na conta de Armazenamento do Azure implantada.

Habilite o cluster Kubernetes para gerenciamento por meio do Azure Arc

  1. Na máquina virtual, abra uma janela do PowerShell do administrador. Navegue até o C:\ManufacturingOntologies-main\Deployment diretório e execute CreateServicePrincipal. Os dois parâmetros subscriptionID e tenantID podem ser recuperados do portal do Azure.

  2. Execute notepad aksedge-config.json e forneça as seguintes informações:

    Atributo Description
    Localização A localização do Azure do seu grupo de recursos. Você pode encontrar esse local no portal do Azure no grupo de recursos que foi implantado para esta solução, mas remova os espaços no nome! As regiões atualmente suportadas são eastus, eastus2, westus, westus2, westus3, westeurope e northeurope.
    SubscriptionId O seu ID de subscrição. No portal do Azure, selecione a assinatura que você está usando e copie/cole a ID da assinatura.
    TenantId O ID do inquilino. No portal do Azure, selecione no Azure Ative Directory e copie/cole a ID do locatário.
    ResourceGroupName O nome do grupo de recursos do Azure que foi implantado para esta solução.
    ClientId O nome da Entidade de Serviço do Azure criada anteriormente. Os Serviços Kubernetes do Azure usam essa entidade de serviço para conectar seu cluster ao Arc.
    ClientSecret A senha para a Entidade de Serviço do Azure.
  3. Salve o arquivo, feche a janela do PowerShell e abra uma nova janela do Powershell do administrador. Navegue de volta para o C:\ManufacturingOntologies-main\Deployment diretório e execute SetupArc.

Agora você pode gerenciar seu cluster Kubernetes a partir da nuvem por meio da instância do Azure Arc recém-implantada. No portal do Azure, navegue até a instância do Azure Arc e selecione Cargas de trabalho. O token de serviço necessário pode ser recuperado através Get-AksEdgeManagedServiceToken de uma janela do Powershell do administrador em sua máquina virtual.

Captura de ecrã do Azure Arc no portal do Azure.

Implantando operações do Azure IoT na borda

Verifique se você já iniciou a simulação da linha de produção e habilitou o Cluster Kubernetes para gerenciamento por meio do Azure Arc, conforme descrito nos parágrafos anteriores. Depois, siga estes passos:

  1. No portal do Azure, navegue até o Cofre da Chave implantado nesta solução de referência e adicione sua própria identidade às políticas de acesso clicando em Access policies, Create, selecione o Keys, Secrets & Certificate Management modelo, selecione Next, pesquise e selecione sua própria identidade de usuário, selecione Next, deixe a seção Aplicativo em branco, selecione Next e, finalmente Create.
  2. Habilite locais personalizados para seu cluster Kubernetes conectado ao Arc (chamado ontologies_cluster) primeiro fazendo login em sua assinatura do Azure por meio az login de uma janela do PowerShell do administrador e, em seguida, executando az connectedk8s enable-features -n "ontologies_cluster" -g "<resourceGroupName>" --features cluster-connect custom-locations, fornecendo a resourceGroupName partir da solução de referência implantada.
  3. No portal do Azure, implante as Operações IoT do Azure navegando até o cluster kubernetes conectado ao Arc, selecione , ExtensionsAddselecione , selecione Azure IoT Operationse selecione Create. Na página Básico, deixe tudo como está. Na página Configuração, defina como MQ Mode Auto. Não é necessário implantar um PLC (Controlador Lógico Programável) simulado, pois essa solução de referência já contém uma simulação de linha de produção muito mais substancial. Na página Automação, selecione o Cofre da Chave implantado para esta solução de referência e copie o az iot ops init comando gerado automaticamente. Na sua VM implantada, abra uma nova Janela do PowerShell do Administrador, entre na assinatura correta do Azure executando az login e execute o az iot ops init comando com os argumentos do portal do Azure. Quando o comando for concluído, selecione Next e feche o assistente.

Configurando a segurança e a conectividade do OPC UA para operações do Azure IoT

Certifique-se de que implantou com êxito as Operações IoT do Azure e todas as cargas de trabalho do Kubernetes estão ativas e em execução navegando até o recurso Kubernetes habilitado para Arc no portal do Azure.

  1. No portal do Azure, navegue até o Armazenamento do Azure implantado nesta solução de referência, abra o Storage browser e .Blob containers Aqui você pode acessar o armazenamento de certificados OPC UA baseado em nuvem usado nesta solução. O Azure IoT Operations usa o Azure Key Vault como o armazenamento de certificados OPC UA baseado em nuvem, portanto, os certificados precisam ser copiados:
    1. Nos contêineres de Blob do navegador de Armazenamento do Azure, para cada linha de produção simulada, navegue até a pasta app/pki/trusted/certs, selecione o arquivo de certificado de montagem, empacotamento e teste e baixe-o.
    2. Entre em sua assinatura do Azure por meio az login de uma janela do PowerShell do administrador e execute az keyvault secret set --name "<stationName>-der" --vault-name <keyVaultName> --file .<stationName>.der --encoding hex --content-type application/pkix-cert, fornecendo a keyVaultName e stationName de cada uma das 6 estações para as quais você baixou um arquivo .der cert na etapa anterior.
  2. Na VM implantada, abra um prompt de comando do Windows e execute kubectl apply -f secretsprovider.yaml com o arquivo de recurso do provedor de segredos atualizado fornecido no diretório, fornecendo o C:\ManufacturingOntologies-main\Tools\FactorySimulation\Station nome do Cofre da Chave, a ID do locatário do Azure e os nomes e aliases do arquivo cert da estação que você carregou no Cofre da Chave do Azure anteriormente.
  3. Em um navegador da Web, entre no https://iotoperations.azure.com, escolha o diretório do Azure certo (canto superior direito) e comece a criar ativos a partir da simulação da linha de produção. A solução vem com duas linhas de produção (Munique e Seattle) compostas por três estações cada (montagem, teste e embalagem):
    1. Para os pontos finais do ativo, digite opc.tcp://assembly.munich no campo URL do OPC UA Broker para a estação de montagem da linha de produção de Munique, etc. Selecione Do not use transport authentication certificate (A autenticação mútua baseada em certificado OPC UA entre as Operações IoT do Azure e qualquer servidor OPC UA conectado ainda está sendo usada).
    2. Para as tags de ativos, selecione Import CSV file e abra o StationTags.csv arquivo localizado no C:\ManufacturingOntologies-main\Tools\FactorySimulation\Station diretório.
  4. No portal do Azure, navegue até o Armazenamento do Azure implantado nesta solução de referência, abra o Storage browser e .Blob containers Para cada linha de produção simulada, navegue até a app/pki/rejected/certs pasta e baixe o arquivo de certificado do Azure IoT Operations. Em seguida, exclua o arquivo. Navegue até a app/pki/trusted/certs pasta e carregue o arquivo de certificado do Azure IoT Operations nesse diretório.
  5. Na VM implantada, abra um prompt de comando do Windows e reinicie a simulação da linha de produção navegando até o C:\ManufacturingOntologies-main\Tools\FactorySimulation diretório e execute o comando StopSimulation , seguido pelo comando StartSimulation .
  6. Siga as instruções descritas aqui para verificar se os dados estão fluindo da simulação da linha de produção.
  7. Como última etapa, conecte as Operações IoT do Azure aos Hubs de Eventos implantados nesta solução de referência, conforme descrito aqui.

Monitoramento de condições de casos de uso, cálculo de OEE, deteção de anomalias e previsão no Azure Data Explorer

Você também pode visitar a documentação do Azure Data Explorer para saber como criar painéis sem código para monitoramento de condições, previsões de rendimento ou manutenção ou deteção de anomalias. Fornecemos um painel de exemplo aqui para você implantar no Painel ADX seguindo as etapas descritas aqui. Após a importação, você precisa atualizar a fonte de dados do painel especificando o ponto de extremidade HTTPS da instância do cluster do servidor ADX no formato https://ADXInstanceName.AzureRegion.kusto.windows.net/ no canto superior direito do painel.

Captura de ecrã de um dashboard do Azure Data Explorer.

Nota

Se você quiser exibir o OEE para um turno Time Range específico, selecione Custom Time Range no menu suspenso no canto superior esquerdo do Painel ADX e insira a data e a hora do início ao fim do turno em que está interessado.

Renderizar o gráfico de modelo Unified NameSpace (UNS) e ISA-95 integrado no Kusto Explorer

Esta solução de referência implementa um Unified NameSapce (UNS), com base nos metadados OPC UA enviados para a base de dados de séries cronológicas na nuvem (Azure Data Explorer). Esses metadados OPC UA também incluem a hierarquia de ativos ISA-95. O gráfico resultante pode ser facilmente visualizado na ferramenta Kusto Explorer disponível para download aqui.

Adicione uma nova conexão à sua instância do Azure Data Explorer implantada nesta solução de referência e execute a seguinte consulta no 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

Para obter melhores resultados, altere a Layout opção para Grouped.

Gráfico que mostra uma hierarquia de ativos ISA-95.

Usar o Serviço Azure Managed Grafana

Você também pode usar o Grafana para criar um painel no Azure para a solução descrita neste artigo. O Grafana é usado na fabricação para criar painéis que exibem dados em tempo real. O Azure oferece um serviço chamado Azure Managed Grafana. Com isso, você pode criar painéis na nuvem. Neste manual de configuração, você habilita o Grafana no Azure e cria um painel com dados consultados do Azure Data Explorer e do serviço Azure Digital Twins, usando os dados simulados da linha de produção dessa solução de referência.

A captura de tela a seguir mostra o painel:

Captura de tela que mostra um painel do Grafana.

Habilitar o Serviço Azure Managed Grafana

  1. Vá para o portal do Azure e procure o serviço 'Grafana' e selecione o serviço 'Azure Managed Grafana'.

    Captura de tela da ativação do Grafana no Marketplace.

  2. Dê um nome à sua instância e deixe as opções padrão ativadas - e crie o serviço.

  3. Depois que o serviço for criado, navegue até a URL onde você acessa sua instância do Grafana. Pode encontrar o URL na página inicial do serviço.

Adicionar uma nova fonte de dados no Grafana

Após o seu primeiro início de sessão, terá de adicionar uma nova origem de dados ao Azure Data Explorer.

  1. Navegue até 'Configuração' e adicione uma nova fonte de dados.

  2. Procure o Azure Data Explorer e selecione o serviço.

  3. Configure sua conexão e use o registro do aplicativo (siga o manual fornecido na parte superior desta página).

  4. Salve e teste sua conexão na parte inferior da página.

Importar um painel de exemplo

Agora você está pronto para importar o painel de exemplo fornecido.

  1. Faça o download do painel de exemplo aqui: Exemplo de painel de fabricação do Grafana.

  2. Vá a 'Dashboard' e selecione 'Importar'.

  3. Selecione a fonte que descarregou e selecione em 'Guardar'. Você recebe um erro na página, porque duas variáveis ainda não estão definidas. Vá para a página de configurações do painel.

  4. Selecione à esquerda em 'Variáveis' e atualize as duas URLs com a URL do seu Serviço de Gêmeos Digitais do Azure.

  5. Navegue de volta ao painel e pressione o botão de atualização. Agora você deve ver os dados (não se esqueça de pressionar o botão Salvar no painel).

    A variável de localização na parte superior da página é preenchida automaticamente com dados dos Gêmeos Digitais do Azure (os nós de área do ISA95). Aqui você pode selecionar os diferentes locais e ver os diferentes pontos de dados de cada fábrica.

  6. Se os dados não estiverem aparecendo no seu painel, navegue até os painéis individuais e veja se a fonte de dados correta está selecionada.

Configurar alertas

Dentro do Grafana, também é possível criar alertas. Neste exemplo, criamos um alerta de baixo OEE para uma das linhas de produção.

  1. Inicie sessão no seu serviço Grafana e selecione Regras de alerta no menu.

    Captura de ecrã que mostra a navegação para alertas.

  2. Selecione 'Criar regra de alerta'.

    Captura de tela que mostra como criar uma regra de alerta.

  3. Dê um nome ao seu alerta e selecione 'Azure Data Explorer' como fonte de dados. Selecione a consulta no painel de navegação.

    Captura de ecrã a mostrar a criação de uma consulta de alerta.

  4. No campo de consulta, insira a seguinte consulta. Neste exemplo, usamos a linha de produção 'Seattle'.

    let oee = CalculateOEEForStation("assembly", "seattle", 6, 6);
    print round(oee * 100, 2)
    
  5. Selecione 'tabela' como saída.

  6. Role para baixo até a próxima seção. Aqui, você configura o limite de alerta. Neste exemplo, usamos 'abaixo de 10' como limite, mas em ambientes de produção, esse valor pode ser maior.

    Captura de tela que mostra um alerta de limite.

  7. Selecione a pasta onde deseja salvar seus alertas e configure o 'Comportamento de avaliação de alerta'. Selecione a opção 'a cada 2 minutos'.

  8. Selecione o botão 'Salvar e sair'.

Na visão geral dos seus alertas, agora você pode ver um alerta sendo acionado quando seu OEE estiver abaixo de '10'.

Captura de tela que mostra uma visão geral do alerta.

Você pode integrar essa configuração com, por exemplo, o Microsoft Dynamics Field Services.

Conectando a solução de referência ao Microsoft Power BI

Para conectar a solução de referência do Power BI, você precisa acessar uma assinatura do Power BI.

Conclua os seguintes passos:

  1. Instale a aplicação Power BI Desktop a partir daqui.

  2. Entre no aplicativo Power BI Desktop usando o usuário com acesso à assinatura do Power BI.

  3. No portal do Azure, navegue até sua instância de banco de dados do Azure Data Explorer (ontologies) e adicione Database Admin permissões a um usuário do Azure Ative Directory com acesso a apenas uma única assinatura do Azure, especificamente a assinatura usada para sua instância implantada desta solução de referência. Crie um novo usuário no Azure Ative Directory, se necessário.

  4. No Power BI, crie um novo relatório e selecione dados de séries cronológicas do Azure Data Explorer como uma fonte de dados via Get data -Azure> ->Azure Data Explorer (Kusto).

  5. Na janela pop-up, insira o ponto de extremidade do Azure Data Explorer da sua instância (por exemplo https://erichbtest3adx.eastus2.kusto.windows.net), o nome do banco de dados (ontologies) e a seguinte consulta:

    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. Selecione Load. Isso importa o tempo de ciclo real da estação de montagem da linha de produção de Munique para a última hora.

  7. Quando solicitado, faça logon no Azure Data Explorer usando o usuário do Azure Ative Directory que você deu permissão para acessar o banco de dados do Azure Data Explorer anteriormente.

  8. Data viewNo , selecione a coluna NodeValue e selecione Don't summarize no item de Summarization menu.

  9. Mude para o Report view.

  10. Em Visualizations, selecione a Line Chart visualização.

  11. Em Visualizations, mova o Timestamp Data da origem para o X-axis, selecione sobre ele e selecione Timestamp.

  12. Em Visualizations, mova o NodeValue Data da origem para o Y-axis, selecione sobre ele e selecione Median.

  13. Salve seu novo relatório.

    Nota

    Você pode adicionar outros dados do Azure Data Explorer ao seu relatório da mesma forma.

    Captura de ecrã de uma vista do Power BI.

Conectando a solução de referência ao Microsoft Dynamics 365 Field Service

Essa integração mostra os seguintes cenários:

  • Carregar ativos da solução de referência Manufacturing Ontologies para o Dynamics 365 Field Service.
  • Crie alertas no Dynamics 365 Field Service quando um determinado limite nos dados de telemetria da solução de referência de Ontologias de Fabricação for atingido.

A integração usa o Azure Logics Apps. Com os Aplicativos Lógicos, os aplicativos e serviços empresariais podem ser conectados por meio de fluxos de trabalho sem código. Buscamos informações do Azure Data Explorer e acionamos ações no Dynamics 365 Field Service.

Primeiro, se você ainda não for um cliente do Dynamics 365 Field Service, ative uma avaliação de 30 dias aqui. Lembre-se de usar a mesma ID do Microsoft Entra (anteriormente Azure Ative Directory) usada durante a implantação da solução de referência Ontologias de Fabricação. Caso contrário, você precisaria configurar a autenticação entre locatários que não faz parte dessas instruções!

Criar um fluxo de trabalho do Aplicativo Lógico do Azure para criar ativos no Dynamics 365 Field Service

Vamos começar com o carregamento de ativos das Ontologias de Fabricação no Dynamics 365 Field Service:

  1. Vá para o portal do Azure e crie um novo Aplicativo Lógico.

  2. Dê um nome ao Aplicativo Lógico do Azure, coloque-o no mesmo grupo de recursos que a solução de referência Ontologias de Fabricação.

  3. Selecione em 'Fluxos de trabalho'.

  4. Dê um nome ao seu fluxo de trabalho - para este cenário, usamos o tipo stateful, porque os ativos não são fluxos de dados.

  5. Crie um novo gatilho. Começamos com a criação de um gatilho de 'Recorrência'. Isso verifica o banco de dados todos os dias se novos ativos são criados. Você pode mudar isso para acontecer com mais frequência.

  6. Em ações, procure Azure Data Explorer e selecione o Run KQL query comando. Dentro desta consulta, verificamos que tipo de ativos temos. Use a seguinte consulta para obter ativos e colá-la no campo de consulta:

    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. Para obter seus dados de ativos no Dynamics 365 Field Service, você precisa se conectar ao Microsoft Dataverse. Conecte-se à sua instância do Dynamics 365 Field Service e use a seguinte configuração:

    • Use o nome da tabela 'Ativos do cliente'
    • Coloque o 'AssetName' no campo Nome
  8. Salve seu fluxo de trabalho e execute-o. Você verá em alguns segundos depois que novos ativos são criados no Dynamics 365 Field Service.

Criar um fluxo de trabalho do Aplicativo Lógico do Azure para criar alertas no Dynamics 365 Field Service

Esse fluxo de trabalho cria alertas no Dynamics 365 Field Service, especificamente quando um determinado limite de FaultyTime em um ativo da solução de referência Manufacturing Ontologies é atingido.

  1. Primeiro, precisamos criar uma função do Azure Data Explorer para obter os dados certos. Vá para o painel de consulta do Azure Data Explorer no portal do Azure e execute o seguinte código para criar uma função FaultyFieldAssets:

    Captura de ecrã a mostrar a criação de uma consulta ADX de função.

    .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. Crie um novo fluxo de trabalho no Aplicativo Lógico do Azure. Crie um gatilho de 'Recorrência' para iniciar - a cada 3 minutos. Crie como ação 'Azure Data Explorer' e selecione Executar Consulta KQL.

  3. Insira a URL do Cluster do Azure Data Explorer, selecione seu banco de dados e use o nome da função criada na etapa 1 como a consulta.

  4. Selecione Microsoft Dataverse como ação.

  5. Execute o fluxo de trabalho e veja novos alertas sendo gerados no painel do Dynamics 365 Field Service:

    Captura de ecrã de alertas no Dynamics 365 FS.