Aracılığıyla paylaş


OPC UA bağlayıcısı nedir?

OPC UA (OPC Birleşik Mimari), uç ve bulut arasındaki endüstriyel bileşenler arasında veri alışverişini sağlamak için OPC Foundation tarafından geliştirilen bir standarttır. İletileri OPC UA sunucularından MQTT aracısına yönlendirebilir ve OPC UA sunucularına denetim iletileri gönderebilir. OPC UA, yaygın olarak kullanılan veri biçimlerini temel alan tutarlı, güvenli, belgelenmiş bir standart sağlar. Endüstriyel bileşenler, evrensel veri alışverişini etkinleştirmek için OPC UA standardını uygulayabilir.

OPC UA yazma özelliği, endüstriyel geliştiricilerin ve operasyon mühendislerinin OPC UA bağlayıcısını kullanarak doğrudan OPC UA düğümlerine değer yazarak uçta gerçek zamanlı denetim gerçekleştirmesini sağlar. Bu özellik, buluta gidiş dönüşlere gerek kalmadan yapılandırmalarda, otomasyon tetikleyicilerinde ve dinamik işlem ayarlamalarında anında güncelleştirmeler yapılmasına olanak tanır.

Üretim hatlarında, tahmine dayalı bakımda veya yapay zeka temelli denetim döngülerinde olduğu gibi gecikme süresi, özerklik veya yerel karar vermenin kritik öneme sahip olduğu senaryolarda yazma özelliği kullanışlıdır.

OPC UA bağlayıcısı, Azure IoT İşlemleri'nin bir parçasıdır. OPC UA bağlayıcısı, MQTT aracısında konu başlıklarına yayımladığı verileri almak ve MQTT aracısı konu aboneliğinden değerlere göre veri yazmak için OPC UA sunucularına bağlanır. OPC UA bağlayıcısı, endüstriyel OPC UA ortamınızın verileri kubernetes kümesinde çalışan yerel iş yüklerinize ve bulut iş yüklerinize eklemesini sağlar.

OPC UA bağlayıcısı, Azure IoT İşlemleri'nde ara yazılım hizmeti olarak çalışan bir istemci uygulamasıdır. OPC UA bağlayıcısı OPC UA sunucularına bağlanır, sunucu adres alanına göz atmanıza, bağlı varlıklardaki veri değişikliklerini ve olayları izlemenize ve sunucu adres alanında düğümlere veri yazmanıza olanak tanır. Operasyon ekipleri ve geliştiriciler, OPC UA varlıklarını uçta endüstriyel çözümlerine bağlama görevini kolaylaştırmak için OPC UA bağlayıcısını kullanır.

Yetenekler

Azure IoT İşlemleri kapsamında, OPC UA bağlayıcısı aşağıdakilere sahip yerel bir Kubernetes uygulamasıdır:

  • Mevcut OPC UA sunucularını ve varlıklarını uçta yerel bir Kubernetes kümesine bağlar.
  • JSON yükü kullanarak OPC UA sunucularından JSON ile kodlanmış iletileri OPC UA PubSub biçiminde yayımlar. Veri alışverişi için bu standart biçimi kullanarak, gelecekteki uyumluluk sorunları riskini azaltabilirsiniz.
  • OPC UA düğümü özelliklerini dağıtılmış durum deposuyla eşitleyebilir.
  • Değerleri, MQTT aboneliklerini temel alan bağlı bir OPC UA sunucusundaki düğümlere doğrudan yazar.
  • Buluttaki Azure Arc özellikli hizmetlere bağlanır.

Diğer özellikler

OPC UA bağlayıcısı, Azure IoT İşlemlerinin bir parçası olarak aşağıdaki özellikleri destekler:

