Compartilhar via


Descobrir fontes de dados OPC UA usando os serviços Akri

Importante

O recurso Pré-visualização de Operações do Azure IoT — habilitado pelo Azure Arc — está atualmente em VERSÃO PRÉVIA. Você não deve usar esse software em versão prévia em ambientes de produção.

Você precisará implantar uma nova instalação do Azure IoT Operations quando uma versão geralmente disponível for disponibilizada, você não poderá atualizar uma instalação de visualização.

Veja os Termos de Uso Complementares para Versões Prévias do Microsoft Azure para obter termos legais que se aplicam aos recursos do Azure que estão em versão beta, versão prévia ou que, de outra forma, ainda não foram lançados em disponibilidade geral.

Nesse artigo, você aprende como descobrir fontes de dados OPC UA automaticamente. Depois de implementar a Pré-visualização de Operações do Azure IoT, configure a Pré-visualização dos serviços Akri para descobrir fontes de dados OPC UA na borda. Os serviços Akri criam recursos personalizados no seu cluster Kubernetes que representam as fontes de dados que eles descobrem. A capacidade de descobrir fontes de dados OPC UA elimina a necessidade de configurá-las manualmente usando a interface do usuário da Web da experiência das operações.

Importante

Atualmente, não é possível utilizar o Registo de Dispositivos Azure para gerir os ativos que os serviços Akri descobrem e criam.

Os serviços Akri permitem detectar e criar ativos no espaço de endereço de um servidor OPC UA. A detecção de ativos OPC UA gera AssetType e Asset recursos personalizados para ativos compatíveis com a especificação OPC UA Device Integration (DI).

Pré-requisitos

  • Instale a versão prévia das operações do Azure IoT.

  • Verifique se os pods dos serviços Akri estão configurados corretamente executando o seguinte comando:

    kubectl get pods -n azure-iot-operations
    

    A saída inclui uma linha que mostra que o agente Akri e os pods de descoberta estão em execução:

    NAME                                             READY   STATUS    RESTARTS   AGE
    aio-akri-agent-daemonset-hwpc7                   1/1     Running   0          17mk0s
    aio-opc-asset-discovery-wzlnj                    1/1     Running   0          8m28s
    

Configurar o manipulador de descoberta do agente do usuário OPC

Para configurar o manipulador de descoberta OPC UA para detecção de ativos, crie um arquivo de configuração YAML que contenha os valores descritos nesta seção:

Nome Obrigatório Datatype Padrão Comentar
EndpointUrl true Cadeia de caracteres nulo A URL do ponto de extremidade do OPC UA a ser usada para a descoberta de ativos
AutoAcceptUntrustedCertificates verdadeiro ¹ Boolean false O cliente deve aceitar automaticamente certificados não confiáveis? Um certificado só poderá ser aceito automaticamente como confiável se nenhum erro não suprimível ocorrer durante a validação da cadeia. Por exemplo, um certificado com cadeia incompleta não é aceito.
UseSecurity verdadeiro ¹ Booliano true O cliente deve usar uma conexão segura?
UserName false Cadeia de caracteres nulo O nome de usuário para autenticação do usuário. ²
Password falso Cadeia de caracteres nulo A senha para autenticação do usuário. ²

¹ A versão atual do manipulador de descoberta oferece suporte apenas a UseSecurity=false e requer autoAcceptUntrustedCertificates=true.
² Uma implementação temporária até que os serviços Akri possam transmitir segredos do Kubernetes.

