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.
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
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:
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.
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-asset
i 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.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\"……