Akıllı Üretim

Paketleme Hattı İzleme: MQTT ile Mikro Duruşları ve Hız Kayıplarını Bulma

Paketleme hatları zamanlarının çoğunu kimsenin kaydetmediği kısa duruşlarda kaybeder. Bu kullanım senaryosu her duruşu ve hız değişikliğini MQTT üzerinden nasıl yakalayacağınızı ve bunları bir mikro duruş Pareto analizine nasıl dönüştüreceğinizi gösteriyor.

MQTT ile beslenen bir zaman çizelgesinde mikro duruşları vurgulanmış dolum, kapaklama, etiketleme ve koli paketleme makinelerini gösteren paketleme hattı izleme illüstrasyonu
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

Paketleme hattı izleme, kimsenin not almadığı duruşlarla ilgilidir: sıkışan bir etiket, devrilen bir şişe, karton bekleyen bir koli açma makinesi. Bu kullanım senaryosu, bir paketleme hattındaki her duruşu ve hız değişikliğini MQTT üzerinden nasıl yakalayacağınızı, mikro duruşları otomatik olarak nasıl sınıflandıracağınızı ve çıktıyı gerçekten sınırlayan makineyi nasıl bulacağınızı gösteriyor. Sonunda basit bir olay modeline, çalışan bir mikro duruş dedektörüne ve sonuçlarla ne yapılacağına dair bir listeye sahip olacaksınız.

Paketleme Hatları Kayıplarını Neden Gizler

Paketleme hatları, konveyörler ve biriktirme tablalarıyla birbirine bağlanmış hızlı makinelerden oluşan zincirlerdir. Bir makine 20 saniye durduğunda tampon bunu emer ve hat devam eder; bu yüzden kimse bunu kaydetmez. Aynı şey bir vardiyada kırk kez olduğunda tampon boşalır, yukarı akıştaki makine bloke olur ve hat yavaşlar. Manuel kayıtlar uzun arızaları yakalar, ancak kısa, sık duruşlar ve nominal hızın altında çalışan makineler genellikle kâğıt üzerinde görünmez.

Bu gizli kayıplar çoğu zaman tüm ilgiyi çeken arızalardan daha büyüktür. Bu nedenle paketleme hatları, otomatik veri toplamanın en hızlı geri dönüş sağladığı yerlerden biridir: sinyaller makine PLC'lerinde zaten mevcuttur ve desen ancak her olay kaydedildiğinde ortaya çıkar.

Ayırmanız Gereken Duruş Kategorileri

Her duruş makinenin hatası değildir. Kullanışlı bir paketleme hattı izleme sistemi şunları ayırt eder:

Kategori Tanım Tipik neden
Mikro duruş Makinenin bir eşikten (genellikle 2 ila 5 dakikanın altında) daha kısa süre durması, bakım olmadan giderilmesi Sıkışmalar, besleme hataları, sensörlerin yanlış tetiklenmesi
Arıza Eşiğin üzerindeki veya bakım gerektiren duruş Mekanik veya elektriksel arıza
Aç kalma (starved) Makine hazır ama ürün gelmiyor Yukarı akışta duruş veya boş tampon
Bloke (blocked) Makine hazır ama çıkış dolmuş Aşağı akışta duruş veya dolu tampon
Hız kaybı Çalışıyor ama nominal hızın altında Operatör hızı düşürmüş, kararsız besleme
Planlı duruş Ürün değişimi, temizlik, mola Planlanmış faaliyet

Anahtar, aç kalma ve bloke durumlarıdır. Aç kalan bir kapaklama makinesi bir kapaklama sorunu değildir; yukarı akışı işaret eder. Bunları ayırmadan her makine kötü görünür ve gerçek kısıt gizli kalır.

Sinyaller ve Mesaj Tasarımı

Her makinenin PLC'si genellikle çalışıyor, arızalı, aç kalmış ve bloke bitlerini, bir hız değerini ve sayaçları sunar. Her değişiklikte bir durum olayı ve periyodik bir sayaç mesajı yayınlayın:

connectmq/demo/<your-id>/plant2/pack3/<machine>/state
connectmq/demo/<your-id>/plant2/pack3/<machine>/counts
{"state": "STOPPED", "cause": "FAULT", "code": 214, "speed": 0, "ts": 1792140125.42}
{"infeed": 120544, "outfeed": 120391, "reject": 153, "speed": 312, "rated_speed": 400, "ts": 1792140130.0}

Durduğunda cause değerleri olarak FAULT, STARVED, BLOCKED ve PLANNED kullanın. Arıza code değeri makinenin kendi alarm listesinden gelir; bu da operatörlere sormadan birçok duruş için bir neden sağlar. Mikro duruşlar kısa olduğu ve sıralama önemli olduğu için zaman damgaları edge'de saniyenin altında hassasiyetle belirlenmelidir.

Python ile bir Mikro Duruş Dedektörü

