Compartir a través de


Detección de orígenes de datos de OPC UA mediante servicios Akri

Importante

Operaciones de IoT de Azure, habilitado por Azure Arc, está actualmente en VERSIÓN PRELIMINAR. No se debería usar este software en versión preliminar en entornos de producción.

Tendrá que implementar una nueva instalación de Azure IoT Operations cuando esté disponible una versión disponible con carácter general, no podrá actualizar una instalación en versión preliminar.

Consulte Términos de uso complementarios para las versiones preliminares de Microsoft Azure para conocer los términos legales que se aplican a las características de Azure que se encuentran en la versión beta, en versión preliminar o que todavía no se han publicado para que estén disponibles con carácter general.

En este artículo, aprenderá a detectar automáticamente orígenes de datos de OPC UA. Después de implementar la versión preliminar de Operaciones de IoT de Azure, configure los servicios Akri para descubrir orígenes de datos OPC UA en el perímetro. Los servicios Akri crean recursos personalizados en el clúster de Kubernetes que representan los orígenes de datos que descubre. La capacidad de descubrir orígenes de datos de OPC UA elimina la necesidad de configurarlos manualmente mediante la interfaz de usuario web de la experiencia de operaciones.

Importante

Actualmente, no puede usar Registro de dispositivos de Azure para administrar los recursos que los servicios Akri descubren y crean.

Los servicios Akri le permiten detectar y crear recursos en el espacio de direcciones de un servidor OPC UA. La detección de recursos de OPC UA genera recursos personalizados AssetType y Asset para Especificación de integración de dispositivos OPC UA (DI) recursos compatibles.

Requisitos previos

  • Instale la versión preliminar de operaciones de Azure IoT.

  • Para comprobar que los pods de servicios Akri están configurados correctamente, ejecute el comando siguiente:

    kubectl get pods -n azure-iot-operations
    

    La salida incluye una línea en la que se muestra el agente de Akri y los pods de detección en ejecución:

    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
    

Configuración del controlador de detección de OPC UA

Para configurar el controlador de detección de OPC UA para la detección de recursos, cree un archivo de configuración de YAML que contenga los valores descritos en esta sección:

Nombre Obligatorio Datatype Valor predeterminado Comentario
EndpointUrl true String null Dirección URL del punto de conexión de OPC UA que se va a usar para la detección de recursos
AutoAcceptUntrustedCertificates Verdad ¹ Booleano false ¿Debe el cliente aceptar automáticamente certificados que no son de confianza? Un certificado solo se puede aceptar automáticamente como de confianza si no se han producido errores no suprimibles durante la validación de la cadena. Por ejemplo, no se acepta un certificado con cadena incompleta.
UseSecurity Verdad ¹ Boolean true ¿El cliente debe usar una conexión segura?
UserName false String null Nombre de usuario para la autenticación de usuario. ²
Password false String null Contraseña para la autenticación de usuario. ²

¹ La versión actual del controlador de detección solo admite UseSecurity=false y requiere autoAcceptUntrustedCertificates=true.
² Una implementación temporal hasta que los servicios Akri puedan pasar secretos de Kubernetes.

En el ejemplo siguiente se muestra la detección de un servidor OPC PLC. Puede agregar los parámetros de recurso para varios servidores OPC PLC.

  1. Para crear el archivo de configuración de YAML, copie y pegue el siguiente contenido en un nuevo archivo y guárdelo como opcua-configuration.yaml:

    Si usa el servidor PLC simulado que se ha implementado con el inicio rápido de Operaciones de Azure IoT, no es necesario cambiar endpointUrl. Si tiene sus propios servidores OPC UA en ejecución o usa los servidores PLC simulados implementados en Azure, agregue la dirección URL del punto de conexión en consecuencia. Las direcciones URL del punto de conexión de detección tienen un aspecto similar a opc.tcp://<FQDN>:50000/. Para buscar los FQDN de los servidores OPC PLC, vaya a la implementación en Azure Portal. Para cada servidor, copie y pegue el valor de FQDN en las direcciones URL del punto de conexión.

    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 la configuración, ejecute el siguiente comando:

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

Sugerencia

En una implementación predeterminada de Operaciones de IoT de Azure, el controlador de detección de OPC UA ya está configurado para detectar el servidor PLC simulado. Si quiere descubrir recursos conectados a servidores OPC UA adicionales, puede agregarlos al archivo de configuración.

Comprobar la configuración

Para confirmar que el contenedor de detección de recursos está configurado y en ejecución:

  1. Use el comando siguiente para comprobar los registros del pod:

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

    Un registro del pod aio-opc-asset-discovery indica después de unos segundos que el controlador de detección se ha registrado con los servicios 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 
    

    Después de aproximadamente un minuto, los servicios Akri emiten la primera solicitud de detección en función de la configuración:

    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
    

    Una vez que se completa la detección, el controlador de detección devuelve el resultado a los servicios Akri para crear un recurso personalizado de instancia de Akri con información de recursos y variables observables. El controlador de detección repite la detección cada 10 minutos para detectar los cambios en el servidor.

  2. Para ver las instancias de Akri detectadas, ejecute el siguiente comando:

    kubectl get akrii -n azure-iot-operations
    

    La salida del comando anterior es similar al ejemplo siguiente. Es posible que tenga que esperar unos segundos para que se cree la instancia de Akri:

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

    El supervisor del conector para OPC UA supervisa los nuevos recursos personalizados de instancia de Akri de tipo opc-ua-asset, y genera los tipos de recursos iniciales y los recursos personalizados de recursos para ellos. Puede modificar los recursos personalizados de recursos si agrega configuraciones como la publicación extendida para más puntos de datos o la configuración de observabilidad del agente de OPC UA.

  3. Para confirmar que la instancia de Akri se ha conectado correctamente al conector para OPC UA, ejecute el siguiente comando. Reemplace el marcador de posición por el nombre de la instancia de Akri que se incluyó en la salida del comando anterior:

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

    La salida del comando incluye una sección similar al ejemplo siguiente. En el fragmento de código se muestran los valores de la instancia de Akri brokerProperties y se confirma que el conector para OPC UA está conectado.

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