O exemplo a seguir demonstra a descoberta de um servidor OPC PLC. Você pode adicionar os parâmetros de ativos para vários servidores OPC PLC.

  1. Para criar o arquivo de configuração YAML, copie e cole o conteúdo a seguir em um novo arquivo e salve-o como opcua-configuration.yaml:

    Se você estiver usando o servidor PLC simulado que foi implantado com o início rápido de Operações do Azure IoT, não será necessário alterar o endpointUrl. Se você tiver seus próprios servidores OPC UA em execução ou estiver usando os servidores PLC simulados implantados no Azure, adicione sua URL de ponto de extremidade de acordo. Os URLs de ponto de extremidade de descoberta se parecem com opc.tcp://<FQDN>:50000/. Para encontrar os FQDNs dos seus servidores OPC PLC, vá até a sua implantação no portal do Azure. Para cada servidor, copie e cole o valor FQDN nos URLs do seu ponto de extremidade.

    apiVersion: akri.sh/v0
    kind: Configuration
    metadata:
      name: aio-akri-opcua-asset
    spec:
      discoveryHandler: 
        name: opcua-asset
        discoveryDetails: "opcuaDiscoveryMethod:\n  - asset:\n      endpointUrl: \"	opc.tcp://opcplc-000000:50000\"\n      useSecurity: false\n      autoAcceptUntrustedCertificates: true\n"
      brokerProperties: {}
      capacity: 1
    
  2. Para aplicar a configuração, execute o seguinte comando:

    kubectl apply -f opcua-configuration.yaml -n azure-iot-operations
    

Dica

Em uma implantação padrão de Operações do Azure IoT, o manipulador de descoberta de UA do OPC já está configurado para descobrir o servidor PLC simulado. Se você quiser descobrir ativos conectados a servidores OPC UA adicionais, poderá adicioná-los ao arquivo de configuração.

Verificar a configuração