Özellik Destekleniyor Notes
Kullanıcı adı/parola kimlik doğrulaması Yes
X.509 istemci sertifikaları Hayı
Anonim erişim Yes Test amacıyla
Sertifika güven listesi Yes Güvenli, şifrelenmiş OPC UA bağlantıları için
OpenTelemetry entegrasyonu Yes
Otomatik yeniden bağlantı Yes Hatalardan sonra OPC UA sunucularına yeniden bağlanır
Birden çok sunucu bağlantısı Yes Kubernetes device CR'leri kullanılarak yapılandırıldı
OPC UA PubSub biçimi Yes JSON ile kodlanmış veri değeri değişiklikleri
CloudEvents üst bilgileri Yes İleti üst bilgileri, MQTT kullanıcı özellikleri olarak
OPC UA olayları Yes Önceden tanımlanmış olay alanları
Yük sıkıştırma Yes gzip ve brotli destekler
Dinamik düğüm çözünürlüğü Yes TranslateBrowsePathToNodeId hizmetini kullanma
Durum deposu eşitlemesi Yes OPC UA düğümü özelliklerini dağıtılmış durum deposuyla eşitleme

Nasıl çalışır?

Bağlı bir OPC UA sunucusundan veri okumak için, OPC UA uygulamasının bağlayıcısı:

  1. OPC UA sunucu uç noktasını ve bağlantı için kullanılacak güvenlik ayarlarını belirlemek için varlığın ilişkili cihaz yapılandırmasını okur.
  2. Bağlayıcının MQTT aracı konusuna ne sıklıkta veri yayımladığını belirlemek için varlığın yapılandırılmış yayımlama aralığını okur.
  3. MQTT aracısı için OPC UA sunucusundan hangi değerlerin yayımleneceğini belirlemek için varlığın yapılandırılmış veri noktalarını ve olaylarını okur.
  4. Yapılandırılan her varlık için OPC UA sunucusunda bir oturum oluşturur.
  5. Oturumda her 1.000 veri noktası için ayrı bir abonelik oluşturur.
  6. Varlıkta tanımlanan her olay için ayrı bir abonelik oluşturur.
  7. Yayımlama aralığına göre iletileri MQTT aracısına yayımlar. Bağlayıcı, belirtilen sayıda etkin tutma isteğinden sonra yanıt vermeyen uç noktalara bağlantıları tanımlamak için yeniden deneme mantığı uygular. Örneğin, bir OPC UA sunucusu güç kesintisi nedeniyle yanıt vermeyi durdurduğunda ortamınızda yanıt vermeyen bir uç nokta olabilir.

Bağlı bir OPC UA sunucusundaki bir düğüme değer yazmak için, OPC UA bağlayıcısı:

  1. OPC UA sunucu uç noktasını ve bağlantı için kullanılacak güvenlik ayarlarını belirlemek için varlığın ilişkili cihaz yapılandırmasını okur.

  2. OPC UA sunucusunda hangi düğümlere yazacaklarını belirlemek için varlık yapılandırmasını okur.

  3. Varlık için yazma isteklerini içeren bir MQTT konusuna abonedir. Konu adı biçimindedir {Namespace}/asset-operations/{AssetId}/builtin/{DatasetName}/; burada {Namespace} Azure IoT İşlemleri örneğinin ad alanıdır, {AssetId} varlığın benzersiz tanımlayıcısıdır ve {DatasetName} yazacak düğümleri içeren veri kümesinin adıdır.

  4. Cihaz yapılandırmasını kullanarak OPC UA sunucusuyla geçici bir oturum oluşturur.

  5. Tüm veri noktalarının hedef veri kümesinde mevcut olduğundan emin olmak için yükü denetler.

  6. Değerleri OPC UA sunucusuna yazar ve MQTT aracısı için bir başarı veya başarısızlık yanıtı yayımlar. Değiştirilen değer, veri kümesiyle ilişkili standart ileti konusuna yayımlanır.

Yazma isteği oluşturmak için, MQTT v5 isteği/yanıt semantiği kullanarak MQTT konusuna bir JSON iletisi yayımlayın. Veri kümesi adını ve yüke yazılacak değerleri belirtin. Her MQTT iletisi, izlenebilirlik ve uyumluluk sağlamak için , SourceIdProtocolVersion gibi CorrelationDatasistem düzeyinde ve kullanıcı tanımlı özellikleri tanımlayan meta veriler içerir.

