Identifiera OPC UA-datakällor med Azure IoT Akri Preview
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.
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 Förhandsversionen av Azure IoT Akri för att identifiera OPC UA-datakällor vid gränsen. Azure IoT Akri 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 Azure IoT Operations-portalen (förhandsversion).
Viktigt!
För närvarande kan du inte använda Azure Device Registry för att hantera de tillgångar som Azure IoT Akri identifierar och skapar.
Med Azure IoT Akri 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. Information om hur du installerar Azure IoT Operations i demonstrations- och utforskningssyfte finns i Snabbstart: Distribuera Azure IoT Operations Preview till ett Arc-aktiverat Kubernetes-kluster.
Kontrollera att Azure IoT Akri-poddarna är korrekt konfigurerade genom att köra följande kommando:
kubectl get pods -n azure-iot-operations
Utdata innehåller rader som visar att Akri-agenten och identifieringshanterarens poddar körs:
NAME READY STATUS RESTARTS AGE aio-akri-agent-daemonset-hwpc7 1/1 Running 0 17m akri-opcua-asset-discovery-daemonset-dwn2q 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=true
bara .
² En tillfällig implementering tills Azure IoT Akri 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.
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
endpointUrl
behö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 somopc.tcp://<FQDN>:50000/
. Om du vill hitta FQDN:erna 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
Kör följande kommando för att tillämpa konfigurationen:
kubectl apply -f opcua-configuration.yaml -n azure-iot-operations
Kontrollera konfigurationen
Så här bekräftar du att containern för tillgångsidentifiering är konfigurerad och körs:
Använd följande kommando för att kontrollera poddloggarna:
kubectl logs <insert aio-akri-opcua-asset-discovery pod name> -n azure-iot-operations
En logg från
aio-akri-opcua-asset-discovery
podden anger efter några sekunder att identifieringshanteraren registrerade sig med Azure IoT Akri:2023-06-07 10:45:27.395 +00:00 info: OpcUaAssetDetection.Akri.Program[0] Akri OPC UA Asset Detection (0.2.0-alpha.203+Branch.main.Sha.cd4045345ad0d148cca4098b68fc7da5b307ce13) is starting with the process id: 1 2023-06-07 10:45:27.695 +00:00 info: OpcUaAssetDetection.Akri.Program[0] Got IP address of the pod from POD_IP environment variable. 2023-06-07 10:45:28.695 +00:00 info: OpcUaAssetDetection.Akri.Program[0] Registered with Akri system with Name opcua-asset for http://10.1.0.92:80 with type: Network as shared: True 2023-06-07 10:45:28.696 +00:00 info: OpcUaAssetDetection.Akri.Program[0] Press CTRL+C to exit
Efter ungefär en minut utfärdar Azure IoT Akri den första identifieringsbegäran baserat på konfigurationen:
2023-06-07 12:49:17.344 +00:00 dbug: Grpc.AspNetCore.Server.ServerCallHandler[10] => SpanId:603279c62c9ccbb0, TraceId:15ad328e1e803c55bc6731266aae8725, ParentId:0000000000000000 => ConnectionId:0HMR7AMCHHG2G => RequestPath:/v0.DiscoveryHandler/Discover RequestId:0HMR7AMCHHG2G:00000001 Reading message. 2023-06-07 12:49:18.046 +00:00 info: OpcUa.AssetDiscovery.Akri.Services.DiscoveryHandlerService[0] => SpanId:603279c62c9ccbb0, TraceId:15ad328e1e803c55bc6731266aae8725, ParentId:0000000000000000 => ConnectionId:0HMR7AMCHHG2G => RequestPath:/v0.DiscoveryHandler/Discover RequestId:0HMR7AMCHHG2G:00000001 Got discover request opcuaDiscoveryMethod: - asset: endpointUrl: "opc.tcp://opcplc-000000:50000" useSecurity: false autoAcceptUntrustedCertificates: true from ipv6:[::ffff:10.1.7.47]:39708 2023-06-07 12:49:20.238 +00:00 info: OpcUa.AssetDiscovery.Akri.Services.DiscoveryHandlerService[0] => SpanId:603279c62c9ccbb0, TraceId:15ad328e1e803c55bc6731266aae8725, ParentId:0000000000000000 => ConnectionId:0HMR7AMCHHG2G => RequestPath:/v0.DiscoveryHandler/Discover RequestId:0HMR7AMCHHG2G:00000001 Start asset discovery 2023-06-07 12:49:20.242 +00:00 info: OpcUa.AssetDiscovery.Akri.Services.DiscoveryHandlerService[0] => SpanId:603279c62c9ccbb0, TraceId:15ad328e1e803c55bc6731266aae8725, ParentId:0000000000000000 => ConnectionId:0HMR7AMCHHG2G => RequestPath:/v0.DiscoveryHandler/Discover RequestId:0HMR7AMCHHG2G:00000001 Discovering OPC UA endpoint opc.tcp://opcplc-000000:50000 using Asset Discovery ... 2023-06-07 14:20:03.905 +00:00 info: OpcUa.Common.Dtdl.DtdlGenerator[6901] => SpanId:603279c62c9ccbb0, TraceId:15ad328e1e803c55bc6731266aae8725, ParentId:0000000000000000 => ConnectionId:0HMR7AMCHHG2G => RequestPath:/v0.DiscoveryHandler/Discover RequestId:0HMR7AMCHHG2G:00000001 Created DTDL_2 model for boiler_1 with 35 telemetries in 0 ms 2023-06-07 14:20:04.208 +00:00 info: OpcUa.AssetDiscovery.Akri.CustomResources.CustomResourcesManager[0] => SpanId:603279c62c9ccbb0, TraceId:15ad328e1e803c55bc6731266aae8725, ParentId:0000000000000000 => ConnectionId:0HMR7AMCHHG2G => RequestPath:/v0.DiscoveryHandler/Discover RequestId:0HMR7AMCHHG2G:00000001 Generated 1 asset CRs from discoveryUrl opc.tcp://opcplc-000000:50000 2023-06-07 14:20:04.208 +00:00 info: OpcUa.Common.Client.OpcUaClient[1005] => SpanId:603279c62c9ccbb0, TraceId:15ad328e1e803c55bc6731266aae8725, ParentId:0000000000000000 => ConnectionId:0HMR7AMCHHG2G => RequestPath:/v0.DiscoveryHandler/Discover RequestId:0HMR7AMCHHG2G:00000001 Session ns=8;i=1828048901 is closing ... 2023-06-07 14:20:05.002 +00:00 info: OpcUa.AssetDiscovery.Akri.Services.DiscoveryHandlerService[0] => SpanId:603279c62c9ccbb0, TraceId:15ad328e1e803c55bc6731266aae8725, ParentId:0000000000000000 => ConnectionId:0HMR7AMCHHG2G => RequestPath:/v0.DiscoveryHandler/Discover RequestId:0HMR7AMCHHG2G:00000001 Sending response to caller ... 2023-06-07 14:20:05.003 +00:00 dbug: Grpc.AspNetCore.Server.ServerCallHandler[15] => SpanId:603279c62c9ccbb0, TraceId:15ad328e1e803c55bc6731266aae8725, ParentId:0000000000000000 => ConnectionId:0HMR7AMCHHG2G => RequestPath:/v0.DiscoveryHandler/Discover RequestId:0HMR7AMCHHG2G:00000001 Sending message. 2023-06-07 14:20:05.004 +00:00 info: OpcUa.AssetDiscovery.Akri.Services.DiscoveryHandlerService[0] => SpanId:603279c62c9ccbb0, TraceId:15ad328e1e803c55bc6731266aae8725, ParentId:0000000000000000 => ConnectionId:0HMR7AMCHHG2G => RequestPath:/v0.DiscoveryHandler/Discover RequestId:0HMR7AMCHHG2G:00000001 Sent successfully
När identifieringen är klar skickar identifieringshanteraren tillbaka resultatet till Azure IoT Akri 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.
Om du vill visa de identifierade Azure IoT 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:
NAMESPACE NAME CONFIG SHARED NODES AGE azure-iot-operations akri-opcua-asset-dbdef0 akri-opcua-asset true ["my-aio-vm"] 35m
OPC UA Anslut eller-övervakaren bevakar nya anpassade Azure IoT Akri-instansresurser av typen
opc-ua-asset
och genererar de första tillgångstyperna och anpassade resurser för dem. Du kan ändra anpassade resurser genom att lägga till inställningar som utökad publicering för fler datapunkter eller inställningarna för OPC UA Broker-observabilitet.Kontrollera att Akri-instansen är korrekt ansluten till OPC UA Broker 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 OPC UA Broker är ansluten."spec": { "brokerProperties": { "ApplicationUri": "Boiler #2", "AssetEndpointProfile": "{\"spec\":{\"uuid\":\"opc-ua-broker-opcplc-000000-azure-iot-operation\"……
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för