Dela via


Identifiera OPC UA-datakällor med hjälp av Akri-tjänsterna

Viktigt!

Förhandsversion av Azure IoT Operations – aktiverad av Azure Arc finns för närvarande i FÖRHANDSVERSION. Du bör inte använda den här förhandsgranskningsprogramvaran i produktionsmiljöer.

Du måste distribuera en ny Azure IoT Operations-installation när en allmänt tillgänglig version görs tillgänglig. Du kommer inte att kunna uppgradera en förhandsversionsinstallation.

Juridiska villkor för Azure-funktioner i betaversion, förhandsversion eller som av någon annan anledning inte har gjorts allmänt tillgängliga ännu finns i kompletterande användningsvillkor för Microsoft Azure-förhandsversioner.

I den här artikeln lär du dig att identifiera OPC UA-datakällor automatiskt. När du har distribuerat Förhandsversionen av Azure IoT Operations konfigurerar du Akri-tjänsterna för att identifiera OPC UA-datakällor vid gränsen. Akri-tjänsterna skapar anpassade resurser i ditt Kubernetes-kluster som representerar de datakällor som identifieras. Möjligheten att identifiera OPC UA-datakällor tar bort behovet av att konfigurera dem manuellt med hjälp av webbgränssnittet för driftsmiljön.

Viktigt!

För närvarande kan du inte använda Azure Device Registry för att hantera de tillgångar som Akri-tjänsterna identifierar och skapar.

Med Akri-tjänsterna kan du identifiera och skapa tillgångar i adressutrymmet på en OPC UA-server. OPC UA-tillgångsidentifieringen AssetType genererar och Asset anpassade resurser för OPC UA Device Integration (DI) specifikationskompatibla tillgångar.

Förutsättningar

  • Installera Förhandsversionen av Azure IoT Operations.

  • Kontrollera att Akri-tjänstpoddarna är korrekt konfigurerade genom att köra följande kommando:

    kubectl get pods -n azure-iot-operations
    

    Utdata innehåller en rad som visar att Akri-agenten och identifieringspoddarna körs:

    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
    

Konfigurera OPC UA-identifieringshanteraren

Om du vill konfigurera OPC UA-identifieringshanteraren för tillgångsidentifiering skapar du en YAML-konfigurationsfil som innehåller de värden som beskrivs i det här avsnittet:

Name Obligatorisk Datatyp Standardvärde Kommentar
EndpointUrl true String NULL OPC UA-slutpunkts-URL:en som ska användas för tillgångsidentifiering
AutoAcceptUntrustedCertificates sant ¹ Boolean falskt Ska klientens autoaccepta ej betrodda certifikat? Ett certifikat kan bara godkännas automatiskt som betrott om inga icke-övertryckbara fel inträffade under kedjevalidering. Ett certifikat med ofullständig kedja accepteras till exempel inte.
UseSecurity sant ¹ Booleskt true Ska klienten använda en säker anslutning?
UserName falskt String NULL Användarnamnet för användarautentisering. ²
Password falskt String NULL Lösenordet för användarautentisering. ²

¹ Den aktuella versionen av identifieringshanteraren stöder UseSecurity=false och kräver autoAcceptUntrustedCertificates=truebara .
² En tillfällig implementering tills Akri-tjänsterna kan skicka Kubernetes-hemligheter.

I följande exempel visas identifiering av en OPC PLC-server. Du kan lägga till tillgångsparametrarna för flera OPC PLC-servrar.

  1. Om du vill skapa YAML-konfigurationsfilen kopierar du och klistrar in följande innehåll i en ny fil och sparar den som opcua-configuration.yaml:

    Om du använder den simulerade PLC-servern som distribuerades med Azure IoT Operations-snabbstarten endpointUrlbehöver du inte ändra . Om du har egna OPC UA-servrar som körs eller använder de simulerade PLC-servrarna som distribueras i Azure lägger du till din slutpunkts-URL i enlighet med detta. Url:er för identifieringsslutpunkter ser ut som opc.tcp://<FQDN>:50000/. Om du vill hitta FQDN för dina OPC PLC-servrar går du till distributionen i Azure-portalen. För varje server kopierar och klistrar du in FQDN-värdet i dina slutpunkts-URL:er.

    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. Kör följande kommando för att tillämpa konfigurationen:

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

Dricks

I en standarddistribution av Azure IoT Operations är OPC UA-identifieringshanteraren redan konfigurerad för att identifiera den simulerade PLC-servern. Om du vill identifiera tillgångar som är anslutna till ytterligare OPC UA-servrar kan du lägga till dem i konfigurationsfilen.

Kontrollera konfigurationen

Så här bekräftar du att containern för tillgångsidentifiering är konfigurerad och körs:

  1. Använd följande kommando för att kontrollera poddloggarna:

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

    En logg från aio-opc-asset-discovery podden anger efter några sekunder att identifieringshanteraren registrerade sig med Akri-tjänsterna:

    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 
    

    Efter ungefär en minut utfärdar Akri-tjänsterna den första identifieringsbegäran baserat på konfigurationen:

    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
    

    När identifieringen är klar skickar identifieringshanteraren resultatet tillbaka till Akri-tjänsterna för att skapa en anpassad Akri-instansresurs med tillgångsinformation och observerbara variabler. Identifieringshanteraren upprepar identifieringen var 10:e minut för att identifiera eventuella ändringar på servern.

  2. Om du vill visa de identifierade Akri-instanserna kör du följande kommando:

    kubectl get akrii -n azure-iot-operations
    

    Utdata från föregående kommando ser ut som i följande exempel. Du kan behöva vänta några sekunder tills Akri-instansen har skapats:

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

    Anslutningsappen för OPC UA-övervakaren söker efter nya anpassade Akri-instansresurser av typen opc-ua-assetoch genererar de första tillgångstyperna och anpassade resurser för dem. Du kan ändra anpassade resurser för tillgångar genom att lägga till inställningar som utökad publicering för fler datapunkter eller anslutningsprogram för OPC UA-observabilitetsinställningar.

  3. Kontrollera att Akri-instansen är korrekt ansluten till anslutningsappen för OPC UA genom att köra följande kommando. Ersätt platshållaren med namnet på akri-instansen som ingick i utdata från föregående kommando:

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

    Kommandoutdata innehåller ett avsnitt som ser ut som i följande exempel. Kodfragmentet visar Akri-instansvärdena brokerProperties och bekräftar att anslutningsappen för OPC UA är ansluten.

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