OPC UA düğümü özelliklerini dağıtılmış durum deposuyla eşitlemek için, OPC UA bağlayıcısı:

  1. HasProperty Aynı OPC UA gelen uç noktasına bağlı tüm varlıkların herhangi bir veri kümesinde veri noktası olarak referans verilen tüm değişken düğümlerinin referanslarını izler.
  2. Özellikleri, kimliği altındaki dağıtılmış durum deposuna ekler: {AioNamespace}.{AssetName}.{DatasetName}.{DataPointName}.{PropertyName}.
  3. OPC UA sunucusu olayına otomatik olarak ModelChange abone olunur ve bir ModelChange olay gerçekleştikten sonra tüm özellikler yeniden doldurulur.

Bu davranışı yapılandırmak için, operasyon deneyimi web kullanıcı arabiriminde bir gelen OPC UA uç noktasını yapılandırırken Özellikleri durum deposu ile senkronize et'yi seçin.

Durum deposuna eşitleme özelliklerinin konumunu gösteren ekran görüntüsü.

Tüm özelliklerin senkronizasyonunu zorlamak için azure-iot-operation/asset-operations/{AssetName}/builtin/syncProperties konusuna bir MQTT RPC çağrısı da yapabilirsiniz. Yük {} , olayları gözlemlemeden eşitlemeyi zorlar ModelChange . Yük {"observeModelChanges": true}, olayları gözlemleyen bir senkronizasyonu ModelChange zorlar.

OPC UA ileti biçimi bağlayıcısı

OPC UA bağlayıcısı, OPC UA sunucularından MQTT aracısına JSON olarak ileti yayımlar. Her iletinin bir yükü ve MQTT kullanıcı özellikleri bölümünün bir parçası olan özellikler koleksiyonu vardır. Yük, OPC UA sunucusundan gelen iletileri içerir ve özellikler meta veriler sağlar.

Yük

OPC UA iletisinin yükü, OPC UA sunucusundan gelen iletileri içeren bir JSON nesnesidir. Aşağıdaki örnek, hızlı başlangıçlarda kullanılan örnek termostat varlığından bir iletinin yükünü gösterir. Konu başlığındaki iletilere azure-iot-operations/data abone olmak için aşağıdaki komutu kullanın:

mosquitto_sub --host aio-broker --port 18883 --topic "azure-iot-operations/data/#" -v --debug --cafile /var/run/certs/ca.crt -D CONNECT authentication-method 'K8S-SAT' -D CONNECT authentication-data $(cat /var/run/secrets/tokens/broker-sat)

Önceki komutun çıktısı aşağıdaki örneğe benzer:

Client $server-generated/05a22b94-c5a2-4666-9c62-837431ca6f7e received PUBLISH (d0, q0, r0, m0, 'azure-iot-operations/data/thermostat', ... (152 bytes))
{"temperature":{"SourceTimestamp":"2024-07-29T15:02:17.1858435Z","Value":4558},"Tag 10":{"SourceTimestamp":"2024-07-29T15:02:17.1858869Z","Value":4558}}
Client $server-generated/05a22b94-c5a2-4666-9c62-837431ca6f7e received PUBLISH (d0, q0, r0, m0, 'azure-iot-operations/data/thermostat', ... (152 bytes))
{"temperature":{"SourceTimestamp":"2024-07-29T15:02:18.1838125Z","Value":4559},"Tag 10":{"SourceTimestamp":"2024-07-29T15:02:18.1838523Z","Value":4559}}
Client $server-generated/05a22b94-c5a2-4666-9c62-837431ca6f7e received PUBLISH (d0, q0, r0, m0, 'azure-iot-operations/data/thermostat', ... (152 bytes))
{"temperature":{"SourceTimestamp":"2024-07-29T15:02:19.1834363Z","Value":4560},"Tag 10":{"SourceTimestamp":"2024-07-29T15:02:19.1834879Z","Value":4560}}
Client $server-generated/05a22b94-c5a2-4666-9c62-837431ca6f7e received PUBLISH (d0, q0, r0, m0, 'azure-iot-operations/data/thermostat', ... (152 bytes))
{"temperature":{"SourceTimestamp":"2024-07-29T15:02:20.1861251Z","Value":4561},"Tag 10":{"SourceTimestamp":"2024-07-29T15:02:20.1861709Z","Value":4561}}
Client $server-generated/05a22b94-c5a2-4666-9c62-837431ca6f7e received PUBLISH (d0, q0, r0, m0, 'azure-iot-operations/data/thermostat', ... (152 bytes))
{"temperature":{"SourceTimestamp":"2024-07-29T15:02:21.1856798Z","Value":4562},"Tag 10":{"SourceTimestamp":"2024-07-29T15:02:21.1857211Z","Value":4562}}

