Endüstriyel IoT

Kepware MQTT Agent: Tag'leri TLS Üzerinden Bulut MQTT Broker'a Yayınlama

Kepware IoT Gateway MQTT Client agent'ını PLC tag'lerini TLS üzerinden bulut MQTT broker'a yayınlayacak şekilde yapılandırın, JSON payload'ı biçimlendirin ve veriyi temiz bir ISA-95 topic ağacına dağıtın.

Kepware MQTT kurulumunu gösteren, PLC tag'lerini MQTT agent'ı aracılığıyla TLS üzerinden bulut broker'a yayınlayan Kepware sunucusu
Bunu kendi MQTT broker’ınızda çalıştırınFree planla özel, yönetilen bir MQTT broker alın ve hazır kod örnekleriyle başlayın.
Ücretsiz deneyin Kod örnekleri Kart gerekmez

Kepware MQTT yayını, karışık PLC'lerle dolu bir tesisten buluta veri taşımanın en hızlı yollarından biridir; çünkü Kepware sürücüleri zaten konuşur ve IoT Gateway özelliği bunun üzerine bir MQTT client ekler. Bu eğitimde Kepware MQTT Client agent'ını tag'leri TLS üzerinden bir bulut broker'a yayınlayacak şekilde yapılandıracak, JSON payload'ı seçip biçimlendirecek, bir Last Will ekleyecek, veriyi doğrulayacak ve isteğe bağlı olarak agent'ın toplu mesajlarını temiz, tag başına bir topic ağacına böleceksiniz.

Kepware MQTT Agent Nasıl Çalışır?

Kepware (KEPServerEX ve onun halefi Kepware Server), yüzlerce PLC ve cihaz protokolü için sürücü içeren endüstriyel bir bağlantı sunucusudur. IoT Gateway eklentisi, tag verilerini harici sistemlere iten agent'lar ekler. MQTT Client agent bunlardan biridir: bir broker'a sıradan bir MQTT client olarak bağlanır ve tag değerlerini JSON olarak yayınlar.

Model basittir:

  1. Kanallar ve cihazlar, PLC'lerinizi SCADA için zaten yaptıkları gibi Kepware sürücüleri aracılığıyla sorgular.
  2. Bir MQTT Client agent, broker bağlantısını, yayın ayarlarını ve payload biçimini tutar.
  3. IoT öğeleri, o agent'a eklediğiniz ve her birinin kendi tarama hızı ve değişim davranışı olan tag'lerdir.
  4. Her yayın döngüsünde agent, zamanı gelen değerleri içeren bir JSON mesajını kendi topic'ine gönderir.

Agent dışarı doğru bir bağlantı kurduğundan Kepware makinesine gelen bağlantılar için port açmanız gerekmez. Bu modelin OT verisini bir bulut MQTT broker çözümüne taşımak için bu kadar popüler olmasının önemli bir nedeni budur. Etiketler ve varsayılan değerler Kepware sürümleri arasında küçük farklılıklar gösterir; bu yüzden aşağıdaki alan adlarını bir rehber olarak görün ve bir şey farklı görünürse sürümünüzün yardım dosyasına bakın.

Başlamadan Önce

  • IoT Gateway özelliği lisanslanmış ve kurulmuş bir Kepware.
  • İyi kalitede tag döndüren en az bir kanal ve cihaz. Bunu önce Quick Client'ta kontrol edin.
  • Broker bağlantı bilgileri. İlk test için yalnızca hassas olmayan tag'lerle herkese açık MQTT test broker'ını kullanın. Üretim için özel bir broker oluşturun ve kullanıcı adını, parolasını ve client ID'sini not edin.
  • Kepware sunucusundan broker'daki TCP 8883 (TLS) portuna giden erişim.

Adım 1: MQTT Client Agent'ını Oluşturun

Kepware yapılandırma aracında IoT Gateway'i genişletin, sağ tıklayıp yeni bir agent ekleyin ve tür olarak MQTT Client'ı seçin. Sihirbaz temel ayarları sorar:

