Menemukan sumber data OPC UA menggunakan Pratinjau Azure IoT Akri
Penting
Pratinjau Operasi Azure IoT – diaktifkan oleh Azure Arc saat ini dalam PRATINJAU. Anda tidak boleh menggunakan perangkat lunak pratinjau ini di lingkungan produksi.
Lihat Ketentuan Penggunaan Tambahan untuk Pratinjau Microsoft Azure untuk persyaratan hukum yang berlaku pada fitur Azure dalam versi beta, pratinjau, atau belum dirilis secara umum.
Dalam artikel ini, Anda mempelajari cara menemukan sumber data OPC UA. Setelah menyebarkan Operasi Azure IoT, Anda mengonfigurasi Pratinjau Azure IoT Akri untuk menemukan sumber data OPC UA di tepi. Azure IoT Akri membuat sumber daya kustom ke dalam namespace Operasi Azure IoT di kluster Anda untuk mewakili perangkat yang ditemukan. Kemampuan untuk menemukan sumber data OPC UA menyederhanakan proses konfigurasi secara manual dari cloud dan onboarding ke kluster Anda. Saat ini, Azure IoT Akri tidak dapat mendeteksi dan membuat aset yang dapat diserap ke dalam Pratinjau Azure Device Registry. Untuk informasi selengkapnya tentang fitur yang didukung, lihat Gambaran umum Azure IoT Akri.
Azure IoT Akri memungkinkan Anda mendeteksi dan membuat Assets
di ruang alamat server AGEN PENGGUNA OPC. Deteksi aset OPC UA menghasilkan AssetType
dan Asset
sumber daya kustom (CR) Kubernetes untuk spesifikasi OPC UA Device Integration (DI) yang sesuai Assets
.
Prasyarat
Pratinjau Operasi Azure IoT terinstal. Penginstalan mencakup Azure IoT Akri. Untuk informasi selengkapnya, lihat Mulai Cepat: Menyebarkan Pratinjau Operasi Azure IoT ke kluster Kubernetes dengan dukungan Arc.
Pastikan pod agen Azure IoT Akri dikonfigurasi dengan benar dengan menjalankan kode berikut:
kubectl get pods -n azure-iot-operations
Anda akan melihat agen dan pod handler penemuan berjalan.
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
Mengonfigurasi handler penemuan OPC UA
Untuk mengonfigurasi handler penemuan OPC UA kustom dengan deteksi aset, pertama-tama Anda membuat file konfigurasi YAML menggunakan nilai yang dijelaskan di bagian ini. Sebelum Anda membuat file, perhatikan detail konfigurasi berikut:
Server yang ditentukan berisi model alamat sampel yang menggunakan spesifikasi pendamping Robotika, yang didasarkan pada spesifikasi DI. Model yang menggunakan spesifikasi ini diperlukan untuk deteksi aset. Robot berisi lima aset dengan variabel yang dapat diamati dan node
DeviceHealth
yang secara otomatis terdeteksi untuk pemantauan.Anda dapat menentukan server lain dengan menyediakan
endpointUrl
dan memastikan bahwa profil keamananNone
diaktifkan.Untuk mengaktifkan Azure IoT Akri untuk menemukan server, konfirmasikan bahwa Anda menentukan URL titik akhir penemuan yang benar selama penginstalan.
URL penemuan muncul sebagai
opc.tcp://<FQDN>:50000/
. Untuk menemukan FQDN server OPC PLC Anda, navigasikan ke penyebaran Anda di portal Azure. Untuk setiap server, salin dan tempel nilai FQDN ke dalam URL penemuan Anda. Contoh berikut menunjukkan penemuan dua server PLC OPC. Anda dapat menambahkan parameter aset untuk setiap server PLC OPC. Jika Anda hanya memiliki satu server OPC PLC, hapus salah satu aset.Nama Wajib Tipe data Default Komentar EndpointUrl
benar String nihil URL titik akhir OPC UA yang akan digunakan untuk penemuan aset AutoAcceptUntrustedCertificates
benar ¹ Boolean salah Apakah klien secara otomatis menerima sertifikat yang tidak tepercaya. Sertifikat hanya dapat diterima secara otomatis sebagai tepercaya jika tidak ada kesalahan yang tidak dapat ditekan selama validasi rantai. Misalnya, sertifikat dengan rantai yang tidak lengkap tidak diterima. UseSecurity
benar ¹ Boolean benar Apakah klien harus menggunakan koneksi aman UserName
salah String nihil Nama pengguna untuk autentikasi pengguna. ² Password
salah String nihil Kata sandi pengguna untuk autentikasi pengguna. ² ¹ Versi handler penemuan saat ini hanya mendukung tidak ada keamanan
UseSecurity=false
dan memerlukanautoAcceptUntrustedCertificates=true
.
² Implementasi sementara hingga Azure IoT Akri dapat meneruskan rahasia K8S.
Untuk membuat file konfigurasi YAML, salin dan tempel konten berikut ke dalam file baru, dan simpan sebagai
opcua-configuration.yaml
:Jika Anda menggunakan server PLC simulasi yang disebarkan dengan Mulai Cepat Operasi Azure IoT, Anda tidak perlu mengubah
endpointUrl
. Jika Anda memiliki server OPC UA Anda sendiri yang berjalan atau menggunakan server PLC yang disimulasikan yang disebarkan di Azure, tambahkan URL titik akhir Anda yang sesuai.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
Terapkan YAML untuk mengonfigurasi Azure Iot Akri untuk menemukan aset:
kubectl apply -f opcua-configuration.yaml -n azure-iot-operations
Untuk mengonfirmasi bahwa kontainer penemuan aset dikonfigurasi dan dimulai, periksa log pod dengan perintah berikut:
kubectl logs <insert aio-akri-opcua-asset-discovery pod name> -n azure-iot-operations
Log dari
aio-akri-opcua-asset-discovery
pod menunjukkan setelah beberapa detik bahwa handler penemuan mendaftarkan dirinya dengan 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
Setelah sekitar satu menit, Azure IoT Akri mengeluarkan permintaan penemuan pertama berdasarkan konfigurasi:
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
Setelah penemuan selesai, hasilnya dikirim kembali ke Azure IoT Akri untuk membuat sumber daya kustom instans Akri dengan informasi aset dan variabel yang dapat diamati. Handler penemuan mengulangi penemuan setiap 10 menit untuk mendeteksi perubahan pada server.
Untuk melihat instans Azure IoT Akri yang ditemukan, jalankan perintah berikut:
kubectl get akrii -n azure-iot-operations
Mungkin perlu beberapa menit agar instans muncul.
Output dari perintah sebelumnya terlihat seperti contoh berikut. Anda mungkin perlu menunggu beberapa detik agar instans Akri dibuat:
NAMESPACE NAME CONFIG SHARED NODES AGE azure-iot-operations akri-opcua-asset-dbdef0 akri-opcua-asset true ["my-aio-vm"] 35m
Anda dapat memeriksa sumber daya kustom instans dengan menggunakan editor seperti OpenLens, di bawah
CustomResources/akri.sh/Instance
.Anda juga dapat melihat YAML definisi sumber daya kustom dari instans yang dibuat:
kubectl get akrii -n azure-iot-operations -o yaml
Supervisor Koneksi or OPC UA mengawasi sumber daya kustom instans Azure IoT Akri baru jenis
opc-ua-asset
, dan menghasilkan jenis aset awal dan sumber daya kustom aset untuk mereka. Anda dapat memodifikasi sumber daya kustom aset untuk menambahkan pengaturan seperti memperluas penerbitan untuk lebih banyak titik data, atau untuk menambahkan pengaturan pengamatan OPC UA Broker.Untuk mengonfirmasi bahwa instans Akri terhubung dengan benar ke OPC UA Broker, salin dan tempel nama instans Akri yang merupakan output dari langkah sebelumnya, ke dalam perintah berikut:
kubectl get akrii <AKRI_INSTANCE_NAME> -n azure-iot-operations -o json
Output perintah terlihat seperti contoh berikut. Contoh output ini menunjukkan nilai instans
brokerProperties
Akri dan mengonfirmasi bahwa OPC UA Broker terhubung."spec": { "brokerProperties": { "ApplicationUri": "Boiler #2", "AssetEndpointProfile": "{\"spec\":{\"uuid\":\"opc-ua-broker-opcplc-000000-azure-iot-operation\"……