Örnek yazma yükü

Aşağıda bir düğüme basit bir kayan değer yazmaya yönelik en düşük örnek verilmiştir:

{ 
   "SetPoint": 50
}

Kullanıcı özellikleri

OPC UA bağlayıcısı tarafından yayımlanan iletilerdeki üst bilgiler, OPC UA için CloudEvents belirtimini temel alır. OPC UA iletisindeki üst bilgiler, MQTT aracısında yayımlanan iletide kullanıcı özelliklerine dönüşür. Aşağıdaki örnek, hızlı başlangıçlarda kullanılan örnek termostat varlığından gelen bir iletinin kullanıcı özelliklerini gösterir. Konu başlığındaki iletilere azure-iot-operations/data abone olmak için aşağıdaki komutu kullanın:

mosquitto_sub --host aio-broker --port 18883 --topic "azure-iot-operations/data/#" -V mqttv5 -F %P --cafile /var/run/certs/ca.crt -D CONNECT authentication-method 'K8S-SAT' -D CONNECT authentication-data $(cat /var/run/secrets/tokens/broker-sat)

Önceki komutun çıktısı aşağıdaki örneğe benzer:

uuid:0000aaaa-11bb-cccc-dd22-eeeeee333333 externalAssetId:0000aaaa-11bb-cccc-dd22-eeeeee333333 serverToConnectorMilliseconds:0.3153 id:1111bbbb-22cc-dddd-ee33-ffffff444444 specversion:1.0 type:ua-keyframe source:urn:OpcPlc:opcplc-000000 time:2024-08-05T14:19:08.8738457Z datacontenttype:application/json subject:0000aaaa-11bb-cccc-dd22-eeeeee333333 sequence:9768 traceparent:00-4eb4313536bc006c918e936686921cfc-4ee795f6fdd5fae7-01 recordedtime:2024-08-05 14:19:08.874 +00:00
uuid:0000aaaa-11bb-cccc-dd22-eeeeee333333 externalAssetId:0000aaaa-11bb-cccc-dd22-eeeeee333333 serverToConnectorMilliseconds:0.3561 id:1111bbbb-22cc-dddd-ee33-ffffff444444 specversion:1.0 type:ua-keyframe source:urn:OpcPlc:opcplc-000000 time:2024-08-05T14:19:09.8746396Z datacontenttype:application/json subject:0000aaaa-11bb-cccc-dd22-eeeeee333333 sequence:9769 traceparent:00-388697f77c2dcb5e9b30589c0a4cef6e-de9351186ff5833e-01 recordedtime:2024-08-05 14:19:09.875 +00:00
uuid:0000aaaa-11bb-cccc-dd22-eeeeee333333 externalAssetId:0000aaaa-11bb-cccc-dd22-eeeeee333333 serverToConnectorMilliseconds:0.3423 id:1111bbbb-22cc-dddd-ee33-ffffff444444 specversion:1.0 type:ua-keyframe source:urn:OpcPlc:opcplc-000000 time:2024-08-05T14:19:10.8754860Z datacontenttype:application/json subject:0000aaaa-11bb-cccc-dd22-eeeeee333333 sequence:9770 traceparent:00-7c65a93fa7668bbe0cdfd051168c88ac-ab86b83fb1b7944f-01 recordedtime:2024-08-05 14:19:10.875 +00:00
uuid:0000aaaa-11bb-cccc-dd22-eeeeee333333 externalAssetId:0000aaaa-11bb-cccc-dd22-eeeeee333333 serverToConnectorMilliseconds:0.3277 id:1111bbbb-22cc-dddd-ee33-ffffff444444 specversion:1.0 type:ua-keyframe source:urn:OpcPlc:opcplc-000000 time:2024-08-05T14:19:11.8765569Z datacontenttype:application/json subject:0000aaaa-11bb-cccc-dd22-eeeeee333333 sequence:9771 traceparent:00-5851e56a6f358ab5e1af1d798f7580a1-bf6dfbda8196cba0-01 recordedtime:2024-08-05 14:19:11.877 +00:00

