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:
- 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.
- 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.
- 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.
- 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.
- 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.
- 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:
- 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.
- Sayımları sabit, yavaş bir aralıkta gönderin. Sayımlar kümülatif olduğu için beş veya on saniyede bir yeterlidir.
- Arıza kodu metnini payload'un dışında tutun. Sayısal kodu gönderin ve açıklama tablosunu analiz hizmetinde tutun.
- 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.



