Udostępnij za pośrednictwem


Odnajdywanie źródeł danych OPC UA przy użyciu usług Akri

Ważne

Usługa Azure IoT Operations Preview — włączona przez usługę Azure Arc jest obecnie dostępna w wersji zapoznawczej. Nie należy używać tego oprogramowania w wersji zapoznawczej w środowiskach produkcyjnych.

Po udostępnieniu ogólnie dostępnej wersji należy wdrożyć nową instalację operacji usługi Azure IoT. Nie będzie można uaktualnić instalacji w wersji zapoznawczej.

Zobacz Dodatkowe warunki użytkowania wersji zapoznawczych platformy Microsoft Azure, aby zapoznać się z postanowieniami prawnymi dotyczącymi funkcji platformy Azure, które są w wersji beta lub wersji zapoznawczej albo w inny sposób nie zostały jeszcze wydane jako ogólnie dostępne.

Z tego artykułu dowiesz się, jak automatycznie odnajdywać źródła danych OPC UA. Po wdrożeniu usługi Azure IoT Operations Preview należy skonfigurować usługi Akri w celu odnajdywania źródeł danych OPC UA na urządzeniach brzegowych. Usługi Akri tworzą zasoby niestandardowe w klastrze Kubernetes reprezentującym wykryte źródła danych. Możliwość odnajdywania źródeł danych OPC UA eliminuje konieczność ręcznego skonfigurowania ich przy użyciu internetowego interfejsu użytkownika środowiska operacji.

Ważne

Obecnie nie można używać usługi Azure Device Registry do zarządzania zasobami odnajdywania i tworzenia usług Akri.

Usługi Akri umożliwiają wykrywanie i tworzenie zasobów w przestrzeni adresowej serwera OPC UA. Wykrywanie zasobów OPC UA generuje AssetType i Asset zasoby niestandardowe dla zasobów zgodnych ze specyfikacją OPC UA Device Integration (DI).

Wymagania wstępne

  • Zainstaluj usługę Azure IoT Operations (wersja zapoznawcza).

  • Sprawdź, czy zasobniki usług Akri są prawidłowo skonfigurowane, uruchamiając następujące polecenie:

    kubectl get pods -n azure-iot-operations
    

    Dane wyjściowe zawierają wiersz pokazujący, że są uruchomione zasobniki agenta Akri i odnajdywania:

    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
    

Konfigurowanie programu obsługi odnajdywania OPC UA

Aby skonfigurować procedurę obsługi odnajdywania OPC UA na potrzeby wykrywania zasobów, utwórz plik konfiguracji YAML zawierający wartości opisane w tej sekcji:

Nazwisko Obowiązkowy Datatype Wartość domyślna Komentarz
EndpointUrl prawda String null Adres URL punktu końcowego OPC UA do użycia na potrzeby odnajdywania zasobów
AutoAcceptUntrustedCertificates true ¹ Wartość logiczna fałsz Czy klient powinien automatycznie wyrejestrować niezaufane certyfikaty? Certyfikat można automatycznie uznać za zaufany tylko wtedy, gdy podczas walidacji łańcucha nie wystąpiły żadne błędy nieobsługiwane. Na przykład certyfikat z niekompletnym łańcuchem nie jest akceptowany.
UseSecurity true ¹ Wartość logiczna prawda Czy klient powinien korzystać z bezpiecznego połączenia?
UserName fałsz String null Nazwa użytkownika na potrzeby uwierzytelniania użytkownika. ²
Password fałsz String null Hasło do uwierzytelniania użytkownika. ²

¹ Bieżąca wersja programu obsługi odnajdywania obsługuje tylko program UseSecurity=false i wymaga programu autoAcceptUntrustedCertificates=true.
² Tymczasowa implementacja do czasu przekazania wpisów tajnych platformy Kubernetes przez usługi Akri.

W poniższym przykładzie pokazano odnajdywanie serwera OPC PLC. Parametry zasobu można dodać dla wielu serwerów OPC PLC.

  1. Aby utworzyć plik konfiguracji YAML, skopiuj i wklej następującą zawartość do nowego pliku i zapisz ją jako opcua-configuration.yaml:

    Jeśli używasz symulowanego serwera PLC wdrożonego w przewodniku Szybki start dotyczący operacji usługi Azure IoT, nie musisz zmieniać elementu endpointUrl. Jeśli masz własne serwery OPC UA z systemem lub używasz symulowanych serwerów PLC wdrożonych na platformie Azure, dodaj odpowiednio adres URL punktu końcowego. Adresy URL punktów końcowych odnajdywania wyglądają następująco: opc.tcp://<FQDN>:50000/. Aby znaleźć nazwy FQDN serwerów OPC PLC, przejdź do wdrożenia w witrynie Azure Portal. Dla każdego serwera skopiuj i wklej wartość nazwy FQDN do adresów URL punktów końcowych.

    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. Aby zastosować konfigurację, uruchom następujące polecenie:

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

Napiwek

W domyślnym wdrożeniu operacji usługi Azure IoT program obsługi odnajdywania OPC UA jest już skonfigurowany do odnajdywania symulowanego serwera PLC. Jeśli chcesz odnaleźć zasoby połączone z dodatkowymi serwerami OPC UA, możesz dodać je do pliku konfiguracji.

Sprawdzanie konfiguracji

Aby potwierdzić, że kontener odnajdywania zasobów jest skonfigurowany i uruchomiony:

  1. Użyj następującego polecenia, aby sprawdzić dzienniki zasobnika:

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

    Dziennik z zasobnika aio-opc-asset-discovery wskazuje po kilku sekundach, że program obsługi odnajdywania zarejestrował się w usługach 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 
    

    Po około minutach usługi Akri wydają pierwsze żądanie odnajdywania na podstawie konfiguracji:

    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 zakończeniu odnajdywania program obsługi odnajdywania wysyła wynik z powrotem do usług Akri, aby utworzyć zasób niestandardowy wystąpienia Akri z informacjami o zasobie i widocznymi zmiennymi. Program obsługi odnajdywania powtarza odnajdywanie co 10 minut, aby wykryć wszelkie zmiany na serwerze.

  2. Aby wyświetlić odnalezione wystąpienia usługi Akri, uruchom następujące polecenie:

    kubectl get akrii -n azure-iot-operations
    

    Dane wyjściowe z poprzedniego polecenia wyglądają jak w poniższym przykładzie. Może być konieczne poczekanie kilku sekund na utworzenie wystąpienia usługi Akri:

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

    Łącznik dla nadzorcy OPC UA obserwuje nowe zasoby niestandardowe wystąpienia Akri typu opc-ua-asseti generuje początkowe typy zasobów i zasoby niestandardowe dla nich. Zasoby niestandardowe można modyfikować, dodając ustawienia, takie jak rozszerzone publikowanie dla większej liczby punktów danych lub łącznik ustawień obserwacji OPC UA.

  3. Aby potwierdzić, że wystąpienie Akri zostało prawidłowo połączone z łącznikiem dla OPC UA, uruchom następujące polecenie. Zastąp symbol zastępczy nazwą wystąpienia Akri, które zostało uwzględnione w danych wyjściowych poprzedniego polecenia:

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

    Dane wyjściowe polecenia zawierają sekcję, która wygląda jak w poniższym przykładzie. Fragment kodu przedstawia wartości wystąpienia brokerProperties Akri i potwierdza, że łącznik OPC UA jest połączony.

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