Zjišťování zdrojů dat OPC UA pomocí Azure IoT Akri Preview
Důležité
Azure IoT Operations Preview – Služba Azure Arc je aktuálně ve verzi PREVIEW. Tento software ve verzi Preview byste neměli používat v produkčních prostředích.
Právní podmínky, které platí pro funkce Azure, které jsou ve verzi beta, verzi Preview nebo které zatím nejsou veřejně dostupné, najdete v Dodatečných podmínkách použití pro Microsoft Azure verze Preview.
V tomto článku se dozvíte, jak automaticky zjišťovat zdroje dat OPC UA. Po nasazení Azure IoT Operations Preview nakonfigurujete Azure IoT Akri Preview tak, aby na hraničních zařízeních objevila zdroje dat OPC UA. Azure IoT Akri vytváří vlastní prostředky v clusteru Kubernetes, které představují zdroje dat, které zjistí. Možnost zjistit zdroje dat OPC UA eliminuje potřebu je ručně nakonfigurovat pomocí portálu Azure IoT Operations (Preview).
Důležité
V současné době nemůžete azure Device Registry použít ke správě prostředků, které Azure IoT Akri zjišťuje a vytváří.
Azure IoT Akri umožňuje detekovat a vytvářet prostředky v adresních prostorech serveru OPC UA. Detekce prostředků OPC UA generuje AssetType
a Asset
vlastní prostředky pro prostředky kompatibilní se specifikací OPC UA Device Integration (DI).
Požadavky
Nainstalujte Azure IoT Operations Preview. Pokud chcete nainstalovat operace Azure IoT pro demonstrační a průzkumné účely, projděte si rychlý start: Nasazení Azure IoT Operations Preview do clusteru Kubernetes s podporou arc.
Spuštěním následujícího příkazu ověřte, že jsou pody Azure IoT Akri správně nakonfigurované:
kubectl get pods -n azure-iot-operations
Výstup obsahuje řádky, které zobrazují pody agenta Akri a obslužné rutiny zjišťování jsou spuštěné:
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
Konfigurace obslužné rutiny zjišťování OPC UA
Pokud chcete nakonfigurovat obslužnou rutinu zjišťování OPC UA pro detekci prostředků, vytvořte konfigurační soubor YAML, který obsahuje hodnoty popsané v této části:
Název | Povinné | Datatype | Výchozí | Komentář |
---|---|---|---|---|
EndpointUrl |
true | String | null | Adresa URL koncového bodu OPC UA, která se má použít ke zjišťování prostředků |
AutoAcceptUntrustedCertificates |
true ¹ | Logický | false (nepravda) | Má klient automaticky přijímat nedůvěryhodné certifikáty? Certifikát může být automaticky považován za důvěryhodný pouze v případě, že během ověřování řetězu nedošlo k žádným nestisknutelným chybám. Certifikát s neúplným řetězem například není přijat. |
UseSecurity |
true ¹ | Logická hodnota | true | Má klient používat zabezpečené připojení? |
UserName |
false (nepravda) | String | null | Uživatelské jméno pro ověřování uživatelů. ² |
Password |
false (nepravda) | String | null | Heslo pro ověřování uživatelů. ² |
¹ Aktuální verze obslužné rutiny zjišťování podporuje UseSecurity=false
a vyžaduje autoAcceptUntrustedCertificates=true
.
² Dočasná implementace, dokud Azure IoT Akri nedokáže předat tajné kódy Kubernetes.
Následující příklad ukazuje zjišťování serveru OPC PLC. Můžete přidat parametry assetu pro více serverů OPC PLC.
Chcete-li vytvořit konfigurační soubor YAML, zkopírujte a vložte následující obsah do nového souboru a uložte ho takto
opcua-configuration.yaml
:Pokud používáte simulovaný server PLC nasazený pomocí rychlého startu Azure IoT Operations, nemusíte měnit
endpointUrl
. Pokud máte spuštěné vlastní servery OPC UA nebo používáte simulované servery PLC nasazené v Azure, přidejte odpovídajícím způsobem adresu URL koncového bodu. Adresy URL koncového bodu zjišťování vypadají taktoopc.tcp://<FQDN>:50000/
. Pokud chcete najít plně kvalifikované názvy domén serverů OPC PLC, přejděte na webu Azure Portal k nasazení. Pro každý server zkopírujte a vložte hodnotu plně kvalifikovaného názvu domény do adres URL koncového bodu.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
Konfiguraci použijete spuštěním následujícího příkazu:
kubectl apply -f opcua-configuration.yaml -n azure-iot-operations
Ověření konfigurace
Pokud chcete ověřit, že je kontejner zjišťování prostředků nakonfigurovaný a spuštěný:
Pomocí následujícího příkazu zkontrolujte protokoly podů:
kubectl logs <insert aio-akri-opcua-asset-discovery pod name> -n azure-iot-operations
Protokol z podu
aio-akri-opcua-asset-discovery
označuje po několika sekundách, že se obslužná rutina zjišťování zaregistrovala v 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
Přibližně za minutu Azure IoT Akri vydá první požadavek na zjišťování na základě konfigurace:
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
Po dokončení zjišťování obslužná rutina zjišťování odešle výsledek zpět do Azure IoT Akri a vytvoří vlastní prostředek instance Akri s informacemi o prostředku a pozorovatelnými proměnnými. Obslužná rutina zjišťování opakuje zjišťování každých 10 minut, aby zjistila všechny změny na serveru.
Pokud chcete zobrazit zjištěné instance Azure IoT Akri, spusťte následující příkaz:
kubectl get akrii -n azure-iot-operations
Výstup z předchozího příkazu vypadá jako v následujícím příkladu. Možná budete muset několik sekund počkat, než se instance Akri vytvoří:
NAMESPACE NAME CONFIG SHARED NODES AGE azure-iot-operations akri-opcua-asset-dbdef0 akri-opcua-asset true ["my-aio-vm"] 35m
OPC UA Připojení or supervisor sleduje nové vlastní prostředky instance Azure IoT Akri typu
opc-ua-asset
a vygeneruje pro ně počáteční typy prostředků a vlastní prostředky prostředků. Vlastní prostředky prostředku můžete upravit přidáním nastavení, jako je rozšířené publikování pro více datových bodů nebo nastavení pozorovatelnosti Zprostředkovatele OPC UA.Pokud chcete ověřit, že instance Akri je správně připojená ke zprostředkovateli OPC UA, spusťte následující příkaz. Zástupný symbol nahraďte názvem instance Akri, která byla zahrnuta ve výstupu předchozího příkazu:
kubectl get akrii <AKRI_INSTANCE_NAME> -n azure-iot-operations -o json
Výstup příkazu obsahuje oddíl, který vypadá jako v následujícím příkladu. Fragment kódu zobrazuje hodnoty instance
brokerProperties
Akri a potvrzuje, že je zprostředkovatel OPC UA připojený."spec": { "brokerProperties": { "ApplicationUri": "Boiler #2", "AssetEndpointProfile": "{\"spec\":{\"uuid\":\"opc-ua-broker-opcplc-000000-azure-iot-operation\"……
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro