Önemli noktalar
- OPC UA anlam (bilgi modeli), servisler ve güvenlik sağlar; MQTT yalnızca mesaj taşır ve anlamı sizin sözleşmeniz belirler.
- OPC UA, gezinme, yazma ve metot çağırma için güçlüdür; MQTT, bir verinin çok sayıda tüketiciye dağıtılması için güçlüdür.
- OPC UA PubSub da tanımlıdır ve MQTT üzerinden taşınabilir; yine de uygulamada sık görülen kalıp, OPC UA ile okuyup MQTT ile dağıtmaktır.
- Karar; kimin yazacağı, kaç tüketici olduğu, ağın niteliği ve anlamın nerede taşınacağı sorularıyla verilir.
“OPC UA mı MQTT mi?” sorusu çoğunlukla yanlış kurulur: ikisi aynı katmanda rekabet etmez. OPC UA makineyi ve veriyi tanımlayan bir bilgi modeli ile ona erişim servisleri sunar; MQTT ise mesajları bir broker üzerinden dağıtan bir taşıyıcıdır. Çoğu üretim mimarisinde makineye yakın tarafta OPC UA, verinin dağıtıldığı tarafta MQTT görürsünüz.
Aynı katman değil
OPC UA bir makinenin veya sürecin ne olduğunu tanımlar: nesneler, değişkenler, birimler, metotlar ve bunların birbiriyle ilişkisi. İstemci, sunucunun adres uzayını gezerek ne sunulduğunu keşfedebilir. Ayrıntılar için OPC UA mimarisi yazısına bakın.
MQTT ise bir mesajın bir topic’e yayınlanıp abonelere iletilmesini sağlar. Mesajın içinde ne olduğunu, hangi birimde olduğunu ya da bir topic adının neyi temsil ettiğini tanımlamaz. Bu sade yapı MQTT’yi hafif ve yaygın kılar; anlamı taşımayı ise sizin sorumluluğunuza bırakır (veri sözleşmesi).
OPC UA nerede güçlüdür?
- Makineye yakın erişim. Etiketleri gezerek keşfetmek, yapılandırılmış nesnelerle çalışmak, standart tipler ve eşlik eden belirtimlerle aynı türden cihazlara aynı biçimde ulaşmak.
- Yazma ve komut. Yetkilendirilmiş yazma ve metot çağrısı, bir kontrol veya reçete işlemi gerektiğinde doğal yoldur.
- Yerleşik güvenlik. İmzalama, şifreleme, uygulama sertifikaları ve kullanıcı doğrulaması belirtimin parçasıdır.
- Kalite ve zaman. Her değer bir durum kodu ve zaman damgasıyla gelir.
Bedeli, daha fazla yapılandırma ve istemci-sunucu bağlantısıdır: her tüketici sunucuya ayrı bir oturum açar; çok sayıda tüketici sunucu üzerinde yük oluşturur.
MQTT nerede güçlüdür?
- Dağıtım (fan-out). Aynı veriyi yayıncı tüketicileri tanımadan birçok tüketiciye iletmek.
- Gevşek bağlılık. Yeni bir tüketici eklemek yayıncıyı değiştirmez.
- Dar bant ve güvenilir olmayan ağlar. Hafif başlık ve QoS seviyeleri kısıtlı bağlantılar için tasarlanmıştır.
- Merkezi veya bulut sistemlere dağıtım. Broker, tesis ile merkez arasında doğal bir ara noktadır.
Bedeli, anlamın dışarıdan gelmesi ve broker’ın kritik bir bileşen olmasıdır. Ayrıntılı tasarım ilkeleri için üretimde MQTT yazısına bakın.
Birlikte kullanım: iki kalıp
Kalıp 1: OPC UA ile oku, MQTT ile dağıt. Makine ve PLC verisi OPC UA ile okunur; bir entegrasyon katmanında birim, ad ve zaman damgası düzenlenir ve tesis genelinde bir MQTT isim alanına yayınlanır. Böylece bir tüketici makine protokollerini bilmeden veriyi alır. Bu yaklaşımın adlandırma boyutu Unified Namespace yazısında ele alınır.
Kalıp 2: OPC UA PubSub. OPC UA, istemci/sunucu modelinin yanında yayın/abone modelini de tanımlar ve MQTT’yi bir taşıma seçeneği olarak destekler. Amaç, OPC UA bilgi modelini MQTT’nin dağıtım avantajıyla birleştirmektir. Cihaz ve yazılım desteği ürüne bağlıdır; kullanmadan önce ürünlerinizin desteklediği profili doğrulayın.
İkinci kalıp mümkün olsa da uygulamada birinci kalıp sık görülür: makineler OPC UA konuşur, merkezi sistemler MQTT veya benzeri bir yapıyı tercih eder ve aradaki dönüşümü bir entegrasyon katmanı üstlenir.
Karar için beş soru
- Kim yazacak? Kontrol parametresi veya reçete yazılacaksa OPC UA’nın yetkilendirilmiş yazması ve metotları daha uygundur.
- Kaç tüketici var, kaçı olacak? Çok sayıda ve değişen tüketici MQTT tarafını öne çıkarır.
- Ağ nasıl? Merkeze giden dar veya kesintili bir hat, hafif ve tamponlanabilir bir akış gerektirir.
- Anlam nerede taşınacak? Eşlik eden belirtim ve bilgi modeli istiyorsanız OPC UA; kendi JSON sözleşmenizi yazmaya hazırsanız MQTT yeterli olabilir.
- Kesintide ne olmalı? Kayıp kabul edilmiyorsa hangi katmanın tamponlayacağını ve tekrar işlemenin nasıl güvenli yapılacağını (Store & Forward) baştan belirleyin.
Entegrasyon planlayıcı, kaynak ve hedef sistemlerinizi seçerek bu soruları projenize uyarlanmış bir taslakta toplar.
Sık sorulanlar
OPC UA MQTT’nin yerini alır mı, ya da tersi mi?
Hayır; farklı sorunları çözerler ve çoğu projede birlikte kullanılırlar. OPC UA makineye yakın erişim ve bilgi modeli için, MQTT veri dağıtımı için yaygın tercihtir.
OPC UA verisini MQTT üzerinden nasıl taşırım?
İki yol vardır: bir entegrasyon katmanı OPC UA’dan okuyup kendi JSON şemanızla MQTT’ye yayınlar ya da OPC UA PubSub’ın MQTT taşımasını kullanırsınız. İlki daha yaygındır ve şemayı sizin tanımlamanıza izin verir; ikincisi cihaz ve yazılım desteğine bağlıdır.
Hangisi daha güvenlidir?
İkisi de güvenli yapılandırılabilir. OPC UA güvenliği belirtimin parçasıdır (sertifikalar, imza, şifreleme); MQTT’de güvenlik TLS, kimlik doğrulama ve broker yetkilendirmesiyle sağlanır. Asıl fark yapılandırmanın doğru yapılmasıdır; ayrıntı için güvenli veri akışları yazısına bakın.