Konu alanı, iletinin ilişkili olduğu varlığın adını içerir. Sıra alanı, iletinin sıra numarasını içerir.

Uyarı

İşlem deneyimi web kullanıcı arabiriminde oluşturulan varlıklar için varlık tarafından gönderilen iletilerin konu özelliği değere externalAssetId ayarlanır. Bu durumda özelliği, subject kolay varlık adı yerine GUID içerir.

Gezinme yollarını kullanarak düğümleri dinamik olarak çözme

Bir varlıkta OPC UA veri noktalarını veya olaylarını yapılandırdığınızda, genellikle Veri kaynağı alanına bir OPC UA sunucu düğümü kimliği eklersiniz. Bu yaklaşım, düğüm kimliklerinin sunucu yeniden başlatmaları ve dağıtımları arasında kararlı olduğunu varsayar. Ancak, bazı OPC UA sunucuları düğüm kimliklerini çalışma zamanında veya isteğe bağlı olarak dinamik olarak oluşturur. Bu dinamik düğüm kimliklerini varlık yapılandırmasında kalıcı yapamazsınız çünkü bunlar zaman içinde değişebilir.

Bu senaryoyu ele almak için bağlayıcı, OPC UA TranslateBrowsePathToNodeId hizmetini kullanarak çalışma zamanında dinamik düğümleri çözümleyebilir. Bu hizmet, başlangıç nesnesi ve göreli gözatma yolundan hedef düğüm kimliğini belirler. Bir veri kümesinde veya olay yapılandırmasında bir Başlangıç örneği değeri yapılandırdığınızda, her veri noktası veya olay veri kaynağı özelliğinde geçerli bir göreli göz atma yolu gerektirir. Bağlayıcı, göreli tarama yolunu çalışma zamanında demirbaş bir düğüm kimliğine çevirir.

Uyarı

Başlangıç örneği değeri sağlamazsanız bağlayıcı, Veri kaynağı özelliğini sabit düğüm kimliği olarak kullanır.

Örnek Başlangıç örneği değerleri:

  • i=2555
  • nsu=http://microsoft.com/Opc/OpcPlc/;s=FastUInt1
  • nsu=http://microsoft.com/Opc/OpcPlc/Boiler;i=5
  • ns=10;s=System.Pump1
  • ns=1;b=M/RbKBsRVkePCePcx24oRA==

Veri kaynağı alanında kullanılacak örnek göreli gözatma yolları:

  • /1:SYSTEM/1:PUMP/1:P1
  • /2:Block&.Output
  • /3:Truck.0:NodeVersion
  • <!HasChild>Truck
  • <1:ConnectedTo>1:Boiler/

Daha fazla bilgi için göreli tarama yolu söz dizimi hakkında bkz. OPC Foundation Bölüm 4 A.2.

Göreli göz atma yolları sayısal OPC UA ad alanı dizinlerini kullanmalıdır. Şu anda dize biçiminde ad alanı adları için destek bulunmamaktadır.

Önemli

Ad alanı dizinleri sunucu içinde değişebilir. Ad alanı dizinleri değişirse, varlık tanımında bunları yeniden yapılandırmanız gerekir.

Azure IoT İşlemleri ile ilişkisi nedir?

ONVIF bağlayıcısı, Azure IoT İşlemleri'nin bir parçasıdır. Bağlayıcı, Azure IoT İşlemleri dağıtımının bir parçası olarak uçta Arc özellikli bir Kubernetes kümesine dağıtılır. Bağlayıcı, aşağıdakiler gibi diğer Azure IoT İşlemleri öğeleriyle etkileşim kurar:

Sonraki adım