Para confirmar se o contêiner de descoberta de ativos está configurado e em execução:

  1. Use o seguinte comando para verificar os logs do pod:

    kubectl logs <insert aio-opc-asset-discovery pod name> -n azure-iot-operations
    

    Um log do pod aio-opc-asset-discovery indica após alguns segundos que o manipulador de descoberta se registrou nos serviços Akri:

    2024-08-01T15:04:12.948Z aio-opc-asset-discovery-4nsgs - OPC UA SDK 1.5.374.70 from 07/20/2024 07:37:16
    2024-08-01T15:04:12.973Z aio-opc-asset-discovery-4nsgs - OPC UA SDK informational version: 1.5.374.70+1ee3beb87993019de4968597d17cb54d5a4dc3c8
    2024-08-01T15:04:12.976Z aio-opc-asset-discovery-4nsgs - Akri agent registration enabled: True
    2024-08-01T15:04:13.475Z aio-opc-asset-discovery-4nsgs - Hosting starting
    2024-08-01T15:04:13.547Z aio-opc-asset-discovery-4nsgs - Overriding HTTP_PORTS '8080' and HTTPS_PORTS ''. Binding to values defined by URLS instead 'http://+:8080'.
    2024-08-01T15:04:13.774Z aio-opc-asset-discovery-4nsgs - Now listening on: http://:8080
    2024-08-01T15:04:13.774Z aio-opc-asset-discovery-4nsgs - Application started. Press Ctrl+C to shut down.
    2024-08-01T15:04:13.774Z aio-opc-asset-discovery-4nsgs - Hosting environment: Production
    2024-08-01T15:04:13.774Z aio-opc-asset-discovery-4nsgs - Content root path: /app
    2024-08-01T15:04:13.774Z aio-opc-asset-discovery-4nsgs - Hosting started
    2024-08-01T15:04:13.881Z aio-opc-asset-discovery-4nsgs - Registering with Agent as HTTP endpoint using own IP from the environment variable POD_IP: 10.42.0.245
    2024-08-01T15:04:14.875Z aio-opc-asset-discovery-4nsgs - Registered with the Akri agent with name opcua-asset for http://10.42.0.245:8080 with type Network and shared True
    2024-08-01T15:04:14.877Z aio-opc-asset-discovery-4nsgs - Successfully re-registered OPC UA Asset Discovery Handler with the Akri agent
    2024-08-01T15:04:14.877Z aio-opc-asset-discovery-4nsgs - Press CTRL+C to exit 
    

    Após cerca de um minuto, os serviços Akri emitem a primeira solicitação de descoberta com base na configuração:

    2024-08-01T15:04:15.280Z aio-opc-asset-discovery-4nsgs [opcuabroker@311 SpanId:6d3db9751eebfadc, TraceId:e5594cbaf3993749e92b45c88c493377, ParentId:0000000000000000 ConnectionId:0HN5I7CQJPJL0 RequestPath:/v0.DiscoveryHandler/Discover RequestId:0HN5I7CQJPJL0:00000001] - Reading message.
    2024-08-01T15:04:15.477Z aio-opc-asset-discovery-4nsgs [opcuabroker@311 SpanId:6d3db9751eebfadc, TraceId:e5594cbaf3993749e92b45c88c493377, ParentId:0000000000000000 ConnectionId:0HN5I7CQJPJL0 RequestPath:/v0.DiscoveryHandler/Discover RequestId:0HN5I7CQJPJL0:00000001] - Received discovery request from ipv6:[::ffff:10.42.0.241]:48638
    2024-08-01T15:04:15.875Z aio-opc-asset-discovery-4nsgs [opcuabroker@311 SpanId:6d3db9751eebfadc, TraceId:e5594cbaf3993749e92b45c88c493377, ParentId:0000000000000000 ConnectionId:0HN5I7CQJPJL0 RequestPath:/v0.DiscoveryHandler/Discover RequestId:0HN5I7CQJPJL0:00000001] - Start asset discovery
    2024-08-01T15:04:15.882Z aio-opc-asset-discovery-4nsgs [opcuabroker@311 SpanId:6d3db9751eebfadc, TraceId:e5594cbaf3993749e92b45c88c493377, ParentId:0000000000000000 ConnectionId:0HN5I7CQJPJL0 RequestPath:/v0.DiscoveryHandler/Discover RequestId:0HN5I7CQJPJL0:00000001] - Discovering OPC UA     opc.tcp://opcplc-000000:50000 using Asset Discovery
    2024-08-01T15:04:15.882Z aio-opc-asset-discovery-4nsgs [opcuabroker@311 SpanId:6d3db9751eebfadc, TraceId:e5594cbaf3993749e92b45c88c493377, ParentId:0000000000000000 ConnectionId:0HN5I7CQJPJL0 RequestPath:/v0.DiscoveryHandler/Discover RequestId:0HN5I7CQJPJL0:00000001] - Selected AutoAcceptUntrustedCertificates mode: False
    

    Após a conclusão da descoberta, o manipulador de descoberta envia o resultado de volta aos serviços Akri para criar um recurso personalizado de instância Akri com informações de ativos e variáveis observáveis. O manipulador de descoberta repete a descoberta a cada 10 minutos para detectar quaisquer alterações no servidor.

  2. Para exibir as instâncias do Akri descobertas, execute o seguinte comando:

    kubectl get akrii -n azure-iot-operations
    

    A saída do comando anterior se parece com o seguinte exemplo. Talvez você precise aguardar alguns segundos para que a instância do Akri seja criada:

    NAME                      CONFIG             SHARED   NODES                          AGE
    akri-opcua-asset-dbdef0   akri-opcua-asset   true     ["k3d-k3s-default-server-0"]   24h
    

    O conector do supervisor do OPC UA observa novos recursos personalizados da instância do Akri do tipo opc-ua-asset e gera os tipos de ativos iniciais e os recursos personalizados do ativo para eles. Você pode modificar recursos personalizados de ativos adicionando configurações como publicação estendida para mais pontos de dados ou conector para configurações de observabilidade do OPC UA.

  3. Para confirmar se a instância Akri está conectada corretamente ao conector para OPC UA, execute o seguinte comando. Substitua o espaço reservado pelo nome da instância Akri que foi incluída na saída do comando anterior:

    kubectl get akrii <AKRI_INSTANCE_NAME> -n azure-iot-operations -o json
    

    A saída do comando inclui uma seção semelhante ao exemplo a seguir. O snippet mostra os valores da instância brokerProperties do Akri e confirma que o conector para OPC UA está conectado.

    "spec": {
    
            "brokerProperties": {
                "ApplicationUri": "Boiler #2",
                "AssetEndpointProfile": "{\"spec\":{\"uuid\":\"opc-ua-broker-opcplc-000000-azure-iot-operation\"……