Ayar ConnectMQ için değer Notlar
Name ConnectMQ_Cloud Açıklayıcı herhangi bir ad
URL ssl://broker.connectmq.com:8883 TLS için ssl:// kullanın; tcp://...:1883 yalnızca hızlı herkese açık testler için
Topic connectmq/demo/k7q2/plant1/kepware Üretimde acme/plant1/kepware gibi kendi hiyerarşinizi kullanın
QoS 1 Ücretsiz Serverless plan QoS 0 ve 1'i destekler; QoS 2 ücretli plan gerektirir
Rate 1000 ms Agent'ın bekleyen güncellemeleri ne sıklıkta yayınladığı
Format Standard (JSON) Payload'ı özelleştirmek için daha sonra Advanced'e geçin
Max events per publish Varsayılan Tek mesaja kaç tag güncellemesi gireceğini sınırlar

Ardından agent'ın güvenlik veya client ayarlarını açıp şunları doldurun:

  • Client ID: herkese açık broker için kepware-k7q2 gibi benzersiz ve boş olmayan herhangi bir değer. Özel bir broker için kimlik bilgilerinizle birlikte verilen client ID'nin tam kendisi; client ID'ler bu kimlik bilgilerine bağlıdır.
  • Kullanıcı adı ve parola: herkese açık broker için boş; özel broker için YOUR_USERNAME ve YOUR_PASSWORD.
  • TLS sürümü: TLS 1.2 veya üzeri.

Broker, genel olarak güvenilen bir Let's Encrypt sertifikası sunar; bu yüzden normalde bir CA sertifikası içe aktarmanız gerekmez. Kuruluşunuz TLS trafiğini bir proxy ile denetliyorsa, Kepware sunucusunun bunun yerine o proxy'nin sertifikasına güvenmesi gerekir.

Adım 2: Bir Last Will Ekleyin

Tüketicilerin Kepware'in ne zaman ortadan kaybolduğunu anlayabilmesi için agent'ın Last Will ayarını yapılandırın:

  • Topic: connectmq/demo/k7q2/plant1/kepware/status
  • Mesaj: offline

Agent beklenmedik şekilde düştüğünde broker bu mesajı onun adına yayınlar. Bunu, durum offline olduğunda değerleri soluklaştıran bir pano kuralıyla eşleştirin.

Adım 3: IoT Öğeleri Ekleyin

Agent'a sağ tıklayın ve istediğiniz tag'lere göz atarak IoT öğeleri ekleyin. Her öğe için şunları ayarlayın:

  1. Tarama hızı: Kepware'in bu agent için tag'i ne sıklıkta örneklediği. Bunu değerin gerçekte ne kadar hızlı değiştiğine göre ayarlayın; çoğu proses değeri için bir ila beş saniye uygundur.
  2. Her taramada yayınla veya veri değiştiğinde yayınla: durumlar ve yavaş analog değerler için veri değişimini tercih edin. Bu, Kepware'in yerleşik report by exception özelliğidir ve report by exception rehberimizde açıklanmıştır.
  3. Ölü bant: gürültülü analog değerlerde ölü bant, bir eşikten küçük değişiklikleri bastırır.

Birkaç tag ile başlayın, uçtan uca akışı doğrulayın, ardından geri kalanını ekleyin.

Adım 4: Veriyi Doğrulayın

Mosquitto client ile herhangi bir makineden abone olun:

mosquitto_sub -h broker.connectmq.com -p 8883 --capath /etc/ssl/certs \
  -i kepware-viewer-k7q2 -t "connectmq/demo/k7q2/#" -v

Standard formatta agent topic'indeki her mesaj şöyle görünür:

{
  "timestamp": 1792137600000,
  "values": [
    { "id": "Line1.Filler.Speed",     "v": 118.4, "q": true, "t": 1792137599950 },
    { "id": "Line1.Filler.Running",   "v": true,  "q": true, "t": 1792137599950 },
    { "id": "Line1.Filler.GoodCount", "v": 48211, "q": true, "t": 1792137599950 }
  ]
}

id tam Kepware tag yoludur, v değerdir, q kalitenin iyi olup olmadığını, t ise epoch'tan bu yana milisaniye cinsinden tag zaman damgasını gösterir. Özel bir ConnectMQ broker'ında, portalın tarayıcı içi MQTT client'ı ve canlı topic gezgini hiçbir şey kurmadan aynı mesajları gösterir.

