Uzaktan İzleme için xLogic Micro PLC'yi bir MQTT Broker'a Nasıl Bağlayabilirsiniz

Bir PLC satıcısına MQTT hakkında sorarsanız, bir yol haritası alırsınız: "gelecek yıl, belki, premium modelde." Sonra küçük yazıya bakarsınız ve bir geçit, bir dönüştürücü veya özelliğin arkasında gizlenmiş bir bulut aboneliği bulursunuz. xLogic Ethernet CPU'larındaki MQTT desteği bunların hiçbiri yok — 1.04 revizyonundan beri firmware'de var ve doğrudan kontrolörden yayın yapar.

Bu, bir bütçe makinesinin yapabileceği şeyi değiştirir ve çoğu entegratör bunu fark etmemiştir.

Neden MQTTMicro PLC

MQTT tam olarak bu durum için tasarlanmıştır: güvenilmez bir ağda bir cihaz, bir brokera küçük mesajlar yayınlamakta, gelen ve giden abonelerle. Bir fabrikadaki bir makine, bir tarladaki pompa istasyonu, ofisten iki saat uzaklıkta bir sera — her biri durumunu yayınlar; bulut gösterge paneli, telefon uygulaması ve mühendis dizüstü bilgisayarı hepsi aynı konuya abone olur. Hiçbir anket yok, tesise açık port yok, bağlantıyı izleyen bir SCADA sunucusu yok.

Broker kaosu yönetir. PLC sadece yayın yapar.

Gerçekten Yapılandırdığınız Şey

Bağlantı blokları programda yaşar: broker adresini, konuyu, yayın aralığını ayarlayın ve hangi değerlerin yük içinde gideceğini haritalayın. CPU bağlantı yaşam döngüsünü yönetir — bir kesintiden sonra yeniden bağlanma, bir boşluktan sonra yeniden yayın yapma — bu, elle yapılmış uygulamaları öldüren kısımdır.

Bunu web sunucusu ve alarm SMS ile eşleştirirseniz, tek bir kontrolörde üç bağımsız uzaktan kanalınız olur. Ofis için bulut gösterge paneli, operatör için tarayıcı sayfası, görev mühendisine SMS. Her kitle için kanalınızı seçin.

Gerçek Durum: Uzaktan Sera İzleme

Dört bölmeli bir fidanlık, site ağını yeniden inşa etmeden bulut görünürlüğü istedi. Her bölme kontrolörü sıcaklık, nem ve vana durumunu kiralanmış bir VPS üzerindeki bir brokera yayınladı; basit bir gösterge paneli abone oldu ve tüm dört bölmeyi tek bir ekranda gösterdi. İnternet bir öğleden sonra kesildiğinde, kontrolörler yerel bir kuyruğa yayın yapmaya devam etti ve değerler yeniden bağlandığında yakalandı.

Yetiştiricinin özeti, coşkulu bir şekilde çevrildi: "Tatilimde telefonumdan sıcaklık grafiğini izledim. Orada olmaktan daha iyiydi."

MQTT'nin Yanlış Cevap Olduğu Yer

Sınırlar hakkında dürüst olun. MQTT olay ve telemetri odaklıdır — deterministik bir kontrol döngüsü değildir. Garantili teslimat ve milisaniye yanıt gerekiyorsa, yerel olarak Modbus TCP kullanın. MQTT, denetim ve raporlama içindir, güvenlik kilitlemesi için değil. Bunu böyle tasarlayın ve yıllarca size hizmet eder.

Ve broker kimlik bilgilerini doğru tutun. Genel bir konuya yayın yapan bir PLC, işini yayınlayan bir PLC'dir. Özel konular, yerel bir broker veya en azından broker üzerinde TLS — kurulum maliyeti dakikalar, ve kaçınılan utanç gerçektir.

Çalınacak Değerli Desen

Ölçeklenebilir Konu Tasarımı

MQTT, konu yapınız kadar temizdir ve konu yapısı, küçük projelerin sessizce yönetilemez hale geldiği yerdir. Naif yaklaşım — her cihaz için bir konu, içinde her şeyi barındıran bir yük — bir makine için çalışır ve on makinede çöker. Her abone her yükü yeniden ayrıştırır, yükteki her değişiklik her gösterge panelini bozar ve hata ayıklama konu konu bir av haline gelir.

İlk yayından önce hiyerarşiyi tasarlayın. Bana iyi hizmet eden bir desen:site/cihaz/kategori/değer. Yaniplant1/pump1/status/run, plant1/pump1/sensor/level, plant1/pump2/alarm/high-level. Wildcard aboneleri — plant1 için bir gösterge paneli, pump1 için bir sayfa, her şey için bir alarm dinleyicisi — her biri ihtiyaç duyduğu dilimi tam olarak abone olur. Yeni cihazlar eski konulara dokunmadan yerleştirilir ve yükler küçük ve tipli kalır.

Yükleri basit tutun: bir değer ve bir zaman damgası. Gerçekten ihtiyaç duymadığınız on bir alanı tutan iç içe JSON blobları yok. Basit yükler hata ayıklanabilir — broker konsolunda birini okuyabilir ve hemen doğru olup olmadığını anlayabilirsiniz. Ve durum konularında retain bayrağını ayarlayın, böylece yeni bir abone hemen son bilinen durumu görür, bir sonraki yayını beklemek zorunda kalmaz. Saklanan durum, hemen açılan bir gösterge paneli ile birkaç dakika boyunca boş boş bakan bir panel arasındaki farktır.

Son kural, insanların karşı çıktığı kuraldır: yük formatı değiştiğinde konuyu versiyonlayın.plant1/pump1/status/v2. Çirkin. Bu, bir değişiklikle üretimde beş aboneyi kırmaktan sizi kurtarır. Çalışan çirkin konular, patlayan temiz konulardan daha iyidir.

Yayınlamaya Değer Veri

Her şeyi yayınlamak, hiçbir şeyi yayınlamaktan daha kötüdür — brokerı su basar, günlüğü şişirir ve önemli değerleri gömer. Abonenin soracağı sorudan başlayın, kayıtlar listesinden değil. Bir operatör durum, alarm ve koşan toplamlar ister. Bir mühendis eğilimler ister: sıcaklık, basınç, çalışma saatleri. Bir yönetici çalışma süresi ve sayılar ister. Bunları yayınlayın, sadece bunları.

Oranlar da önemlidir. Alarm geçişleri: hemen yayınla, her zaman. Durum: değişiklikte artı bir kalp atışı. Analog değerler: süreci gerçekten gösteren aralıkta — yavaş bir sera sıcaklığı için on saniye, bir makine aracı için bir saniye. İhtiyacınız olmayan her hızlı konu, israf broker yükü ve kablosuz modellerde israf SIM verisidir.

Ve önemli olanları yerel olarak da kaydedin. CPU'nun veri kaydı artı broker'ın saklanan mesajları, kritik geçmişin iki kopyasını verir. Broker kötü bir gün geçirdiğinde — hepsi geçirir — makine tarafı kaydı gerçekliğin kaynağıdır ve kurtarma konuşması kısadır.

CPU'da yerel kontrol, MQTT üzerinden bulut görünürlüğü ve ikisi asla müdahale etmez. Bu ayrım, modern küçük otomasyonun mimarisidir ve bir DIN rayına sığar. Satıcının yol haritası gelmedi. Firmware zaten gönderildi.