Endüstriyel IoT

PLC'ye Dokunmadan Eski Makineleri IoT ile Donatmak

Pek çok tesiste parçaların çoğunu hâlâ eski makineler üretiyor. Bu rehber, eski makineleri akım pensleri, ek sensörler ve bir gateway ile IoT'ye nasıl dönüştüreceğinizi ve tek satır PLC koduna dokunmadan makine durumunu MQTT üzerinden nasıl yayınlayacağınızı gösteriyor.

Eski makineleri IoT ile donatmayı gösteren, akım pensi ve kablosuz gateway takılmış eski bir torna
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

Eski makineleri IoT ile donatmak (retrofit), gerçek üretim verisi elde etmenin genellikle en hızlı yoludur; çünkü parçalarınızın çoğunu üreten makineler çoğu zaman onlarca yıllıktır ve yakın zamanda değiştirilmeyecektir. Bu rehberde hangi müdahalesiz sinyallerden yararlanacağınızı, sensörler ile kontrolcü arayüzleri arasında nasıl seçim yapacağınızı ve hiçbir PLC mantığını değiştirmeden makine durumunu MQTT üzerinden yayınlayan, çalışan bir akım pensi izleyicisini nasıl kuracağınızı öğreneceksiniz.

Neden Değiştirmek Yerine Donatmalı?

Yirmi yıllık bir torna, pres veya plastik enjeksiyon makinesi toleransı hâlâ mükemmel şekilde tutabilir. Eksik olan bir ağ portudur ya da BT tarafında kimsenin tanımadığı bir protokol konuşan bir portu vardır. Veri almak için onu değiştirmek nadiren haklı gösterilebilir. Donatmak ise maliyetin küçük bir kısmına mal olur ve bir bakım penceresinde yapılabilir.

İyi bir dönüşümün yol gösterici ilkesi önce müdahalesiz olmaktır. PLC mantığındaki her değişiklik doğrulama, bir yedek plan ve çoğu zaman artık var olmayabilecek orijinal entegratörü gerektirir. Dışarıdan kenetlediğiniz her sensör ise bunların hiçbirini gerektirmez. Kontrol sistemine dokunmadan okuyabileceğiniz sinyallerle başlayın ve kontrolcü entegrasyonuna ancak değer kanıtlandığında geçin.

Eski Bir Makinede Neler Ölçülmeli?

İlk dönüşümdeki değerin çoğu, "makine parça üretiyor mu, üretmiyorsa neden?" sorusunu yanıtlayan bir avuç sinyalden gelir.

Sinyal Nasıl yakalanır Size ne söyler Müdahale düzeyi
İş mili veya motor akımı Bir faza takılan ayrılabilir çekirdekli akım trafosu (akım pensi) Kapalı, boşta, çalışıyor, aşırı yük Yok, mevcut bir kablonun etrafına kenetlenir
Işıklı kolon durumu Kolon lambasında ışık sensörleri veya kuru kontaklar Operatörün gördüğü haliyle çalışıyor, bekliyor, alarm Çok düşük
Parça sayısı Bir itici üzerinde yaklaşım sensörü veya çevrim tamamlandı sinyalinde bir kontak Verim ve çevrim süresi Düşük
Titreşim Kablolu veya kablosuz, mıknatıslı montajlı ivmeölçer Rulman aşınması, dengesizlik, takım durumu Yok
Sıcaklık Kenetlemeli veya yapışkanlı prob Aşırı ısınan motorlar, hidrolik yağ, soğutma sıvısı Yok
Kontrolcü verisi Bir gateway üzerinden Modbus, Ethernet/IP, S7 veya seri okuma Program, alarmlar, set değerleri, sayaçlar Orta, PLC'ye salt okunur erişim

Akım pensi özel bir ilgiyi hak ediyor. Makine başına tek bir sensörle durumu, kullanım oranını ve hatta kaba enerji tüketimini çıkarabilirsiniz. Bir PLC'ye, makinede bir ağ portuna veya makine üreticisinin iş birliğine ihtiyaç duymaz.

Sensörler ile Kontrolcü Arayüzleri Arasında Seçim

İki geniş dönüşüm yolu vardır ve bunlar birbiriyle iyi uyum sağlar.

Ek sensörler makinenin kontrolcüsünden bağımsızdır. Röle mantıklı makinelerde, eskimiş PLC'lerde veya kilitli kontrolcülerde çalışırlar. Size iş milinin gerçekten dönüp dönmediği gibi fiziksel gerçekliği verirler, ancak program numarası veya alarm metni gibi bağlam vermezler.

Kontrolcü arayüzleri makinenin zaten sahip olduğu veriyi okur. Pek çok eski PLC bir seri port üzerinden Modbus RTU sunar ve son yirmi yılın birçok PLC'si Modbus TCP, Ethernet/IP veya S7 iletişimini destekler. Bir gateway register'ları veya tag'leri salt okunur modda okur ve yayınlar. Modbus TCP'den MQTT'ye ve PLC'den buluta bağlantı rehberlerimiz bu yolu adım adım anlatıyor.

Pratik bir sıralama şöyledir: önce pensi takın, kullanım oranı verisiyle değeri kanıtlayın, ardından alarm kodlarının ve sayaçların ek çabayı haklı çıkardığı makinelere kontrolcü okumaları ekleyin.

Dönüşüm Mimarisi

Ne ölçerseniz ölçün mimari aynı kalır:

  1. Makinedeki sensörler analog, dijital veya saha veri yolu sinyalleri üretir.
  2. Bir edge cihazı bunları okur. Bu, tek bir makine için ESP32 gibi bir mikrodenetleyici ya da tüm bir hat için bir IIoT edge gateway olabilir.
  3. Edge cihazı, site/area/line/machine/measurement gibi bir topic hiyerarşisi kullanarak bir broker'a MQTT yayınlar.
  4. Tüketiciler abone olur: paneller, OEE hesaplamaları, historian'lar, bakım sistemleri.

Bunu ölçeklenebilir tutan broker'dır. Ellinci makineyi eklemek ilkini eklemekle aynıdır ve yeni bir tüketicinin verinin nasıl toplandığını bilmesine asla gerek yoktur. MQTT sizin için yeniyse MQTT broker'ın ne olduğunu anlatan yazıyla başlayın.

Uygulamalı: ESP32 ile Akım Pensi Tabanlı Makine İzleyici

Bu örnek bir ESP32 ve 30 A'da 1 V RMS çıkış veren SCT-013-030 gibi gerilim çıkışlı, ayrılabilir çekirdekli bir akım trafosu kullanır. Pens, GPIO34'e bir orta nokta öngerilim devresi üzerinden bağlanır (3,3 V'tan GND'ye iki eşit direnç ve toprağa bir kondansatör; pens orta nokta ile ADC pini arasında); böylece AC sinyal yaklaşık 1,65 V etrafında salınır.

Önce güvenlik: pens, makinenin panosu içindeki tek bir yalıtımlı iletkenin etrafına takılır. Bu iş, makine enerjisiz bırakılmışken yetkin bir elektrikçi tarafından yapılmalıdır. Tüm fazları taşıyan çok damarlı bir kablonun etrafına asla pens takmayın; manyetik alanlar birbirini götürür ve sıfıra yakın bir değer okursunuz.

#include <WiFi.h>
#include <PubSubClient.h>

const char* WIFI_SSID = "plant-iot";
const char* WIFI_PASS = "your-wifi-password";

const char* MQTT_HOST = "broker.connectmq.com";
const int   MQTT_PORT = 1883;
// Genel broker'da benzersiz bir önek kullanın; oradaki her şeyi herkes okuyabilir
const char* BASE = "connectmq/demo/k7q2x9/factory1/turning/lathe07";

const int   CT_PIN = 34;
const float AMPS_PER_VOLT = 30.0;   // SCT-013-030: 1 V RMS = 30 A
const float IDLE_AMPS = 1.0;        // bunun altında makine kapalıdır
const float RUN_AMPS = 4.0;         // bunun üstünde iş mili kesim yapıyordur

WiFiClient net;
PubSubClient mqtt(net);
String lastState = "";
unsigned long lastReport = 0;

float readAmpsRms() {
  const int N = 2000;
  static float samples[N];
  float sum = 0;
  for (int i = 0; i < N; i++) {
    samples[i] = analogReadMilliVolts(CT_PIN) / 1000.0;
    sum += samples[i];
    delayMicroseconds(100);          // ~200 ms pencere, 50 Hz'de 10 şebeke periyodu
  }
  float mean = sum / N;
  float sq = 0;
  for (int i = 0; i < N; i++) {
    float v = samples[i] - mean;
    sq += v * v;
  }
  return sqrt(sq / N) * AMPS_PER_VOLT;
}

void connectMqtt() {
  String clientId = "lathe07-" + String((uint32_t)ESP.getEfuseMac(), HEX);
  String stateTopic = String(BASE) + "/state";
  while (!mqtt.connected()) {
    // Güç veya Wi-Fi kaybolursa Last Will izleyiciyi çevrim dışı olarak işaretler
    if (mqtt.connect(clientId.c_str(), stateTopic.c_str(), 1, true, "UNKNOWN")) {
      lastState = "";
    } else {
      delay(5000);
    }
  }
}

void setup() {
  Serial.begin(115200);
  analogSetPinAttenuation(CT_PIN, ADC_11db);
  WiFi.begin(WIFI_SSID, WIFI_PASS);
  while (WiFi.status() != WL_CONNECTED) delay(500);
  mqtt.setServer(MQTT_HOST, MQTT_PORT);
  connectMqtt();
}

void loop() {
  if (!mqtt.connected()) connectMqtt();
  mqtt.loop();

  float amps = readAmpsRms();
  String state = amps < IDLE_AMPS ? "OFF" : (amps < RUN_AMPS ? "IDLE" : "RUNNING");

  // Durumu değişimde yayınla, paneller anında görsün diye retained
  if (state != lastState) {
    mqtt.publish((String(BASE) + "/state").c_str(), state.c_str(), true);
    lastState = state;
  }
  // Trend için akımı her 10 saniyede bir yayınla
  if (millis() - lastReport > 10000) {
    char buf[64];
    snprintf(buf, sizeof(buf), "{\"amps\":%.2f}", amps);
    mqtt.publish((String(BASE) + "/current").c_str(), buf);
    lastReport = millis();
  }
}

k7q2x9 ifadesini kendi rastgele dizenizle değiştirin, kartı programlayın ve bir dizüstü bilgisayardan abone olun:

mosquitto_sub -h broker.connectmq.com -p 1883 -i lathe-watch-$RANDOM \
  -t 'connectmq/demo/k7q2x9/#' -v

Eşikleri, makine kapalıyken, iş mili durmuş halde boşta çalışırken ve kesim yaparken akımı izleyerek kalibre edin. Her makinenin pompalardan, fanlardan ve hidrolikten kaynaklanan kendine özgü bir boşta çekişi vardır; bu yüzden IDLE_AMPS ve RUN_AMPS makine bazında ayarlanmalıdır. Üretim için 8883 portunda WiFiClientSecure'a geçin ve ConnectMQ portalınızdaki kullanıcı adını, parolayı ve client ID'yi kullanın.

Yaygın Dönüşüm Tuzakları

  • Yanlış eşikler. Hidrolik pompası sürekli çalışan bir makine, çalışma eşiği çok düşükse tüm vardiya boyunca "çalışıyor" görünür. Gözlenen davranışa göre kalibre edin.
  • Elektriksel gürültü. VFD'ler ve kontaktörler gürültü enjekte eder. Sensör kablolarını kısa tutun, ekranlı kablo kullanın ve örnekte olduğu gibi ölçümlerin birkaç şebeke periyodu üzerinden ortalamasını alın.
  • Çelik panolarda Wi-Fi. Kapalı bir panonun içindeki kart bağlantısını kaybedebilir. Harici bir anten kullanın veya elektroniği panonun dışına monte edin.
  • Çevrim dışı durumu olmaması. Last Will olmadan, gücü kesilen bir izleyici son durumu sonsuza kadar gösterir. Örnek bunu önlemek için retained will mesajı olarak UNKNOWN yayınlar.
  • Yapılandırılmamış topic'ler. Hiyerarşiyi ikinci makineden önce belirleyin. Elli cihazı sonradan yeniden adlandırmak zahmetlidir.

Tek Makineden Tüm Atölyeye Ölçeklemek

Birkaç makine raporlamaya başladığında sorular kablolamadan operasyona kayar: kaç bağlantı, kim hangi veriyi okuyabilir, duruşlarda nasıl alarm verilir. Yönetilen bir MQTT broker sunucu işini ortadan kaldırır, böylece sensörlere odaklanabilirsiniz. ConnectMQ ile dönüştürülmüş her makineyi canlı topic gezgininde izleyebilir, cihaz görünümünde ISA-95 seviyesine göre gruplayabilir ve örneğin iş mili akımı bir aşırı yük sınırını aştığında tetiklenen eşik alarm kuralları belirleyebilirsiniz. Ücretsiz Serverless plan 25 bağlantıya kadar destekler; bu da bir pilot hücre için yeterlidir. Dönüşümden tesis çapında veriye kadar tüm yolculuk için MQTT ile Endüstriyel IoT rehberimizi ve IIoT kavram kanıtı (PoC) planını okuyun.

ConnectMQ ile Başlayın

app.connectmq.com adresinde kredi kartı gerekmeden ücretsiz bir Serverless broker oluşturun. Genel broker'ı TLS'li kendi ConnectMQ uç noktanızla değiştirin; dönüştürülmüş makineleriniz, herhangi bir panelin veya analitik aracının abone olabileceği canlı ve yapılandırılmış veriye dönüşsün.

Sık Sorulan Sorular

PLC'yi değiştirmeden eski makineleri IoT ile donatabilir miyim?

Evet. Akım pensleri, ışıklı kolon sensörleri, titreşim sensörleri ve parça sayım sensörleri kontrol mantığının dışına kurulur. Hiçbir PLC değişikliği olmadan size makine durumunu ve kullanım oranını verirler.

Makine durumunu izlemenin en ucuz yolu nedir?

Ana motor veya iş mili beslemesine takılan ve küçük bir mikrodenetleyici tarafından okunan tek bir ayrılabilir çekirdekli akım pensi genellikle en düşük maliyetli seçenektir. Akım seviyesi kapalı, boşta ve çalışıyor durumlarını ayırt eder.

Çalışan bir makineye akım pensi takmak güvenli mi?

Bir elektrik panosu içine pens montajı, kilitleme-etiketleme (lockout) prosedürlerini izleyen yetkin bir elektrikçi tarafından yapılmalıdır. Pensin kendisi devreyi kesmez, ancak pano canlı parçalar içerir.

Ne zaman veriyi doğrudan PLC'den okumalıyım?

Alarm kodları, program numaraları veya kesin parça sayaçları gibi bağlama ihtiyacınız olduğunda. Salt okunur erişime sahip bir gateway kullanın ve ek sensörler verinin değerini kanıtladıktan sonra başlayın.

İ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.