Adım 5: Payload'ı Advanced Şablonla Biçimlendirin

Advanced format, Kepware'in dolduracağı yer tutucular içeren bir şablon yazmanıza olanak tanır. Alanları sonraki kod için daha kullanışlı adlarla yeniden adlandıran bir şablon şöyle görünür:

{
  "source": "kepware-plant1",
  "sent": |SERVERTIMESTAMP|,
  "tags": [
    |#each VALUES|
    { "name": "|TAGNAME|", "value": |VALUE|, "good": |QUALITY|, "ts": |TIMESTAMP| }|#unless @last|,|/unless|
    |/each|
  ]
}

Şablonun, yalnızca bir tag'in değiştiği durum dahil, tüm değer kombinasyonları için geçerli JSON üretmesini sağlayın. PLC simülatöründe veya Quick Client'ta tag'leri değiştirirken mesajları izleyerek test edin.

Adım 6: Tag Başına Bir Topic Ağacına Dağıtın

Agent toplu mesajları tek bir topic'e yayınlar. Bu verimlidir, ancak birçok tüketici ISA-95 hiyerarşisinde değer başına bir topic tercih eder; bir Unified Namespace'i gezilebilir kılan da budur. Bölme işini küçük bir yeniden yayıncı yapabilir. Herhangi bir yerde çalışır, broker'a normal bir client olarak bağlanır ve Kepware tag yollarını topic'lere eşler:

# kepware_fanout.py - Kepware Standard formatlı toplu mesajları tag başına topic'lere böl
import json, uuid
import paho.mqtt.client as mqtt

ROOT = "connectmq/demo/k7q2/plant1"
SOURCE = f"{ROOT}/kepware"

def to_topic(tag_id: str) -> str:
    # "Line1.Filler.Speed" -> "connectmq/demo/k7q2/plant1/line1/filler/speed"
    return f"{ROOT}/" + "/".join(part.lower() for part in tag_id.split("."))

def on_connect(client, userdata, flags, reason_code, properties):
    client.subscribe(SOURCE, qos=1)

def on_message(client, userdata, message):
    batch = json.loads(message.payload)
    for item in batch.get("values", []):
        payload = {"value": item["v"], "quality": "good" if item["q"] else "bad", "ts": item["t"]}
        client.publish(to_topic(item["id"]), json.dumps(payload), qos=1, retain=True)

client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2, client_id=f"kep-fanout-{uuid.uuid4().hex[:8]}")
client.on_connect = on_connect
client.on_message = on_message
client.tls_set()
# client.username_pw_set("YOUR_USERNAME", "YOUR_PASSWORD")  # özel broker
client.connect("broker.connectmq.com", 8883, keepalive=30)
client.loop_forever()

Her Kepware toplu mesajı birkaç retained, tag başına mesaja dönüşür; dolayısıyla herkese açık broker'ın client başına saniyede on mesaj limiti dağıtım client'ı için geçerlidir; test tag listesini küçük tutun. Özel bir broker'da limitler planınıza göre belirlenir. Hedef hiyerarşiyi tasarlamanıza ISA-95 MQTT topic'leri yazımız yardımcı olur; ConnectMQ da cihazlar görünümünde ISA-95 yapılı topic'leri otomatik olarak algılar.

Kepware MQTT Agent Sorun Giderme

Kepware olay günlüğündeki belirti veya davranış Olası neden Çözüm
Agent bağlanamıyor, bağlantı reddedildi Yanlış URL şeması veya port 8883 ile ssl://, 1883 ile tcp://
TLS el sıkışma hataları TLS denetim proxy'si, eski TLS sürümü Proxy CA'sına güvenin, TLS 1.2+ seçin
Yetkisiz (Not authorized) Yanlış kullanıcı adı, parola veya client ID Üçünü de broker portalından kopyalayın
Bağlanıp tekrar tekrar kopuyor Aynı client ID'yi kullanan iki client Her agent'a ve test client'ına benzersiz bir kimlik verin
Mesajlar geliyor ama q false Kepware'de cihaz iletişim sorunu Kanalı veya cihazı düzeltin, Quick Client'ı kontrol edin
Mesajlar çok büyük olduğu için reddediliyor Yayın başına çok fazla tag Max events per publish değerini düşürün veya birden fazla agent'a bölün
Topic herkese açık broker'da reddediliyor Sekizden fazla topic seviyesi Topic'i kısaltın