Bu subscriber her makinenin durum topic'ini dinler, makine yeniden başladığında her duruşun süresini ölçer, onu sınıflandırır ve bir özet olay yayınlar. Ayrıca her dakika bir panoya gönderebileceğiniz makine başına bir sayım tutar.

import json
import time
from collections import defaultdict

import paho.mqtt.client as mqtt

PREFIX = "connectmq/demo/p9x2c6/plant2/pack3"
MICRO_STOP_SECONDS = 120

stopped_since = {}  # machine -> (start_ts, cause, code)
tally = defaultdict(lambda: defaultdict(lambda: {"count": 0, "seconds": 0.0}))


def on_connect(client, userdata, flags, reason_code, properties):
    client.subscribe(f"{PREFIX}/+/state", qos=1)


def on_message(client, userdata, msg):
    machine = msg.topic.split("/")[-2]
    event = json.loads(msg.payload)
    ts = event.get("ts", time.time())

    if event["state"] == "STOPPED" and machine not in stopped_since:
        stopped_since[machine] = (ts, event.get("cause", "UNKNOWN"), event.get("code"))
        return

    if event["state"] == "RUNNING" and machine in stopped_since:
        start, cause, code = stopped_since.pop(machine)
        duration = ts - start
        if cause == "FAULT":
            category = "MICRO_STOP" if duration < MICRO_STOP_SECONDS else "BREAKDOWN"
        else:
            category = cause  # STARVED, BLOCKED, PLANNED
        bucket = tally[machine][category]
        bucket["count"] += 1
        bucket["seconds"] += duration
        summary = {
            "machine": machine,
            "category": category,
            "code": code,
            "duration": round(duration, 1),
            "ended": ts,
        }
        client.publish(f"{PREFIX}/{machine}/stop", json.dumps(summary), qos=1)
        print(summary)


client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2, client_id="microstop-p9x2c6")
client.on_connect = on_connect
client.on_message = on_message
client.connect("broker.connectmq.com", 1883, keepalive=30)
client.loop_forever()

Olayları elle yayınlayarak gerçek bir hat olmadan test edin:

mosquitto_pub -h broker.connectmq.com -p 1883 -i tester-p9x2c6 -t "connectmq/demo/p9x2c6/plant2/pack3/labeler/state" -m '{"state":"STOPPED","cause":"FAULT","code":214,"speed":0,"ts":1792140125.4}'
mosquitto_pub -h broker.connectmq.com -p 1883 -i tester-p9x2c6 -t "connectmq/demo/p9x2c6/plant2/pack3/labeler/state" -m '{"state":"RUNNING","speed":380,"ts":1792140143.9}'

Dedektör, etiketleme makinesi için arıza kodu 214 ile 18,5 saniyelik bir MICRO_STOP yazdırır. Her duruş olayı artık saklayabileceğiniz, grafiğe dökebileceğiniz ve koda göre toplayabileceğiniz bir kayıttır.

Hız Kayıplarını Bulma

Duruşlar hikâyenin yarısıdır. Dakikada 400 birim nominal hıza sahip bir hat, huysuz bir etiketleme makinesini idare etmek için 330'da çalışıyorsa, çalıştığı her dakika kapasite kaybeder ve hiçbir duruş kaydı bunu göstermez. Counts mesajında speed değerini rated_speed ile karşılaştırın ve farkı yalnızca makine çalışırken biriktirin. Makine başına "hıza kaybedilen eşdeğer dakika" şeklinde basit bir günlük rapor çoğu zaman sürpriz olur: operatörler hızı iyi nedenlerle düşürür, ancak bu nedenler görünür hale geldiğinde düzeltilebilir.

Hız kaybı ve mikro duruşlar birlikte OEE'nin performans bileşenini oluşturur. OEE hesaplama rehberi bunların kullanılabilirlik ve kaliteyle nasıl birleştiğini gösterir.

Analiz Kontrol Listesi: Veriden Eyleme

Bir haftalık veri toplandığında bu listeyi adım adım uygulayın:

  1. Kısıtı bulun. En az aç kalma ve bloke süresine sahip makine genellikle darboğazdır. Başka yerlerdeki iyileştirmeler hat çıktısını artırmaz.
  2. Mikro duruşları makineye ve arıza koduna göre Pareto'ya dökün. Çoğu zaman az sayıda kod, darboğazdaki duruşların çoğuna neden olur.
  3. Zaman desenini kontrol edin. Ürün değişimlerinden sonra veya belirli saatlerde kümelenen duruşlar ayar veya malzeme sorunlarına işaret eder.
  4. Tampon davranışına bakın. Darboğaz sık sık aç kalıyorsa yukarı akış tamponu çok küçük veya yukarı akıştaki makine çok güvenilmez olabilir.
  5. Hız ayarlarını gözden geçirin. Her makine için gerçek ve nominal hızı karşılaştırın ve farkın neden var olduğunu sorun.
  6. Uzun duruşlara neden ekleyin. Mikro duruşlar arıza kodlarıyla açıklanır, ancak arızalar bir insan tarafından girilen nedene ihtiyaç duyar. Yapılandırılmış bir duruş nedeni kodları listesi bu kayıtları kullanılabilir tutar.

