İçeriğe geç

Haberleşme

MQTT haberleşmesi

Live’ı MQTT 3.1.1 ya da 5.0 istemcisi yapar: sunucuya (broker) bağlanır, tag’lerin konularına abone olur ve konuya gelen son yayını tag değeri olarak kullanır. Tag’e yazmak, değeri konuya yayınlamaktır.

Genel bilgi

Cihazlar, ağ geçitleri ve IoT sistemleri veriyi genellikle MQTT ile paylaşır. Sürücü her konuya bir kez abone olur ve konuya gelen son yayın o tag’in değeri olur. OPC UA sürücüsü okuma döngüsüyle yoklar, MQTT sürücüsü ise abonelik temellidir.

Sunucu tarafında yapılacaklar

  1. Erişimi sağlayın

    MQTT sunucusu Live bilgisayarından erişilebilir olmalıdır. Varsayılan port 1883’tür, TLS ile genellikle 8883 kullanılır.

  2. Kullanıcıyı tanımlayın

    Kimlik doğrulama kullanılacaksa sunucuda kullanıcı tanımlı olmalı ve kullanıcının okuma / yazma izni bulunmalıdır. İzin yoksa sunucu aboneliği reddeder.

  3. Konuları ve yük biçimini öğrenin

    Cihazların yayınladığı konu adlarını ve yük (payload) biçimini bilin: düz değer ya da JSON.

Studio’da bağlantı kurma

  1. Bağlantı ekleyin

    Bağlantılar bölümünde Ekle’ye tıklayın ve Haberleşme sürücüsü olarak MQTT’yi seçin. Sunucunun adresini yazın; port 1883 olarak gelir. TLS kullanacaksanız portu 8883 yapın ya da adresi mqtts://sunucu:8883 biçiminde yapıştırın; güvenlik TLS’e geçer.

  2. Parametreleri girin

    Denetçi’de aşağıdaki alanları doldurun. Hedef kartı mqtt:// ya da mqtts:// adresini gösterir.

  3. Tag ekleyin

    HMI Tag’leri bölümünde tag’ler oluşturup Adres hücresine konu adını yazın. Ayrıntı için HMI tag’leri sayfasına bakın.

Alan Anlamı
MQTT sürümü MQTT 3.1.1 (varsayılan) ya da MQTT 5.0. Sunucu 5.0’ı desteklemiyorsa bağlantı açılmaz ve 3.1.1’i seçmeniz söylenir.
Güvenlik Yok (şifrelenmemiş), TLS (sunucu sertifikası doğrulanır) ya da TLS (sertifika doğrulanmaz). TLS 1.2 kullanılır.
İstemci sertifikası Yok, PFX dosyası ya da Windows sertifika deposu. Yalnızca TLS ile kullanılır; ayrıntı aşağıdadır.
Kimlik doğrulama Anonim ya da Kullanıcı adı ve şifre.
Kullanıcı adı Şifre proje dosyasına yazılmaz; Live’da girilir.
İstemci kimliği Boşsa fv- ile başlayan bir kimlik bilgisayar ve bağlantı adından üretilir. Aynı kimlikle bağlanan iki istemciden eskisi sunucu tarafından atılır.
Abonelik kalitesi (QoS) QoS 0 en çok bir kez (varsayılan) ya da QoS 1 en az bir kez.
Yazma kalitesi (QoS) QoS 0 yanıt beklenmez ya da QoS 1 sunucunun onayı beklenir (varsayılan).
Yazılanı sunucuda tut (retain) Açıksa yazılan mesaj sunucuda saklanır ve sonradan abone olanlara hemen gönderilir. Varsayılan kapalıdır.
Bool yazma biçimi true / false (varsayılan), 1 / 0 ya da ON / OFF.
Canlı tutma süresi (sn) 0 – 3600, varsayılan 30. Sessiz kalan bağlantıda bu aralıkla sunucuya ping gider; bu sürenin 1,5 katı boyunca hiçbir şey gelmezse bağlantı kopmuş sayılır. 0 kapalıdır.

MQTT 5 ve istemci sertifikası

MQTT 5.0 seçildiğinde adres biçimi, okuma ve yazma aynı kalır. Sunucunun reddettiği bağlantı ya da abonelikte MQTT 5 neden kodu okunur bir iletiye çevrilir; bilinmeyen kod 0x87 gibi kodu ile gösterilir.

Sunucu istemciden sertifika istiyorsa (karşılıklı TLS) Güvenlik’i TLS yapın ve İstemci sertifikası alanından kaynağı seçin:

Kaynak Nasıl çalışır
PFX dosyası PFX dosyası alanına Live bilgisayarındaki tam yolu yazın, örneğin C:\Sertifikalar\istemci.pfx. Dosya özel anahtarı içermelidir. PFX parolası proje dosyasına yazılmaz; Live’da bağlantının Şifre gir penceresindeki PFX parolası alanına girilir.
Windows sertifika deposu Sertifika parmak izi alanına 40 onaltılık karakteri yazın (boşluk ve : olabilir). Sertifika önce geçerli kullanıcının, sonra yerel bilgisayarın Kişisel deposunda aranır. Özel anahtarı olmalı ve Live’ı çalıştıran Windows kullanıcısı anahtarı okuyabilmelidir.

Adres biçimi

