Partilhar via


Descubra as fontes de dados OPC UA usando os serviços Akri

Importante

Azure IoT Operations Preview – habilitado pelo Azure Arc está atualmente em visualização. Não deve utilizar este software de pré-visualização em ambientes de produção.

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

Veja Termos de Utilização Complementares da Pré-visualizações do Microsoft Azure para obter os termos legais que se aplicam às funcionalidades do Azure que estão na versão beta, na pré-visualização ou que ainda não foram lançadas para disponibilidade geral.

Neste artigo, você aprenderá a descobrir fontes de dados OPC UA automaticamente. Depois de implantar o Azure IoT Operations Preview, configure os serviços Akri para descobrir fontes de dados OPC UA na borda. Os serviços Akri criam recursos personalizados em seu cluster Kubernetes que representam as fontes de dados descobertas. 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 de operações.

Importante

Atualmente, você não pode usar o Registro de Dispositivo do Azure para gerenciar os ativos que os serviços Akri descobrem e criam.

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

Pré-requisitos

  • Instale o Azure IoT Operations Preview.

  • Verifique se os pods de 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 OPC UA

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

Nome Obrigatório Datatype Predefinido Comentário
EndpointUrl verdadeiro String nulo A URL do ponto de extremidade OPC UA a ser usada para a descoberta de ativos
AutoAcceptUntrustedCertificates verdadeiro ¹ Booleano false O cliente deve aceitar automaticamente certificados não confiáveis? Um certificado só pode ser aceito automaticamente como confiável se não ocorrerem erros não supressíveis durante a validação da cadeia. Por exemplo, um certificado com cadeia incompleta não é aceito.
UseSecurity verdadeiro ¹ Boolean verdadeiro O cliente deve usar uma conexão segura?
UserName false String nulo O nome de usuário para autenticação de usuário. ²
Password false String nulo A senha para autenticação do usuário. ²

¹ A versão atual do manipulador de descoberta suporta UseSecurity=false e requer autoAcceptUntrustedCertificates=trueapenas .
² Uma implementação temporária até que os serviços Akri possam passar os 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 PLC OPC.

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

    Se você estiver usando o servidor PLC simulado que foi implantado com o Guia de início rápido de operações do Azure IoT, não precisará 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 a URL do ponto de extremidade de acordo. Os URLs de ponto de extremidade de descoberta se parecem com opc.tcp://<FQDN>:50000/. Para localizar os FQDNs dos seus servidores PLC OPC, aceda à sua implementação no portal do Azure. Para cada servidor, copie e cole o valor FQDN em suas URLs de 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
    

Gorjeta

Em uma implantação padrão do Azure IoT Operations, o manipulador de descoberta OPC UA já está configurado para descobrir o servidor PLC simulado. Se quiser descobrir ativos conectados a servidores OPC UA adicionais, você pode 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 aio-opc-asset-discovery pod 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 detetar quaisquer alterações no servidor.

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

    kubectl get akrii -n azure-iot-operations
    

    A saída do comando anterior se parece com o exemplo a seguir. Talvez seja necessário aguardar alguns segundos para que a instância Akri seja criada:

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

    O conector para supervisor OPC UA observa novos recursos personalizados de instância Akri do tipo opc-ua-assete gera os tipos de ativos iniciais e recursos personalizados de ativos 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 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 que se parece com o exemplo a seguir. O trecho mostra os valores da instância brokerProperties 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\"……