Hatta Gösterme

Hattın yanında her makinenin durumunu, vardiyanın mevcut mikro duruş sayısını ve ilk üç arıza kodunu gösteren büyük bir ekran davranışı hızla değiştirir; çünkü operatörler bir kılavuz rayını düzeltmenin veya bir sensörü ayarlamanın etkisini aynı vardiya içinde görebilir. Üretim hattı izleme panosu rehberi bu topic'lerden nasıl bir pano oluşturulacağını gösterir.

Veri Akışını Boyutlandırma

Paketleme hatları çoğu kişinin beklediğinden daha fazla olay üretir; bu nedenle canlıya geçmeden önce mesaj hızını tahmin etmeye değer. Tipik bir hatta beş ila sekiz makine bulunur. Her biri her değişiklikte bir durum mesajı ve birkaç saniyede bir counts mesajı yayınlar. Kötü bir vardiyada tek bir etiketleme makinesi saatte düzinelerce kez durabilir, ancak o zaman bile toplam mütevazı kalır: tüm hat için saniyede birkaç mesaj, her biri bir kilobaytın oldukça altında.

Birkaç tasarım tercihi bunu böyle tutar:

  1. Durumları yalnızca değişiklikte yayınlayın. Değişmeyen bir durumu asla her 100 ms'de sorgulayıp yeniden yayınlamayın.
  2. Sayımları sabit, yavaş bir aralıkta gönderin. Sayımlar kümülatif olduğu için beş veya on saniyede bir yeterlidir.
  3. Arıza kodu metnini payload'un dışında tutun. Sayısal kodu gönderin ve açıklama tablosunu analiz hizmetinde tutun.
  4. Gateway başına bir istemci kullanın. Birkaç PLC'yi okuyan tek bir gateway, tüm makine topic'lerini tek bir bağlantı üzerinden yayınlayabilir; bu da broker planınızda bağlantı tasarrufu sağlar.

Bu desenle tek bir ConnectMQ Serverless broker bir paketleme hattını, dedektörü, bir historian'ı ve birkaç ekranı rahatça taşır; herhangi bir şeyi yeniden oluşturmadan topic ağacını genişleterek yeni hatlar ekleyebilirsiniz.

Özel bir Broker'a Geçiş

Prototip için herkese açık MQTT test broker'ını kullanın, ardından üretim verilerinin başkaları tarafından okunamaması için gerçek hattı özel bir broker'a taşıyın. ConnectMQ, her PLC gateway'inin, dedektörün ve panonun TLS üzerinden verilen kimlik bilgileriyle bağlandığı bir yönetilen MQTT broker sunar. Ücretsiz Serverless planının 25 bağlantısı tek bir paketleme hattı için yeterlidir; ücretli planlar ise birden fazla dedektör örneğini yan yana çalıştırdığınızda QoS 2, daha büyük mesajlar ve shared subscription'larla ölçeklenir. Daha geniş yol haritası akıllı üretim rehberinde ele alınır.

ConnectMQ ile Başlayın

app.connectmq.com adresinde kaydolun, kredi kartı olmadan ücretsiz bir Serverless broker oluşturun, ilk paketleme makinenizi bağlayın ve hattınızın gizlediği mikro duruşları saymaya başlayın.

Sık Sorulan Sorular

Bir paketleme hattında mikro duruş olarak ne sayılır?

Operatör tarafından bakım olmadan giderilen, genellikle birkaç dakikalık bir eşiğin altındaki kısa bir duruş. Tesis için tek bir eşik seçin ve trendlerin karşılaştırılabilir kalması için sabit tutun.

Operatörlerin mikro duruşlar için neden girmesi gerekir mi?

Hayır. Mikro duruşlar manuel giriş için fazla sıktır; bunun yerine makine arıza kodlarını kullanın. Operatör girişini daha uzun duruşlara ayırın.

Aç kalma ve bloke durumları neden arızalardan ayrılmalı?

Çünkü aç kalan veya bloke olan bir makine bir komşusuna tepki veriyordur. Bunları kendi duruş süresi olarak saymak gerçek kısıtı gizler.

Veri ne kadar hızlı olmalı?

Durum değişiklikleri edge zaman damgalarıyla hemen yayınlanmalıdır. Birçok mikro duruş yalnızca saniyeler sürdüğü için saniyenin altında hassasiyet faydalıdır.

İlgili yazılar

OEE vs TEEP vs OOE: Hangi Metriği Kullanmalısınız?

OEE, OOE ve TEEP aynı performans ve kalite faktörlerini paylaşır, ancak farklı zaman tabanlarına göre ölçer. Bu karşılaştırma tek bir örnek üzerinden ilerliyor ve her metriğin ihtiyaç duyduğu MQTT sinyallerini listeliyor.

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.