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=true
apenas .
² 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.
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 comopc.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
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:
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.
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-asset
e 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.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\"……