Sdílet prostřednictvím


Zjišťování zdrojů dat OPC UA pomocí služeb Akri

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.

Až bude dostupná obecně dostupná verze, budete muset nasadit novou instalaci operací Azure IoT. Nebudete moct upgradovat instalaci verze Preview.

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 služby Akri tak, aby na hraničních zařízeních vyhledály zdroje dat OPC UA. Služby Akri vytvářejí 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í webového uživatelského rozhraní provozního prostředí.

Důležité

V současné době nemůžete pomocí služby Azure Device Registry spravovat prostředky, které služby Akri zjišťují a vytvářejí.

Služby Akri umožňují 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: Spuštění Azure IoT Operations Preview v Codespaces na GitHubu s využitím K3s.

  • Spuštěním následujícího příkazu ověřte, že jsou pody služeb Akri správně nakonfigurované:

    kubectl get pods -n azure-iot-operations
    

    Výstup obsahuje řádek, který zobrazuje spuštěné agenta Akri a pody zjišťová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
    

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 služby Akri nebudou moct předávat 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.

  1. 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í takto opc.tcp://<FQDN>:50000/. Pokud chcete najít plně kvalifikované názvy domén serverů OPC PLC, přejděte k nasazení na webu Azure Portal. 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
    
  2. Konfiguraci použijete spuštěním následujícího příkazu:

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

Tip

Ve výchozím nasazení operací Azure IoT je obslužná rutina zjišťování OPC UA už nakonfigurovaná tak, aby objevila simulovaný server PLC. Pokud chcete zjistit prostředky připojené k dalším serverům OPC UA, můžete je přidat do konfiguračního souboru.

Ověření konfigurace

Pokud chcete ověřit, že je kontejner zjišťování prostředků nakonfigurovaný a spuštěný:

  1. Pomocí následujícího příkazu zkontrolujte protokoly podů:

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

    Protokol z podu aio-opc-asset-discovery označuje po několika sekundách, že obslužná rutina zjišťování se zaregistrovala ve službách 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 
    

    Přibližně za minutu služba Akri vydá první požadavek na zjišťování na základě konfigurace:

    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
    

    Po dokončení zjišťování obslužná rutina zjišťování odešle výsledek zpět do služeb 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.

  2. Pokud chcete zobrazit zjištěné instance 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ří:

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

    Konektor pro správce OPC UA sleduje nové vlastní prostředky instance Akri typu opc-ua-asseta vygeneruje pro ně počáteční typy prostředků a vlastní prostředky prostředku. 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 konektoru pro nastavení pozorovatelnosti OPC UA.

  3. Pokud chcete ověřit, že se instance Akri správně připojila ke konektoru pro 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 konektor pro OPC UA připojený.

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