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:
- Kanallar ve cihazlar, PLC'lerinizi SCADA için zaten yaptıkları gibi Kepware sürücüleri aracılığıyla sorgular.
- Bir MQTT Client agent, broker bağlantısını, yayın ayarlarını ve payload biçimini tutar.
- IoT öğeleri, o agent'a eklediğiniz ve her birinin kendi tarama hızı ve değişim davranışı olan tag'lerdir.
- 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-k7q2gibi 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_USERNAMEveYOUR_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:
- 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.
- 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.
- Ö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
- 8883'te TLS ve portaldan alınan kimlik bilgileriyle özel broker.
- Agent başına benzersiz client ID; asla test araçlarıyla paylaşılmaz.
- Yapılandırılmış ve izlenen Last Will.
- Veri değiştiğinde yayın ve analog tag'lerde ölü bant.
- Planınızın limiti dahilinde mesaj boyutu: ücretsiz Serverless planda 256 KB, ücretli Serverless'ta 1 MB.
- Kepware sunucusu güvenlik duvarı: yalnızca giden 8883.
- 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.