Örnek adresler
 fabrika/hat1/sicaklik // Yükün tamamı tag’in değeri (sayı, true / false, on / off, metin, ISO tarih)   hat1/durum#motor.hiz // Yük JSON belgesi; tag belgenin içindeki değer (# konuyla JSON yolunu ayırır)   hat1/olcumler#deger[2] // JSON dizisinin elemanı (sıra 0’dan başlar)   cihaz/role/durum|cihaz/role/komut // Okuma ve yazma ayrı konularda (| ile ayrılır)  
  • Konu joker karakter (+, #) içermez; tag tek bir konunun değeridir. Konu ve JSON yolu büyük / küçük harfe duyarlıdır. Yazma konusu $ ile başlayamaz.
  • JSON yolu nokta ile ayrılmış alan adları ve dizi sıralarıdır (motor.hiz, dizi[0].alan). Başındaki $. isteğe bağlıdır; yol en çok 16 adım olabilir.

Veri tipleri

  • Bool
  • Byte
  • SInt
  • Int
  • UInt
  • DInt
  • UDInt
  • Real
  • LReal
  • String
  • DateTime
  • Yük UTF-8 metindir; 1 MB’tan büyük yük okunmaz. WString desteklenmez.
  • Bool için true / false / 1 / 0 / on / off / yes / no okunur.
  • DateTime için ISO 8601 ya da unix saniye / milisaniye kabul edilir.
  • Tag tipine sığmayan değer kırpılmaz, tag hata alır.

Okuma ve yazma davranışı

  • Okuma: sunucu tutulan (retained) mesajı aboneliğe hemen gönderir. Henüz yayın gelmemiş konunun tag’i hata vermez; değer gelene kadar bekler ve kalitesiz görünür.
  • Yazma: değer tag’in yazma konusuna yayınlanır. Okuma konusuyla aynıysa değer, sunucudan dönmesi beklenmeden tag’e de işlenir. Bağlantı kopmuşsa yazma reddedilir.
  • JSON alanı yazma: konuya son gelen belgenin yalnızca ilgili alanı değişir, diğer alanlar korunur.
  • Bağlantı kopunca sürücü 1 sn, 2 sn, 5 sn sonra, ardından 10 sn’de bir yeniden dener. Ortak davranış için haberleşme sürücüleri sayfasına bakın.

TLS, şifreler ve sınırlar

  • TLS (sunucu sertifikası doğrulanır) için sertifikanın Windows’un güvendiği bir otorite tarafından imzalı olması ve adresin sertifikadaki adla aynı olması gerekir. Kendinden imzalı sertifikayı Windows’a güvenilen olarak ekleyin; adrese IP yerine sertifikadaki adı yazın.
  • TLS (sertifika doğrulanmaz) sunucunun kimliğini denetlemez; ortadaki saldırgan trafiği okuyabilir. Yalnızca kapalı ağlarda kullanın.
  • Şifre ve PFX parolası Live’da sistem menüsünde Bağlantılar altındaki Şifre gir düğmesiyle girilir; bunun için Ayarlar yetkisi gerekir. İkisi de Live bilgisayarında baglanti_sifreleri.json dosyasında şifrelenmeden saklanır; proje veri klasörünü yalnızca Live’ı çalıştıran hesaba açın.
  • Yalnızca temiz oturum (clean session) ve TLS 1.2 vardır. Kalıcı oturum, Will mesajı, MQTT 5 AUTH (gelişmiş kimlik doğrulama), topic alias ve konu jokerleriyle toplu abonelik yoktur.

Sık görülen hatalar

Bağlantı iletileri Live’da sistem menüsünün Bağlantılar bölümünde görünür. Okuma sırasındaki tag hatalarında ileti gösterilmez; tag yalnızca kalitesiz olur.

İleti Neden ve çözüm
MQTT sunucusu 2000 ms içinde yanıt vermedi Sunucuya ulaşılamıyor. Adresi, portu ve ağ bağlantısını kontrol edin.
MQTT sunucusu kullanıcı adını ya da şifreyi reddetti Kullanıcı ya da şifre yanlış, şifre Live’da girilmemiş olabilir.
MQTT sunucusu istemci kimliğini reddetti Kimlik geçersiz ya da başka bir istemci aynı kimlikle bağlı. İstemci kimliği alanını değiştirin.
MQTT sunucusu bu konuya aboneliği reddetti Kullanıcının o konuyu okuma izni yok.
Sunucu sertifikasına bu bilgisayar güvenmiyor Sertifika kendinden imzalı ya da otorite bilinmiyor. Sertifikayı Windows’a güvenilen olarak ekleyin.
MQTT sunucusu MQTT 5.0’ı desteklemiyor Bağlantı parametrelerinde MQTT sürümü olarak 3.1.1 seçin.
Sunucu istemci sertifikası istiyor · Sunucu istemci sertifikasını kabul etmedi İstemci sertifikası seçin ya da sertifikanın süresini ve onu veren otoritenin sunucuda güvenilen olarak tanımlı olduğunu denetleyin.
PFX dosyası parola istiyor ama parola girilmemiş · PFX dosyasının parolası yanlış Live’da Şifre gir penceresinde PFX parolasını girin.
Windows sertifika deposunda bu parmak izli sertifika bulunamadı Parmak izini ve sertifikanın Kişisel depoda, özel anahtarıyla birlikte olduğunu denetleyin.
Sunucu sertifikasının adı … ile uyuşmuyor Adrese IP yerine sertifikadaki bilgisayar adını yazın.
… Bool olarak okunamıyor · … bir sayı değil; Int olarak okunamıyor Yükün biçimi tag tipine uymuyor.
Yük geçerli bir JSON belgesi değil · JSON yolu … yükte bulunamadı Adreste # ve bir yol yazdıysanız yük JSON olmalıdır. Yol belgede yoksa alan adını denetleyin.

Sık sorulanlar

Bir JSON alanını nasıl okurum?

Konu adının ardına # ve alan yolunu yazın: hat1/durum#motor.hiz. Alana yazarken yalnızca o alan değişir, belgenin diğer alanları korunur.

İlgili sayfalar

Ücretsiz deneyin

Deneme sürümünü indirin, örnek projeyi açın ve bu özelliği kendi ekranınızda görün.