Üretim Kontrol Listesi

  1. 8883'te TLS ve portaldan alınan kimlik bilgileriyle özel broker.
  2. Agent başına benzersiz client ID; asla test araçlarıyla paylaşılmaz.
  3. Yapılandırılmış ve izlenen Last Will.
  4. Veri değiştiğinde yayın ve analog tag'lerde ölü bant.
  5. Planınızın limiti dahilinde mesaj boyutu: ücretsiz Serverless planda 256 KB, ücretli Serverless'ta 1 MB.
  6. Kepware sunucusu güvenlik duvarı: yalnızca giden 8883.
  7. Sertifika veya kimlik bilgisi yenileme için bir çalışma kılavuzu (runbook).

Kepware'in PLC'ler, gateway'ler ve tüketiciler arasındaki yerine dair genel resim için endüstriyel IoT MQTT rehberine bakın. Kepware'i özel bir gateway ile karşılaştırıyorsanız, OPC UA MQTT gateway eğitimimiz açık kaynak alternatifi gösteriyor.

ConnectMQ ile Başlayın

Kepware sunucunuza dakikalar içinde bir bulut hedefi kazandırın. app.connectmq.com adresinden kaydolun, kredi kartı gerektirmeyen ücretsiz Serverless planını seçin, bir broker oluşturun ve üretilen kullanıcı adı, parola ve client ID bilgilerini MQTT Client agent'ına kopyalayın. ConnectMQ bir yönetilen MQTT broker olduğundan yamalamanız gereken bir sunucu yoktur; portaldaki eşik tabanlı alarm kuralları da tag'leriniz gelir gelmez onları izleyebilir.

Sık Sorulan Sorular

Kepware TLS üzerinden MQTT'yi destekliyor mu?

Evet. MQTT Client agent'ında 8883 portlu bir ssl:// URL'si kullanın ve güncel bir TLS sürümü seçin. Genel olarak güvenilen sertifikalara sahip broker'lar normalde ek sertifika içe aktarımı gerektirmez.

Kepware her tag'i kendi MQTT topic'ine yayınlayabilir mi?

MQTT Client agent toplu mesajları agent'ın topic'ine yayınlar; tag başına topic seçenekleri Kepware sürümüne bağlıdır. Toplu mesajları tag başına topic'lere bölen küçük bir dağıtım client'ı her sürümle çalışır.

Kepware MQTT agent hangi QoS seviyesini kullanmalı?

Tag verileri için QoS 1 iyi bir varsayılandır: teslimat en az bir kez, düşük ek yükle garanti edilir. Telemetri için QoS 2'ye nadiren ihtiyaç duyulur.

Bir bulut uygulaması Kepware MQTT üzerinden tag'lere geri yazabilir mi?

Agent, abone olunan bir topic'teki yazma isteklerini kabul edecek şekilde yapılandırılabilir; ancak bunu yalnızca sıkı erişim kontrolü ve net bir ihtiyaç varsa etkinleştirin. Çoğu kurulum bulut yolunu salt okunur tutar.

İlgili yazılar

CODESYS MQTT Client: PLC Değişkenlerini Bir Broker'a Yayınlama

CODESYS IIoT MQTT Client kütüphanesini PLC değişkenlerini JSON olarak yayınlayacak şekilde yapılandırın, broker.connectmq.com üzerinde doğrulayın, ardından kimlik bilgileri ve TLS içeren özel bir broker'a geçin.

6 dk okuma

Tüm yazılar →

Özel MQTT broker’ınız birkaç tık uzağınızda

Hesabınızı oluşturun, broker kimlik bilgilerinizi alın ve ilk cihazınızı bağlayın — kurulacak, yamalanacak ya da ölçeklendirilecek sunucu yok.